
int __gmpq_cmp_si(mpq_srcptr q,long n,ulong d)

{
  undefined *puVar1;
  int iVar2;
  undefined1 *puVar3;
  int iVar4;
  int *piVar5;
  undefined4 *puVar6;
  int iVar7;
  int *piVar8;
  uint uVar9;
  undefined1 *puVar10;
  int iVar11;
  int *piVar12;
  undefined4 *puVar13;
  int *piVar14;
  int *unaff_s1;
  int *piVar15;
  int iVar16;
  undefined4 *puVar17;
  int iVar18;
  int *unaff_s2;
  undefined4 *puVar19;
  int *unaff_s4;
  int *unaff_s5;
  int *piVar20;
  int *unaff_s6;
  int iVar21;
  undefined1 *unaff_s7;
  undefined *puVar22;
  code *pcVar23;
  undefined *puVar24;
  code *pcVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  code *pcVar29;
  undefined4 uVar30;
  undefined8 uVar31;
  undefined1 auStack_88 [16];
  undefined *apuStack_78 [2];
  int iStack_70;
  int *piStack_6c;
  undefined *puStack_64;
  mpq_t qabs;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  piVar12 = *(int **)PTR___stack_chk_guard_00097540;
  if (n < 0) {
    iVar7 = (q->_mp_num)._mp_size;
    if (iVar7 < 0) {
      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;
      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;
      n = -n;
      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;
      qabs[0]._mp_num._mp_size = -iVar7;
      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);
      iVar7 = -iVar7;
    }
    else {
      iVar7 = 1;
    }
  }
  else {
    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();
  }
  if (piVar12 == *(int **)puVar1) {
    return iVar7;
  }
  puVar22 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar24 = puVar22 + 0x67550;
  puVar10 = auStack_88;
  puVar26 = auStack_88;
  puVar19 = *(undefined4 **)(puVar22 + 0x5fa50);
  puStack_64 = puVar1;
  piStack_6c = (int *)*puVar19;
  iVar7 = piVar12[1];
  pcVar23 = *(code **)(puVar22 + 0x5faec);
  apuStack_78[0] = puVar24;
  if ((int *)d == (int *)0x0) {
    (*pcVar23)();
    piVar8 = (int *)n;
    n = (long)unaff_s6;
LAB_00037c9c:
    (*pcVar23)();
    puVar24 = apuStack_78[0];
  }
  else {
    piVar8 = (int *)n;
    puVar10 = auStack_88;
    if ((int *)n != (int *)0x0) {
      if (iVar7 < 1) {
        iVar7 = -1;
        puVar10 = auStack_88;
      }
      else {
        unaff_s5 = (int *)piVar12[4];
        piVar8 = (int *)((int)unaff_s5 + 1);
        unaff_s4 = piVar12;
        puVar10 = auStack_88;
        if (iVar7 <= (int)piVar8) {
          unaff_s1 = (int *)(iVar7 + 1);
          if ((int)unaff_s1 < (int)unaff_s5) {
            iVar7 = -iVar7;
            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);
            puVar10 = auStack_88;
          }
          else {
            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;
            iStack_70 = 0;
            if (uVar9 < 0x7f01) {
              iVar2 = -(uVar9 + 7 & 0xfffffff8);
              puVar26 = auStack_88 + iVar2;
              unaff_s2 = (int *)((int)apuStack_78 + iVar2);
            }
            else {
              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);
            }
            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);
            puVar1 = apuStack_78[0];
            unaff_s1 = unaff_s2 + (int)unaff_s1;
            piVar8 = (int *)piVar12[5];
            unaff_s1[-1] = iVar2;
            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);
            d = (ulong)unaff_s5;
            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);
            puVar24 = apuStack_78[0];
            piVar12 = unaff_s1 + (int)unaff_s5;
            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);
            *piVar12 = iVar7;
            if (piVar14 == unaff_s5) {
              d = 0xffffffff;
              piVar15 = unaff_s2 + (int)piVar14;
              piVar12 = unaff_s1 + (int)piVar14;
              do {
                piVar14 = (int *)((int)piVar14 + -1);
                piVar12 = piVar12 + -1;
                if (piVar14 == (int *)0xffffffff) {
                  iVar7 = 0;
                  goto LAB_00037c04;
                }
                piVar20 = piVar15 + -1;
                piVar8 = (int *)*piVar12;
                piVar15 = piVar15 + -1;
              } while ((int *)*piVar20 == piVar8);
              iVar7 = -1;
              if (piVar8 < (int *)*piVar20) {
                iVar7 = 1;
              }
            }
            else {
              iVar7 = (int)piVar14 - (int)unaff_s5;
            }
LAB_00037c04:
            pcVar23 = *(code **)(puVar24 + -0x7a2c);
            puVar10 = puVar26;
            if (iStack_70 != 0) goto LAB_00037c9c;
          }
        }
      }
    }
  }
  pcVar23 = *(code **)(puVar24 + -0x7b70);
  if (piStack_6c == (int *)*puVar19) {
    return iVar7;
  }
  pcVar29 = __gmpq_div;
  piVar14 = piStack_6c;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x67350;
  puVar27 = puVar10 + -0x80;
  puVar3 = puVar10 + -0x80;
  *(int **)(puVar10 + -0x14) = unaff_s5;
  *(int *)(puVar10 + -0x28) = iVar7;
  piVar20 = *(int **)(pcVar23 + 0x5f850);
  piVar12 = *(int **)(d + 4);
  *(undefined1 **)(puVar10 + -8) = auStack_88;
  *(code **)(puVar10 + -4) = pcVar29;
  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;
  *(long *)(puVar10 + -0x10) = n;
  *(int **)(puVar10 + -0x18) = unaff_s4;
  *(undefined4 **)(puVar10 + -0x1c) = puVar19;
  *(int **)(puVar10 + -0x20) = unaff_s2;
  *(int **)(puVar10 + -0x24) = unaff_s1;
  *(code **)(puVar10 + -0x70) = pcVar25;
  *(int *)(puVar10 + -0x2c) = *piVar20;
  piVar15 = (int *)d;
  if (piVar12 == (int *)0x0) {
    (**(code **)(pcVar23 + 0x5f8ec))();
  }
  else {
    unaff_s2 = piVar14;
    unaff_s4 = piVar8;
    if ((int *)d != piVar14) {
      piVar15 = (int *)piVar8[1];
      if (piVar15 == (int *)0x0) {
        piVar14[1] = 0;
        *(undefined4 *)piVar14[5] = 1;
        piVar14[4] = 1;
        unaff_s1 = (int *)0x0;
        puVar3 = puVar10 + -0x80;
        goto LAB_00037f54;
      }
      if ((int)piVar15 < 0) {
        piVar15 = (int *)-(int)piVar15;
        if (-1 < (int)piVar12) goto LAB_00037d70;
LAB_00037f98:
        piVar12 = (int *)-(int)piVar12;
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar5 = piVar12;
        if ((int)piVar15 <= (int)piVar12) {
          piVar5 = piVar15;
        }
        uVar9 = (int)piVar5 << 2;
        *(int **)(puVar10 + -0x5c) = piVar5;
        if (uVar9 < 0x7f01) goto LAB_00037d90;
        pcVar23 = *(code **)(pcVar23 + 0x5f600);
LAB_00037fec:
        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      else {
        if ((int)piVar12 < 0) goto LAB_00037f98;
LAB_00037d70:
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar5 = piVar12;
        if ((int)piVar15 <= (int)piVar12) {
          piVar5 = piVar15;
        }
        uVar9 = (int)piVar5 << 2;
        *(int **)(puVar10 + -0x5c) = piVar5;
        if (0x7f00 < uVar9) {
          pcVar23 = *(code **)(pcVar23 + 0x5f600);
          goto LAB_00037fec;
        }
LAB_00037d90:
        iVar7 = -(uVar9 + 7 & 0xfffffff8);
        puVar27 = puVar10 + iVar7 + -0x80;
        puVar3 = puVar10 + iVar7 + -0x70;
      }
      *(undefined1 **)(puVar10 + -0x54) = puVar3;
      if ((int)piVar12 <= (int)piVar15) {
        piVar12 = piVar15;
      }
      *(int **)(puVar10 + -0x44) = piVar12;
      if ((uint)((int)piVar12 * 4) < 0x7f01) {
        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);
        puVar3 = puVar27 + iVar7 + 0x10;
        puVar27 = puVar27 + iVar7;
      }
      else {
        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      iVar16 = *(int *)(d + 0x10);
      iVar7 = piVar8[4];
      *(undefined1 **)(puVar10 + -0x3c) = puVar3;
      iVar2 = iVar7;
      if (iVar16 <= iVar7) {
        iVar2 = iVar16;
      }
      *(int *)(puVar10 + -0x50) = iVar2;
      if ((uint)(iVar2 * 4) < 0x7f01) {
        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);
        puVar3 = puVar27 + iVar2 + 0x10;
        puVar27 = puVar27 + iVar2;
      }
      else {
        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      *(undefined1 **)(puVar10 + -0x48) = puVar3;
      if (iVar7 <= iVar16) {
        iVar7 = iVar16;
      }
      *(int *)(puVar10 + -0x38) = iVar7;
      if ((uint)(iVar7 * 4) < 0x7f01) {
        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);
        puVar3 = puVar27 + iVar7 + 0x10;
        puVar27 = puVar27 + iVar7;
      }
      else {
        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      pcVar23 = *(code **)(pcVar25 + -0x7e44);
      unaff_s7 = puVar10 + -0x5c;
      *(undefined1 **)(puVar10 + -0x30) = puVar3;
      (*pcVar23)(unaff_s7,piVar8,d);
      n = (long)(puVar10 + -0x50);
      *(int **)(puVar10 + -100) = piVar8 + 3;
      piVar12 = (int *)(puVar10 + -0x44);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);
      unaff_s1 = (int *)(puVar10 + -0x38);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)
      ;
      piVar8 = piVar12;
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);
      pcVar25 = *(code **)(puVar10 + -0x70);
      if (piVar14[4] < 0) {
        piVar14[4] = -piVar14[4];
        piVar14[1] = -piVar14[1];
      }
      piVar14 = *(int **)(puVar10 + -0x60);
      puVar3 = puVar27;
      if (piVar14 != (int *)0x0) {
        (**(code **)(pcVar25 + -0x7a2c))();
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      goto LAB_00037f54;
    }
  }
  puVar13 = (undefined4 *)piVar15[5];
  puVar19 = (undefined4 *)piVar15[2];
  if (piVar15 == piVar8) {
    piVar14 = (int *)&DAT_00000001;
    *puVar19 = 1;
    piVar15[1] = 1;
    *puVar13 = 1;
    piVar15[4] = 1;
  }
  else {
    iVar2 = *piVar14;
    iVar16 = piVar14[3];
    iVar7 = piVar14[4];
    unaff_s2[2] = (int)puVar13;
    unaff_s2[5] = (int)puVar19;
    *unaff_s2 = iVar16;
    unaff_s2[3] = iVar2;
    if ((int)piVar12 < 1) {
      iVar7 = -iVar7;
      piVar12 = (int *)-(int)piVar12;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);
    unaff_s2[1] = iVar7;
    unaff_s2[4] = (int)piVar12;
    piVar14 = unaff_s2;
    piVar8 = unaff_s2;
    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);
    pcVar25 = *(code **)(puVar10 + -0x70);
    puVar3 = puVar10 + -0x80;
  }
LAB_00037f54:
  if (*(int *)(puVar10 + -0x2c) == *piVar20) {
    return *piVar20;
  }
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  pcVar29 = __gmpq_get_d;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x66f70;
  puVar27 = puVar3 + -0x70;
  puVar28 = puVar3 + -0x70;
  *(int **)(puVar3 + -0x14) = piVar20;
  *(int **)(puVar3 + -0x18) = unaff_s4;
  piVar15 = *(int **)(pcVar23 + 0x5f470);
  iVar2 = piVar14[1];
  *(undefined1 **)(puVar3 + -8) = puVar10 + -0x80;
  *(int **)(puVar3 + -0x20) = unaff_s2;
  *(code **)(puVar3 + -4) = pcVar29;
  *(undefined1 **)(puVar3 + -0xc) = unaff_s7;
  *(long *)(puVar3 + -0x10) = n;
  *(ulong *)(puVar3 + -0x1c) = d;
  *(int **)(puVar3 + -0x24) = unaff_s1;
  *(int **)(puVar3 + -0x28) = piVar12;
  *(code **)(puVar3 + -0x50) = pcVar25;
  iVar7 = piVar14[4];
  *(int *)(puVar3 + -0x2c) = *piVar15;
  if (iVar2 != 0) {
    *(undefined4 *)(puVar3 + -0x40) = 0;
    iVar16 = iVar2;
    if (iVar2 < 0) {
      iVar16 = -iVar2;
    }
    if (iVar7 < 0) {
      iVar7 = -iVar7;
    }
    puVar19 = (undefined4 *)piVar14[2];
    iVar21 = piVar14[5];
    iVar4 = 3 - (iVar16 - iVar7);
    piVar12 = (int *)(iVar4 * -0x20);
    iVar11 = iVar16;
    iVar18 = iVar4;
    if (iVar4 < 0) {
      iVar18 = (iVar16 - iVar7) + -3;
      puVar19 = puVar19 + iVar18;
      iVar11 = iVar16 - iVar18;
      iVar18 = iVar4 + iVar18;
    }
    iVar16 = iVar16 + iVar4;
    iVar4 = iVar7;
    if (0 < iVar18) {
      iVar4 = iVar7 + iVar16;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f220);
    if ((uint)(iVar4 * 4) < 0x7f01) {
      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);
      puVar28 = puVar3 + iVar4 + -0x70;
      puVar10 = puVar3 + iVar4 + -0x50;
    }
    else {
      *(int *)(puVar3 + -0x48) = iVar11;
      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);
      pcVar25 = *(code **)(puVar3 + -0x50);
      iVar11 = *(int *)(puVar3 + -0x48);
    }
    puVar13 = puVar19;
    iVar4 = iVar11;
    if (0 < iVar18) {
      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);
      puVar6 = puVar13;
      iVar4 = iVar18;
      do {
        iVar4 = iVar4 + -1;
        *puVar6 = 0;
        puVar6 = puVar6 + 1;
      } while (iVar4 != 0);
      iVar4 = iVar16;
      if (iVar11 != 0) {
        uVar30 = *puVar19;
        iVar16 = iVar11 + -1;
        puVar17 = puVar13 + iVar18;
        puVar6 = puVar17;
        if (iVar16 != 0) {
          do {
            puVar19 = puVar19 + 1;
            *puVar6 = uVar30;
            iVar16 = iVar16 + -1;
            uVar30 = *puVar19;
            puVar6 = puVar6 + 1;
          } while (iVar16 != 0);
          puVar17 = puVar17 + iVar11 + -1;
        }
        *puVar17 = uVar30;
      }
    }
    pcVar23 = *(code **)(pcVar25 + -0x7a30);
    unaff_s1 = (int *)(puVar3 + -0x3c);
    *(int *)(puVar28 + 0x18) = iVar7;
    *(int *)(puVar28 + 0x14) = iVar21;
    *(int *)(puVar28 + 0x10) = iVar4;
    (*pcVar23)(unaff_s1,puVar10,0,puVar13);
    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));
    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);
    piVar14 = *(int **)(puVar3 + -0x40);
    pcVar25 = *(code **)(puVar3 + -0x50);
    puVar27 = puVar28;
    if (piVar14 != (int *)0x0) {
      pcVar23 = *(code **)(pcVar25 + -0x7a2c);
      *(undefined8 *)(puVar3 + -0x48) = uVar31;
      (*pcVar23)();
      pcVar25 = *(code **)(puVar3 + -0x50);
    }
  }
  iVar2 = *piVar15;
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  if (*(int *)(puVar3 + -0x2c) != iVar2) {
    uVar30 = 0x3831c;
    (*pcVar23)();
    iVar2 = *piVar14;
    *(int **)(puVar27 + -0x10) = piVar12;
    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;
    *(int *)(puVar27 + -8) = iVar7;
    *(int **)(puVar27 + -0xc) = unaff_s1;
    *(undefined4 *)(puVar27 + -4) = uVar30;
    iVar7 = piVar8[4];
    if (iVar2 < iVar7) {
      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();
    }
    else {
      puVar19 = (undefined4 *)piVar14[2];
    }
    piVar14[1] = iVar7;
    if (iVar7 != 0) {
      puVar6 = (undefined4 *)piVar8[5];
      iVar2 = iVar7 + -1;
      uVar30 = *puVar6;
      puVar13 = puVar19;
      if (iVar2 != 0) {
        do {
          puVar6 = puVar6 + 1;
          *puVar13 = uVar30;
          iVar2 = iVar2 + -1;
          uVar30 = *puVar6;
          puVar13 = puVar13 + 1;
        } while (iVar2 != 0);
        puVar19 = puVar19 + iVar7 + -1;
      }
      *puVar19 = uVar30;
    }
    return (int)puVar19;
  }
  return iVar2;
}



undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined1 *puVar4;
  int iVar5;
  int *piVar6;
  undefined4 *puVar7;
  int *piVar8;
  uint uVar9;
  undefined1 *puVar10;
  int iVar11;
  int *piVar12;
  int *piVar13;
  int *unaff_s1;
  int *piVar14;
  int iVar15;
  undefined4 *puVar16;
  int iVar17;
  int *unaff_s2;
  undefined4 *puVar18;
  int *unaff_s4;
  int iVar19;
  int *unaff_s5;
  int *piVar20;
  int *unaff_s6;
  int iVar21;
  undefined1 *unaff_s7;
  undefined *puVar22;
  code *pcVar23;
  undefined *puVar24;
  code *pcVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  code *pcVar29;
  undefined4 uVar30;
  undefined8 uVar31;
  undefined1 auStack_88 [16];
  undefined *apuStack_78 [2];
  int iStack_70;
  int *piStack_6c;
  undefined *puStack_64;
  undefined1 auStack_24 [4];
  int local_20;
  undefined4 local_1c;
  undefined4 local_14;
  undefined4 local_10;
  int *local_c;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  local_c = *(int **)PTR___stack_chk_guard_00097540;
  if ((int)param_2 < 0) {
    if (*(int *)(param_1 + 4) < 0) {
      local_1c = *(undefined4 *)(param_1 + 8);
      local_14 = *(undefined4 *)(param_1 + 0x10);
      param_2 = (int *)-(int)param_2;
      local_10 = *(undefined4 *)(param_1 + 0x14);
      local_20 = -*(int *)(param_1 + 4);
      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);
      puVar2 = (undefined4 *)-iVar3;
    }
    else {
      puVar2 = (undefined4 *)0x1;
    }
  }
  else {
    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();
  }
  if (local_c == *(int **)puVar1) {
    return puVar2;
  }
  piVar13 = local_c;
  puVar22 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar24 = puVar22 + 0x67550;
  puVar10 = auStack_88;
  puVar26 = auStack_88;
  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);
  puStack_64 = puVar1;
  piStack_6c = (int *)*puVar18;
  puVar2 = (undefined4 *)piVar13[1];
  pcVar23 = *(code **)(puVar22 + 0x5faec);
  apuStack_78[0] = puVar24;
  if (param_3 == (int *)0x0) {
    (*pcVar23)();
    piVar8 = param_2;
    param_2 = unaff_s6;
LAB_00037c9c:
    (*pcVar23)();
    puVar24 = apuStack_78[0];
  }
  else {
    piVar8 = param_2;
    puVar10 = auStack_88;
    if (param_2 != (int *)0x0) {
      if ((int)puVar2 < 1) {
        puVar2 = (undefined4 *)0xffffffff;
        puVar10 = auStack_88;
      }
      else {
        unaff_s5 = (int *)piVar13[4];
        piVar8 = (int *)((int)unaff_s5 + 1);
        unaff_s4 = piVar13;
        puVar10 = auStack_88;
        if ((int)puVar2 <= (int)piVar8) {
          unaff_s1 = (int *)((int)puVar2 + 1);
          if ((int)unaff_s1 < (int)unaff_s5) {
            puVar2 = (undefined4 *)-(int)puVar2;
            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);
            puVar10 = auStack_88;
          }
          else {
            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;
            iStack_70 = 0;
            if (uVar9 < 0x7f01) {
              iVar3 = -(uVar9 + 7 & 0xfffffff8);
              puVar26 = auStack_88 + iVar3;
              unaff_s2 = (int *)((int)apuStack_78 + iVar3);
            }
            else {
              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);
            }
            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);
            puVar1 = apuStack_78[0];
            unaff_s1 = unaff_s2 + (int)unaff_s1;
            piVar8 = (int *)piVar13[5];
            unaff_s1[-1] = iVar3;
            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);
            param_3 = unaff_s5;
            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);
            puVar24 = apuStack_78[0];
            piVar13 = unaff_s1 + (int)unaff_s5;
            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);
            *piVar13 = iVar3;
            if (piVar12 == unaff_s5) {
              param_3 = (int *)0xffffffff;
              piVar14 = unaff_s2 + (int)piVar12;
              piVar13 = unaff_s1 + (int)piVar12;
              do {
                piVar12 = (int *)((int)piVar12 + -1);
                piVar13 = piVar13 + -1;
                if (piVar12 == (int *)0xffffffff) {
                  puVar2 = (undefined4 *)0x0;
                  goto LAB_00037c04;
                }
                piVar20 = piVar14 + -1;
                piVar8 = (int *)*piVar13;
                piVar14 = piVar14 + -1;
              } while ((int *)*piVar20 == piVar8);
              puVar2 = (undefined4 *)0xffffffff;
              if (piVar8 < (int *)*piVar20) {
                puVar2 = (undefined4 *)0x1;
              }
            }
            else {
              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);
            }
LAB_00037c04:
            pcVar23 = *(code **)(puVar24 + -0x7a2c);
            puVar10 = puVar26;
            if (iStack_70 != 0) goto LAB_00037c9c;
          }
        }
      }
    }
  }
  pcVar23 = *(code **)(puVar24 + -0x7b70);
  if (piStack_6c == (int *)*puVar18) {
    return puVar2;
  }
  pcVar29 = __gmpq_div;
  piVar12 = piStack_6c;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x67350;
  puVar27 = puVar10 + -0x80;
  puVar4 = puVar10 + -0x80;
  *(int **)(puVar10 + -0x14) = unaff_s5;
  *(undefined4 **)(puVar10 + -0x28) = puVar2;
  piVar20 = *(int **)(pcVar23 + 0x5f850);
  piVar13 = (int *)param_3[1];
  *(undefined1 **)(puVar10 + -8) = auStack_88;
  *(code **)(puVar10 + -4) = pcVar29;
  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;
  *(int **)(puVar10 + -0x10) = param_2;
  *(int **)(puVar10 + -0x18) = unaff_s4;
  *(undefined4 **)(puVar10 + -0x1c) = puVar18;
  *(int **)(puVar10 + -0x20) = unaff_s2;
  *(int **)(puVar10 + -0x24) = unaff_s1;
  *(code **)(puVar10 + -0x70) = pcVar25;
  *(int *)(puVar10 + -0x2c) = *piVar20;
  piVar14 = param_3;
  if (piVar13 == (int *)0x0) {
    (**(code **)(pcVar23 + 0x5f8ec))();
  }
  else {
    unaff_s2 = piVar12;
    unaff_s4 = piVar8;
    if (param_3 != piVar12) {
      piVar14 = (int *)piVar8[1];
      if (piVar14 == (int *)0x0) {
        piVar12[1] = 0;
        *(undefined4 *)piVar12[5] = 1;
        piVar12[4] = 1;
        unaff_s1 = (int *)0x0;
        puVar4 = puVar10 + -0x80;
        goto LAB_00037f54;
      }
      if ((int)piVar14 < 0) {
        piVar14 = (int *)-(int)piVar14;
        if (-1 < (int)piVar13) goto LAB_00037d70;
LAB_00037f98:
        piVar13 = (int *)-(int)piVar13;
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar6 = piVar13;
        if ((int)piVar14 <= (int)piVar13) {
          piVar6 = piVar14;
        }
        uVar9 = (int)piVar6 << 2;
        *(int **)(puVar10 + -0x5c) = piVar6;
        if (uVar9 < 0x7f01) goto LAB_00037d90;
        pcVar23 = *(code **)(pcVar23 + 0x5f600);
LAB_00037fec:
        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      else {
        if ((int)piVar13 < 0) goto LAB_00037f98;
LAB_00037d70:
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar6 = piVar13;
        if ((int)piVar14 <= (int)piVar13) {
          piVar6 = piVar14;
        }
        uVar9 = (int)piVar6 << 2;
        *(int **)(puVar10 + -0x5c) = piVar6;
        if (0x7f00 < uVar9) {
          pcVar23 = *(code **)(pcVar23 + 0x5f600);
          goto LAB_00037fec;
        }
LAB_00037d90:
        iVar3 = -(uVar9 + 7 & 0xfffffff8);
        puVar27 = puVar10 + iVar3 + -0x80;
        puVar4 = puVar10 + iVar3 + -0x70;
      }
      *(undefined1 **)(puVar10 + -0x54) = puVar4;
      if ((int)piVar13 <= (int)piVar14) {
        piVar13 = piVar14;
      }
      *(int **)(puVar10 + -0x44) = piVar13;
      if ((uint)((int)piVar13 * 4) < 0x7f01) {
        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar3 + 0x10;
        puVar27 = puVar27 + iVar3;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      iVar15 = param_3[4];
      iVar3 = piVar8[4];
      *(undefined1 **)(puVar10 + -0x3c) = puVar4;
      iVar19 = iVar3;
      if (iVar15 <= iVar3) {
        iVar19 = iVar15;
      }
      *(int *)(puVar10 + -0x50) = iVar19;
      if ((uint)(iVar19 * 4) < 0x7f01) {
        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar19 + 0x10;
        puVar27 = puVar27 + iVar19;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      *(undefined1 **)(puVar10 + -0x48) = puVar4;
      if (iVar3 <= iVar15) {
        iVar3 = iVar15;
      }
      *(int *)(puVar10 + -0x38) = iVar3;
      if ((uint)(iVar3 * 4) < 0x7f01) {
        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar3 + 0x10;
        puVar27 = puVar27 + iVar3;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      pcVar23 = *(code **)(pcVar25 + -0x7e44);
      unaff_s7 = puVar10 + -0x5c;
      *(undefined1 **)(puVar10 + -0x30) = puVar4;
      (*pcVar23)(unaff_s7,piVar8,param_3);
      param_2 = (int *)(puVar10 + -0x50);
      *(int **)(puVar10 + -100) = piVar8 + 3;
      piVar13 = (int *)(puVar10 + -0x44);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);
      unaff_s1 = (int *)(puVar10 + -0x38);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))
                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);
      piVar8 = piVar13;
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);
      pcVar25 = *(code **)(puVar10 + -0x70);
      if (piVar12[4] < 0) {
        piVar12[4] = -piVar12[4];
        piVar12[1] = -piVar12[1];
      }
      piVar12 = *(int **)(puVar10 + -0x60);
      puVar4 = puVar27;
      if (piVar12 != (int *)0x0) {
        (**(code **)(pcVar25 + -0x7a2c))();
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      goto LAB_00037f54;
    }
  }
  puVar18 = (undefined4 *)piVar14[5];
  puVar2 = (undefined4 *)piVar14[2];
  if (piVar14 == piVar8) {
    piVar12 = (int *)0x1;
    *puVar2 = 1;
    piVar14[1] = 1;
    *puVar18 = 1;
    piVar14[4] = 1;
  }
  else {
    iVar19 = *piVar12;
    iVar15 = piVar12[3];
    iVar3 = piVar12[4];
    unaff_s2[2] = (int)puVar18;
    unaff_s2[5] = (int)puVar2;
    *unaff_s2 = iVar15;
    unaff_s2[3] = iVar19;
    if ((int)piVar13 < 1) {
      iVar3 = -iVar3;
      piVar13 = (int *)-(int)piVar13;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);
    unaff_s2[1] = iVar3;
    unaff_s2[4] = (int)piVar13;
    piVar12 = unaff_s2;
    piVar8 = unaff_s2;
    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);
    pcVar25 = *(code **)(puVar10 + -0x70);
    puVar4 = puVar10 + -0x80;
  }
LAB_00037f54:
  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {
    return (undefined4 *)*piVar20;
  }
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  pcVar29 = __gmpq_get_d;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x66f70;
  puVar27 = puVar4 + -0x70;
  puVar28 = puVar4 + -0x70;
  *(int **)(puVar4 + -0x14) = piVar20;
  *(int **)(puVar4 + -0x18) = unaff_s4;
  piVar14 = *(int **)(pcVar23 + 0x5f470);
  iVar19 = piVar12[1];
  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;
  *(int **)(puVar4 + -0x20) = unaff_s2;
  *(code **)(puVar4 + -4) = pcVar29;
  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;
  *(int **)(puVar4 + -0x10) = param_2;
  *(int **)(puVar4 + -0x1c) = param_3;
  *(int **)(puVar4 + -0x24) = unaff_s1;
  *(int **)(puVar4 + -0x28) = piVar13;
  *(code **)(puVar4 + -0x50) = pcVar25;
  iVar3 = piVar12[4];
  *(int *)(puVar4 + -0x2c) = *piVar14;
  if (iVar19 != 0) {
    *(undefined4 *)(puVar4 + -0x40) = 0;
    iVar15 = iVar19;
    if (iVar19 < 0) {
      iVar15 = -iVar19;
    }
    if (iVar3 < 0) {
      iVar3 = -iVar3;
    }
    puVar2 = (undefined4 *)piVar12[2];
    iVar21 = piVar12[5];
    iVar5 = 3 - (iVar15 - iVar3);
    piVar13 = (int *)(iVar5 * -0x20);
    iVar11 = iVar15;
    iVar17 = iVar5;
    if (iVar5 < 0) {
      iVar17 = (iVar15 - iVar3) + -3;
      puVar2 = puVar2 + iVar17;
      iVar11 = iVar15 - iVar17;
      iVar17 = iVar5 + iVar17;
    }
    iVar15 = iVar15 + iVar5;
    iVar5 = iVar3;
    if (0 < iVar17) {
      iVar5 = iVar3 + iVar15;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f220);
    if ((uint)(iVar5 * 4) < 0x7f01) {
      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);
      puVar28 = puVar4 + iVar5 + -0x70;
      puVar10 = puVar4 + iVar5 + -0x50;
    }
    else {
      *(int *)(puVar4 + -0x48) = iVar11;
      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);
      pcVar25 = *(code **)(puVar4 + -0x50);
      iVar11 = *(int *)(puVar4 + -0x48);
    }
    puVar18 = puVar2;
    iVar5 = iVar11;
    if (0 < iVar17) {
      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);
      puVar7 = puVar18;
      iVar5 = iVar17;
      do {
        iVar5 = iVar5 + -1;
        *puVar7 = 0;
        puVar7 = puVar7 + 1;
      } while (iVar5 != 0);
      iVar5 = iVar15;
      if (iVar11 != 0) {
        uVar30 = *puVar2;
        iVar15 = iVar11 + -1;
        puVar16 = puVar18 + iVar17;
        puVar7 = puVar16;
        if (iVar15 != 0) {
          do {
            puVar2 = puVar2 + 1;
            *puVar7 = uVar30;
            iVar15 = iVar15 + -1;
            uVar30 = *puVar2;
            puVar7 = puVar7 + 1;
          } while (iVar15 != 0);
          puVar16 = puVar16 + iVar11 + -1;
        }
        *puVar16 = uVar30;
      }
    }
    pcVar23 = *(code **)(pcVar25 + -0x7a30);
    unaff_s1 = (int *)(puVar4 + -0x3c);
    *(int *)(puVar28 + 0x18) = iVar3;
    *(int *)(puVar28 + 0x14) = iVar21;
    *(int *)(puVar28 + 0x10) = iVar5;
    (*pcVar23)(unaff_s1,puVar10,0,puVar18);
    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));
    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);
    piVar12 = *(int **)(puVar4 + -0x40);
    pcVar25 = *(code **)(puVar4 + -0x50);
    puVar27 = puVar28;
    if (piVar12 != (int *)0x0) {
      pcVar23 = *(code **)(pcVar25 + -0x7a2c);
      *(undefined8 *)(puVar4 + -0x48) = uVar31;
      (*pcVar23)();
      pcVar25 = *(code **)(puVar4 + -0x50);
    }
  }
  puVar2 = (undefined4 *)*piVar14;
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {
    uVar30 = 0x3831c;
    (*pcVar23)();
    iVar19 = *piVar12;
    *(int **)(puVar27 + -0x10) = piVar13;
    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;
    *(int *)(puVar27 + -8) = iVar3;
    *(int **)(puVar27 + -0xc) = unaff_s1;
    *(undefined4 *)(puVar27 + -4) = uVar30;
    iVar3 = piVar8[4];
    if (iVar19 < iVar3) {
      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();
    }
    else {
      puVar2 = (undefined4 *)piVar12[2];
    }
    piVar12[1] = iVar3;
    if (iVar3 != 0) {
      puVar7 = (undefined4 *)piVar8[5];
      iVar19 = iVar3 + -1;
      uVar30 = *puVar7;
      puVar18 = puVar2;
      if (iVar19 != 0) {
        do {
          puVar7 = puVar7 + 1;
          *puVar18 = uVar30;
          iVar19 = iVar19 + -1;
          uVar30 = *puVar7;
          puVar18 = puVar18 + 1;
        } while (iVar19 != 0);
        puVar2 = puVar2 + iVar3 + -1;
      }
      *puVar2 = uVar30;
    }
    return puVar2;
  }
  return puVar2;
}


lui gp,0x6
addiu gp,gp,0x7610
addu gp,gp,t9
addiu sp,sp,-0x40
sw s0,0x38(sp)
lw s0,-0x7b00(gp)
sw gp,0x10(sp)
sw ra,0x3c(sp)
lw a3,0x0(s0)
sw a3,0x34(sp)
bgez a1,0x00037ac8
_lw t9,-0x7a34(gp)
or v0,a0,zero
lw a0,0x4(a0)
bltz a0,0x00037a90
_subu a3,zero,a0
li v0,0x1
lw a0,0x34(sp)
lw v1,0x0(s0)
bne a0,v1,0x00037ad8
_lw ra,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x40
lw t1,0x8(v0)
lw t0,0x10(v0)
subu a1,zero,a1
lw v0,0x14(v0)
addiu a0,sp,0x1c
lw t9,-0x7a34(gp)
sw a3,0x20(sp)
sw t1,0x24(sp)
sw t0,0x2c(sp)
jalr t9
_sw v0,0x30(sp)
lw gp,0x10(sp)
b 0x00037a74
_subu v0,zero,v0
jalr t9
_nop
b 0x00037a74
_lw gp,0x10(sp)
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
nop
(translation_unit "undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}\n\n" (function_definition "undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* __gmpq_cmp_si(int param_1,int *param_2,int *param_3)" * (function_declarator "__gmpq_cmp_si(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 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  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *unaff_s1;" primitive_type (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined1 *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined4 uVar30;" type_identifier identifier ;) (declaration "undefined8 uVar31;" type_identifier identifier ;) (declaration "undefined1 auStack_88 [16];" type_identifier (array_declarator "auStack_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_78 [2];" type_identifier (pointer_declarator "*apuStack_78 [2]" * (array_declarator "apuStack_78 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_70;" primitive_type identifier ;) (declaration "int *piStack_6c;" primitive_type (pointer_declarator "*piStack_6c" * identifier) ;) (declaration "undefined *puStack_64;" type_identifier (pointer_declarator "*puStack_64" * identifier) ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 local_10;" type_identifier identifier ;) (declaration "int *local_c;" primitive_type (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" * (cast_expression "(int **)PTR___stack_chk_guard_00097540" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\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    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 4) < 0)" ( (binary_expression "*(int *)(param_1 + 4) < 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }" { (expression_statement "local_1c = *(undefined4 *)(param_1 + 8);" (assignment_expression "local_1c = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_14 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "local_14 = *(undefined4 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2 = (int *)-(int)param_2;" (assignment_expression "param_2 = (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)))) ;) (expression_statement "local_10 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "local_10 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_20 = -*(int *)(param_1 + 4);" (assignment_expression "local_20 = -*(int *)(param_1 + 4)" identifier = (unary_expression "-*(int *)(param_1 + 4)" - (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);" (assignment_expression "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" identifier = (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_24)" ( identifier )))) ;) (expression_statement "puVar2 = (undefined4 *)-iVar3;" (assignment_expression "puVar2 = (undefined4 *)-iVar3" identifier = (cast_expression "(undefined4 *)-iVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-iVar3" - identifier))) ;) }) (else_clause "else {\n      puVar2 = (undefined4 *)0x1;\n    }" else (compound_statement "{\n      puVar2 = (undefined4 *)0x1;\n    }" { (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" else (compound_statement "{\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" { (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) }))) (if_statement "if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }" if (parenthesized_expression "(local_c == *(int **)puVar1)" ( (binary_expression "local_c == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar2;\n  }" { (return_statement "return puVar2;" return identifier ;) })) (expression_statement "piVar13 = local_c;" (assignment_expression "piVar13 = local_c" identifier = identifier) ;) (expression_statement "puVar22 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar24 = puVar22 + 0x67550;" (assignment_expression "puVar24 = puVar22 + 0x67550" identifier = (binary_expression "puVar22 + 0x67550" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (expression_statement "puVar26 = auStack_88;" (assignment_expression "puVar26 = auStack_88" identifier = identifier) ;) (expression_statement "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);" (assignment_expression "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + 0x5fa50)" * (cast_expression "(undefined4 **)(puVar22 + 0x5fa50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5fa50)" ( (binary_expression "puVar22 + 0x5fa50" identifier + number_literal) ))))) ;) (expression_statement "puStack_64 = puVar1;" (assignment_expression "puStack_64 = puVar1" identifier = identifier) ;) (expression_statement "piStack_6c = (int *)*puVar18;" (assignment_expression "piStack_6c = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puVar2 = (undefined4 *)piVar13[1];" (assignment_expression "puVar2 = (undefined4 *)piVar13[1]" identifier = (cast_expression "(undefined4 *)piVar13[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar23 = *(code **)(puVar22 + 0x5faec);" (assignment_expression "pcVar23 = *(code **)(puVar22 + 0x5faec)" identifier = (pointer_expression "*(code **)(puVar22 + 0x5faec)" * (cast_expression "(code **)(puVar22 + 0x5faec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5faec)" ( (binary_expression "puVar22 + 0x5faec" identifier + number_literal) ))))) ;) (expression_statement "apuStack_78[0] = puVar24;" (assignment_expression "apuStack_78[0] = puVar24" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }" { (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" identifier = identifier) ;) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (labeled_statement "LAB_00037c9c:\n    (*pcVar23)();" statement_identifier : (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" else (compound_statement "{\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" identifier = identifier) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\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      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }" { (if_statement "if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" if (parenthesized_expression "((int)puVar2 < 1)" ( (binary_expression "(int)puVar2 < 1" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }" { (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" else (compound_statement "{\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" { (expression_statement "unaff_s5 = (int *)piVar13[4];" (assignment_expression "unaff_s5 = (int *)piVar13[4]" identifier = (cast_expression "(int *)piVar13[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar8 = (int *)((int)unaff_s5 + 1);" (assignment_expression "piVar8 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s4 = piVar13;" (assignment_expression "unaff_s4 = piVar13" identifier = identifier) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" if (parenthesized_expression "((int)puVar2 <= (int)piVar8)" ( (binary_expression "(int)puVar2 <= (int)piVar8" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" { (expression_statement "unaff_s1 = (int *)((int)puVar2 + 1);" (assignment_expression "unaff_s1 = (int *)((int)puVar2 + 1)" identifier = (cast_expression "(int *)((int)puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 1)" ( (binary_expression "(int)puVar2 + 1" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" if (parenthesized_expression "((int)unaff_s1 < (int)unaff_s5)" ( (binary_expression "(int)unaff_s1 < (int)unaff_s5" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }" { (expression_statement "puVar2 = (undefined4 *)-(int)puVar2;" (assignment_expression "puVar2 = (undefined4 *)-(int)puVar2" identifier = (cast_expression "(undefined4 *)-(int)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar2" - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar8 = (int *)((int)piVar8 + (int)unaff_s1);" (assignment_expression "piVar8 = (int *)((int)piVar8 + (int)unaff_s1)" identifier = (cast_expression "(int *)((int)piVar8 + (int)unaff_s1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" else (compound_statement "{\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" { (expression_statement "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;" (assignment_expression "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4" identifier = (binary_expression "((int)piVar8 + (int)unaff_s1) * 4" (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (expression_statement "iStack_70 = 0;" (assignment_expression "iStack_70 = 0" identifier = number_literal) ;) (if_statement "if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }" { (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_88 + iVar3;" (assignment_expression "puVar26 = auStack_88 + iVar3" identifier = (binary_expression "auStack_88 + iVar3" identifier + identifier)) ;) (expression_statement "unaff_s2 = (int *)((int)apuStack_78 + iVar3);" (assignment_expression "unaff_s2 = (int *)((int)apuStack_78 + iVar3)" identifier = (cast_expression "(int *)((int)apuStack_78 + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_78 + iVar3)" ( (binary_expression "(int)apuStack_78 + iVar3" (cast_expression "(int)apuStack_78" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" else (compound_statement "{\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" { (expression_statement "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);" (assignment_expression "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (parenthesized_expression "(**(code **)(puVar22 + 0x5f800))" ( (pointer_expression "**(code **)(puVar22 + 0x5f800)" * (pointer_expression "*(code **)(puVar22 + 0x5f800)" * (cast_expression "(code **)(puVar22 + 0x5f800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5f800)" ( (binary_expression "puVar22 + 0x5f800" identifier + number_literal) ))))) )) (argument_list "(&iStack_70)" ( (pointer_expression "&iStack_70" & identifier) ))))) ;) }))) (expression_statement "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);" (assignment_expression "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" identifier = (call_expression "(**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" (parenthesized_expression "(**(code **)(apuStack_78[0] + -0x7f9c))" ( (pointer_expression "**(code **)(apuStack_78[0] + -0x7f9c)" * (pointer_expression "*(code **)(apuStack_78[0] + -0x7f9c)" * (cast_expression "(code **)(apuStack_78[0] + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_78[0] + -0x7f9c)" ( (binary_expression "apuStack_78[0] + -0x7f9c" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(unaff_s2,piVar13[2],puVar2,param_3)" ( identifier , (subscript_expression "piVar13[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) (expression_statement "puVar1 = apuStack_78[0];" (assignment_expression "puVar1 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "unaff_s1 = unaff_s2 + (int)unaff_s1;" (assignment_expression "unaff_s1 = unaff_s2 + (int)unaff_s1" identifier = (binary_expression "unaff_s2 + (int)unaff_s1" identifier + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar8 = (int *)piVar13[5];" (assignment_expression "piVar8 = (int *)piVar13[5]" identifier = (cast_expression "(int *)piVar13[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s1[-1] = iVar3;" (assignment_expression "unaff_s1[-1] = iVar3" (subscript_expression "unaff_s1[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);" (assignment_expression "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2)" identifier = (cast_expression "(int *)((uint)(iVar3 != 0) + (int)puVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar3 != 0) + (int)puVar2)" ( (binary_expression "(uint)(iVar3 != 0) + (int)puVar2" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) + (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);" (assignment_expression "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" identifier = (call_expression "(**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" (parenthesized_expression "(**(code **)(puVar1 + -0x7f9c))" ( (pointer_expression "**(code **)(puVar1 + -0x7f9c)" * (pointer_expression "*(code **)(puVar1 + -0x7f9c)" * (cast_expression "(code **)(puVar1 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x7f9c)" ( (binary_expression "puVar1 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,unaff_s5,param_2)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "piVar13 = unaff_s1 + (int)unaff_s5;" (assignment_expression "piVar13 = unaff_s1 + (int)unaff_s5" identifier = (binary_expression "unaff_s1 + (int)unaff_s5" identifier + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);" (assignment_expression "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5)" identifier = (cast_expression "(int *)((uint)(iVar3 != 0) + (int)unaff_s5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar3 != 0) + (int)unaff_s5)" ( (binary_expression "(uint)(iVar3 != 0) + (int)unaff_s5" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*piVar13 = iVar3;" (assignment_expression "*piVar13 = iVar3" (pointer_expression "*piVar13" * identifier) = identifier) ;) (if_statement "if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" if (parenthesized_expression "(piVar12 == unaff_s5)" ( (binary_expression "piVar12 == unaff_s5" identifier == identifier) )) (compound_statement "{\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }" { (expression_statement "param_3 = (int *)0xffffffff;" (assignment_expression "param_3 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar14 = unaff_s2 + (int)piVar12;" (assignment_expression "piVar14 = unaff_s2 + (int)piVar12" identifier = (binary_expression "unaff_s2 + (int)piVar12" identifier + (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar13 = unaff_s1 + (int)piVar12;" (assignment_expression "piVar13 = unaff_s1 + (int)piVar12" identifier = (binary_expression "unaff_s1 + (int)piVar12" identifier + (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);" do (compound_statement "{\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              }" { (expression_statement "piVar12 = (int *)((int)piVar12 + -1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + -1)" identifier = (cast_expression "(int *)((int)piVar12 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + -1)" ( (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) (if_statement "if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" if (parenthesized_expression "(piVar12 == (int *)0xffffffff)" ( (binary_expression "piVar12 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" { (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00037c04;" goto statement_identifier ;) })) (expression_statement "piVar20 = piVar14 + -1;" (assignment_expression "piVar20 = piVar14 + -1" identifier = (binary_expression "piVar14 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)*piVar13;" (assignment_expression "piVar8 = (int *)*piVar13" identifier = (cast_expression "(int *)*piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "piVar14 = piVar14 + -1;" (assignment_expression "piVar14 = piVar14 + -1" identifier = (binary_expression "piVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)*piVar20 == piVar8)" ( (binary_expression "(int *)*piVar20 == piVar8" (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier)) == identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }" if (parenthesized_expression "(piVar8 < (int *)*piVar20)" ( (binary_expression "piVar8 < (int *)*piVar20" identifier < (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier))) )) (compound_statement "{\n                puVar2 = (undefined4 *)0x1;\n              }" { (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }) (else_clause "else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" else (compound_statement "{\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" { (expression_statement "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);" (assignment_expression "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5)" identifier = (cast_expression "(undefined4 *)((int)piVar12 - (int)unaff_s5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 - (int)unaff_s5)" ( (binary_expression "(int)piVar12 - (int)unaff_s5" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (labeled_statement "LAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);" statement_identifier : (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7a2c)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7a2c)" * (cast_expression "(code **)(puVar24 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7a2c)" ( (binary_expression "puVar24 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar10 = puVar26;" (assignment_expression "puVar10 = puVar26" identifier = identifier) ;) (if_statement "if (iStack_70 != 0) goto LAB_00037c9c;" if (parenthesized_expression "(iStack_70 != 0)" ( (binary_expression "iStack_70 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00037c9c;" goto statement_identifier ;)) }))) })) }))) })) }))) (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7b70)" * (cast_expression "(code **)(puVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7b70)" ( (binary_expression "puVar24 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }" if (parenthesized_expression "(piStack_6c == (int *)*puVar18)" ( (binary_expression "piStack_6c == (int *)*puVar18" identifier == (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) )) (compound_statement "{\n    return puVar2;\n  }" { (return_statement "return puVar2;" return identifier ;) })) (expression_statement "pcVar29 = __gmpq_div;" (assignment_expression "pcVar29 = __gmpq_div" identifier = identifier) ;) (expression_statement "piVar12 = piStack_6c;" (assignment_expression "piVar12 = piStack_6c" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x67350;" (assignment_expression "pcVar25 = pcVar23 + 0x67350" identifier = (binary_expression "pcVar23 + 0x67350" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar10 + -0x80;" (assignment_expression "puVar27 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar10 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar10 + -0x14)" * (cast_expression "(int **)(puVar10 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar10 + -0x28) = puVar2;" (assignment_expression "*(undefined4 **)(puVar10 + -0x28) = puVar2" (pointer_expression "*(undefined4 **)(puVar10 + -0x28)" * (cast_expression "(undefined4 **)(puVar10 + -0x28)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x28)" ( (binary_expression "puVar10 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = *(int **)(pcVar23 + 0x5f850);" (assignment_expression "piVar20 = *(int **)(pcVar23 + 0x5f850)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f850)" * (cast_expression "(int **)(pcVar23 + 0x5f850)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f850)" ( (binary_expression "pcVar23 + 0x5f850" identifier + number_literal) ))))) ;) (expression_statement "piVar13 = (int *)param_3[1];" (assignment_expression "piVar13 = (int *)param_3[1]" identifier = (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar10 + -8) = auStack_88;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = auStack_88" (pointer_expression "*(undefined1 **)(puVar10 + -8)" * (cast_expression "(undefined1 **)(puVar10 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar10 + -4) = pcVar29" (pointer_expression "*(code **)(puVar10 + -4)" * (cast_expression "(code **)(puVar10 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar10 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar10 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar10 + -0xc)" * (cast_expression "(undefined1 **)(puVar10 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_2" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar10 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar10 + -0x18)" * (cast_expression "(int **)(puVar10 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar10 + -0x1c) = puVar18;" (assignment_expression "*(undefined4 **)(puVar10 + -0x1c) = puVar18" (pointer_expression "*(undefined4 **)(puVar10 + -0x1c)" * (cast_expression "(undefined4 **)(puVar10 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar10 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar10 + -0x20)" * (cast_expression "(int **)(puVar10 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar10 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar10 + -0x24)" * (cast_expression "(int **)(puVar10 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -0x70) = pcVar25;" (assignment_expression "*(code **)(puVar10 + -0x70) = pcVar25" (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x2c) = *piVar20;" (assignment_expression "*(int *)(puVar10 + -0x2c) = *piVar20" (pointer_expression "*(int *)(puVar10 + -0x2c)" * (cast_expression "(int *)(puVar10 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "piVar14 = param_3;" (assignment_expression "piVar14 = param_3" identifier = identifier) ;) (if_statement "if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" if (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }" { (expression_statement "(**(code **)(pcVar23 + 0x5f8ec))();" (call_expression "(**(code **)(pcVar23 + 0x5f8ec))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f8ec))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f8ec)" * (pointer_expression "*(code **)(pcVar23 + 0x5f8ec)" * (cast_expression "(code **)(pcVar23 + 0x5f8ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f8ec)" ( (binary_expression "pcVar23 + 0x5f8ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" else (compound_statement "{\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" { (expression_statement "unaff_s2 = piVar12;" (assignment_expression "unaff_s2 = piVar12" identifier = identifier) ;) (expression_statement "unaff_s4 = piVar8;" (assignment_expression "unaff_s4 = piVar8" identifier = identifier) ;) (if_statement "if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" if (parenthesized_expression "(param_3 != piVar12)" ( (binary_expression "param_3 != piVar12" identifier != identifier) )) (compound_statement "{\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" { (expression_statement "piVar14 = (int *)piVar8[1];" (assignment_expression "piVar14 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" { (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)piVar12[5] = 1;" (assignment_expression "*(undefined4 *)piVar12[5] = 1" (pointer_expression "*(undefined4 *)piVar12[5]" * (cast_expression "(undefined4 *)piVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[5]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "piVar12[4] = 1;" (assignment_expression "piVar12[4] = 1" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s1 = (int *)0x0;" (assignment_expression "unaff_s1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) (if_statement "if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "piVar14 = (int *)-(int)piVar14;" (assignment_expression "piVar14 = (int *)-(int)piVar14" identifier = (cast_expression "(int *)-(int)piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar14" - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if (-1 < (int)piVar13) goto LAB_00037d70;" if (parenthesized_expression "(-1 < (int)piVar13)" ( (binary_expression "-1 < (int)piVar13" number_literal < (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00037d70;" goto statement_identifier ;)) (labeled_statement "LAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;" statement_identifier : (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" identifier = (cast_expression "(int *)-(int)piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)))) ;)) (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" identifier = identifier) ;) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" if (parenthesized_expression "((int)piVar14 <= (int)piVar13)" ( (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar6 = piVar14;\n        }" { (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" identifier = (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 < 0x7f01) goto LAB_00037d90;" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00037d90;" goto statement_identifier ;)) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" statement_identifier : (expression_statement "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar10 + -0x60)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;)) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" else (compound_statement "{\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" { (if_statement "if ((int)piVar13 < 0) goto LAB_00037f98;" if (parenthesized_expression "((int)piVar13 < 0)" ( (binary_expression "(int)piVar13 < 0" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00037f98;" goto statement_identifier ;)) (labeled_statement "LAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" identifier = identifier) ;) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" if (parenthesized_expression "((int)piVar14 <= (int)piVar13)" ( (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar6 = piVar14;\n        }" { (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" identifier = (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" if (parenthesized_expression "(0x7f00 < uVar9)" ( (binary_expression "0x7f00 < uVar9" number_literal < identifier) )) (compound_statement "{\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" { (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00037fec;" goto statement_identifier ;) })) (labeled_statement "LAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar27 = puVar10 + iVar3 + -0x80;" (assignment_expression "puVar27 = puVar10 + iVar3 + -0x80" identifier = (binary_expression "puVar10 + iVar3 + -0x80" (binary_expression "puVar10 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar4 = puVar10 + iVar3 + -0x70;" (assignment_expression "puVar4 = puVar10 + iVar3 + -0x70" identifier = (binary_expression "puVar10 + iVar3 + -0x70" (binary_expression "puVar10 + iVar3" identifier + identifier) + number_literal)) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x54) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x54) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x54)" * (cast_expression "(undefined1 **)(puVar10 + -0x54)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x54)" ( (binary_expression "puVar10 + -0x54" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }" if (parenthesized_expression "((int)piVar13 <= (int)piVar14)" ( (binary_expression "(int)piVar13 <= (int)piVar14" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar13 = piVar14;\n      }" { (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" identifier = identifier) ;) })) (expression_statement "*(int **)(puVar10 + -0x44) = piVar13;" (assignment_expression "*(int **)(puVar10 + -0x44) = piVar13" (pointer_expression "*(int **)(puVar10 + -0x44)" * (cast_expression "(int **)(puVar10 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)((int)piVar13 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)piVar13 * 4) < 0x7f01" (call_expression "(uint)((int)piVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar13 * 4)" ( (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" { (expression_statement "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)piVar13 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)piVar13 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar13 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 * 4 + 7U" (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" identifier = (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" identifier = (binary_expression "puVar27 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar15 = param_3[4];" (assignment_expression "iVar15 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x3c) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x3c) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x3c)" * (cast_expression "(undefined1 **)(puVar10 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x3c)" ( (binary_expression "puVar10 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = iVar3;" (assignment_expression "iVar19 = iVar3" identifier = identifier) ;) (if_statement "if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }" if (parenthesized_expression "(iVar15 <= iVar3)" ( (binary_expression "iVar15 <= iVar3" identifier <= identifier) )) (compound_statement "{\n        iVar19 = iVar15;\n      }" { (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x50) = iVar19;" (assignment_expression "*(int *)(puVar10 + -0x50) = iVar19" (pointer_expression "*(int *)(puVar10 + -0x50)" * (cast_expression "(int *)(puVar10 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar19 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar19 * 4) < 0x7f01" (call_expression "(uint)(iVar19 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar19 * 4)" ( (binary_expression "iVar19 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }" { (expression_statement "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar19 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar19 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar19 * 4 + 7U & 0xfffffff8" (binary_expression "iVar19 * 4 + 7U" (binary_expression "iVar19 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar19 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar19 + 0x10" identifier = (binary_expression "puVar27 + iVar19 + 0x10" (binary_expression "puVar27 + iVar19" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar19;" (assignment_expression "puVar27 = puVar27 + iVar19" identifier = (binary_expression "puVar27 + iVar19" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x48) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x48) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x48)" * (cast_expression "(undefined1 **)(puVar10 + -0x48)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x48)" ( (binary_expression "puVar10 + -0x48" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }" if (parenthesized_expression "(iVar3 <= iVar15)" ( (binary_expression "iVar3 <= iVar15" identifier <= identifier) )) (compound_statement "{\n        iVar3 = iVar15;\n      }" { (expression_statement "iVar3 = iVar15;" (assignment_expression "iVar3 = iVar15" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x38) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x38) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x38)" * (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar3 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar3 * 4) < 0x7f01" (call_expression "(uint)(iVar3 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 * 4)" ( (binary_expression "iVar3 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" { (expression_statement "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar3 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar3 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar3 * 4 + 7U & 0xfffffff8" (binary_expression "iVar3 * 4 + 7U" (binary_expression "iVar3 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" identifier = (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" identifier = (binary_expression "puVar27 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7e44);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7e44)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7e44)" * (cast_expression "(code **)(pcVar25 + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7e44)" ( (binary_expression "pcVar25 + -0x7e44" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = puVar10 + -0x5c;" (assignment_expression "unaff_s7 = puVar10 + -0x5c" identifier = (binary_expression "puVar10 + -0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x30) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x30) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x30)" * (cast_expression "(undefined1 **)(puVar10 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x30)" ( (binary_expression "puVar10 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s7,piVar8,param_3);" (call_expression "(*pcVar23)(unaff_s7,piVar8,param_3)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s7,piVar8,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_2 = (int *)(puVar10 + -0x50);" (assignment_expression "param_2 = (int *)(puVar10 + -0x50)" identifier = (cast_expression "(int *)(puVar10 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) ;) (expression_statement "*(int **)(puVar10 + -100) = piVar8 + 3;" (assignment_expression "*(int **)(puVar10 + -100) = piVar8 + 3" (pointer_expression "*(int **)(puVar10 + -100)" * (cast_expression "(int **)(puVar10 + -100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) = (binary_expression "piVar8 + 3" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)(puVar10 + -0x44);" (assignment_expression "piVar13 = (int *)(puVar10 + -0x44)" identifier = (cast_expression "(int *)(puVar10 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7e44" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_2,param_3 + 3,piVar8 + 3)" ( identifier , (binary_expression "param_3 + 3" identifier + number_literal) , (binary_expression "piVar8 + 3" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar13,piVar8,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "unaff_s1 = (int *)(puVar10 + -0x38);" (assignment_expression "unaff_s1 = (int *)(puVar10 + -0x38)" identifier = (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,param_3 + 3,param_2)" ( identifier , (binary_expression "param_3 + 3" identifier + number_literal) , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,piVar13,unaff_s1)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar13,param_3,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" ( identifier , (pointer_expression "*(undefined4 *)(puVar10 + -100)" * (cast_expression "(undefined4 *)(puVar10 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "piVar8 = piVar13;" (assignment_expression "piVar8 = piVar13" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12 + 3,piVar13,unaff_s1)" ( (binary_expression "piVar12 + 3" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (if_statement "if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" if (parenthesized_expression "(piVar12[4] < 0)" ( (binary_expression "piVar12[4] < 0" (subscript_expression "piVar12[4]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" { (expression_statement "piVar12[4] = -piVar12[4];" (assignment_expression "piVar12[4] = -piVar12[4]" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = (unary_expression "-piVar12[4]" - (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar12[1] = -piVar12[1];" (assignment_expression "piVar12[1] = -piVar12[1]" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (unary_expression "-piVar12[1]" - (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar12 = *(int **)(puVar10 + -0x60);" (assignment_expression "piVar12 = *(int **)(puVar10 + -0x60)" identifier = (pointer_expression "*(int **)(puVar10 + -0x60)" * (cast_expression "(int **)(puVar10 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar27;" (assignment_expression "puVar4 = puVar27" identifier = identifier) ;) (if_statement "if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "(**(code **)(pcVar25 + -0x7a2c))();" (call_expression "(**(code **)(pcVar25 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar25 + -0x7a2c))" ( (pointer_expression "**(code **)(pcVar25 + -0x7a2c)" * (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) }))) (expression_statement "puVar18 = (undefined4 *)piVar14[5];" (assignment_expression "puVar18 = (undefined4 *)piVar14[5]" identifier = (cast_expression "(undefined4 *)piVar14[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined4 *)piVar14[2];" (assignment_expression "puVar2 = (undefined4 *)piVar14[2]" identifier = (cast_expression "(undefined4 *)piVar14[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" if (parenthesized_expression "(piVar14 == piVar8)" ( (binary_expression "piVar14 == piVar8" identifier == identifier) )) (compound_statement "{\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }" { (expression_statement "piVar12 = (int *)0x1;" (assignment_expression "piVar12 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "piVar14[1] = 1;" (assignment_expression "piVar14[1] = 1" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar18 = 1;" (assignment_expression "*puVar18 = 1" (pointer_expression "*puVar18" * identifier) = number_literal) ;) (expression_statement "piVar14[4] = 1;" (assignment_expression "piVar14[4] = 1" (subscript_expression "piVar14[4]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" else (compound_statement "{\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" { (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "iVar15 = piVar12[3];" (assignment_expression "iVar15 = piVar12[3]" identifier = (subscript_expression "piVar12[3]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" identifier = (subscript_expression "piVar12[4]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2[2] = (int)puVar18;" (assignment_expression "unaff_s2[2] = (int)puVar18" (subscript_expression "unaff_s2[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "unaff_s2[5] = (int)puVar2;" (assignment_expression "unaff_s2[5] = (int)puVar2" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*unaff_s2 = iVar15;" (assignment_expression "*unaff_s2 = iVar15" (pointer_expression "*unaff_s2" * identifier) = identifier) ;) (expression_statement "unaff_s2[3] = iVar19;" (assignment_expression "unaff_s2[3] = iVar19" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" if (parenthesized_expression "((int)piVar13 < 1)" ( (binary_expression "(int)piVar13 < 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" identifier = (cast_expression "(int *)-(int)piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f4e8);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f4e8)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f4e8)" * (cast_expression "(code **)(pcVar23 + 0x5f4e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f4e8)" ( (binary_expression "pcVar23 + 0x5f4e8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s2[1] = iVar3;" (assignment_expression "unaff_s2[1] = iVar3" (subscript_expression "unaff_s2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s2[4] = (int)piVar13;" (assignment_expression "unaff_s2[4] = (int)piVar13" (subscript_expression "unaff_s2[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" identifier = identifier) ;) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" identifier = identifier) ;) (expression_statement "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4);" (call_expression "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s2,unaff_s2,unaff_s4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" statement_identifier : (if_statement "if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20)" ( (binary_expression "*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20" (pointer_expression "*(undefined4 **)(puVar10 + -0x2c)" * (cast_expression "(undefined4 **)(puVar10 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) == (cast_expression "(undefined4 *)*piVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier))) )) (compound_statement "{\n    return (undefined4 *)*piVar20;\n  }" { (return_statement "return (undefined4 *)*piVar20;" return (cast_expression "(undefined4 *)*piVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier)) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar29 = __gmpq_get_d;" (assignment_expression "pcVar29 = __gmpq_get_d" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x66f70;" (assignment_expression "pcVar25 = pcVar23 + 0x66f70" identifier = (binary_expression "pcVar23 + 0x66f70" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar4 + -0x70;" (assignment_expression "puVar27 = puVar4 + -0x70" identifier = (binary_expression "puVar4 + -0x70" identifier + number_literal)) ;) (expression_statement "puVar28 = puVar4 + -0x70;" (assignment_expression "puVar28 = puVar4 + -0x70" identifier = (binary_expression "puVar4 + -0x70" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar4 + -0x14) = piVar20;" (assignment_expression "*(int **)(puVar4 + -0x14) = piVar20" (pointer_expression "*(int **)(puVar4 + -0x14)" * (cast_expression "(int **)(puVar4 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar4 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar4 + -0x18)" * (cast_expression "(int **)(puVar4 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar14 = *(int **)(pcVar23 + 0x5f470);" (assignment_expression "piVar14 = *(int **)(pcVar23 + 0x5f470)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f470)" * (cast_expression "(int **)(pcVar23 + 0x5f470)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f470)" ( (binary_expression "pcVar23 + 0x5f470" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = piVar12[1];" (assignment_expression "iVar19 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;" (assignment_expression "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80" (pointer_expression "*(undefined1 **)(puVar4 + -8)" * (cast_expression "(undefined1 **)(puVar4 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar4 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar4 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar4 + -0x20)" * (cast_expression "(int **)(puVar4 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x20)" ( (binary_expression "puVar4 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar4 + -4) = pcVar29" (pointer_expression "*(code **)(puVar4 + -4)" * (cast_expression "(code **)(puVar4 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -4)" ( (binary_expression "puVar4 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar4 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar4 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar4 + -0xc)" * (cast_expression "(undefined1 **)(puVar4 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar4 + -0x10) = param_2" (pointer_expression "*(int **)(puVar4 + -0x10)" * (cast_expression "(int **)(puVar4 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar4 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar4 + -0x1c)" * (cast_expression "(int **)(puVar4 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1c)" ( (binary_expression "puVar4 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar4 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar4 + -0x24)" * (cast_expression "(int **)(puVar4 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x24)" ( (binary_expression "puVar4 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x28) = piVar13;" (assignment_expression "*(int **)(puVar4 + -0x28) = piVar13" (pointer_expression "*(int **)(puVar4 + -0x28)" * (cast_expression "(int **)(puVar4 + -0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x28)" ( (binary_expression "puVar4 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -0x50) = pcVar25;" (assignment_expression "*(code **)(puVar4 + -0x50) = pcVar25" (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" identifier = (subscript_expression "piVar12[4]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar4 + -0x2c) = *piVar14;" (assignment_expression "*(int *)(puVar4 + -0x2c) = *piVar14" (pointer_expression "*(int *)(puVar4 + -0x2c)" * (cast_expression "(int *)(puVar4 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" { (expression_statement "*(undefined4 *)(puVar4 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x40)" * (cast_expression "(undefined4 *)(puVar4 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" identifier = identifier) ;) (if_statement "if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar15 = -iVar19;\n    }" { (expression_statement "iVar15 = -iVar19;" (assignment_expression "iVar15 = -iVar19" identifier = (unary_expression "-iVar19" - identifier)) ;) })) (if_statement "if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar3 = -iVar3;\n    }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" identifier = (cast_expression "(undefined4 *)piVar12[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = piVar12[5];" (assignment_expression "iVar21 = piVar12[5]" identifier = (subscript_expression "piVar12[5]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = 3 - (iVar15 - iVar3);" (assignment_expression "iVar5 = 3 - (iVar15 - iVar3)" identifier = (binary_expression "3 - (iVar15 - iVar3)" number_literal - (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )))) ;) (expression_statement "piVar13 = (int *)(iVar5 * -0x20);" (assignment_expression "piVar13 = (int *)(iVar5 * -0x20)" identifier = (cast_expression "(int *)(iVar5 * -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 * -0x20)" ( (binary_expression "iVar5 * -0x20" identifier * number_literal) )))) ;) (expression_statement "iVar11 = iVar15;" (assignment_expression "iVar11 = iVar15" identifier = identifier) ;) (expression_statement "iVar17 = iVar5;" (assignment_expression "iVar17 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" { (expression_statement "iVar17 = (iVar15 - iVar3) + -3;" (assignment_expression "iVar17 = (iVar15 - iVar3) + -3" identifier = (binary_expression "(iVar15 - iVar3) + -3" (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )) + number_literal)) ;) (expression_statement "puVar2 = puVar2 + iVar17;" (assignment_expression "puVar2 = puVar2 + iVar17" identifier = (binary_expression "puVar2 + iVar17" identifier + identifier)) ;) (expression_statement "iVar11 = iVar15 - iVar17;" (assignment_expression "iVar11 = iVar15 - iVar17" identifier = (binary_expression "iVar15 - iVar17" identifier - identifier)) ;) (expression_statement "iVar17 = iVar5 + iVar17;" (assignment_expression "iVar17 = iVar5 + iVar17" identifier = (binary_expression "iVar5 + iVar17" identifier + identifier)) ;) })) (expression_statement "iVar15 = iVar15 + iVar5;" (assignment_expression "iVar15 = iVar15 + iVar5" identifier = (binary_expression "iVar15 + iVar5" identifier + identifier)) ;) (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar3 + iVar15;\n    }" { (expression_statement "iVar5 = iVar3 + iVar15;" (assignment_expression "iVar5 = iVar3 + iVar15" identifier = (binary_expression "iVar3 + iVar15" identifier + identifier)) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f220);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f220)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f220)" * (cast_expression "(code **)(pcVar23 + 0x5f220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f220)" ( (binary_expression "pcVar23 + 0x5f220" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" if (parenthesized_expression "((uint)(iVar5 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar5 * 4) < 0x7f01" (call_expression "(uint)(iVar5 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 * 4)" ( (binary_expression "iVar5 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }" { (expression_statement "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar5 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar5 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar5 * 4 + 7U & 0xfffffff8" (binary_expression "iVar5 * 4 + 7U" (binary_expression "iVar5 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar4 + iVar5 + -0x70;" (assignment_expression "puVar28 = puVar4 + iVar5 + -0x70" identifier = (binary_expression "puVar4 + iVar5 + -0x70" (binary_expression "puVar4 + iVar5" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar4 + iVar5 + -0x50;" (assignment_expression "puVar10 = puVar4 + iVar5 + -0x50" identifier = (binary_expression "puVar4 + iVar5 + -0x50" (binary_expression "puVar4 + iVar5" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" else (compound_statement "{\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" { (expression_statement "*(int *)(puVar4 + -0x48) = iVar11;" (assignment_expression "*(int *)(puVar4 + -0x48) = iVar11" (pointer_expression "*(int *)(puVar4 + -0x48)" * (cast_expression "(int *)(puVar4 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);" (assignment_expression "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar4 + -0x40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar4 + -0x40)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar4 + -0x48);" (assignment_expression "iVar11 = *(int *)(puVar4 + -0x48)" identifier = (pointer_expression "*(int *)(puVar4 + -0x48)" * (cast_expression "(int *)(puVar4 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" identifier = identifier) ;) (expression_statement "iVar5 = iVar11;" (assignment_expression "iVar5 = iVar11" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" { (expression_statement "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);" (assignment_expression "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4)" identifier = (cast_expression "(undefined4 *)(puVar10 + iVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar3 * 4)" ( (binary_expression "puVar10 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar7 = puVar18;" (assignment_expression "puVar7 = puVar18" identifier = identifier) ;) (expression_statement "iVar5 = iVar17;" (assignment_expression "iVar5 = iVar17" identifier = identifier) ;) (do_statement "do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "iVar5 = iVar15;" (assignment_expression "iVar5 = iVar15" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" { (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar15 = iVar11 + -1;" (assignment_expression "iVar15 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar18 + iVar17;" (assignment_expression "puVar16 = puVar18 + iVar17" identifier = (binary_expression "puVar18 + iVar17" identifier + identifier)) ;) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" { (do_statement "do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);" do (compound_statement "{\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar30;" (assignment_expression "*puVar7 = uVar30" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) ;) (expression_statement "puVar16 = puVar16 + iVar11 + -1;" (assignment_expression "puVar16 = puVar16 + iVar11 + -1" identifier = (binary_expression "puVar16 + iVar11 + -1" (binary_expression "puVar16 + iVar11" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar16 = uVar30;" (assignment_expression "*puVar16 = uVar30" (pointer_expression "*puVar16" * identifier) = identifier) ;) })) })) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a30);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a30)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a30)" * (cast_expression "(code **)(pcVar25 + -0x7a30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a30)" ( (binary_expression "pcVar25 + -0x7a30" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (int *)(puVar4 + -0x3c);" (assignment_expression "unaff_s1 = (int *)(puVar4 + -0x3c)" identifier = (cast_expression "(int *)(puVar4 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3c)" ( (binary_expression "puVar4 + -0x3c" identifier + number_literal) )))) ;) (expression_statement "*(int *)(puVar28 + 0x18) = iVar3;" (assignment_expression "*(int *)(puVar28 + 0x18) = iVar3" (pointer_expression "*(int *)(puVar28 + 0x18)" * (cast_expression "(int *)(puVar28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x18)" ( (binary_expression "puVar28 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x14) = iVar21;" (assignment_expression "*(int *)(puVar28 + 0x14) = iVar21" (pointer_expression "*(int *)(puVar28 + 0x14)" * (cast_expression "(int *)(puVar28 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x14)" ( (binary_expression "puVar28 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x10) = iVar5;" (assignment_expression "*(int *)(puVar28 + 0x10) = iVar5" (pointer_expression "*(int *)(puVar28 + 0x10)" * (cast_expression "(int *)(puVar28 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s1,puVar10,0,puVar18);" (call_expression "(*pcVar23)(unaff_s1,puVar10,0,puVar18)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s1,puVar10,0,puVar18)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));" (assignment_expression "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" identifier = (cast_expression "(int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" ( (binary_expression "4 - (uint)(*(int *)(puVar4 + -0x30) == 0)" number_literal - (call_expression "(uint)(*(int *)(puVar4 + -0x30) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar4 + -0x30) == 0)" ( (binary_expression "*(int *)(puVar4 + -0x30) == 0" (pointer_expression "*(int *)(puVar4 + -0x30)" * (cast_expression "(int *)(puVar4 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x30)" ( (binary_expression "puVar4 + -0x30" identifier + number_literal) )))) == number_literal) )))) )))) ;) (expression_statement "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);" (assignment_expression "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" identifier = (call_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))" ( (pointer_expression "**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" * (pointer_expression "*(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" * (cast_expression "(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar4 + -0x50) + -0x7a48)" ( (binary_expression "*(int *)(puVar4 + -0x50) + -0x7a48" (pointer_expression "*(int *)(puVar4 + -0x50)" * (cast_expression "(int *)(puVar4 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,iVar19,piVar13)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "piVar12 = *(int **)(puVar4 + -0x40);" (assignment_expression "piVar12 = *(int **)(puVar4 + -0x40)" identifier = (pointer_expression "*(int **)(puVar4 + -0x40)" * (cast_expression "(int **)(puVar4 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) (if_statement "if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" { (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a2c)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar4 + -0x48) = uVar31;" (assignment_expression "*(undefined8 *)(puVar4 + -0x48) = uVar31" (pointer_expression "*(undefined8 *)(puVar4 + -0x48)" * (cast_expression "(undefined8 *)(puVar4 + -0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) })) })) (expression_statement "puVar2 = (undefined4 *)*piVar14;" (assignment_expression "puVar2 = (undefined4 *)*piVar14" identifier = (cast_expression "(undefined4 *)*piVar14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar4 + -0x2c) != puVar2)" ( (binary_expression "*(undefined4 **)(puVar4 + -0x2c) != puVar2" (pointer_expression "*(undefined4 **)(puVar4 + -0x2c)" * (cast_expression "(undefined4 **)(puVar4 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" { (expression_statement "uVar30 = 0x3831c;" (assignment_expression "uVar30 = 0x3831c" identifier = number_literal) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "*(int **)(puVar27 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;" (assignment_expression "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20" (pointer_expression "*(code **)(puVar27 + -0x18)" * (cast_expression "(code **)(puVar27 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar23 + 0x66d20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar27 + -8) = iVar3;" (assignment_expression "*(int *)(puVar27 + -8) = iVar3" (pointer_expression "*(int *)(puVar27 + -8)" * (cast_expression "(int *)(puVar27 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s1;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s1" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar30;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar30" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" if (parenthesized_expression "(iVar19 < iVar3)" ( (binary_expression "iVar19 < iVar3" identifier < identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }" { (expression_statement "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();" (assignment_expression "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar23 + 0x5f29c))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f29c))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f29c)" * (pointer_expression "*(code **)(pcVar23 + 0x5f29c)" * (cast_expression "(code **)(pcVar23 + 0x5f29c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f29c)" ( (binary_expression "pcVar23 + 0x5f29c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) }) (else_clause "else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" else (compound_statement "{\n      puVar2 = (undefined4 *)piVar12[2];\n    }" { (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" identifier = (cast_expression "(undefined4 *)piVar12[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "piVar12[1] = iVar3;" (assignment_expression "piVar12[1] = iVar3" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" { (expression_statement "puVar7 = (undefined4 *)piVar8[5];" (assignment_expression "puVar7 = (undefined4 *)piVar8[5]" identifier = (cast_expression "(undefined4 *)piVar8[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[5]" identifier [ number_literal ]))) ;) (expression_statement "iVar19 = iVar3 + -1;" (assignment_expression "iVar19 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" { (do_statement "do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);" do (compound_statement "{\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        }" { (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar30;" (assignment_expression "*puVar18 = uVar30" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "puVar2 = puVar2 + iVar3 + -1;" (assignment_expression "puVar2 = puVar2 + iVar3 + -1" identifier = (binary_expression "puVar2 + iVar3 + -1" (binary_expression "puVar2 + iVar3" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar2 = uVar30;" (assignment_expression "*puVar2 = uVar30" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (return_statement "return puVar2;" return identifier ;) })) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit "int __gmpq_cmp_si(mpq_srcptr q,long n,ulong d)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  int *piVar14;\n  int *unaff_s1;\n  int *piVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  int *unaff_s2;\n  undefined4 *puVar19;\n  int *unaff_s4;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  mpq_t qabs;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  piVar12 = *(int **)PTR___stack_chk_guard_00097540;\n  if (n < 0) {\n    iVar7 = (q->_mp_num)._mp_size;\n    if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }\n  }\n  else {\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (piVar12 == *(int **)puVar1) {\n    return iVar7;\n  }\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar19 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar19;\n  iVar7 = piVar12[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if ((int *)d == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = (int *)n;\n    n = (long)unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar19) {\n    return iVar7;\n  }\n  pcVar29 = __gmpq_div;\n  piVar14 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar3 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(int *)(puVar10 + -0x28) = iVar7;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar12 = *(int **)(d + 4);\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(long *)(puVar10 + -0x10) = n;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar19;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar15 = (int *)d;\n  if (piVar12 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar13 = (undefined4 *)piVar15[5];\n  puVar19 = (undefined4 *)piVar15[2];\n  if (piVar15 == piVar8) {\n    piVar14 = (int *)&DAT_00000001;\n    *puVar19 = 1;\n    piVar15[1] = 1;\n    *puVar13 = 1;\n    piVar15[4] = 1;\n  }\n  else {\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(int *)(puVar10 + -0x2c) == *piVar20) {\n    return *piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar3 + -0x70;\n  puVar28 = puVar3 + -0x70;\n  *(int **)(puVar3 + -0x14) = piVar20;\n  *(int **)(puVar3 + -0x18) = unaff_s4;\n  piVar15 = *(int **)(pcVar23 + 0x5f470);\n  iVar2 = piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = puVar10 + -0x80;\n  *(int **)(puVar3 + -0x20) = unaff_s2;\n  *(code **)(puVar3 + -4) = pcVar29;\n  *(undefined1 **)(puVar3 + -0xc) = unaff_s7;\n  *(long *)(puVar3 + -0x10) = n;\n  *(ulong *)(puVar3 + -0x1c) = d;\n  *(int **)(puVar3 + -0x24) = unaff_s1;\n  *(int **)(puVar3 + -0x28) = piVar12;\n  *(code **)(puVar3 + -0x50) = pcVar25;\n  iVar7 = piVar14[4];\n  *(int *)(puVar3 + -0x2c) = *piVar15;\n  if (iVar2 != 0) {\n    *(undefined4 *)(puVar3 + -0x40) = 0;\n    iVar16 = iVar2;\n    if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }\n    if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }\n    puVar19 = (undefined4 *)piVar14[2];\n    iVar21 = piVar14[5];\n    iVar4 = 3 - (iVar16 - iVar7);\n    piVar12 = (int *)(iVar4 * -0x20);\n    iVar11 = iVar16;\n    iVar18 = iVar4;\n    if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }\n    iVar16 = iVar16 + iVar4;\n    iVar4 = iVar7;\n    if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }\n    puVar13 = puVar19;\n    iVar4 = iVar11;\n    if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar3 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar7;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar4;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar13);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);\n    piVar14 = *(int **)(puVar3 + -0x40);\n    pcVar25 = *(code **)(puVar3 + -0x50);\n    puVar27 = puVar28;\n    if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }\n  }\n  iVar2 = *piVar15;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(int *)(puVar3 + -0x2c) != iVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar2 = *piVar14;\n    *(int **)(puVar27 + -0x10) = piVar12;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar7;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar7 = piVar8[4];\n    if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }\n    piVar14[1] = iVar7;\n    if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }\n    return (int)puVar19;\n  }\n  return iVar2;\n}\n\n" (function_definition "int __gmpq_cmp_si(mpq_srcptr q,long n,ulong d)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  int *piVar14;\n  int *unaff_s1;\n  int *piVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  int *unaff_s2;\n  undefined4 *puVar19;\n  int *unaff_s4;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  mpq_t qabs;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  piVar12 = *(int **)PTR___stack_chk_guard_00097540;\n  if (n < 0) {\n    iVar7 = (q->_mp_num)._mp_size;\n    if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }\n  }\n  else {\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (piVar12 == *(int **)puVar1) {\n    return iVar7;\n  }\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar19 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar19;\n  iVar7 = piVar12[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if ((int *)d == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = (int *)n;\n    n = (long)unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar19) {\n    return iVar7;\n  }\n  pcVar29 = __gmpq_div;\n  piVar14 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar3 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(int *)(puVar10 + -0x28) = iVar7;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar12 = *(int **)(d + 4);\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(long *)(puVar10 + -0x10) = n;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar19;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar15 = (int *)d;\n  if (piVar12 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar13 = (undefined4 *)piVar15[5];\n  puVar19 = (undefined4 *)piVar15[2];\n  if (piVar15 == piVar8) {\n    piVar14 = (int *)&DAT_00000001;\n    *puVar19 = 1;\n    piVar15[1] = 1;\n    *puVar13 = 1;\n    piVar15[4] = 1;\n  }\n  else {\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(int *)(puVar10 + -0x2c) == *piVar20) {\n    return *piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar3 + -0x70;\n  puVar28 = puVar3 + -0x70;\n  *(int **)(puVar3 + -0x14) = piVar20;\n  *(int **)(puVar3 + -0x18) = unaff_s4;\n  piVar15 = *(int **)(pcVar23 + 0x5f470);\n  iVar2 = piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = puVar10 + -0x80;\n  *(int **)(puVar3 + -0x20) = unaff_s2;\n  *(code **)(puVar3 + -4) = pcVar29;\n  *(undefined1 **)(puVar3 + -0xc) = unaff_s7;\n  *(long *)(puVar3 + -0x10) = n;\n  *(ulong *)(puVar3 + -0x1c) = d;\n  *(int **)(puVar3 + -0x24) = unaff_s1;\n  *(int **)(puVar3 + -0x28) = piVar12;\n  *(code **)(puVar3 + -0x50) = pcVar25;\n  iVar7 = piVar14[4];\n  *(int *)(puVar3 + -0x2c) = *piVar15;\n  if (iVar2 != 0) {\n    *(undefined4 *)(puVar3 + -0x40) = 0;\n    iVar16 = iVar2;\n    if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }\n    if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }\n    puVar19 = (undefined4 *)piVar14[2];\n    iVar21 = piVar14[5];\n    iVar4 = 3 - (iVar16 - iVar7);\n    piVar12 = (int *)(iVar4 * -0x20);\n    iVar11 = iVar16;\n    iVar18 = iVar4;\n    if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }\n    iVar16 = iVar16 + iVar4;\n    iVar4 = iVar7;\n    if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }\n    puVar13 = puVar19;\n    iVar4 = iVar11;\n    if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar3 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar7;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar4;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar13);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);\n    piVar14 = *(int **)(puVar3 + -0x40);\n    pcVar25 = *(code **)(puVar3 + -0x50);\n    puVar27 = puVar28;\n    if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }\n  }\n  iVar2 = *piVar15;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(int *)(puVar3 + -0x2c) != iVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar2 = *piVar14;\n    *(int **)(puVar27 + -0x10) = piVar12;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar7;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar7 = piVar8[4];\n    if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }\n    piVar14[1] = iVar7;\n    if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }\n    return (int)puVar19;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "__gmpq_cmp_si(mpq_srcptr q,long n,ulong d)" identifier (parameter_list "(mpq_srcptr q,long n,ulong d)" ( (parameter_declaration "mpq_srcptr q" type_identifier identifier) , (parameter_declaration "long n" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong d" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  int *piVar14;\n  int *unaff_s1;\n  int *piVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  int *unaff_s2;\n  undefined4 *puVar19;\n  int *unaff_s4;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  mpq_t qabs;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  piVar12 = *(int **)PTR___stack_chk_guard_00097540;\n  if (n < 0) {\n    iVar7 = (q->_mp_num)._mp_size;\n    if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }\n  }\n  else {\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (piVar12 == *(int **)puVar1) {\n    return iVar7;\n  }\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar19 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar19;\n  iVar7 = piVar12[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if ((int *)d == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = (int *)n;\n    n = (long)unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar19) {\n    return iVar7;\n  }\n  pcVar29 = __gmpq_div;\n  piVar14 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar3 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(int *)(puVar10 + -0x28) = iVar7;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar12 = *(int **)(d + 4);\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(long *)(puVar10 + -0x10) = n;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar19;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar15 = (int *)d;\n  if (piVar12 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar13 = (undefined4 *)piVar15[5];\n  puVar19 = (undefined4 *)piVar15[2];\n  if (piVar15 == piVar8) {\n    piVar14 = (int *)&DAT_00000001;\n    *puVar19 = 1;\n    piVar15[1] = 1;\n    *puVar13 = 1;\n    piVar15[4] = 1;\n  }\n  else {\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(int *)(puVar10 + -0x2c) == *piVar20) {\n    return *piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar3 + -0x70;\n  puVar28 = puVar3 + -0x70;\n  *(int **)(puVar3 + -0x14) = piVar20;\n  *(int **)(puVar3 + -0x18) = unaff_s4;\n  piVar15 = *(int **)(pcVar23 + 0x5f470);\n  iVar2 = piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = puVar10 + -0x80;\n  *(int **)(puVar3 + -0x20) = unaff_s2;\n  *(code **)(puVar3 + -4) = pcVar29;\n  *(undefined1 **)(puVar3 + -0xc) = unaff_s7;\n  *(long *)(puVar3 + -0x10) = n;\n  *(ulong *)(puVar3 + -0x1c) = d;\n  *(int **)(puVar3 + -0x24) = unaff_s1;\n  *(int **)(puVar3 + -0x28) = piVar12;\n  *(code **)(puVar3 + -0x50) = pcVar25;\n  iVar7 = piVar14[4];\n  *(int *)(puVar3 + -0x2c) = *piVar15;\n  if (iVar2 != 0) {\n    *(undefined4 *)(puVar3 + -0x40) = 0;\n    iVar16 = iVar2;\n    if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }\n    if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }\n    puVar19 = (undefined4 *)piVar14[2];\n    iVar21 = piVar14[5];\n    iVar4 = 3 - (iVar16 - iVar7);\n    piVar12 = (int *)(iVar4 * -0x20);\n    iVar11 = iVar16;\n    iVar18 = iVar4;\n    if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }\n    iVar16 = iVar16 + iVar4;\n    iVar4 = iVar7;\n    if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }\n    puVar13 = puVar19;\n    iVar4 = iVar11;\n    if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar3 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar7;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar4;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar13);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);\n    piVar14 = *(int **)(puVar3 + -0x40);\n    pcVar25 = *(code **)(puVar3 + -0x50);\n    puVar27 = puVar28;\n    if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }\n  }\n  iVar2 = *piVar15;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(int *)(puVar3 + -0x2c) != iVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar2 = *piVar14;\n    *(int **)(puVar27 + -0x10) = piVar12;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar7;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar7 = piVar8[4];\n    if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }\n    piVar14[1] = iVar7;\n    if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }\n    return (int)puVar19;\n  }\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *unaff_s1;" primitive_type (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined1 *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined4 uVar30;" type_identifier identifier ;) (declaration "undefined8 uVar31;" type_identifier identifier ;) (declaration "undefined1 auStack_88 [16];" type_identifier (array_declarator "auStack_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_78 [2];" type_identifier (pointer_declarator "*apuStack_78 [2]" * (array_declarator "apuStack_78 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_70;" primitive_type identifier ;) (declaration "int *piStack_6c;" primitive_type (pointer_declarator "*piStack_6c" * identifier) ;) (declaration "undefined *puStack_64;" type_identifier (pointer_declarator "*puStack_64" * identifier) ;) (declaration "mpq_t qabs;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "piVar12 = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "piVar12 = *(int **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" * (cast_expression "(int **)PTR___stack_chk_guard_00097540" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (n < 0) {\n    iVar7 = (q->_mp_num)._mp_size;\n    if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }\n  }\n  else {\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" if (parenthesized_expression "(n < 0)" ( (binary_expression "n < 0" identifier < number_literal) )) (compound_statement "{\n    iVar7 = (q->_mp_num)._mp_size;\n    if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }\n  }" { (expression_statement "iVar7 = (q->_mp_num)._mp_size;" (assignment_expression "iVar7 = (q->_mp_num)._mp_size" identifier = (field_expression "(q->_mp_num)._mp_size" (parenthesized_expression "(q->_mp_num)" ( (field_expression "q->_mp_num" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (iVar7 < 0) {\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }\n    else {\n      iVar7 = 1;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;\n      qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;\n      n = -n;\n      qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;\n      qabs[0]._mp_num._mp_size = -iVar7;\n      iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);\n      iVar7 = -iVar7;\n    }" { (expression_statement "qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d;" (assignment_expression "qabs[0]._mp_num._mp_d = (q->_mp_num)._mp_d" (field_expression "qabs[0]._mp_num._mp_d" (field_expression "qabs[0]._mp_num" (subscript_expression "qabs[0]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (field_expression "(q->_mp_num)._mp_d" (parenthesized_expression "(q->_mp_num)" ( (field_expression "q->_mp_num" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size;" (assignment_expression "qabs[0]._mp_den._mp_size = (q->_mp_den)._mp_size" (field_expression "qabs[0]._mp_den._mp_size" (field_expression "qabs[0]._mp_den" (subscript_expression "qabs[0]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (field_expression "(q->_mp_den)._mp_size" (parenthesized_expression "(q->_mp_den)" ( (field_expression "q->_mp_den" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "n = -n;" (assignment_expression "n = -n" identifier = (unary_expression "-n" - identifier)) ;) (expression_statement "qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d;" (assignment_expression "qabs[0]._mp_den._mp_d = (q->_mp_den)._mp_d" (field_expression "qabs[0]._mp_den._mp_d" (field_expression "qabs[0]._mp_den" (subscript_expression "qabs[0]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (field_expression "(q->_mp_den)._mp_d" (parenthesized_expression "(q->_mp_den)" ( (field_expression "q->_mp_den" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "qabs[0]._mp_num._mp_size = -iVar7;" (assignment_expression "qabs[0]._mp_num._mp_size = -iVar7" (field_expression "qabs[0]._mp_num._mp_size" (field_expression "qabs[0]._mp_num" (subscript_expression "qabs[0]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (unary_expression "-iVar7" - identifier)) ;) (expression_statement "iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs);" (assignment_expression "iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs)" identifier = (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)(qabs)" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(qabs)" ( identifier )))) ;) (expression_statement "iVar7 = -iVar7;" (assignment_expression "iVar7 = -iVar7" identifier = (unary_expression "-iVar7" - identifier)) ;) }) (else_clause "else {\n      iVar7 = 1;\n    }" else (compound_statement "{\n      iVar7 = 1;\n    }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) }))) }) (else_clause "else {\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" else (compound_statement "{\n    iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" { (expression_statement "iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)();" (assignment_expression "iVar7 = (*(code *)PTR___gmpq_cmp_ui_0009760c)()" identifier = (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) }))) (if_statement "if (piVar12 == *(int **)puVar1) {\n    return iVar7;\n  }" if (parenthesized_expression "(piVar12 == *(int **)puVar1)" ( (binary_expression "piVar12 == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "puVar22 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar24 = puVar22 + 0x67550;" (assignment_expression "puVar24 = puVar22 + 0x67550" identifier = (binary_expression "puVar22 + 0x67550" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (expression_statement "puVar26 = auStack_88;" (assignment_expression "puVar26 = auStack_88" identifier = identifier) ;) (expression_statement "puVar19 = *(undefined4 **)(puVar22 + 0x5fa50);" (assignment_expression "puVar19 = *(undefined4 **)(puVar22 + 0x5fa50)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + 0x5fa50)" * (cast_expression "(undefined4 **)(puVar22 + 0x5fa50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5fa50)" ( (binary_expression "puVar22 + 0x5fa50" identifier + number_literal) ))))) ;) (expression_statement "puStack_64 = puVar1;" (assignment_expression "puStack_64 = puVar1" identifier = identifier) ;) (expression_statement "piStack_6c = (int *)*puVar19;" (assignment_expression "piStack_6c = (int *)*puVar19" identifier = (cast_expression "(int *)*puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "iVar7 = piVar12[1];" (assignment_expression "iVar7 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar23 = *(code **)(puVar22 + 0x5faec);" (assignment_expression "pcVar23 = *(code **)(puVar22 + 0x5faec)" identifier = (pointer_expression "*(code **)(puVar22 + 0x5faec)" * (cast_expression "(code **)(puVar22 + 0x5faec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5faec)" ( (binary_expression "puVar22 + 0x5faec" identifier + number_literal) ))))) ;) (expression_statement "apuStack_78[0] = puVar24;" (assignment_expression "apuStack_78[0] = puVar24" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int *)d == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = (int *)n;\n    n = (long)unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((int *)d == (int *)0x0)" ( (binary_expression "(int *)d == (int *)0x0" (cast_expression "(int *)d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*pcVar23)();\n    piVar8 = (int *)n;\n    n = (long)unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }" { (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = (int *)n;" (assignment_expression "piVar8 = (int *)n" identifier = (cast_expression "(int *)n" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "n = (long)unaff_s6;" (assignment_expression "n = (long)unaff_s6" identifier = (cast_expression "(long)unaff_s6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (labeled_statement "LAB_00037c9c:\n    (*pcVar23)();" statement_identifier : (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" else (compound_statement "{\n    piVar8 = (int *)n;\n    puVar10 = auStack_88;\n    if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "piVar8 = (int *)n;" (assignment_expression "piVar8 = (int *)n" identifier = (cast_expression "(int *)n" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if ((int *)n != (int *)0x0) {\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }" if (parenthesized_expression "((int *)n != (int *)0x0)" ( (binary_expression "(int *)n != (int *)0x0" (cast_expression "(int *)n" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }" { (if_statement "if (iVar7 < 1) {\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n        iVar7 = -1;\n        puVar10 = auStack_88;\n      }" { (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" else (compound_statement "{\n        unaff_s5 = (int *)piVar12[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar12;\n        puVar10 = auStack_88;\n        if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" { (expression_statement "unaff_s5 = (int *)piVar12[4];" (assignment_expression "unaff_s5 = (int *)piVar12[4]" identifier = (cast_expression "(int *)piVar12[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar8 = (int *)((int)unaff_s5 + 1);" (assignment_expression "piVar8 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s4 = piVar12;" (assignment_expression "unaff_s4 = piVar12" identifier = identifier) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if (iVar7 <= (int)piVar8) {\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" if (parenthesized_expression "(iVar7 <= (int)piVar8)" ( (binary_expression "iVar7 <= (int)piVar8" identifier <= (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          unaff_s1 = (int *)(iVar7 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" { (expression_statement "unaff_s1 = (int *)(iVar7 + 1);" (assignment_expression "unaff_s1 = (int *)(iVar7 + 1)" identifier = (cast_expression "(int *)(iVar7 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )))) ;) (if_statement "if ((int)unaff_s1 < (int)unaff_s5) {\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" if (parenthesized_expression "((int)unaff_s1 < (int)unaff_s5)" ( (binary_expression "(int)unaff_s1 < (int)unaff_s5" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar7 = -iVar7;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }" { (expression_statement "iVar7 = -iVar7;" (assignment_expression "iVar7 = -iVar7" identifier = (unary_expression "-iVar7" - identifier)) ;) (expression_statement "piVar8 = (int *)((int)piVar8 + (int)unaff_s1);" (assignment_expression "piVar8 = (int *)((int)piVar8 + (int)unaff_s1)" identifier = (cast_expression "(int *)((int)piVar8 + (int)unaff_s1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" else (compound_statement "{\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar12[5];\n            unaff_s1[-1] = iVar2;\n            piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);\n            d = (ulong)unaff_s5;\n            iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);\n            puVar24 = apuStack_78[0];\n            piVar12 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);\n            *piVar12 = iVar7;\n            if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" { (expression_statement "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;" (assignment_expression "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4" identifier = (binary_expression "((int)piVar8 + (int)unaff_s1) * 4" (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (expression_statement "iStack_70 = 0;" (assignment_expression "iStack_70 = 0" identifier = number_literal) ;) (if_statement "if (uVar9 < 0x7f01) {\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n              iVar2 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar2;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar2);\n            }" { (expression_statement "iVar2 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar2 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_88 + iVar2;" (assignment_expression "puVar26 = auStack_88 + iVar2" identifier = (binary_expression "auStack_88 + iVar2" identifier + identifier)) ;) (expression_statement "unaff_s2 = (int *)((int)apuStack_78 + iVar2);" (assignment_expression "unaff_s2 = (int *)((int)apuStack_78 + iVar2)" identifier = (cast_expression "(int *)((int)apuStack_78 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_78 + iVar2)" ( (binary_expression "(int)apuStack_78 + iVar2" (cast_expression "(int)apuStack_78" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" else (compound_statement "{\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" { (expression_statement "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);" (assignment_expression "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (parenthesized_expression "(**(code **)(puVar22 + 0x5f800))" ( (pointer_expression "**(code **)(puVar22 + 0x5f800)" * (pointer_expression "*(code **)(puVar22 + 0x5f800)" * (cast_expression "(code **)(puVar22 + 0x5f800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5f800)" ( (binary_expression "puVar22 + 0x5f800" identifier + number_literal) ))))) )) (argument_list "(&iStack_70)" ( (pointer_expression "&iStack_70" & identifier) ))))) ;) }))) (expression_statement "iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d);" (assignment_expression "iVar2 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d)" identifier = (call_expression "(**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar12[2],iVar7,d)" (parenthesized_expression "(**(code **)(apuStack_78[0] + -0x7f9c))" ( (pointer_expression "**(code **)(apuStack_78[0] + -0x7f9c)" * (pointer_expression "*(code **)(apuStack_78[0] + -0x7f9c)" * (cast_expression "(code **)(apuStack_78[0] + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_78[0] + -0x7f9c)" ( (binary_expression "apuStack_78[0] + -0x7f9c" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(unaff_s2,piVar12[2],iVar7,d)" ( identifier , (subscript_expression "piVar12[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) (expression_statement "puVar1 = apuStack_78[0];" (assignment_expression "puVar1 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "unaff_s1 = unaff_s2 + (int)unaff_s1;" (assignment_expression "unaff_s1 = unaff_s2 + (int)unaff_s1" identifier = (binary_expression "unaff_s2 + (int)unaff_s1" identifier + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar8 = (int *)piVar12[5];" (assignment_expression "piVar8 = (int *)piVar12[5]" identifier = (cast_expression "(int *)piVar12[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[5]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s1[-1] = iVar2;" (assignment_expression "unaff_s1[-1] = iVar2" (subscript_expression "unaff_s1[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar14 = (int *)((uint)(iVar2 != 0) + iVar7);" (assignment_expression "piVar14 = (int *)((uint)(iVar2 != 0) + iVar7)" identifier = (cast_expression "(int *)((uint)(iVar2 != 0) + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar2 != 0) + iVar7)" ( (binary_expression "(uint)(iVar2 != 0) + iVar7" (call_expression "(uint)(iVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) ))) + identifier) )))) ;) (expression_statement "d = (ulong)unaff_s5;" (assignment_expression "d = (ulong)unaff_s5" identifier = (cast_expression "(ulong)unaff_s5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n);" (assignment_expression "iVar7 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n)" identifier = (call_expression "(**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,n)" (parenthesized_expression "(**(code **)(puVar1 + -0x7f9c))" ( (pointer_expression "**(code **)(puVar1 + -0x7f9c)" * (pointer_expression "*(code **)(puVar1 + -0x7f9c)" * (cast_expression "(code **)(puVar1 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x7f9c)" ( (binary_expression "puVar1 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,unaff_s5,n)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "piVar12 = unaff_s1 + (int)unaff_s5;" (assignment_expression "piVar12 = unaff_s1 + (int)unaff_s5" identifier = (binary_expression "unaff_s1 + (int)unaff_s5" identifier + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5);" (assignment_expression "unaff_s5 = (int *)((uint)(iVar7 != 0) + (int)unaff_s5)" identifier = (cast_expression "(int *)((uint)(iVar7 != 0) + (int)unaff_s5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar7 != 0) + (int)unaff_s5)" ( (binary_expression "(uint)(iVar7 != 0) + (int)unaff_s5" (call_expression "(uint)(iVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) ))) + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*piVar12 = iVar7;" (assignment_expression "*piVar12 = iVar7" (pointer_expression "*piVar12" * identifier) = identifier) ;) (if_statement "if (piVar14 == unaff_s5) {\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }\n            else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }" if (parenthesized_expression "(piVar14 == unaff_s5)" ( (binary_expression "piVar14 == unaff_s5" identifier == identifier) )) (compound_statement "{\n              d = 0xffffffff;\n              piVar15 = unaff_s2 + (int)piVar14;\n              piVar12 = unaff_s1 + (int)piVar14;\n              do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              iVar7 = -1;\n              if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }\n            }" { (expression_statement "d = 0xffffffff;" (assignment_expression "d = 0xffffffff" identifier = number_literal) ;) (expression_statement "piVar15 = unaff_s2 + (int)piVar14;" (assignment_expression "piVar15 = unaff_s2 + (int)piVar14" identifier = (binary_expression "unaff_s2 + (int)piVar14" identifier + (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar12 = unaff_s1 + (int)piVar14;" (assignment_expression "piVar12 = unaff_s1 + (int)piVar14" identifier = (binary_expression "unaff_s1 + (int)piVar14" identifier + (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              } while ((int *)*piVar20 == piVar8);" do (compound_statement "{\n                piVar14 = (int *)((int)piVar14 + -1);\n                piVar12 = piVar12 + -1;\n                if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar15 + -1;\n                piVar8 = (int *)*piVar12;\n                piVar15 = piVar15 + -1;\n              }" { (expression_statement "piVar14 = (int *)((int)piVar14 + -1);" (assignment_expression "piVar14 = (int *)((int)piVar14 + -1)" identifier = (cast_expression "(int *)((int)piVar14 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar14 + -1)" ( (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar12 = piVar12 + -1;" (assignment_expression "piVar12 = piVar12 + -1" identifier = (binary_expression "piVar12 + -1" identifier + number_literal)) ;) (if_statement "if (piVar14 == (int *)0xffffffff) {\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }" if (parenthesized_expression "(piVar14 == (int *)0xffffffff)" ( (binary_expression "piVar14 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  iVar7 = 0;\n                  goto LAB_00037c04;\n                }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00037c04;" goto statement_identifier ;) })) (expression_statement "piVar20 = piVar15 + -1;" (assignment_expression "piVar20 = piVar15 + -1" identifier = (binary_expression "piVar15 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)*piVar12;" (assignment_expression "piVar8 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (expression_statement "piVar15 = piVar15 + -1;" (assignment_expression "piVar15 = piVar15 + -1" identifier = (binary_expression "piVar15 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)*piVar20 == piVar8)" ( (binary_expression "(int *)*piVar20 == piVar8" (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier)) == identifier) )) ;) (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) (if_statement "if (piVar8 < (int *)*piVar20) {\n                iVar7 = 1;\n              }" if (parenthesized_expression "(piVar8 < (int *)*piVar20)" ( (binary_expression "piVar8 < (int *)*piVar20" identifier < (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier))) )) (compound_statement "{\n                iVar7 = 1;\n              }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }" else (compound_statement "{\n              iVar7 = (int)piVar14 - (int)unaff_s5;\n            }" { (expression_statement "iVar7 = (int)piVar14 - (int)unaff_s5;" (assignment_expression "iVar7 = (int)piVar14 - (int)unaff_s5" identifier = (binary_expression "(int)piVar14 - (int)unaff_s5" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (labeled_statement "LAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);" statement_identifier : (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7a2c)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7a2c)" * (cast_expression "(code **)(puVar24 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7a2c)" ( (binary_expression "puVar24 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar10 = puVar26;" (assignment_expression "puVar10 = puVar26" identifier = identifier) ;) (if_statement "if (iStack_70 != 0) goto LAB_00037c9c;" if (parenthesized_expression "(iStack_70 != 0)" ( (binary_expression "iStack_70 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00037c9c;" goto statement_identifier ;)) }))) })) }))) })) }))) (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7b70)" * (cast_expression "(code **)(puVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7b70)" ( (binary_expression "puVar24 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (piStack_6c == (int *)*puVar19) {\n    return iVar7;\n  }" if (parenthesized_expression "(piStack_6c == (int *)*puVar19)" ( (binary_expression "piStack_6c == (int *)*puVar19" identifier == (cast_expression "(int *)*puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) )) (compound_statement "{\n    return iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) })) (expression_statement "pcVar29 = __gmpq_div;" (assignment_expression "pcVar29 = __gmpq_div" identifier = identifier) ;) (expression_statement "piVar14 = piStack_6c;" (assignment_expression "piVar14 = piStack_6c" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x67350;" (assignment_expression "pcVar25 = pcVar23 + 0x67350" identifier = (binary_expression "pcVar23 + 0x67350" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar10 + -0x80;" (assignment_expression "puVar27 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar10 + -0x80;" (assignment_expression "puVar3 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar10 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar10 + -0x14)" * (cast_expression "(int **)(puVar10 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x28) = iVar7;" (assignment_expression "*(int *)(puVar10 + -0x28) = iVar7" (pointer_expression "*(int *)(puVar10 + -0x28)" * (cast_expression "(int *)(puVar10 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x28)" ( (binary_expression "puVar10 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = *(int **)(pcVar23 + 0x5f850);" (assignment_expression "piVar20 = *(int **)(pcVar23 + 0x5f850)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f850)" * (cast_expression "(int **)(pcVar23 + 0x5f850)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f850)" ( (binary_expression "pcVar23 + 0x5f850" identifier + number_literal) ))))) ;) (expression_statement "piVar12 = *(int **)(d + 4);" (assignment_expression "piVar12 = *(int **)(d + 4)" identifier = (pointer_expression "*(int **)(d + 4)" * (cast_expression "(int **)(d + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(d + 4)" ( (binary_expression "d + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar10 + -8) = auStack_88;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = auStack_88" (pointer_expression "*(undefined1 **)(puVar10 + -8)" * (cast_expression "(undefined1 **)(puVar10 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar10 + -4) = pcVar29" (pointer_expression "*(code **)(puVar10 + -4)" * (cast_expression "(code **)(puVar10 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar10 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar10 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar10 + -0xc)" * (cast_expression "(undefined1 **)(puVar10 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(puVar10 + -0x10) = n;" (assignment_expression "*(long *)(puVar10 + -0x10) = n" (pointer_expression "*(long *)(puVar10 + -0x10)" * (cast_expression "(long *)(puVar10 + -0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar10 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar10 + -0x18)" * (cast_expression "(int **)(puVar10 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar10 + -0x1c) = puVar19;" (assignment_expression "*(undefined4 **)(puVar10 + -0x1c) = puVar19" (pointer_expression "*(undefined4 **)(puVar10 + -0x1c)" * (cast_expression "(undefined4 **)(puVar10 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar10 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar10 + -0x20)" * (cast_expression "(int **)(puVar10 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar10 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar10 + -0x24)" * (cast_expression "(int **)(puVar10 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -0x70) = pcVar25;" (assignment_expression "*(code **)(puVar10 + -0x70) = pcVar25" (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x2c) = *piVar20;" (assignment_expression "*(int *)(puVar10 + -0x2c) = *piVar20" (pointer_expression "*(int *)(puVar10 + -0x2c)" * (cast_expression "(int *)(puVar10 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "piVar15 = (int *)d;" (assignment_expression "piVar15 = (int *)d" identifier = (cast_expression "(int *)d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (piVar12 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" if (parenthesized_expression "(piVar12 == (int *)0x0)" ( (binary_expression "piVar12 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }" { (expression_statement "(**(code **)(pcVar23 + 0x5f8ec))();" (call_expression "(**(code **)(pcVar23 + 0x5f8ec))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f8ec))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f8ec)" * (pointer_expression "*(code **)(pcVar23 + 0x5f8ec)" * (cast_expression "(code **)(pcVar23 + 0x5f8ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f8ec)" ( (binary_expression "pcVar23 + 0x5f8ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" else (compound_statement "{\n    unaff_s2 = piVar14;\n    unaff_s4 = piVar8;\n    if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" { (expression_statement "unaff_s2 = piVar14;" (assignment_expression "unaff_s2 = piVar14" identifier = identifier) ;) (expression_statement "unaff_s4 = piVar8;" (assignment_expression "unaff_s4 = piVar8" identifier = identifier) ;) (if_statement "if ((int *)d != piVar14) {\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" if (parenthesized_expression "((int *)d != piVar14)" ( (binary_expression "(int *)d != piVar14" (cast_expression "(int *)d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) (compound_statement "{\n      piVar15 = (int *)piVar8[1];\n      if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar3;\n      if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }\n      *(int **)(puVar10 + -0x44) = piVar12;\n      if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar16 = *(int *)(d + 0x10);\n      iVar7 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar3;\n      iVar2 = iVar7;\n      if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }\n      *(int *)(puVar10 + -0x50) = iVar2;\n      if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar3;\n      if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }\n      *(int *)(puVar10 + -0x38) = iVar7;\n      if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar3;\n      (*pcVar23)(unaff_s7,piVar8,d);\n      n = (long)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar12 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;\n      piVar8 = piVar12;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }\n      piVar14 = *(int **)(puVar10 + -0x60);\n      puVar3 = puVar27;\n      if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" { (expression_statement "piVar15 = (int *)piVar8[1];" (assignment_expression "piVar15 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar15 == (int *)0x0) {\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" if (parenthesized_expression "(piVar15 == (int *)0x0)" ( (binary_expression "piVar15 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar14[1] = 0;\n        *(undefined4 *)piVar14[5] = 1;\n        piVar14[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar3 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" { (expression_statement "piVar14[1] = 0;" (assignment_expression "piVar14[1] = 0" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)piVar14[5] = 1;" (assignment_expression "*(undefined4 *)piVar14[5] = 1" (pointer_expression "*(undefined4 *)piVar14[5]" * (cast_expression "(undefined4 *)piVar14[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[5]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "piVar14[4] = 1;" (assignment_expression "piVar14[4] = 1" (subscript_expression "piVar14[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s1 = (int *)0x0;" (assignment_expression "unaff_s1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar3 = puVar10 + -0x80;" (assignment_expression "puVar3 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) (if_statement "if ((int)piVar15 < 0) {\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }" if (parenthesized_expression "((int)piVar15 < 0)" ( (binary_expression "(int)piVar15 < 0" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar15 = (int *)-(int)piVar15;\n        if (-1 < (int)piVar12) goto LAB_00037d70;\nLAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "piVar15 = (int *)-(int)piVar15;" (assignment_expression "piVar15 = (int *)-(int)piVar15" identifier = (cast_expression "(int *)-(int)piVar15" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar15" - (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if (-1 < (int)piVar12) goto LAB_00037d70;" if (parenthesized_expression "(-1 < (int)piVar12)" ( (binary_expression "-1 < (int)piVar12" number_literal < (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00037d70;" goto statement_identifier ;)) (labeled_statement "LAB_00037f98:\n        piVar12 = (int *)-(int)piVar12;" statement_identifier : (expression_statement "piVar12 = (int *)-(int)piVar12;" (assignment_expression "piVar12 = (int *)-(int)piVar12" identifier = (cast_expression "(int *)-(int)piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar12" - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)))) ;)) (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar5 = piVar12;" (assignment_expression "piVar5 = piVar12" identifier = identifier) ;) (if_statement "if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }" if (parenthesized_expression "((int)piVar15 <= (int)piVar12)" ( (binary_expression "(int)piVar15 <= (int)piVar12" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar5 = piVar15;\n        }" { (expression_statement "piVar5 = piVar15;" (assignment_expression "piVar5 = piVar15" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar5 << 2;" (assignment_expression "uVar9 = (int)piVar5 << 2" identifier = (binary_expression "(int)piVar5 << 2" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar5;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar5" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 < 0x7f01) goto LAB_00037d90;" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00037d90;" goto statement_identifier ;)) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00037fec:\n        puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" statement_identifier : (expression_statement "puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" (assignment_expression "puVar3 = (undefined1 *)(*pcVar23)(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar10 + -0x60)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;)) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }" else (compound_statement "{\n        if ((int)piVar12 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar5 = piVar12;\n        if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }\n        uVar9 = (int)piVar5 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar5;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar7 + -0x80;\n        puVar3 = puVar10 + iVar7 + -0x70;\n      }" { (if_statement "if ((int)piVar12 < 0) goto LAB_00037f98;" if (parenthesized_expression "((int)piVar12 < 0)" ( (binary_expression "(int)piVar12 < 0" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00037f98;" goto statement_identifier ;)) (labeled_statement "LAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar5 = piVar12;" (assignment_expression "piVar5 = piVar12" identifier = identifier) ;) (if_statement "if ((int)piVar15 <= (int)piVar12) {\n          piVar5 = piVar15;\n        }" if (parenthesized_expression "((int)piVar15 <= (int)piVar12)" ( (binary_expression "(int)piVar15 <= (int)piVar12" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar5 = piVar15;\n        }" { (expression_statement "piVar5 = piVar15;" (assignment_expression "piVar5 = piVar15" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar5 << 2;" (assignment_expression "uVar9 = (int)piVar5 << 2" identifier = (binary_expression "(int)piVar5 << 2" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar5;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar5" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" if (parenthesized_expression "(0x7f00 < uVar9)" ( (binary_expression "0x7f00 < uVar9" number_literal < identifier) )) (compound_statement "{\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" { (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00037fec;" goto statement_identifier ;) })) (labeled_statement "LAB_00037d90:\n        iVar7 = -(uVar9 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar7 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar27 = puVar10 + iVar7 + -0x80;" (assignment_expression "puVar27 = puVar10 + iVar7 + -0x80" identifier = (binary_expression "puVar10 + iVar7 + -0x80" (binary_expression "puVar10 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "puVar3 = puVar10 + iVar7 + -0x70;" (assignment_expression "puVar3 = puVar10 + iVar7 + -0x70" identifier = (binary_expression "puVar10 + iVar7 + -0x70" (binary_expression "puVar10 + iVar7" identifier + identifier) + number_literal)) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x54) = puVar3;" (assignment_expression "*(undefined1 **)(puVar10 + -0x54) = puVar3" (pointer_expression "*(undefined1 **)(puVar10 + -0x54)" * (cast_expression "(undefined1 **)(puVar10 + -0x54)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x54)" ( (binary_expression "puVar10 + -0x54" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)piVar12 <= (int)piVar15) {\n        piVar12 = piVar15;\n      }" if (parenthesized_expression "((int)piVar12 <= (int)piVar15)" ( (binary_expression "(int)piVar12 <= (int)piVar15" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar12 = piVar15;\n      }" { (expression_statement "piVar12 = piVar15;" (assignment_expression "piVar12 = piVar15" identifier = identifier) ;) })) (expression_statement "*(int **)(puVar10 + -0x44) = piVar12;" (assignment_expression "*(int **)(puVar10 + -0x44) = piVar12" (pointer_expression "*(int **)(puVar10 + -0x44)" * (cast_expression "(int **)(puVar10 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)((int)piVar12 * 4) < 0x7f01) {\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)((int)piVar12 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)piVar12 * 4) < 0x7f01" (call_expression "(uint)((int)piVar12 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar12 * 4)" ( (binary_expression "(int)piVar12 * 4" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }" { (expression_statement "iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar7 = -((int)piVar12 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)piVar12 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)piVar12 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar12 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar12 * 4 + 7U" (binary_expression "(int)piVar12 * 4" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = puVar27 + iVar7 + 0x10;" (assignment_expression "puVar3 = puVar27 + iVar7 + 0x10" identifier = (binary_expression "puVar27 + iVar7 + 0x10" (binary_expression "puVar27 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar7;" (assignment_expression "puVar27 = puVar27 + iVar7" identifier = (binary_expression "puVar27 + iVar7" identifier + identifier)) ;) }) (else_clause "else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar16 = *(int *)(d + 0x10);" (assignment_expression "iVar16 = *(int *)(d + 0x10)" identifier = (pointer_expression "*(int *)(d + 0x10)" * (cast_expression "(int *)(d + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(d + 0x10)" ( (binary_expression "d + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = piVar8[4];" (assignment_expression "iVar7 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x3c) = puVar3;" (assignment_expression "*(undefined1 **)(puVar10 + -0x3c) = puVar3" (pointer_expression "*(undefined1 **)(puVar10 + -0x3c)" * (cast_expression "(undefined1 **)(puVar10 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x3c)" ( (binary_expression "puVar10 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = iVar7;" (assignment_expression "iVar2 = iVar7" identifier = identifier) ;) (if_statement "if (iVar16 <= iVar7) {\n        iVar2 = iVar16;\n      }" if (parenthesized_expression "(iVar16 <= iVar7)" ( (binary_expression "iVar16 <= iVar7" identifier <= identifier) )) (compound_statement "{\n        iVar2 = iVar16;\n      }" { (expression_statement "iVar2 = iVar16;" (assignment_expression "iVar2 = iVar16" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x50) = iVar2;" (assignment_expression "*(int *)(puVar10 + -0x50) = iVar2" (pointer_expression "*(int *)(puVar10 + -0x50)" * (cast_expression "(int *)(puVar10 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar2 * 4) < 0x7f01) {\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar2 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar2 * 4) < 0x7f01" (call_expression "(uint)(iVar2 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 * 4)" ( (binary_expression "iVar2 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar2 + 0x10;\n        puVar27 = puVar27 + iVar2;\n      }" { (expression_statement "iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -(iVar2 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar2 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar2 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar2 * 4 + 7U & 0xfffffff8" (binary_expression "iVar2 * 4 + 7U" (binary_expression "iVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = puVar27 + iVar2 + 0x10;" (assignment_expression "puVar3 = puVar27 + iVar2 + 0x10" identifier = (binary_expression "puVar27 + iVar2 + 0x10" (binary_expression "puVar27 + iVar2" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar2;" (assignment_expression "puVar27 = puVar27 + iVar2" identifier = (binary_expression "puVar27 + iVar2" identifier + identifier)) ;) }) (else_clause "else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x48) = puVar3;" (assignment_expression "*(undefined1 **)(puVar10 + -0x48) = puVar3" (pointer_expression "*(undefined1 **)(puVar10 + -0x48)" * (cast_expression "(undefined1 **)(puVar10 + -0x48)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x48)" ( (binary_expression "puVar10 + -0x48" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 <= iVar16) {\n        iVar7 = iVar16;\n      }" if (parenthesized_expression "(iVar7 <= iVar16)" ( (binary_expression "iVar7 <= iVar16" identifier <= identifier) )) (compound_statement "{\n        iVar7 = iVar16;\n      }" { (expression_statement "iVar7 = iVar16;" (assignment_expression "iVar7 = iVar16" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x38) = iVar7;" (assignment_expression "*(int *)(puVar10 + -0x38) = iVar7" (pointer_expression "*(int *)(puVar10 + -0x38)" * (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar7 * 4) < 0x7f01) {\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }\n      else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar7 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar7 * 4) < 0x7f01" (call_expression "(uint)(iVar7 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 * 4)" ( (binary_expression "iVar7 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);\n        puVar3 = puVar27 + iVar7 + 0x10;\n        puVar27 = puVar27 + iVar7;\n      }" { (expression_statement "iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar7 = -(iVar7 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar7 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar7 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar7 * 4 + 7U & 0xfffffff8" (binary_expression "iVar7 * 4 + 7U" (binary_expression "iVar7 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = puVar27 + iVar7 + 0x10;" (assignment_expression "puVar3 = puVar27 + iVar7 + 0x10" identifier = (binary_expression "puVar27 + iVar7 + 0x10" (binary_expression "puVar27 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar7;" (assignment_expression "puVar27 = puVar27 + iVar7" identifier = (binary_expression "puVar27 + iVar7" identifier + identifier)) ;) }) (else_clause "else {\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar3 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7e44);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7e44)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7e44)" * (cast_expression "(code **)(pcVar25 + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7e44)" ( (binary_expression "pcVar25 + -0x7e44" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = puVar10 + -0x5c;" (assignment_expression "unaff_s7 = puVar10 + -0x5c" identifier = (binary_expression "puVar10 + -0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x30) = puVar3;" (assignment_expression "*(undefined1 **)(puVar10 + -0x30) = puVar3" (pointer_expression "*(undefined1 **)(puVar10 + -0x30)" * (cast_expression "(undefined1 **)(puVar10 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x30)" ( (binary_expression "puVar10 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s7,piVar8,d);" (call_expression "(*pcVar23)(unaff_s7,piVar8,d)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s7,piVar8,d)" ( identifier , identifier , identifier ))) ;) (expression_statement "n = (long)(puVar10 + -0x50);" (assignment_expression "n = (long)(puVar10 + -0x50)" identifier = (cast_expression "(long)(puVar10 + -0x50)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) ;) (expression_statement "*(int **)(puVar10 + -100) = piVar8 + 3;" (assignment_expression "*(int **)(puVar10 + -100) = piVar8 + 3" (pointer_expression "*(int **)(puVar10 + -100)" * (cast_expression "(int **)(puVar10 + -100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) = (binary_expression "piVar8 + 3" identifier + number_literal)) ;) (expression_statement "piVar12 = (int *)(puVar10 + -0x44);" (assignment_expression "piVar12 = (int *)(puVar10 + -0x44)" identifier = (cast_expression "(int *)(puVar10 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(n,(int *)(d + 0xc),piVar8 + 3)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7e44" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(n,(int *)(d + 0xc),piVar8 + 3)" ( identifier , (cast_expression "(int *)(d + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(d + 0xc)" ( (binary_expression "d + 0xc" identifier + number_literal) ))) , (binary_expression "piVar8 + 3" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,piVar8,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,piVar8,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "unaff_s1 = (int *)(puVar10 + -0x38);" (assignment_expression "unaff_s1 = (int *)(puVar10 + -0x38)" identifier = (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,(int *)(d + 0xc),n)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,(int *)(d + 0xc),n)" ( identifier , (cast_expression "(int *)(d + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(d + 0xc)" ( (binary_expression "d + 0xc" identifier + number_literal) ))) , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14,piVar12,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar14,piVar12,unaff_s1)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar12,d,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,d,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)\n      ;" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,*(undefined4 *)(puVar10 + -100),n)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,*(undefined4 *)(puVar10 + -100),n)" ( identifier , (pointer_expression "*(undefined4 *)(puVar10 + -100)" * (cast_expression "(undefined4 *)(puVar10 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "piVar8 = piVar12;" (assignment_expression "piVar8 = piVar12" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar14 + 3,piVar12,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar14 + 3,piVar12,unaff_s1)" ( (binary_expression "piVar14 + 3" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (if_statement "if (piVar14[4] < 0) {\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }" if (parenthesized_expression "(piVar14[4] < 0)" ( (binary_expression "piVar14[4] < 0" (subscript_expression "piVar14[4]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n        piVar14[4] = -piVar14[4];\n        piVar14[1] = -piVar14[1];\n      }" { (expression_statement "piVar14[4] = -piVar14[4];" (assignment_expression "piVar14[4] = -piVar14[4]" (subscript_expression "piVar14[4]" identifier [ number_literal ]) = (unary_expression "-piVar14[4]" - (subscript_expression "piVar14[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar14[1] = -piVar14[1];" (assignment_expression "piVar14[1] = -piVar14[1]" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = (unary_expression "-piVar14[1]" - (subscript_expression "piVar14[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar14 = *(int **)(puVar10 + -0x60);" (assignment_expression "piVar14 = *(int **)(puVar10 + -0x60)" identifier = (pointer_expression "*(int **)(puVar10 + -0x60)" * (cast_expression "(int **)(puVar10 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar27;" (assignment_expression "puVar3 = puVar27" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "(**(code **)(pcVar25 + -0x7a2c))();" (call_expression "(**(code **)(pcVar25 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar25 + -0x7a2c))" ( (pointer_expression "**(code **)(pcVar25 + -0x7a2c)" * (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) }))) (expression_statement "puVar13 = (undefined4 *)piVar15[5];" (assignment_expression "puVar13 = (undefined4 *)piVar15[5]" identifier = (cast_expression "(undefined4 *)piVar15[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar15[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar19 = (undefined4 *)piVar15[2];" (assignment_expression "puVar19 = (undefined4 *)piVar15[2]" identifier = (cast_expression "(undefined4 *)piVar15[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar15[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar15 == piVar8) {\n    piVar14 = (int *)&DAT_00000001;\n    *puVar19 = 1;\n    piVar15[1] = 1;\n    *puVar13 = 1;\n    piVar15[4] = 1;\n  }\n  else {\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }" if (parenthesized_expression "(piVar15 == piVar8)" ( (binary_expression "piVar15 == piVar8" identifier == identifier) )) (compound_statement "{\n    piVar14 = (int *)&DAT_00000001;\n    *puVar19 = 1;\n    piVar15[1] = 1;\n    *puVar13 = 1;\n    piVar15[4] = 1;\n  }" { (expression_statement "piVar14 = (int *)&DAT_00000001;" (assignment_expression "piVar14 = (int *)&DAT_00000001" identifier = (cast_expression "(int *)&DAT_00000001" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "*puVar19 = 1;" (assignment_expression "*puVar19 = 1" (pointer_expression "*puVar19" * identifier) = number_literal) ;) (expression_statement "piVar15[1] = 1;" (assignment_expression "piVar15[1] = 1" (subscript_expression "piVar15[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar13 = 1;" (assignment_expression "*puVar13 = 1" (pointer_expression "*puVar13" * identifier) = number_literal) ;) (expression_statement "piVar15[4] = 1;" (assignment_expression "piVar15[4] = 1" (subscript_expression "piVar15[4]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }" else (compound_statement "{\n    iVar2 = *piVar14;\n    iVar16 = piVar14[3];\n    iVar7 = piVar14[4];\n    unaff_s2[2] = (int)puVar13;\n    unaff_s2[5] = (int)puVar19;\n    *unaff_s2 = iVar16;\n    unaff_s2[3] = iVar2;\n    if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar7;\n    unaff_s2[4] = (int)piVar12;\n    piVar14 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar3 = puVar10 + -0x80;\n  }" { (expression_statement "iVar2 = *piVar14;" (assignment_expression "iVar2 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "iVar16 = piVar14[3];" (assignment_expression "iVar16 = piVar14[3]" identifier = (subscript_expression "piVar14[3]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = piVar14[4];" (assignment_expression "iVar7 = piVar14[4]" identifier = (subscript_expression "piVar14[4]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2[2] = (int)puVar13;" (assignment_expression "unaff_s2[2] = (int)puVar13" (subscript_expression "unaff_s2[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "unaff_s2[5] = (int)puVar19;" (assignment_expression "unaff_s2[5] = (int)puVar19" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*unaff_s2 = iVar16;" (assignment_expression "*unaff_s2 = iVar16" (pointer_expression "*unaff_s2" * identifier) = identifier) ;) (expression_statement "unaff_s2[3] = iVar2;" (assignment_expression "unaff_s2[3] = iVar2" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int)piVar12 < 1) {\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }" if (parenthesized_expression "((int)piVar12 < 1)" ( (binary_expression "(int)piVar12 < 1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar7 = -iVar7;\n      piVar12 = (int *)-(int)piVar12;\n    }" { (expression_statement "iVar7 = -iVar7;" (assignment_expression "iVar7 = -iVar7" identifier = (unary_expression "-iVar7" - identifier)) ;) (expression_statement "piVar12 = (int *)-(int)piVar12;" (assignment_expression "piVar12 = (int *)-(int)piVar12" identifier = (cast_expression "(int *)-(int)piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar12" - (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f4e8);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f4e8)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f4e8)" * (cast_expression "(code **)(pcVar23 + 0x5f4e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f4e8)" ( (binary_expression "pcVar23 + 0x5f4e8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s2[1] = iVar7;" (assignment_expression "unaff_s2[1] = iVar7" (subscript_expression "unaff_s2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s2[4] = (int)piVar12;" (assignment_expression "unaff_s2[4] = (int)piVar12" (subscript_expression "unaff_s2[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar14 = unaff_s2;" (assignment_expression "piVar14 = unaff_s2" identifier = identifier) ;) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" identifier = identifier) ;) (expression_statement "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4);" (call_expression "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s2,unaff_s2,unaff_s4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar10 + -0x80;" (assignment_expression "puVar3 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00037f54:\n  if (*(int *)(puVar10 + -0x2c) == *piVar20) {\n    return *piVar20;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar10 + -0x2c) == *piVar20) {\n    return *piVar20;\n  }" if (parenthesized_expression "(*(int *)(puVar10 + -0x2c) == *piVar20)" ( (binary_expression "*(int *)(puVar10 + -0x2c) == *piVar20" (pointer_expression "*(int *)(puVar10 + -0x2c)" * (cast_expression "(int *)(puVar10 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) == (pointer_expression "*piVar20" * identifier)) )) (compound_statement "{\n    return *piVar20;\n  }" { (return_statement "return *piVar20;" return (pointer_expression "*piVar20" * identifier) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar29 = __gmpq_get_d;" (assignment_expression "pcVar29 = __gmpq_get_d" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x66f70;" (assignment_expression "pcVar25 = pcVar23 + 0x66f70" identifier = (binary_expression "pcVar23 + 0x66f70" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar3 + -0x70;" (assignment_expression "puVar27 = puVar3 + -0x70" identifier = (binary_expression "puVar3 + -0x70" identifier + number_literal)) ;) (expression_statement "puVar28 = puVar3 + -0x70;" (assignment_expression "puVar28 = puVar3 + -0x70" identifier = (binary_expression "puVar3 + -0x70" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar3 + -0x14) = piVar20;" (assignment_expression "*(int **)(puVar3 + -0x14) = piVar20" (pointer_expression "*(int **)(puVar3 + -0x14)" * (cast_expression "(int **)(puVar3 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x14)" ( (binary_expression "puVar3 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar3 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar3 + -0x18)" * (cast_expression "(int **)(puVar3 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x18)" ( (binary_expression "puVar3 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar15 = *(int **)(pcVar23 + 0x5f470);" (assignment_expression "piVar15 = *(int **)(pcVar23 + 0x5f470)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f470)" * (cast_expression "(int **)(pcVar23 + 0x5f470)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f470)" ( (binary_expression "pcVar23 + 0x5f470" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = piVar14[1];" (assignment_expression "iVar2 = piVar14[1]" identifier = (subscript_expression "piVar14[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar3 + -8) = puVar10 + -0x80;" (assignment_expression "*(undefined1 **)(puVar3 + -8) = puVar10 + -0x80" (pointer_expression "*(undefined1 **)(puVar3 + -8)" * (cast_expression "(undefined1 **)(puVar3 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -8)" ( (binary_expression "puVar3 + -8" identifier + number_literal) )))) = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar3 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar3 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar3 + -0x20)" * (cast_expression "(int **)(puVar3 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar3 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar3 + -4) = pcVar29" (pointer_expression "*(code **)(puVar3 + -4)" * (cast_expression "(code **)(puVar3 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -4)" ( (binary_expression "puVar3 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar3 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar3 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar3 + -0xc)" * (cast_expression "(undefined1 **)(puVar3 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xc)" ( (binary_expression "puVar3 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(puVar3 + -0x10) = n;" (assignment_expression "*(long *)(puVar3 + -0x10) = n" (pointer_expression "*(long *)(puVar3 + -0x10)" * (cast_expression "(long *)(puVar3 + -0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x10)" ( (binary_expression "puVar3 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(puVar3 + -0x1c) = d;" (assignment_expression "*(ulong *)(puVar3 + -0x1c) = d" (pointer_expression "*(ulong *)(puVar3 + -0x1c)" * (cast_expression "(ulong *)(puVar3 + -0x1c)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x1c)" ( (binary_expression "puVar3 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar3 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar3 + -0x24)" * (cast_expression "(int **)(puVar3 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x24)" ( (binary_expression "puVar3 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0x28) = piVar12;" (assignment_expression "*(int **)(puVar3 + -0x28) = piVar12" (pointer_expression "*(int **)(puVar3 + -0x28)" * (cast_expression "(int **)(puVar3 + -0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x28)" ( (binary_expression "puVar3 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar3 + -0x50) = pcVar25;" (assignment_expression "*(code **)(puVar3 + -0x50) = pcVar25" (pointer_expression "*(code **)(puVar3 + -0x50)" * (cast_expression "(code **)(puVar3 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x50)" ( (binary_expression "puVar3 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = piVar14[4];" (assignment_expression "iVar7 = piVar14[4]" identifier = (subscript_expression "piVar14[4]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar3 + -0x2c) = *piVar15;" (assignment_expression "*(int *)(puVar3 + -0x2c) = *piVar15" (pointer_expression "*(int *)(puVar3 + -0x2c)" * (cast_expression "(int *)(puVar3 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x2c)" ( (binary_expression "puVar3 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar15" * identifier)) ;) (if_statement "if (iVar2 != 0) {\n    *(undefined4 *)(puVar3 + -0x40) = 0;\n    iVar16 = iVar2;\n    if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }\n    if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }\n    puVar19 = (undefined4 *)piVar14[2];\n    iVar21 = piVar14[5];\n    iVar4 = 3 - (iVar16 - iVar7);\n    piVar12 = (int *)(iVar4 * -0x20);\n    iVar11 = iVar16;\n    iVar18 = iVar4;\n    if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }\n    iVar16 = iVar16 + iVar4;\n    iVar4 = iVar7;\n    if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }\n    puVar13 = puVar19;\n    iVar4 = iVar11;\n    if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar3 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar7;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar4;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar13);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);\n    piVar14 = *(int **)(puVar3 + -0x40);\n    pcVar25 = *(code **)(puVar3 + -0x50);\n    puVar27 = puVar28;\n    if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    *(undefined4 *)(puVar3 + -0x40) = 0;\n    iVar16 = iVar2;\n    if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }\n    if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }\n    puVar19 = (undefined4 *)piVar14[2];\n    iVar21 = piVar14[5];\n    iVar4 = 3 - (iVar16 - iVar7);\n    piVar12 = (int *)(iVar4 * -0x20);\n    iVar11 = iVar16;\n    iVar18 = iVar4;\n    if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }\n    iVar16 = iVar16 + iVar4;\n    iVar4 = iVar7;\n    if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }\n    puVar13 = puVar19;\n    iVar4 = iVar11;\n    if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar3 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar7;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar4;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar13);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);\n    piVar14 = *(int **)(puVar3 + -0x40);\n    pcVar25 = *(code **)(puVar3 + -0x50);\n    puVar27 = puVar28;\n    if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }\n  }" { (expression_statement "*(undefined4 *)(puVar3 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x40)" * (cast_expression "(undefined4 *)(puVar3 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x40)" ( (binary_expression "puVar3 + -0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar16 = iVar2;" (assignment_expression "iVar16 = iVar2" identifier = identifier) ;) (if_statement "if (iVar2 < 0) {\n      iVar16 = -iVar2;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar16 = -iVar2;\n    }" { (expression_statement "iVar16 = -iVar2;" (assignment_expression "iVar16 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) })) (if_statement "if (iVar7 < 0) {\n      iVar7 = -iVar7;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar7 = -iVar7;\n    }" { (expression_statement "iVar7 = -iVar7;" (assignment_expression "iVar7 = -iVar7" identifier = (unary_expression "-iVar7" - identifier)) ;) })) (expression_statement "puVar19 = (undefined4 *)piVar14[2];" (assignment_expression "puVar19 = (undefined4 *)piVar14[2]" identifier = (cast_expression "(undefined4 *)piVar14[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = piVar14[5];" (assignment_expression "iVar21 = piVar14[5]" identifier = (subscript_expression "piVar14[5]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = 3 - (iVar16 - iVar7);" (assignment_expression "iVar4 = 3 - (iVar16 - iVar7)" identifier = (binary_expression "3 - (iVar16 - iVar7)" number_literal - (parenthesized_expression "(iVar16 - iVar7)" ( (binary_expression "iVar16 - iVar7" identifier - identifier) )))) ;) (expression_statement "piVar12 = (int *)(iVar4 * -0x20);" (assignment_expression "piVar12 = (int *)(iVar4 * -0x20)" identifier = (cast_expression "(int *)(iVar4 * -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 * -0x20)" ( (binary_expression "iVar4 * -0x20" identifier * number_literal) )))) ;) (expression_statement "iVar11 = iVar16;" (assignment_expression "iVar11 = iVar16" identifier = identifier) ;) (expression_statement "iVar18 = iVar4;" (assignment_expression "iVar18 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 < 0) {\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar18 = (iVar16 - iVar7) + -3;\n      puVar19 = puVar19 + iVar18;\n      iVar11 = iVar16 - iVar18;\n      iVar18 = iVar4 + iVar18;\n    }" { (expression_statement "iVar18 = (iVar16 - iVar7) + -3;" (assignment_expression "iVar18 = (iVar16 - iVar7) + -3" identifier = (binary_expression "(iVar16 - iVar7) + -3" (parenthesized_expression "(iVar16 - iVar7)" ( (binary_expression "iVar16 - iVar7" identifier - identifier) )) + number_literal)) ;) (expression_statement "puVar19 = puVar19 + iVar18;" (assignment_expression "puVar19 = puVar19 + iVar18" identifier = (binary_expression "puVar19 + iVar18" identifier + identifier)) ;) (expression_statement "iVar11 = iVar16 - iVar18;" (assignment_expression "iVar11 = iVar16 - iVar18" identifier = (binary_expression "iVar16 - iVar18" identifier - identifier)) ;) (expression_statement "iVar18 = iVar4 + iVar18;" (assignment_expression "iVar18 = iVar4 + iVar18" identifier = (binary_expression "iVar4 + iVar18" identifier + identifier)) ;) })) (expression_statement "iVar16 = iVar16 + iVar4;" (assignment_expression "iVar16 = iVar16 + iVar4" identifier = (binary_expression "iVar16 + iVar4" identifier + identifier)) ;) (expression_statement "iVar4 = iVar7;" (assignment_expression "iVar4 = iVar7" identifier = identifier) ;) (if_statement "if (0 < iVar18) {\n      iVar4 = iVar7 + iVar16;\n    }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n      iVar4 = iVar7 + iVar16;\n    }" { (expression_statement "iVar4 = iVar7 + iVar16;" (assignment_expression "iVar4 = iVar7 + iVar16" identifier = (binary_expression "iVar7 + iVar16" identifier + identifier)) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f220);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f220)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f220)" * (cast_expression "(code **)(pcVar23 + 0x5f220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f220)" ( (binary_expression "pcVar23 + 0x5f220" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar4 * 4) < 0x7f01) {\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }\n    else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }" if (parenthesized_expression "((uint)(iVar4 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar4 * 4) < 0x7f01" (call_expression "(uint)(iVar4 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 * 4)" ( (binary_expression "iVar4 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar3 + iVar4 + -0x70;\n      puVar10 = puVar3 + iVar4 + -0x50;\n    }" { (expression_statement "iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar4 = -(iVar4 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar4 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar4 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar4 * 4 + 7U & 0xfffffff8" (binary_expression "iVar4 * 4 + 7U" (binary_expression "iVar4 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar3 + iVar4 + -0x70;" (assignment_expression "puVar28 = puVar3 + iVar4 + -0x70" identifier = (binary_expression "puVar3 + iVar4 + -0x70" (binary_expression "puVar3 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar3 + iVar4 + -0x50;" (assignment_expression "puVar10 = puVar3 + iVar4 + -0x50" identifier = (binary_expression "puVar3 + iVar4 + -0x50" (binary_expression "puVar3 + iVar4" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }" else (compound_statement "{\n      *(int *)(puVar3 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);\n      pcVar25 = *(code **)(puVar3 + -0x50);\n      iVar11 = *(int *)(puVar3 + -0x48);\n    }" { (expression_statement "*(int *)(puVar3 + -0x48) = iVar11;" (assignment_expression "*(int *)(puVar3 + -0x48) = iVar11" (pointer_expression "*(int *)(puVar3 + -0x48)" * (cast_expression "(int *)(puVar3 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x48)" ( (binary_expression "puVar3 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40);" (assignment_expression "puVar10 = (undefined1 *)(*pcVar23)(puVar3 + -0x40)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar3 + -0x40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar3 + -0x40)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar3 + -0x40)" ( (binary_expression "puVar3 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar3 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar3 + -0x50)" identifier = (pointer_expression "*(code **)(puVar3 + -0x50)" * (cast_expression "(code **)(puVar3 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x50)" ( (binary_expression "puVar3 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar3 + -0x48);" (assignment_expression "iVar11 = *(int *)(puVar3 + -0x48)" identifier = (pointer_expression "*(int *)(puVar3 + -0x48)" * (cast_expression "(int *)(puVar3 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x48)" ( (binary_expression "puVar3 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar13 = puVar19;" (assignment_expression "puVar13 = puVar19" identifier = identifier) ;) (expression_statement "iVar4 = iVar11;" (assignment_expression "iVar4 = iVar11" identifier = identifier) ;) (if_statement "if (0 < iVar18) {\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }" if (parenthesized_expression "(0 < iVar18)" ( (binary_expression "0 < iVar18" number_literal < identifier) )) (compound_statement "{\n      puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);\n      puVar6 = puVar13;\n      iVar4 = iVar18;\n      do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);\n      iVar4 = iVar16;\n      if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }\n    }" { (expression_statement "puVar13 = (undefined4 *)(puVar10 + iVar7 * 4);" (assignment_expression "puVar13 = (undefined4 *)(puVar10 + iVar7 * 4)" identifier = (cast_expression "(undefined4 *)(puVar10 + iVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar7 * 4)" ( (binary_expression "puVar10 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar6 = puVar13;" (assignment_expression "puVar6 = puVar13" identifier = identifier) ;) (expression_statement "iVar4 = iVar18;" (assignment_expression "iVar4 = iVar18" identifier = identifier) ;) (do_statement "do {\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        iVar4 = iVar4 + -1;\n        *puVar6 = 0;\n        puVar6 = puVar6 + 1;\n      }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar30 = *puVar19;\n        iVar16 = iVar11 + -1;\n        puVar17 = puVar13 + iVar18;\n        puVar6 = puVar17;\n        if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }\n        *puVar17 = uVar30;\n      }" { (expression_statement "uVar30 = *puVar19;" (assignment_expression "uVar30 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "iVar16 = iVar11 + -1;" (assignment_expression "iVar16 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar13 + iVar18;" (assignment_expression "puVar17 = puVar13 + iVar18" identifier = (binary_expression "puVar13 + iVar18" identifier + identifier)) ;) (expression_statement "puVar6 = puVar17;" (assignment_expression "puVar6 = puVar17" identifier = identifier) ;) (if_statement "if (iVar16 != 0) {\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);\n          puVar17 = puVar17 + iVar11 + -1;\n        }" { (do_statement "do {\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          } while (iVar16 != 0);" do (compound_statement "{\n            puVar19 = puVar19 + 1;\n            *puVar6 = uVar30;\n            iVar16 = iVar16 + -1;\n            uVar30 = *puVar19;\n            puVar6 = puVar6 + 1;\n          }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar30;" (assignment_expression "*puVar6 = uVar30" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "iVar16 = iVar16 + -1;" (assignment_expression "iVar16 = iVar16 + -1" identifier = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar19;" (assignment_expression "uVar30 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) ;) (expression_statement "puVar17 = puVar17 + iVar11 + -1;" (assignment_expression "puVar17 = puVar17 + iVar11 + -1" identifier = (binary_expression "puVar17 + iVar11 + -1" (binary_expression "puVar17 + iVar11" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar17 = uVar30;" (assignment_expression "*puVar17 = uVar30" (pointer_expression "*puVar17" * identifier) = identifier) ;) })) })) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a30);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a30)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a30)" * (cast_expression "(code **)(pcVar25 + -0x7a30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a30)" ( (binary_expression "pcVar25 + -0x7a30" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (int *)(puVar3 + -0x3c);" (assignment_expression "unaff_s1 = (int *)(puVar3 + -0x3c)" identifier = (cast_expression "(int *)(puVar3 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3c)" ( (binary_expression "puVar3 + -0x3c" identifier + number_literal) )))) ;) (expression_statement "*(int *)(puVar28 + 0x18) = iVar7;" (assignment_expression "*(int *)(puVar28 + 0x18) = iVar7" (pointer_expression "*(int *)(puVar28 + 0x18)" * (cast_expression "(int *)(puVar28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x18)" ( (binary_expression "puVar28 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x14) = iVar21;" (assignment_expression "*(int *)(puVar28 + 0x14) = iVar21" (pointer_expression "*(int *)(puVar28 + 0x14)" * (cast_expression "(int *)(puVar28 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x14)" ( (binary_expression "puVar28 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x10) = iVar4;" (assignment_expression "*(int *)(puVar28 + 0x10) = iVar4" (pointer_expression "*(int *)(puVar28 + 0x10)" * (cast_expression "(int *)(puVar28 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s1,puVar10,0,puVar13);" (call_expression "(*pcVar23)(unaff_s1,puVar10,0,puVar13)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s1,puVar10,0,puVar13)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0));" (assignment_expression "piVar8 = (int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0))" identifier = (cast_expression "(int *)(4 - (uint)(*(int *)(puVar3 + -0x30) == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(4 - (uint)(*(int *)(puVar3 + -0x30) == 0))" ( (binary_expression "4 - (uint)(*(int *)(puVar3 + -0x30) == 0)" number_literal - (call_expression "(uint)(*(int *)(puVar3 + -0x30) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar3 + -0x30) == 0)" ( (binary_expression "*(int *)(puVar3 + -0x30) == 0" (pointer_expression "*(int *)(puVar3 + -0x30)" * (cast_expression "(int *)(puVar3 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) )))) == number_literal) )))) )))) ;) (expression_statement "uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12);" (assignment_expression "uVar31 = (**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12)" identifier = (call_expression "(**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar2,piVar12)" (parenthesized_expression "(**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48))" ( (pointer_expression "**(code **)(*(int *)(puVar3 + -0x50) + -0x7a48)" * (pointer_expression "*(code **)(*(int *)(puVar3 + -0x50) + -0x7a48)" * (cast_expression "(code **)(*(int *)(puVar3 + -0x50) + -0x7a48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar3 + -0x50) + -0x7a48)" ( (binary_expression "*(int *)(puVar3 + -0x50) + -0x7a48" (pointer_expression "*(int *)(puVar3 + -0x50)" * (cast_expression "(int *)(puVar3 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x50)" ( (binary_expression "puVar3 + -0x50" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,iVar2,piVar12)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "piVar14 = *(int **)(puVar3 + -0x40);" (assignment_expression "piVar14 = *(int **)(puVar3 + -0x40)" identifier = (pointer_expression "*(int **)(puVar3 + -0x40)" * (cast_expression "(int **)(puVar3 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x40)" ( (binary_expression "puVar3 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar3 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar3 + -0x50)" identifier = (pointer_expression "*(code **)(puVar3 + -0x50)" * (cast_expression "(code **)(puVar3 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x50)" ( (binary_expression "puVar3 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar3 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar3 + -0x50);\n    }" { (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a2c)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar3 + -0x48) = uVar31;" (assignment_expression "*(undefined8 *)(puVar3 + -0x48) = uVar31" (pointer_expression "*(undefined8 *)(puVar3 + -0x48)" * (cast_expression "(undefined8 *)(puVar3 + -0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x48)" ( (binary_expression "puVar3 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar3 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar3 + -0x50)" identifier = (pointer_expression "*(code **)(puVar3 + -0x50)" * (cast_expression "(code **)(puVar3 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x50)" ( (binary_expression "puVar3 + -0x50" identifier + number_literal) ))))) ;) })) })) (expression_statement "iVar2 = *piVar15;" (assignment_expression "iVar2 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(puVar3 + -0x2c) != iVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar2 = *piVar14;\n    *(int **)(puVar27 + -0x10) = piVar12;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar7;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar7 = piVar8[4];\n    if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }\n    piVar14[1] = iVar7;\n    if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }\n    return (int)puVar19;\n  }" if (parenthesized_expression "(*(int *)(puVar3 + -0x2c) != iVar2)" ( (binary_expression "*(int *)(puVar3 + -0x2c) != iVar2" (pointer_expression "*(int *)(puVar3 + -0x2c)" * (cast_expression "(int *)(puVar3 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x2c)" ( (binary_expression "puVar3 + -0x2c" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar2 = *piVar14;\n    *(int **)(puVar27 + -0x10) = piVar12;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar7;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar7 = piVar8[4];\n    if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }\n    piVar14[1] = iVar7;\n    if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }\n    return (int)puVar19;\n  }" { (expression_statement "uVar30 = 0x3831c;" (assignment_expression "uVar30 = 0x3831c" identifier = number_literal) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = *piVar14;" (assignment_expression "iVar2 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "*(int **)(puVar27 + -0x10) = piVar12;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar12" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;" (assignment_expression "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20" (pointer_expression "*(code **)(puVar27 + -0x18)" * (cast_expression "(code **)(puVar27 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar23 + 0x66d20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar27 + -8) = iVar7;" (assignment_expression "*(int *)(puVar27 + -8) = iVar7" (pointer_expression "*(int *)(puVar27 + -8)" * (cast_expression "(int *)(puVar27 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s1;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s1" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar30;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar30" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = piVar8[4];" (assignment_expression "iVar7 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 < iVar7) {\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }" if (parenthesized_expression "(iVar2 < iVar7)" ( (binary_expression "iVar2 < iVar7" identifier < identifier) )) (compound_statement "{\n      puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }" { (expression_statement "puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();" (assignment_expression "puVar19 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar23 + 0x5f29c))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f29c))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f29c)" * (pointer_expression "*(code **)(pcVar23 + 0x5f29c)" * (cast_expression "(code **)(pcVar23 + 0x5f29c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f29c)" ( (binary_expression "pcVar23 + 0x5f29c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) }) (else_clause "else {\n      puVar19 = (undefined4 *)piVar14[2];\n    }" else (compound_statement "{\n      puVar19 = (undefined4 *)piVar14[2];\n    }" { (expression_statement "puVar19 = (undefined4 *)piVar14[2];" (assignment_expression "puVar19 = (undefined4 *)piVar14[2]" identifier = (cast_expression "(undefined4 *)piVar14[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "piVar14[1] = iVar7;" (assignment_expression "piVar14[1] = iVar7" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 != 0) {\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar6 = (undefined4 *)piVar8[5];\n      iVar2 = iVar7 + -1;\n      uVar30 = *puVar6;\n      puVar13 = puVar19;\n      if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }\n      *puVar19 = uVar30;\n    }" { (expression_statement "puVar6 = (undefined4 *)piVar8[5];" (assignment_expression "puVar6 = (undefined4 *)piVar8[5]" identifier = (cast_expression "(undefined4 *)piVar8[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[5]" identifier [ number_literal ]))) ;) (expression_statement "iVar2 = iVar7 + -1;" (assignment_expression "iVar2 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar6;" (assignment_expression "uVar30 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar13 = puVar19;" (assignment_expression "puVar13 = puVar19" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);\n        puVar19 = puVar19 + iVar7 + -1;\n      }" { (do_statement "do {\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        } while (iVar2 != 0);" do (compound_statement "{\n          puVar6 = puVar6 + 1;\n          *puVar13 = uVar30;\n          iVar2 = iVar2 + -1;\n          uVar30 = *puVar6;\n          puVar13 = puVar13 + 1;\n        }" { (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar13 = uVar30;" (assignment_expression "*puVar13 = uVar30" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar6;" (assignment_expression "uVar30 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (expression_statement "puVar19 = puVar19 + iVar7 + -1;" (assignment_expression "puVar19 = puVar19 + iVar7 + -1" identifier = (binary_expression "puVar19 + iVar7 + -1" (binary_expression "puVar19 + iVar7" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar19 = uVar30;" (assignment_expression "*puVar19 = uVar30" (pointer_expression "*puVar19" * identifier) = identifier) ;) })) (return_statement "return (int)puVar19;" return (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}\n\n" (function_definition "undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" type_identifier (pointer_declarator "* __gmpq_cmp_si(int param_1,int *param_2,int *param_3)" * (function_declarator "__gmpq_cmp_si(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 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  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int *unaff_s1;" primitive_type (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *unaff_s6;" primitive_type (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined1 *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "code *pcVar23;" type_identifier (pointer_declarator "*pcVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined4 uVar30;" type_identifier identifier ;) (declaration "undefined8 uVar31;" type_identifier identifier ;) (declaration "undefined1 auStack_88 [16];" type_identifier (array_declarator "auStack_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_78 [2];" type_identifier (pointer_declarator "*apuStack_78 [2]" * (array_declarator "apuStack_78 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_70;" primitive_type identifier ;) (declaration "int *piStack_6c;" primitive_type (pointer_declarator "*piStack_6c" * identifier) ;) (declaration "undefined *puStack_64;" type_identifier (pointer_declarator "*puStack_64" * identifier) ;) (declaration "undefined1 auStack_24 [4];" type_identifier (array_declarator "auStack_24 [4]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 local_10;" type_identifier identifier ;) (declaration "int *local_c;" primitive_type (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" * (cast_expression "(int **)PTR___stack_chk_guard_00097540" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\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    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 4) < 0)" ( (binary_expression "*(int *)(param_1 + 4) < 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }" { (expression_statement "local_1c = *(undefined4 *)(param_1 + 8);" (assignment_expression "local_1c = *(undefined4 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "local_14 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "local_14 = *(undefined4 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "param_2 = (int *)-(int)param_2;" (assignment_expression "param_2 = (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)))) ;) (expression_statement "local_10 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "local_10 = *(undefined4 *)(param_1 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_20 = -*(int *)(param_1 + 4);" (assignment_expression "local_20 = -*(int *)(param_1 + 4)" identifier = (unary_expression "-*(int *)(param_1 + 4)" - (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);" (assignment_expression "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" identifier = (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_24)" ( identifier )))) ;) (expression_statement "puVar2 = (undefined4 *)-iVar3;" (assignment_expression "puVar2 = (undefined4 *)-iVar3" identifier = (cast_expression "(undefined4 *)-iVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-iVar3" - identifier))) ;) }) (else_clause "else {\n      puVar2 = (undefined4 *)0x1;\n    }" else (compound_statement "{\n      puVar2 = (undefined4 *)0x1;\n    }" { (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" else (compound_statement "{\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" { (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" ( (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" * (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) }))) (if_statement "if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }" if (parenthesized_expression "(local_c == *(int **)puVar1)" ( (binary_expression "local_c == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar2;\n  }" { (return_statement "return puVar2;" return identifier ;) })) (expression_statement "piVar13 = local_c;" (assignment_expression "piVar13 = local_c" identifier = identifier) ;) (expression_statement "puVar22 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar24 = puVar22 + 0x67550;" (assignment_expression "puVar24 = puVar22 + 0x67550" identifier = (binary_expression "puVar22 + 0x67550" identifier + number_literal)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (expression_statement "puVar26 = auStack_88;" (assignment_expression "puVar26 = auStack_88" identifier = identifier) ;) (expression_statement "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);" (assignment_expression "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + 0x5fa50)" * (cast_expression "(undefined4 **)(puVar22 + 0x5fa50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5fa50)" ( (binary_expression "puVar22 + 0x5fa50" identifier + number_literal) ))))) ;) (expression_statement "puStack_64 = puVar1;" (assignment_expression "puStack_64 = puVar1" identifier = identifier) ;) (expression_statement "piStack_6c = (int *)*puVar18;" (assignment_expression "piStack_6c = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puVar2 = (undefined4 *)piVar13[1];" (assignment_expression "puVar2 = (undefined4 *)piVar13[1]" identifier = (cast_expression "(undefined4 *)piVar13[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar23 = *(code **)(puVar22 + 0x5faec);" (assignment_expression "pcVar23 = *(code **)(puVar22 + 0x5faec)" identifier = (pointer_expression "*(code **)(puVar22 + 0x5faec)" * (cast_expression "(code **)(puVar22 + 0x5faec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5faec)" ( (binary_expression "puVar22 + 0x5faec" identifier + number_literal) ))))) ;) (expression_statement "apuStack_78[0] = puVar24;" (assignment_expression "apuStack_78[0] = puVar24" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }" { (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" identifier = identifier) ;) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" identifier = identifier) ;) (labeled_statement "LAB_00037c9c:\n    (*pcVar23)();" statement_identifier : (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;)) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" else (compound_statement "{\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" identifier = identifier) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\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      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }" { (if_statement "if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" if (parenthesized_expression "((int)puVar2 < 1)" ( (binary_expression "(int)puVar2 < 1" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }" { (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" else (compound_statement "{\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" { (expression_statement "unaff_s5 = (int *)piVar13[4];" (assignment_expression "unaff_s5 = (int *)piVar13[4]" identifier = (cast_expression "(int *)piVar13[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar8 = (int *)((int)unaff_s5 + 1);" (assignment_expression "piVar8 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s4 = piVar13;" (assignment_expression "unaff_s4 = piVar13" identifier = identifier) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) (if_statement "if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" if (parenthesized_expression "((int)puVar2 <= (int)piVar8)" ( (binary_expression "(int)puVar2 <= (int)piVar8" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" { (expression_statement "unaff_s1 = (int *)((int)puVar2 + 1);" (assignment_expression "unaff_s1 = (int *)((int)puVar2 + 1)" identifier = (cast_expression "(int *)((int)puVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 1)" ( (binary_expression "(int)puVar2 + 1" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" if (parenthesized_expression "((int)unaff_s1 < (int)unaff_s5)" ( (binary_expression "(int)unaff_s1 < (int)unaff_s5" (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }" { (expression_statement "puVar2 = (undefined4 *)-(int)puVar2;" (assignment_expression "puVar2 = (undefined4 *)-(int)puVar2" identifier = (cast_expression "(undefined4 *)-(int)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar2" - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar8 = (int *)((int)piVar8 + (int)unaff_s1);" (assignment_expression "piVar8 = (int *)((int)piVar8 + (int)unaff_s1)" identifier = (cast_expression "(int *)((int)piVar8 + (int)unaff_s1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" identifier = identifier) ;) }) (else_clause "else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" else (compound_statement "{\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" { (expression_statement "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;" (assignment_expression "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4" identifier = (binary_expression "((int)piVar8 + (int)unaff_s1) * 4" (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" ( (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (expression_statement "iStack_70 = 0;" (assignment_expression "iStack_70 = 0" identifier = number_literal) ;) (if_statement "if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }" { (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_88 + iVar3;" (assignment_expression "puVar26 = auStack_88 + iVar3" identifier = (binary_expression "auStack_88 + iVar3" identifier + identifier)) ;) (expression_statement "unaff_s2 = (int *)((int)apuStack_78 + iVar3);" (assignment_expression "unaff_s2 = (int *)((int)apuStack_78 + iVar3)" identifier = (cast_expression "(int *)((int)apuStack_78 + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_78 + iVar3)" ( (binary_expression "(int)apuStack_78 + iVar3" (cast_expression "(int)apuStack_78" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" else (compound_statement "{\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" { (expression_statement "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);" (assignment_expression "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" identifier = (cast_expression "(int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (parenthesized_expression "(**(code **)(puVar22 + 0x5f800))" ( (pointer_expression "**(code **)(puVar22 + 0x5f800)" * (pointer_expression "*(code **)(puVar22 + 0x5f800)" * (cast_expression "(code **)(puVar22 + 0x5f800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + 0x5f800)" ( (binary_expression "puVar22 + 0x5f800" identifier + number_literal) ))))) )) (argument_list "(&iStack_70)" ( (pointer_expression "&iStack_70" & identifier) ))))) ;) }))) (expression_statement "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);" (assignment_expression "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" identifier = (call_expression "(**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" (parenthesized_expression "(**(code **)(apuStack_78[0] + -0x7f9c))" ( (pointer_expression "**(code **)(apuStack_78[0] + -0x7f9c)" * (pointer_expression "*(code **)(apuStack_78[0] + -0x7f9c)" * (cast_expression "(code **)(apuStack_78[0] + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_78[0] + -0x7f9c)" ( (binary_expression "apuStack_78[0] + -0x7f9c" (subscript_expression "apuStack_78[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(unaff_s2,piVar13[2],puVar2,param_3)" ( identifier , (subscript_expression "piVar13[2]" identifier [ number_literal ]) , identifier , identifier )))) ;) (expression_statement "puVar1 = apuStack_78[0];" (assignment_expression "puVar1 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "unaff_s1 = unaff_s2 + (int)unaff_s1;" (assignment_expression "unaff_s1 = unaff_s2 + (int)unaff_s1" identifier = (binary_expression "unaff_s2 + (int)unaff_s1" identifier + (cast_expression "(int)unaff_s1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar8 = (int *)piVar13[5];" (assignment_expression "piVar8 = (int *)piVar13[5]" identifier = (cast_expression "(int *)piVar13[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[5]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s1[-1] = iVar3;" (assignment_expression "unaff_s1[-1] = iVar3" (subscript_expression "unaff_s1[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);" (assignment_expression "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2)" identifier = (cast_expression "(int *)((uint)(iVar3 != 0) + (int)puVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar3 != 0) + (int)puVar2)" ( (binary_expression "(uint)(iVar3 != 0) + (int)puVar2" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) + (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);" (assignment_expression "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" identifier = (call_expression "(**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" (parenthesized_expression "(**(code **)(puVar1 + -0x7f9c))" ( (pointer_expression "**(code **)(puVar1 + -0x7f9c)" * (pointer_expression "*(code **)(puVar1 + -0x7f9c)" * (cast_expression "(code **)(puVar1 + -0x7f9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x7f9c)" ( (binary_expression "puVar1 + -0x7f9c" identifier + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,unaff_s5,param_2)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" identifier = (subscript_expression "apuStack_78[0]" identifier [ number_literal ])) ;) (expression_statement "piVar13 = unaff_s1 + (int)unaff_s5;" (assignment_expression "piVar13 = unaff_s1 + (int)unaff_s5" identifier = (binary_expression "unaff_s1 + (int)unaff_s5" identifier + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);" (assignment_expression "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5)" identifier = (cast_expression "(int *)((uint)(iVar3 != 0) + (int)unaff_s5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(iVar3 != 0) + (int)unaff_s5)" ( (binary_expression "(uint)(iVar3 != 0) + (int)unaff_s5" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) ))) + (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*piVar13 = iVar3;" (assignment_expression "*piVar13 = iVar3" (pointer_expression "*piVar13" * identifier) = identifier) ;) (if_statement "if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" if (parenthesized_expression "(piVar12 == unaff_s5)" ( (binary_expression "piVar12 == unaff_s5" identifier == identifier) )) (compound_statement "{\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }" { (expression_statement "param_3 = (int *)0xffffffff;" (assignment_expression "param_3 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar14 = unaff_s2 + (int)piVar12;" (assignment_expression "piVar14 = unaff_s2 + (int)piVar12" identifier = (binary_expression "unaff_s2 + (int)piVar12" identifier + (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar13 = unaff_s1 + (int)piVar12;" (assignment_expression "piVar13 = unaff_s1 + (int)piVar12" identifier = (binary_expression "unaff_s1 + (int)piVar12" identifier + (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);" do (compound_statement "{\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              }" { (expression_statement "piVar12 = (int *)((int)piVar12 + -1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + -1)" identifier = (cast_expression "(int *)((int)piVar12 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + -1)" ( (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" identifier = (binary_expression "piVar13 + -1" identifier + number_literal)) ;) (if_statement "if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" if (parenthesized_expression "(piVar12 == (int *)0xffffffff)" ( (binary_expression "piVar12 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" { (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00037c04;" goto statement_identifier ;) })) (expression_statement "piVar20 = piVar14 + -1;" (assignment_expression "piVar20 = piVar14 + -1" identifier = (binary_expression "piVar14 + -1" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)*piVar13;" (assignment_expression "piVar8 = (int *)*piVar13" identifier = (cast_expression "(int *)*piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar13" * identifier))) ;) (expression_statement "piVar14 = piVar14 + -1;" (assignment_expression "piVar14 = piVar14 + -1" identifier = (binary_expression "piVar14 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)*piVar20 == piVar8)" ( (binary_expression "(int *)*piVar20 == piVar8" (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier)) == identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" identifier = (cast_expression "(undefined4 *)0xffffffff" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }" if (parenthesized_expression "(piVar8 < (int *)*piVar20)" ( (binary_expression "piVar8 < (int *)*piVar20" identifier < (cast_expression "(int *)*piVar20" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier))) )) (compound_statement "{\n                puVar2 = (undefined4 *)0x1;\n              }" { (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }) (else_clause "else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" else (compound_statement "{\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" { (expression_statement "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);" (assignment_expression "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5)" identifier = (cast_expression "(undefined4 *)((int)piVar12 - (int)unaff_s5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 - (int)unaff_s5)" ( (binary_expression "(int)piVar12 - (int)unaff_s5" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (labeled_statement "LAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);" statement_identifier : (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7a2c)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7a2c)" * (cast_expression "(code **)(puVar24 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7a2c)" ( (binary_expression "puVar24 + -0x7a2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar10 = puVar26;" (assignment_expression "puVar10 = puVar26" identifier = identifier) ;) (if_statement "if (iStack_70 != 0) goto LAB_00037c9c;" if (parenthesized_expression "(iStack_70 != 0)" ( (binary_expression "iStack_70 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00037c9c;" goto statement_identifier ;)) }))) })) }))) })) }))) (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar24 + -0x7b70)" * (cast_expression "(code **)(puVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + -0x7b70)" ( (binary_expression "puVar24 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }" if (parenthesized_expression "(piStack_6c == (int *)*puVar18)" ( (binary_expression "piStack_6c == (int *)*puVar18" identifier == (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) )) (compound_statement "{\n    return puVar2;\n  }" { (return_statement "return puVar2;" return identifier ;) })) (expression_statement "pcVar29 = __gmpq_div;" (assignment_expression "pcVar29 = __gmpq_div" identifier = identifier) ;) (expression_statement "piVar12 = piStack_6c;" (assignment_expression "piVar12 = piStack_6c" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x67350;" (assignment_expression "pcVar25 = pcVar23 + 0x67350" identifier = (binary_expression "pcVar23 + 0x67350" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar10 + -0x80;" (assignment_expression "puVar27 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar10 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar10 + -0x14)" * (cast_expression "(int **)(puVar10 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar10 + -0x28) = puVar2;" (assignment_expression "*(undefined4 **)(puVar10 + -0x28) = puVar2" (pointer_expression "*(undefined4 **)(puVar10 + -0x28)" * (cast_expression "(undefined4 **)(puVar10 + -0x28)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x28)" ( (binary_expression "puVar10 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = *(int **)(pcVar23 + 0x5f850);" (assignment_expression "piVar20 = *(int **)(pcVar23 + 0x5f850)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f850)" * (cast_expression "(int **)(pcVar23 + 0x5f850)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f850)" ( (binary_expression "pcVar23 + 0x5f850" identifier + number_literal) ))))) ;) (expression_statement "piVar13 = (int *)param_3[1];" (assignment_expression "piVar13 = (int *)param_3[1]" identifier = (cast_expression "(int *)param_3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar10 + -8) = auStack_88;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = auStack_88" (pointer_expression "*(undefined1 **)(puVar10 + -8)" * (cast_expression "(undefined1 **)(puVar10 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -8)" ( (binary_expression "puVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar10 + -4) = pcVar29" (pointer_expression "*(code **)(puVar10 + -4)" * (cast_expression "(code **)(puVar10 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar10 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar10 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar10 + -0xc)" * (cast_expression "(undefined1 **)(puVar10 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0xc)" ( (binary_expression "puVar10 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_2" (pointer_expression "*(int **)(puVar10 + -0x10)" * (cast_expression "(int **)(puVar10 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar10 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar10 + -0x18)" * (cast_expression "(int **)(puVar10 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x18)" ( (binary_expression "puVar10 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar10 + -0x1c) = puVar18;" (assignment_expression "*(undefined4 **)(puVar10 + -0x1c) = puVar18" (pointer_expression "*(undefined4 **)(puVar10 + -0x1c)" * (cast_expression "(undefined4 **)(puVar10 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x1c)" ( (binary_expression "puVar10 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar10 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar10 + -0x20)" * (cast_expression "(int **)(puVar10 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x20)" ( (binary_expression "puVar10 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar10 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar10 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar10 + -0x24)" * (cast_expression "(int **)(puVar10 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x24)" ( (binary_expression "puVar10 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar10 + -0x70) = pcVar25;" (assignment_expression "*(code **)(puVar10 + -0x70) = pcVar25" (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar10 + -0x2c) = *piVar20;" (assignment_expression "*(int *)(puVar10 + -0x2c) = *piVar20" (pointer_expression "*(int *)(puVar10 + -0x2c)" * (cast_expression "(int *)(puVar10 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "piVar14 = param_3;" (assignment_expression "piVar14 = param_3" identifier = identifier) ;) (if_statement "if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" if (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }" { (expression_statement "(**(code **)(pcVar23 + 0x5f8ec))();" (call_expression "(**(code **)(pcVar23 + 0x5f8ec))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f8ec))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f8ec)" * (pointer_expression "*(code **)(pcVar23 + 0x5f8ec)" * (cast_expression "(code **)(pcVar23 + 0x5f8ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f8ec)" ( (binary_expression "pcVar23 + 0x5f8ec" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" else (compound_statement "{\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" { (expression_statement "unaff_s2 = piVar12;" (assignment_expression "unaff_s2 = piVar12" identifier = identifier) ;) (expression_statement "unaff_s4 = piVar8;" (assignment_expression "unaff_s4 = piVar8" identifier = identifier) ;) (if_statement "if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" if (parenthesized_expression "(param_3 != piVar12)" ( (binary_expression "param_3 != piVar12" identifier != identifier) )) (compound_statement "{\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" { (expression_statement "piVar14 = (int *)piVar8[1];" (assignment_expression "piVar14 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" { (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)piVar12[5] = 1;" (assignment_expression "*(undefined4 *)piVar12[5] = 1" (pointer_expression "*(undefined4 *)piVar12[5]" * (cast_expression "(undefined4 *)piVar12[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[5]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "piVar12[4] = 1;" (assignment_expression "piVar12[4] = 1" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s1 = (int *)0x0;" (assignment_expression "unaff_s1 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) (if_statement "if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "piVar14 = (int *)-(int)piVar14;" (assignment_expression "piVar14 = (int *)-(int)piVar14" identifier = (cast_expression "(int *)-(int)piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar14" - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if (-1 < (int)piVar13) goto LAB_00037d70;" if (parenthesized_expression "(-1 < (int)piVar13)" ( (binary_expression "-1 < (int)piVar13" number_literal < (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00037d70;" goto statement_identifier ;)) (labeled_statement "LAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;" statement_identifier : (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" identifier = (cast_expression "(int *)-(int)piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)))) ;)) (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" identifier = identifier) ;) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" if (parenthesized_expression "((int)piVar14 <= (int)piVar13)" ( (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar6 = piVar14;\n        }" { (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" identifier = (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 < 0x7f01) goto LAB_00037d90;" if (parenthesized_expression "(uVar9 < 0x7f01)" ( (binary_expression "uVar9 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_00037d90;" goto statement_identifier ;)) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" statement_identifier : (expression_statement "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar10 + -0x60)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;)) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" else (compound_statement "{\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" { (if_statement "if ((int)piVar13 < 0) goto LAB_00037f98;" if (parenthesized_expression "((int)piVar13 < 0)" ( (binary_expression "(int)piVar13 < 0" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00037f98;" goto statement_identifier ;)) (labeled_statement "LAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" * (cast_expression "(undefined4 *)(puVar10 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" identifier = identifier) ;) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" if (parenthesized_expression "((int)piVar14 <= (int)piVar13)" ( (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          piVar6 = piVar14;\n        }" { (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" identifier = identifier) ;) })) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" identifier = (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" * (cast_expression "(int **)(puVar10 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x5c)" ( (binary_expression "puVar10 + -0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" if (parenthesized_expression "(0x7f00 < uVar9)" ( (binary_expression "0x7f00 < uVar9" number_literal < identifier) )) (compound_statement "{\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" { (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f600)" * (cast_expression "(code **)(pcVar23 + 0x5f600)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f600)" ( (binary_expression "pcVar23 + 0x5f600" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00037fec;" goto statement_identifier ;) })) (labeled_statement "LAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);" statement_identifier : (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar9 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" ( (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" identifier + number_literal) & number_literal) )))) ;)) (expression_statement "puVar27 = puVar10 + iVar3 + -0x80;" (assignment_expression "puVar27 = puVar10 + iVar3 + -0x80" identifier = (binary_expression "puVar10 + iVar3 + -0x80" (binary_expression "puVar10 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar4 = puVar10 + iVar3 + -0x70;" (assignment_expression "puVar4 = puVar10 + iVar3 + -0x70" identifier = (binary_expression "puVar10 + iVar3 + -0x70" (binary_expression "puVar10 + iVar3" identifier + identifier) + number_literal)) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x54) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x54) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x54)" * (cast_expression "(undefined1 **)(puVar10 + -0x54)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x54)" ( (binary_expression "puVar10 + -0x54" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }" if (parenthesized_expression "((int)piVar13 <= (int)piVar14)" ( (binary_expression "(int)piVar13 <= (int)piVar14" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar13 = piVar14;\n      }" { (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" identifier = identifier) ;) })) (expression_statement "*(int **)(puVar10 + -0x44) = piVar13;" (assignment_expression "*(int **)(puVar10 + -0x44) = piVar13" (pointer_expression "*(int **)(puVar10 + -0x44)" * (cast_expression "(int **)(puVar10 + -0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)((int)piVar13 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)piVar13 * 4) < 0x7f01" (call_expression "(uint)((int)piVar13 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar13 * 4)" ( (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" { (expression_statement "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)piVar13 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)piVar13 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar13 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 * 4 + 7U" (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" identifier = (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" identifier = (binary_expression "puVar27 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar15 = param_3[4];" (assignment_expression "iVar15 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x3c) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x3c) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x3c)" * (cast_expression "(undefined1 **)(puVar10 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x3c)" ( (binary_expression "puVar10 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = iVar3;" (assignment_expression "iVar19 = iVar3" identifier = identifier) ;) (if_statement "if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }" if (parenthesized_expression "(iVar15 <= iVar3)" ( (binary_expression "iVar15 <= iVar3" identifier <= identifier) )) (compound_statement "{\n        iVar19 = iVar15;\n      }" { (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x50) = iVar19;" (assignment_expression "*(int *)(puVar10 + -0x50) = iVar19" (pointer_expression "*(int *)(puVar10 + -0x50)" * (cast_expression "(int *)(puVar10 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar19 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar19 * 4) < 0x7f01" (call_expression "(uint)(iVar19 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar19 * 4)" ( (binary_expression "iVar19 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }" { (expression_statement "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar19 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar19 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar19 * 4 + 7U & 0xfffffff8" (binary_expression "iVar19 * 4 + 7U" (binary_expression "iVar19 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar19 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar19 + 0x10" identifier = (binary_expression "puVar27 + iVar19 + 0x10" (binary_expression "puVar27 + iVar19" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar19;" (assignment_expression "puVar27 = puVar27 + iVar19" identifier = (binary_expression "puVar27 + iVar19" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "*(undefined1 **)(puVar10 + -0x48) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x48) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x48)" * (cast_expression "(undefined1 **)(puVar10 + -0x48)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x48)" ( (binary_expression "puVar10 + -0x48" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }" if (parenthesized_expression "(iVar3 <= iVar15)" ( (binary_expression "iVar3 <= iVar15" identifier <= identifier) )) (compound_statement "{\n        iVar3 = iVar15;\n      }" { (expression_statement "iVar3 = iVar15;" (assignment_expression "iVar3 = iVar15" identifier = identifier) ;) })) (expression_statement "*(int *)(puVar10 + -0x38) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x38) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x38)" * (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "((uint)(iVar3 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar3 * 4) < 0x7f01" (call_expression "(uint)(iVar3 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 * 4)" ( (binary_expression "iVar3 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" { (expression_statement "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar3 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar3 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar3 * 4 + 7U & 0xfffffff8" (binary_expression "iVar3 * 4 + 7U" (binary_expression "iVar3 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" identifier = (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" identifier = (binary_expression "puVar27 + iVar3" identifier + identifier)) ;) }) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" else (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" identifier = (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" ( (pointer_expression "**(code **)(pcVar25 + -0x7d50)" * (pointer_expression "*(code **)(pcVar25 + -0x7d50)" * (cast_expression "(code **)(pcVar25 + -0x7d50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7d50)" ( (binary_expression "pcVar25 + -0x7d50" identifier + number_literal) ))))) )) (argument_list "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7e44);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7e44)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7e44)" * (cast_expression "(code **)(pcVar25 + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7e44)" ( (binary_expression "pcVar25 + -0x7e44" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = puVar10 + -0x5c;" (assignment_expression "unaff_s7 = puVar10 + -0x5c" identifier = (binary_expression "puVar10 + -0x5c" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar10 + -0x30) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x30) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x30)" * (cast_expression "(undefined1 **)(puVar10 + -0x30)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x30)" ( (binary_expression "puVar10 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s7,piVar8,param_3);" (call_expression "(*pcVar23)(unaff_s7,piVar8,param_3)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s7,piVar8,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "param_2 = (int *)(puVar10 + -0x50);" (assignment_expression "param_2 = (int *)(puVar10 + -0x50)" identifier = (cast_expression "(int *)(puVar10 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x50)" ( (binary_expression "puVar10 + -0x50" identifier + number_literal) )))) ;) (expression_statement "*(int **)(puVar10 + -100) = piVar8 + 3;" (assignment_expression "*(int **)(puVar10 + -100) = piVar8 + 3" (pointer_expression "*(int **)(puVar10 + -100)" * (cast_expression "(int **)(puVar10 + -100)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) = (binary_expression "piVar8 + 3" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)(puVar10 + -0x44);" (assignment_expression "piVar13 = (int *)(puVar10 + -0x44)" identifier = (cast_expression "(int *)(puVar10 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x44)" ( (binary_expression "puVar10 + -0x44" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7e44)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7e44" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_2,param_3 + 3,piVar8 + 3)" ( identifier , (binary_expression "param_3 + 3" identifier + number_literal) , (binary_expression "piVar8 + 3" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar13,piVar8,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "unaff_s1 = (int *)(puVar10 + -0x38);" (assignment_expression "unaff_s1 = (int *)(puVar10 + -0x38)" identifier = (cast_expression "(int *)(puVar10 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x38)" ( (binary_expression "puVar10 + -0x38" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,param_3 + 3,param_2)" ( identifier , (binary_expression "param_3 + 3" identifier + number_literal) , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12,piVar13,unaff_s1)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar13,param_3,unaff_s7)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" ( identifier , (pointer_expression "*(undefined4 *)(puVar10 + -100)" * (cast_expression "(undefined4 *)(puVar10 + -100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -100)" ( (binary_expression "puVar10 + -100" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "piVar8 = piVar13;" (assignment_expression "piVar8 = piVar13" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" ( (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" * (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" ( (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" * (cast_expression "(int *)(puVar10 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(piVar12 + 3,piVar13,unaff_s1)" ( (binary_expression "piVar12 + 3" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (if_statement "if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" if (parenthesized_expression "(piVar12[4] < 0)" ( (binary_expression "piVar12[4] < 0" (subscript_expression "piVar12[4]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" { (expression_statement "piVar12[4] = -piVar12[4];" (assignment_expression "piVar12[4] = -piVar12[4]" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = (unary_expression "-piVar12[4]" - (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar12[1] = -piVar12[1];" (assignment_expression "piVar12[1] = -piVar12[1]" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (unary_expression "-piVar12[1]" - (subscript_expression "piVar12[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar12 = *(int **)(puVar10 + -0x60);" (assignment_expression "piVar12 = *(int **)(puVar10 + -0x60)" identifier = (pointer_expression "*(int **)(puVar10 + -0x60)" * (cast_expression "(int **)(puVar10 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x60)" ( (binary_expression "puVar10 + -0x60" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar27;" (assignment_expression "puVar4 = puVar27" identifier = identifier) ;) (if_statement "if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" { (expression_statement "(**(code **)(pcVar25 + -0x7a2c))();" (call_expression "(**(code **)(pcVar25 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar25 + -0x7a2c))" ( (pointer_expression "**(code **)(pcVar25 + -0x7a2c)" * (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) })) (goto_statement "goto LAB_00037f54;" goto statement_identifier ;) })) }))) (expression_statement "puVar18 = (undefined4 *)piVar14[5];" (assignment_expression "puVar18 = (undefined4 *)piVar14[5]" identifier = (cast_expression "(undefined4 *)piVar14[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined4 *)piVar14[2];" (assignment_expression "puVar2 = (undefined4 *)piVar14[2]" identifier = (cast_expression "(undefined4 *)piVar14[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[2]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" if (parenthesized_expression "(piVar14 == piVar8)" ( (binary_expression "piVar14 == piVar8" identifier == identifier) )) (compound_statement "{\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }" { (expression_statement "piVar12 = (int *)0x1;" (assignment_expression "piVar12 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "piVar14[1] = 1;" (assignment_expression "piVar14[1] = 1" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar18 = 1;" (assignment_expression "*puVar18 = 1" (pointer_expression "*puVar18" * identifier) = number_literal) ;) (expression_statement "piVar14[4] = 1;" (assignment_expression "piVar14[4] = 1" (subscript_expression "piVar14[4]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" else (compound_statement "{\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" { (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "iVar15 = piVar12[3];" (assignment_expression "iVar15 = piVar12[3]" identifier = (subscript_expression "piVar12[3]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" identifier = (subscript_expression "piVar12[4]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2[2] = (int)puVar18;" (assignment_expression "unaff_s2[2] = (int)puVar18" (subscript_expression "unaff_s2[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "unaff_s2[5] = (int)puVar2;" (assignment_expression "unaff_s2[5] = (int)puVar2" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*unaff_s2 = iVar15;" (assignment_expression "*unaff_s2 = iVar15" (pointer_expression "*unaff_s2" * identifier) = identifier) ;) (expression_statement "unaff_s2[3] = iVar19;" (assignment_expression "unaff_s2[3] = iVar19" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" if (parenthesized_expression "((int)piVar13 < 1)" ( (binary_expression "(int)piVar13 < 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" identifier = (cast_expression "(int *)-(int)piVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f4e8);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f4e8)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f4e8)" * (cast_expression "(code **)(pcVar23 + 0x5f4e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f4e8)" ( (binary_expression "pcVar23 + 0x5f4e8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s2[1] = iVar3;" (assignment_expression "unaff_s2[1] = iVar3" (subscript_expression "unaff_s2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s2[4] = (int)piVar13;" (assignment_expression "unaff_s2[4] = (int)piVar13" (subscript_expression "unaff_s2[4]" identifier [ number_literal ]) = (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" identifier = identifier) ;) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" identifier = identifier) ;) (expression_statement "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4);" (call_expression "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s2,unaff_s2,unaff_s4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" identifier = (pointer_expression "*(code **)(puVar10 + -0x70)" * (cast_expression "(code **)(puVar10 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x70)" ( (binary_expression "puVar10 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" identifier = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" statement_identifier : (if_statement "if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20)" ( (binary_expression "*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20" (pointer_expression "*(undefined4 **)(puVar10 + -0x2c)" * (cast_expression "(undefined4 **)(puVar10 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x2c)" ( (binary_expression "puVar10 + -0x2c" identifier + number_literal) )))) == (cast_expression "(undefined4 *)*piVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier))) )) (compound_statement "{\n    return (undefined4 *)*piVar20;\n  }" { (return_statement "return (undefined4 *)*piVar20;" return (cast_expression "(undefined4 *)*piVar20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar20" * identifier)) ;) }))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar29 = __gmpq_get_d;" (assignment_expression "pcVar29 = __gmpq_get_d" identifier = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = pcVar23 + 0x66f70;" (assignment_expression "pcVar25 = pcVar23 + 0x66f70" identifier = (binary_expression "pcVar23 + 0x66f70" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar4 + -0x70;" (assignment_expression "puVar27 = puVar4 + -0x70" identifier = (binary_expression "puVar4 + -0x70" identifier + number_literal)) ;) (expression_statement "puVar28 = puVar4 + -0x70;" (assignment_expression "puVar28 = puVar4 + -0x70" identifier = (binary_expression "puVar4 + -0x70" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar4 + -0x14) = piVar20;" (assignment_expression "*(int **)(puVar4 + -0x14) = piVar20" (pointer_expression "*(int **)(puVar4 + -0x14)" * (cast_expression "(int **)(puVar4 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar4 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar4 + -0x18)" * (cast_expression "(int **)(puVar4 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar14 = *(int **)(pcVar23 + 0x5f470);" (assignment_expression "piVar14 = *(int **)(pcVar23 + 0x5f470)" identifier = (pointer_expression "*(int **)(pcVar23 + 0x5f470)" * (cast_expression "(int **)(pcVar23 + 0x5f470)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f470)" ( (binary_expression "pcVar23 + 0x5f470" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = piVar12[1];" (assignment_expression "iVar19 = piVar12[1]" identifier = (subscript_expression "piVar12[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;" (assignment_expression "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80" (pointer_expression "*(undefined1 **)(puVar4 + -8)" * (cast_expression "(undefined1 **)(puVar4 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = (binary_expression "puVar10 + -0x80" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar4 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar4 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar4 + -0x20)" * (cast_expression "(int **)(puVar4 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x20)" ( (binary_expression "puVar4 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar4 + -4) = pcVar29" (pointer_expression "*(code **)(puVar4 + -4)" * (cast_expression "(code **)(puVar4 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -4)" ( (binary_expression "puVar4 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar4 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar4 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar4 + -0xc)" * (cast_expression "(undefined1 **)(puVar4 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar4 + -0x10) = param_2" (pointer_expression "*(int **)(puVar4 + -0x10)" * (cast_expression "(int **)(puVar4 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar4 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar4 + -0x1c)" * (cast_expression "(int **)(puVar4 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1c)" ( (binary_expression "puVar4 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar4 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar4 + -0x24)" * (cast_expression "(int **)(puVar4 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x24)" ( (binary_expression "puVar4 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar4 + -0x28) = piVar13;" (assignment_expression "*(int **)(puVar4 + -0x28) = piVar13" (pointer_expression "*(int **)(puVar4 + -0x28)" * (cast_expression "(int **)(puVar4 + -0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x28)" ( (binary_expression "puVar4 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -0x50) = pcVar25;" (assignment_expression "*(code **)(puVar4 + -0x50) = pcVar25" (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" identifier = (subscript_expression "piVar12[4]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(puVar4 + -0x2c) = *piVar14;" (assignment_expression "*(int *)(puVar4 + -0x2c) = *piVar14" (pointer_expression "*(int *)(puVar4 + -0x2c)" * (cast_expression "(int *)(puVar4 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" { (expression_statement "*(undefined4 *)(puVar4 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x40)" * (cast_expression "(undefined4 *)(puVar4 + -0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" identifier = identifier) ;) (if_statement "if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar15 = -iVar19;\n    }" { (expression_statement "iVar15 = -iVar19;" (assignment_expression "iVar15 = -iVar19" identifier = (unary_expression "-iVar19" - identifier)) ;) })) (if_statement "if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar3 = -iVar3;\n    }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" identifier = (cast_expression "(undefined4 *)piVar12[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar21 = piVar12[5];" (assignment_expression "iVar21 = piVar12[5]" identifier = (subscript_expression "piVar12[5]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = 3 - (iVar15 - iVar3);" (assignment_expression "iVar5 = 3 - (iVar15 - iVar3)" identifier = (binary_expression "3 - (iVar15 - iVar3)" number_literal - (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )))) ;) (expression_statement "piVar13 = (int *)(iVar5 * -0x20);" (assignment_expression "piVar13 = (int *)(iVar5 * -0x20)" identifier = (cast_expression "(int *)(iVar5 * -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 * -0x20)" ( (binary_expression "iVar5 * -0x20" identifier * number_literal) )))) ;) (expression_statement "iVar11 = iVar15;" (assignment_expression "iVar11 = iVar15" identifier = identifier) ;) (expression_statement "iVar17 = iVar5;" (assignment_expression "iVar17 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" { (expression_statement "iVar17 = (iVar15 - iVar3) + -3;" (assignment_expression "iVar17 = (iVar15 - iVar3) + -3" identifier = (binary_expression "(iVar15 - iVar3) + -3" (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )) + number_literal)) ;) (expression_statement "puVar2 = puVar2 + iVar17;" (assignment_expression "puVar2 = puVar2 + iVar17" identifier = (binary_expression "puVar2 + iVar17" identifier + identifier)) ;) (expression_statement "iVar11 = iVar15 - iVar17;" (assignment_expression "iVar11 = iVar15 - iVar17" identifier = (binary_expression "iVar15 - iVar17" identifier - identifier)) ;) (expression_statement "iVar17 = iVar5 + iVar17;" (assignment_expression "iVar17 = iVar5 + iVar17" identifier = (binary_expression "iVar5 + iVar17" identifier + identifier)) ;) })) (expression_statement "iVar15 = iVar15 + iVar5;" (assignment_expression "iVar15 = iVar15 + iVar5" identifier = (binary_expression "iVar15 + iVar5" identifier + identifier)) ;) (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      iVar5 = iVar3 + iVar15;\n    }" { (expression_statement "iVar5 = iVar3 + iVar15;" (assignment_expression "iVar5 = iVar3 + iVar15" identifier = (binary_expression "iVar3 + iVar15" identifier + identifier)) ;) })) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f220);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f220)" identifier = (pointer_expression "*(code **)(pcVar23 + 0x5f220)" * (cast_expression "(code **)(pcVar23 + 0x5f220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f220)" ( (binary_expression "pcVar23 + 0x5f220" identifier + number_literal) ))))) ;) (if_statement "if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" if (parenthesized_expression "((uint)(iVar5 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar5 * 4) < 0x7f01" (call_expression "(uint)(iVar5 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 * 4)" ( (binary_expression "iVar5 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }" { (expression_statement "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar5 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar5 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar5 * 4 + 7U & 0xfffffff8" (binary_expression "iVar5 * 4 + 7U" (binary_expression "iVar5 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = puVar4 + iVar5 + -0x70;" (assignment_expression "puVar28 = puVar4 + iVar5 + -0x70" identifier = (binary_expression "puVar4 + iVar5 + -0x70" (binary_expression "puVar4 + iVar5" identifier + identifier) + number_literal)) ;) (expression_statement "puVar10 = puVar4 + iVar5 + -0x50;" (assignment_expression "puVar10 = puVar4 + iVar5 + -0x50" identifier = (binary_expression "puVar4 + iVar5 + -0x50" (binary_expression "puVar4 + iVar5" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" else (compound_statement "{\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" { (expression_statement "*(int *)(puVar4 + -0x48) = iVar11;" (assignment_expression "*(int *)(puVar4 + -0x48) = iVar11" (pointer_expression "*(int *)(puVar4 + -0x48)" * (cast_expression "(int *)(puVar4 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);" (assignment_expression "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40)" identifier = (cast_expression "(undefined1 *)(*pcVar23)(puVar4 + -0x40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar23)(puVar4 + -0x40)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar4 + -0x48);" (assignment_expression "iVar11 = *(int *)(puVar4 + -0x48)" identifier = (pointer_expression "*(int *)(puVar4 + -0x48)" * (cast_expression "(int *)(puVar4 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" identifier = identifier) ;) (expression_statement "iVar5 = iVar11;" (assignment_expression "iVar5 = iVar11" identifier = identifier) ;) (if_statement "if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" { (expression_statement "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);" (assignment_expression "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4)" identifier = (cast_expression "(undefined4 *)(puVar10 + iVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar3 * 4)" ( (binary_expression "puVar10 + iVar3 * 4" identifier + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar7 = puVar18;" (assignment_expression "puVar7 = puVar18" identifier = identifier) ;) (expression_statement "iVar5 = iVar17;" (assignment_expression "iVar5 = iVar17" identifier = identifier) ;) (do_statement "do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "iVar5 = iVar15;" (assignment_expression "iVar5 = iVar15" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" { (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar15 = iVar11 + -1;" (assignment_expression "iVar15 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar18 + iVar17;" (assignment_expression "puVar16 = puVar18 + iVar17" identifier = (binary_expression "puVar18 + iVar17" identifier + identifier)) ;) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" { (do_statement "do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);" do (compound_statement "{\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar30;" (assignment_expression "*puVar7 = uVar30" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) ;) (expression_statement "puVar16 = puVar16 + iVar11 + -1;" (assignment_expression "puVar16 = puVar16 + iVar11 + -1" identifier = (binary_expression "puVar16 + iVar11 + -1" (binary_expression "puVar16 + iVar11" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar16 = uVar30;" (assignment_expression "*puVar16 = uVar30" (pointer_expression "*puVar16" * identifier) = identifier) ;) })) })) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a30);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a30)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a30)" * (cast_expression "(code **)(pcVar25 + -0x7a30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a30)" ( (binary_expression "pcVar25 + -0x7a30" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (int *)(puVar4 + -0x3c);" (assignment_expression "unaff_s1 = (int *)(puVar4 + -0x3c)" identifier = (cast_expression "(int *)(puVar4 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3c)" ( (binary_expression "puVar4 + -0x3c" identifier + number_literal) )))) ;) (expression_statement "*(int *)(puVar28 + 0x18) = iVar3;" (assignment_expression "*(int *)(puVar28 + 0x18) = iVar3" (pointer_expression "*(int *)(puVar28 + 0x18)" * (cast_expression "(int *)(puVar28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x18)" ( (binary_expression "puVar28 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x14) = iVar21;" (assignment_expression "*(int *)(puVar28 + 0x14) = iVar21" (pointer_expression "*(int *)(puVar28 + 0x14)" * (cast_expression "(int *)(puVar28 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x14)" ( (binary_expression "puVar28 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar28 + 0x10) = iVar5;" (assignment_expression "*(int *)(puVar28 + 0x10) = iVar5" (pointer_expression "*(int *)(puVar28 + 0x10)" * (cast_expression "(int *)(puVar28 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)(unaff_s1,puVar10,0,puVar18);" (call_expression "(*pcVar23)(unaff_s1,puVar10,0,puVar18)" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "(unaff_s1,puVar10,0,puVar18)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));" (assignment_expression "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" identifier = (cast_expression "(int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" ( (binary_expression "4 - (uint)(*(int *)(puVar4 + -0x30) == 0)" number_literal - (call_expression "(uint)(*(int *)(puVar4 + -0x30) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar4 + -0x30) == 0)" ( (binary_expression "*(int *)(puVar4 + -0x30) == 0" (pointer_expression "*(int *)(puVar4 + -0x30)" * (cast_expression "(int *)(puVar4 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x30)" ( (binary_expression "puVar4 + -0x30" identifier + number_literal) )))) == number_literal) )))) )))) ;) (expression_statement "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);" (assignment_expression "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" identifier = (call_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))" ( (pointer_expression "**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" * (pointer_expression "*(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" * (cast_expression "(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar4 + -0x50) + -0x7a48)" ( (binary_expression "*(int *)(puVar4 + -0x50) + -0x7a48" (pointer_expression "*(int *)(puVar4 + -0x50)" * (cast_expression "(int *)(puVar4 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(unaff_s1,piVar8,iVar19,piVar13)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "piVar12 = *(int **)(puVar4 + -0x40);" (assignment_expression "piVar12 = *(int **)(puVar4 + -0x40)" identifier = (pointer_expression "*(int **)(puVar4 + -0x40)" * (cast_expression "(int **)(puVar4 + -0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x40)" ( (binary_expression "puVar4 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" identifier = identifier) ;) (if_statement "if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" { (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a2c)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" * (cast_expression "(code **)(pcVar25 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7a2c)" ( (binary_expression "pcVar25 + -0x7a2c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar4 + -0x48) = uVar31;" (assignment_expression "*(undefined8 *)(puVar4 + -0x48) = uVar31" (pointer_expression "*(undefined8 *)(puVar4 + -0x48)" * (cast_expression "(undefined8 *)(puVar4 + -0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x48)" ( (binary_expression "puVar4 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" identifier = (pointer_expression "*(code **)(puVar4 + -0x50)" * (cast_expression "(code **)(puVar4 + -0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x50)" ( (binary_expression "puVar4 + -0x50" identifier + number_literal) ))))) ;) })) })) (expression_statement "puVar2 = (undefined4 *)*piVar14;" (assignment_expression "puVar2 = (undefined4 *)*piVar14" identifier = (cast_expression "(undefined4 *)*piVar14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar25 + -0x7b70)" * (cast_expression "(code **)(pcVar25 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + -0x7b70)" ( (binary_expression "pcVar25 + -0x7b70" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar4 + -0x2c) != puVar2)" ( (binary_expression "*(undefined4 **)(puVar4 + -0x2c) != puVar2" (pointer_expression "*(undefined4 **)(puVar4 + -0x2c)" * (cast_expression "(undefined4 **)(puVar4 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" { (expression_statement "uVar30 = 0x3831c;" (assignment_expression "uVar30 = 0x3831c" identifier = number_literal) ;) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" ( (pointer_expression "*pcVar23" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "*(int **)(puVar27 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;" (assignment_expression "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20" (pointer_expression "*(code **)(puVar27 + -0x18)" * (cast_expression "(code **)(puVar27 + -0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = (binary_expression "pcVar23 + 0x66d20" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar27 + -8) = iVar3;" (assignment_expression "*(int *)(puVar27 + -8) = iVar3" (pointer_expression "*(int *)(puVar27 + -8)" * (cast_expression "(int *)(puVar27 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s1;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s1" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar30;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar30" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" identifier = (subscript_expression "piVar8[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" if (parenthesized_expression "(iVar19 < iVar3)" ( (binary_expression "iVar19 < iVar3" identifier < identifier) )) (compound_statement "{\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }" { (expression_statement "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();" (assignment_expression "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar23 + 0x5f29c))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f29c))" ( (pointer_expression "**(code **)(pcVar23 + 0x5f29c)" * (pointer_expression "*(code **)(pcVar23 + 0x5f29c)" * (cast_expression "(code **)(pcVar23 + 0x5f29c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar23 + 0x5f29c)" ( (binary_expression "pcVar23 + 0x5f29c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) }) (else_clause "else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" else (compound_statement "{\n      puVar2 = (undefined4 *)piVar12[2];\n    }" { (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" identifier = (cast_expression "(undefined4 *)piVar12[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) }))) (expression_statement "piVar12[1] = iVar3;" (assignment_expression "piVar12[1] = iVar3" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" { (expression_statement "puVar7 = (undefined4 *)piVar8[5];" (assignment_expression "puVar7 = (undefined4 *)piVar8[5]" identifier = (cast_expression "(undefined4 *)piVar8[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[5]" identifier [ number_literal ]))) ;) (expression_statement "iVar19 = iVar3 + -1;" (assignment_expression "iVar19 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" { (do_statement "do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);" do (compound_statement "{\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        }" { (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar30;" (assignment_expression "*puVar18 = uVar30" (pointer_expression "*puVar18" * identifier) = identifier) ;) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "puVar2 = puVar2 + iVar3 + -1;" (assignment_expression "puVar2 = puVar2 + iVar3 + -1" identifier = (binary_expression "puVar2 + iVar3 + -1" (binary_expression "puVar2 + iVar3" identifier + identifier) + number_literal)) ;) })) (expression_statement "*puVar2 = uVar30;" (assignment_expression "*puVar2 = uVar30" (pointer_expression "*puVar2" * identifier) = identifier) ;) })) (return_statement "return puVar2;" return identifier ;) })) (return_statement "return puVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (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 = (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 *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) 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 = (unary_expression - (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return 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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & 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 (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (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 ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) (labeled_statement statement_identifier : (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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) })) }))) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + 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) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (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 (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 (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 <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (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 (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (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 ( IDENT , (binary_expression IDENT + LIT) , (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 ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 ( IDENT , (binary_expression IDENT + LIT) , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (unary_expression - (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = 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 (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (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 (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) 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) ;) })) })) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression LIT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (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 ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 *)) ) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) 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) ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 * __gmpq_cmp_si(int param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" (type_identifier "undefined4") (pointer_declarator "* __gmpq_cmp_si(int param_1,int *param_2,int *param_3)" (* "*") (function_declarator "__gmpq_cmp_si(int param_1,int *param_2,int *param_3)" (identifier "__gmpq_cmp_si") (parameter_list "(int param_1,int *param_2,int *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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  undefined *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  int iVar5;\n  int *piVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  int *piVar12;\n  int *piVar13;\n  int *unaff_s1;\n  int *piVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  int *unaff_s2;\n  undefined4 *puVar18;\n  int *unaff_s4;\n  int iVar19;\n  int *unaff_s5;\n  int *piVar20;\n  int *unaff_s6;\n  int iVar21;\n  undefined1 *unaff_s7;\n  undefined *puVar22;\n  code *pcVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined1 *puVar28;\n  code *pcVar29;\n  undefined4 uVar30;\n  undefined8 uVar31;\n  undefined1 auStack_88 [16];\n  undefined *apuStack_78 [2];\n  int iStack_70;\n  int *piStack_6c;\n  undefined *puStack_64;\n  undefined1 auStack_24 [4];\n  int local_20;\n  undefined4 local_1c;\n  undefined4 local_14;\n  undefined4 local_10;\n  int *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  local_c = *(int **)PTR___stack_chk_guard_00097540;\n  if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }\n  if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }\n  piVar13 = local_c;\n  puVar22 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar24 = puVar22 + 0x67550;\n  puVar10 = auStack_88;\n  puVar26 = auStack_88;\n  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);\n  puStack_64 = puVar1;\n  piStack_6c = (int *)*puVar18;\n  puVar2 = (undefined4 *)piVar13[1];\n  pcVar23 = *(code **)(puVar22 + 0x5faec);\n  apuStack_78[0] = puVar24;\n  if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }\n  pcVar23 = *(code **)(puVar24 + -0x7b70);\n  if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }\n  pcVar29 = __gmpq_div;\n  piVar12 = piStack_6c;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x67350;\n  puVar27 = puVar10 + -0x80;\n  puVar4 = puVar10 + -0x80;\n  *(int **)(puVar10 + -0x14) = unaff_s5;\n  *(undefined4 **)(puVar10 + -0x28) = puVar2;\n  piVar20 = *(int **)(pcVar23 + 0x5f850);\n  piVar13 = (int *)param_3[1];\n  *(undefined1 **)(puVar10 + -8) = auStack_88;\n  *(code **)(puVar10 + -4) = pcVar29;\n  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;\n  *(int **)(puVar10 + -0x10) = param_2;\n  *(int **)(puVar10 + -0x18) = unaff_s4;\n  *(undefined4 **)(puVar10 + -0x1c) = puVar18;\n  *(int **)(puVar10 + -0x20) = unaff_s2;\n  *(int **)(puVar10 + -0x24) = unaff_s1;\n  *(code **)(puVar10 + -0x70) = pcVar25;\n  *(int *)(puVar10 + -0x2c) = *piVar20;\n  piVar14 = param_3;\n  if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }\n  puVar18 = (undefined4 *)piVar14[5];\n  puVar2 = (undefined4 *)piVar14[2];\n  if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }\nLAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  pcVar29 = __gmpq_get_d;\n  (*pcVar23)();\n  pcVar25 = pcVar23 + 0x66f70;\n  puVar27 = puVar4 + -0x70;\n  puVar28 = puVar4 + -0x70;\n  *(int **)(puVar4 + -0x14) = piVar20;\n  *(int **)(puVar4 + -0x18) = unaff_s4;\n  piVar14 = *(int **)(pcVar23 + 0x5f470);\n  iVar19 = piVar12[1];\n  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;\n  *(int **)(puVar4 + -0x20) = unaff_s2;\n  *(code **)(puVar4 + -4) = pcVar29;\n  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;\n  *(int **)(puVar4 + -0x10) = param_2;\n  *(int **)(puVar4 + -0x1c) = param_3;\n  *(int **)(puVar4 + -0x24) = unaff_s1;\n  *(int **)(puVar4 + -0x28) = piVar13;\n  *(code **)(puVar4 + -0x50) = pcVar25;\n  iVar3 = piVar12[4];\n  *(int *)(puVar4 + -0x2c) = *piVar14;\n  if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }\n  puVar2 = (undefined4 *)*piVar14;\n  pcVar23 = *(code **)(pcVar25 + -0x7b70);\n  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }\n  return puVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int *unaff_s1;" (primitive_type "int") (pointer_declarator "*unaff_s1" (* "*") (identifier "unaff_s1")) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int *unaff_s2;" (primitive_type "int") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "undefined4 *puVar18;" (type_identifier "undefined4") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "int *unaff_s4;" (primitive_type "int") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int *unaff_s5;" (primitive_type "int") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "int *unaff_s6;" (primitive_type "int") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "undefined1 *unaff_s7;" (type_identifier "undefined1") (pointer_declarator "*unaff_s7" (* "*") (identifier "unaff_s7")) (; ";")) (declaration "undefined *puVar22;" (type_identifier "undefined") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "code *pcVar23;" (type_identifier "code") (pointer_declarator "*pcVar23" (* "*") (identifier "pcVar23")) (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "code *pcVar25;" (type_identifier "code") (pointer_declarator "*pcVar25" (* "*") (identifier "pcVar25")) (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "undefined1 *puVar27;" (type_identifier "undefined1") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "undefined1 *puVar28;" (type_identifier "undefined1") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "code *pcVar29;" (type_identifier "code") (pointer_declarator "*pcVar29" (* "*") (identifier "pcVar29")) (; ";")) (declaration "undefined4 uVar30;" (type_identifier "undefined4") (identifier "uVar30") (; ";")) (declaration "undefined8 uVar31;" (type_identifier "undefined8") (identifier "uVar31") (; ";")) (declaration "undefined1 auStack_88 [16];" (type_identifier "undefined1") (array_declarator "auStack_88 [16]" (identifier "auStack_88") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined *apuStack_78 [2];" (type_identifier "undefined") (pointer_declarator "*apuStack_78 [2]" (* "*") (array_declarator "apuStack_78 [2]" (identifier "apuStack_78") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "int iStack_70;" (primitive_type "int") (identifier "iStack_70") (; ";")) (declaration "int *piStack_6c;" (primitive_type "int") (pointer_declarator "*piStack_6c" (* "*") (identifier "piStack_6c")) (; ";")) (declaration "undefined *puStack_64;" (type_identifier "undefined") (pointer_declarator "*puStack_64" (* "*") (identifier "puStack_64")) (; ";")) (declaration "undefined1 auStack_24 [4];" (type_identifier "undefined1") (array_declarator "auStack_24 [4]" (identifier "auStack_24") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "undefined4 local_14;" (type_identifier "undefined4") (identifier "local_14") (; ";")) (declaration "undefined4 local_10;" (type_identifier "undefined4") (identifier "local_10") (; ";")) (declaration "int *local_c;" (primitive_type "int") (pointer_declarator "*local_c" (* "*") (identifier "local_c")) (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "local_c = *(int **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int **)PTR___stack_chk_guard_00097540" (identifier "local_c") (= "=") (pointer_expression "*(int **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if ((int)param_2 < 0) {\n    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }\n  else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\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    if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 4) < 0) {\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }\n    else {\n      puVar2 = (undefined4 *)0x1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) < 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_1c = *(undefined4 *)(param_1 + 8);\n      local_14 = *(undefined4 *)(param_1 + 0x10);\n      param_2 = (int *)-(int)param_2;\n      local_10 = *(undefined4 *)(param_1 + 0x14);\n      local_20 = -*(int *)(param_1 + 4);\n      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);\n      puVar2 = (undefined4 *)-iVar3;\n    }" ({ "{") (expression_statement "local_1c = *(undefined4 *)(param_1 + 8);" (assignment_expression "local_1c = *(undefined4 *)(param_1 + 8)" (identifier "local_1c") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_14 = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "local_14 = *(undefined4 *)(param_1 + 0x10)" (identifier "local_14") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "param_2 = (int *)-(int)param_2;" (assignment_expression "param_2 = (int *)-(int)param_2" (identifier "param_2") (= "=") (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"))))) (; ";")) (expression_statement "local_10 = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "local_10 = *(undefined4 *)(param_1 + 0x14)" (identifier "local_10") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_20 = -*(int *)(param_1 + 4);" (assignment_expression "local_20 = -*(int *)(param_1 + 4)" (identifier "local_20") (= "=") (unary_expression "-*(int *)(param_1 + 4)" (- "-") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);" (assignment_expression "iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24)" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" (( "(") (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" (* "*") (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpq_cmp_ui_0009760c"))) () ")")) (argument_list "(auStack_24)" (( "(") (identifier "auStack_24") () ")")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)-iVar3;" (assignment_expression "puVar2 = (undefined4 *)-iVar3" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)-iVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-iVar3" (- "-") (identifier "iVar3")))) (; ";")) (} "}")) (else_clause "else {\n      puVar2 = (undefined4 *)0x1;\n    }" (else "else") (compound_statement "{\n      puVar2 = (undefined4 *)0x1;\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" (else "else") (compound_statement "{\n    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();\n  }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();" (assignment_expression "puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)()" (parenthesized_expression "(*(code *)PTR___gmpq_cmp_ui_0009760c)" (( "(") (pointer_expression "*(code *)PTR___gmpq_cmp_ui_0009760c" (* "*") (cast_expression "(code *)PTR___gmpq_cmp_ui_0009760c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpq_cmp_ui_0009760c"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")))) (if_statement "if (local_c == *(int **)puVar1) {\n    return puVar2;\n  }" (if "if") (parenthesized_expression "(local_c == *(int **)puVar1)" (( "(") (binary_expression "local_c == *(int **)puVar1" (identifier "local_c") (== "==") (pointer_expression "*(int **)puVar1" (* "*") (cast_expression "(int **)puVar1" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return puVar2;\n  }" ({ "{") (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (expression_statement "piVar13 = local_c;" (assignment_expression "piVar13 = local_c" (identifier "piVar13") (= "=") (identifier "local_c")) (; ";")) (expression_statement "puVar22 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar22 = PTR___stack_chk_fail_000974d0" (identifier "puVar22") (= "=") (identifier "PTR___stack_chk_fail_000974d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar24 = puVar22 + 0x67550;" (assignment_expression "puVar24 = puVar22 + 0x67550" (identifier "puVar24") (= "=") (binary_expression "puVar22 + 0x67550" (identifier "puVar22") (+ "+") (number_literal "0x67550"))) (; ";")) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" (identifier "puVar10") (= "=") (identifier "auStack_88")) (; ";")) (expression_statement "puVar26 = auStack_88;" (assignment_expression "puVar26 = auStack_88" (identifier "puVar26") (= "=") (identifier "auStack_88")) (; ";")) (expression_statement "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);" (assignment_expression "puVar18 = *(undefined4 **)(puVar22 + 0x5fa50)" (identifier "puVar18") (= "=") (pointer_expression "*(undefined4 **)(puVar22 + 0x5fa50)" (* "*") (cast_expression "(undefined4 **)(puVar22 + 0x5fa50)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x5fa50)" (( "(") (binary_expression "puVar22 + 0x5fa50" (identifier "puVar22") (+ "+") (number_literal "0x5fa50")) () ")"))))) (; ";")) (expression_statement "puStack_64 = puVar1;" (assignment_expression "puStack_64 = puVar1" (identifier "puStack_64") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piStack_6c = (int *)*puVar18;" (assignment_expression "piStack_6c = (int *)*puVar18" (identifier "piStack_6c") (= "=") (cast_expression "(int *)*puVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)piVar13[1];" (assignment_expression "puVar2 = (undefined4 *)piVar13[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)piVar13[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pcVar23 = *(code **)(puVar22 + 0x5faec);" (assignment_expression "pcVar23 = *(code **)(puVar22 + 0x5faec)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(puVar22 + 0x5faec)" (* "*") (cast_expression "(code **)(puVar22 + 0x5faec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x5faec)" (( "(") (binary_expression "puVar22 + 0x5faec" (identifier "puVar22") (+ "+") (number_literal "0x5faec")) () ")"))))) (; ";")) (expression_statement "apuStack_78[0] = puVar24;" (assignment_expression "apuStack_78[0] = puVar24" (subscript_expression "apuStack_78[0]" (identifier "apuStack_78") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "puVar24")) (; ";")) (if_statement "if (param_3 == (int *)0x0) {\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }\n  else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*pcVar23)();\n    piVar8 = param_2;\n    param_2 = unaff_s6;\nLAB_00037c9c:\n    (*pcVar23)();\n    puVar24 = apuStack_78[0];\n  }" ({ "{") (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" (identifier "piVar8") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_2 = unaff_s6;" (assignment_expression "param_2 = unaff_s6" (identifier "param_2") (= "=") (identifier "unaff_s6")) (; ";")) (labeled_statement "LAB_00037c9c:\n    (*pcVar23)();" (statement_identifier "LAB_00037c9c") (: ":") (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" (identifier "puVar24") (= "=") (subscript_expression "apuStack_78[0]" (identifier "apuStack_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" (else "else") (compound_statement "{\n    piVar8 = param_2;\n    puVar10 = auStack_88;\n    if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "piVar8 = param_2;" (assignment_expression "piVar8 = param_2" (identifier "piVar8") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" (identifier "puVar10") (= "=") (identifier "auStack_88")) (; ";")) (if_statement "if (param_2 != (int *)0x0) {\n      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\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      if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }\n    }" ({ "{") (if_statement "if ((int)puVar2 < 1) {\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }\n      else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((int)puVar2 < 1)" (( "(") (binary_expression "(int)puVar2 < 1" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        puVar2 = (undefined4 *)0xffffffff;\n        puVar10 = auStack_88;\n      }" ({ "{") (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0xffffffff" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" (identifier "puVar10") (= "=") (identifier "auStack_88")) (; ";")) (} "}")) (else_clause "else {\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        unaff_s5 = (int *)piVar13[4];\n        piVar8 = (int *)((int)unaff_s5 + 1);\n        unaff_s4 = piVar13;\n        puVar10 = auStack_88;\n        if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }\n      }" ({ "{") (expression_statement "unaff_s5 = (int *)piVar13[4];" (assignment_expression "unaff_s5 = (int *)piVar13[4]" (identifier "unaff_s5") (= "=") (cast_expression "(int *)piVar13[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[4]" (identifier "piVar13") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "piVar8 = (int *)((int)unaff_s5 + 1);" (assignment_expression "piVar8 = (int *)((int)unaff_s5 + 1)" (identifier "piVar8") (= "=") (cast_expression "(int *)((int)unaff_s5 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 + 1)" (( "(") (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "unaff_s4 = piVar13;" (assignment_expression "unaff_s4 = piVar13" (identifier "unaff_s4") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" (identifier "puVar10") (= "=") (identifier "auStack_88")) (; ";")) (if_statement "if ((int)puVar2 <= (int)piVar8) {\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" (if "if") (parenthesized_expression "((int)puVar2 <= (int)piVar8)" (( "(") (binary_expression "(int)puVar2 <= (int)piVar8" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (<= "<=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) () ")")) (compound_statement "{\n          unaff_s1 = (int *)((int)puVar2 + 1);\n          if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }\n        }" ({ "{") (expression_statement "unaff_s1 = (int *)((int)puVar2 + 1);" (assignment_expression "unaff_s1 = (int *)((int)puVar2 + 1)" (identifier "unaff_s1") (= "=") (cast_expression "(int *)((int)puVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 1)" (( "(") (binary_expression "(int)puVar2 + 1" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((int)unaff_s1 < (int)unaff_s5) {\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }\n          else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" (if "if") (parenthesized_expression "((int)unaff_s1 < (int)unaff_s5)" (( "(") (binary_expression "(int)unaff_s1 < (int)unaff_s5" (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1")) (< "<") (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5"))) () ")")) (compound_statement "{\n            puVar2 = (undefined4 *)-(int)puVar2;\n            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);\n            puVar10 = auStack_88;\n          }" ({ "{") (expression_statement "puVar2 = (undefined4 *)-(int)puVar2;" (assignment_expression "puVar2 = (undefined4 *)-(int)puVar2" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)-(int)puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar2" (- "-") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2"))))) (; ";")) (expression_statement "piVar8 = (int *)((int)piVar8 + (int)unaff_s1);" (assignment_expression "piVar8 = (int *)((int)piVar8 + (int)unaff_s1)" (identifier "piVar8") (= "=") (cast_expression "(int *)((int)piVar8 + (int)unaff_s1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" (( "(") (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1"))) () ")")))) (; ";")) (expression_statement "puVar10 = auStack_88;" (assignment_expression "puVar10 = auStack_88" (identifier "puVar10") (= "=") (identifier "auStack_88")) (; ";")) (} "}")) (else_clause "else {\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" (else "else") (compound_statement "{\n            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;\n            iStack_70 = 0;\n            if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }\n            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);\n            puVar1 = apuStack_78[0];\n            unaff_s1 = unaff_s2 + (int)unaff_s1;\n            piVar8 = (int *)piVar13[5];\n            unaff_s1[-1] = iVar3;\n            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);\n            param_3 = unaff_s5;\n            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);\n            puVar24 = apuStack_78[0];\n            piVar13 = unaff_s1 + (int)unaff_s5;\n            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);\n            *piVar13 = iVar3;\n            if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }\nLAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);\n            puVar10 = puVar26;\n            if (iStack_70 != 0) goto LAB_00037c9c;\n          }" ({ "{") (expression_statement "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;" (assignment_expression "uVar9 = ((int)piVar8 + (int)unaff_s1) * 4" (identifier "uVar9") (= "=") (binary_expression "((int)piVar8 + (int)unaff_s1) * 4" (parenthesized_expression "((int)piVar8 + (int)unaff_s1)" (( "(") (binary_expression "(int)piVar8 + (int)unaff_s1" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1"))) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iStack_70 = 0;" (assignment_expression "iStack_70 = 0" (identifier "iStack_70") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar9 < 0x7f01) {\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }\n            else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" (if "if") (parenthesized_expression "(uVar9 < 0x7f01)" (( "(") (binary_expression "uVar9 < 0x7f01" (identifier "uVar9") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n              iVar3 = -(uVar9 + 7 & 0xfffffff8);\n              puVar26 = auStack_88 + iVar3;\n              unaff_s2 = (int *)((int)apuStack_78 + iVar3);\n            }" ({ "{") (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" (identifier "iVar3") (= "=") (unary_expression "-(uVar9 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" (identifier "uVar9") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar26 = auStack_88 + iVar3;" (assignment_expression "puVar26 = auStack_88 + iVar3" (identifier "puVar26") (= "=") (binary_expression "auStack_88 + iVar3" (identifier "auStack_88") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "unaff_s2 = (int *)((int)apuStack_78 + iVar3);" (assignment_expression "unaff_s2 = (int *)((int)apuStack_78 + iVar3)" (identifier "unaff_s2") (= "=") (cast_expression "(int *)((int)apuStack_78 + iVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)apuStack_78 + iVar3)" (( "(") (binary_expression "(int)apuStack_78 + iVar3" (cast_expression "(int)apuStack_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "apuStack_78")) (+ "+") (identifier "iVar3")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" (else "else") (compound_statement "{\n              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);\n            }" ({ "{") (expression_statement "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);" (assignment_expression "unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (identifier "unaff_s2") (= "=") (cast_expression "(int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar22 + 0x5f800))(&iStack_70)" (parenthesized_expression "(**(code **)(puVar22 + 0x5f800))" (( "(") (pointer_expression "**(code **)(puVar22 + 0x5f800)" (* "*") (pointer_expression "*(code **)(puVar22 + 0x5f800)" (* "*") (cast_expression "(code **)(puVar22 + 0x5f800)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + 0x5f800)" (( "(") (binary_expression "puVar22 + 0x5f800" (identifier "puVar22") (+ "+") (number_literal "0x5f800")) () ")"))))) () ")")) (argument_list "(&iStack_70)" (( "(") (pointer_expression "&iStack_70" (& "&") (identifier "iStack_70")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);" (assignment_expression "iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3)" (parenthesized_expression "(**(code **)(apuStack_78[0] + -0x7f9c))" (( "(") (pointer_expression "**(code **)(apuStack_78[0] + -0x7f9c)" (* "*") (pointer_expression "*(code **)(apuStack_78[0] + -0x7f9c)" (* "*") (cast_expression "(code **)(apuStack_78[0] + -0x7f9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_78[0] + -0x7f9c)" (( "(") (binary_expression "apuStack_78[0] + -0x7f9c" (subscript_expression "apuStack_78[0]" (identifier "apuStack_78") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7f9c")) () ")"))))) () ")")) (argument_list "(unaff_s2,piVar13[2],puVar2,param_3)" (( "(") (identifier "unaff_s2") (, ",") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (, ",") (identifier "puVar2") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "puVar1 = apuStack_78[0];" (assignment_expression "puVar1 = apuStack_78[0]" (identifier "puVar1") (= "=") (subscript_expression "apuStack_78[0]" (identifier "apuStack_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "unaff_s1 = unaff_s2 + (int)unaff_s1;" (assignment_expression "unaff_s1 = unaff_s2 + (int)unaff_s1" (identifier "unaff_s1") (= "=") (binary_expression "unaff_s2 + (int)unaff_s1" (identifier "unaff_s2") (+ "+") (cast_expression "(int)unaff_s1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s1")))) (; ";")) (expression_statement "piVar8 = (int *)piVar13[5];" (assignment_expression "piVar8 = (int *)piVar13[5]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar13[5]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[5]" (identifier "piVar13") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "unaff_s1[-1] = iVar3;" (assignment_expression "unaff_s1[-1] = iVar3" (subscript_expression "unaff_s1[-1]" (identifier "unaff_s1") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);" (assignment_expression "piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2)" (identifier "piVar12") (= "=") (cast_expression "(int *)((uint)(iVar3 != 0) + (int)puVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(iVar3 != 0) + (int)puVar2)" (( "(") (binary_expression "(uint)(iVar3 != 0) + (int)puVar2" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")"))) (+ "+") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2"))) () ")")))) (; ";")) (expression_statement "param_3 = unaff_s5;" (assignment_expression "param_3 = unaff_s5" (identifier "param_3") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);" (assignment_expression "iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2)" (parenthesized_expression "(**(code **)(puVar1 + -0x7f9c))" (( "(") (pointer_expression "**(code **)(puVar1 + -0x7f9c)" (* "*") (pointer_expression "*(code **)(puVar1 + -0x7f9c)" (* "*") (cast_expression "(code **)(puVar1 + -0x7f9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + -0x7f9c)" (( "(") (binary_expression "puVar1 + -0x7f9c" (identifier "puVar1") (+ "+") (number_literal "-0x7f9c")) () ")"))))) () ")")) (argument_list "(unaff_s1,piVar8,unaff_s5,param_2)" (( "(") (identifier "unaff_s1") (, ",") (identifier "piVar8") (, ",") (identifier "unaff_s5") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "puVar24 = apuStack_78[0];" (assignment_expression "puVar24 = apuStack_78[0]" (identifier "puVar24") (= "=") (subscript_expression "apuStack_78[0]" (identifier "apuStack_78") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "piVar13 = unaff_s1 + (int)unaff_s5;" (assignment_expression "piVar13 = unaff_s1 + (int)unaff_s5" (identifier "piVar13") (= "=") (binary_expression "unaff_s1 + (int)unaff_s5" (identifier "unaff_s1") (+ "+") (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")))) (; ";")) (expression_statement "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);" (assignment_expression "unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((uint)(iVar3 != 0) + (int)unaff_s5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(iVar3 != 0) + (int)unaff_s5)" (( "(") (binary_expression "(uint)(iVar3 != 0) + (int)unaff_s5" (call_expression "(uint)(iVar3 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")"))) (+ "+") (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5"))) () ")")))) (; ";")) (expression_statement "*piVar13 = iVar3;" (assignment_expression "*piVar13 = iVar3" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (piVar12 == unaff_s5) {\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }\n            else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" (if "if") (parenthesized_expression "(piVar12 == unaff_s5)" (( "(") (binary_expression "piVar12 == unaff_s5" (identifier "piVar12") (== "==") (identifier "unaff_s5")) () ")")) (compound_statement "{\n              param_3 = (int *)0xffffffff;\n              piVar14 = unaff_s2 + (int)piVar12;\n              piVar13 = unaff_s1 + (int)piVar12;\n              do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);\n              puVar2 = (undefined4 *)0xffffffff;\n              if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }\n            }" ({ "{") (expression_statement "param_3 = (int *)0xffffffff;" (assignment_expression "param_3 = (int *)0xffffffff" (identifier "param_3") (= "=") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "piVar14 = unaff_s2 + (int)piVar12;" (assignment_expression "piVar14 = unaff_s2 + (int)piVar12" (identifier "piVar14") (= "=") (binary_expression "unaff_s2 + (int)piVar12" (identifier "unaff_s2") (+ "+") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")))) (; ";")) (expression_statement "piVar13 = unaff_s1 + (int)piVar12;" (assignment_expression "piVar13 = unaff_s1 + (int)piVar12" (identifier "piVar13") (= "=") (binary_expression "unaff_s1 + (int)piVar12" (identifier "unaff_s1") (+ "+") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")))) (; ";")) (do_statement "do {\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              } while ((int *)*piVar20 == piVar8);" (do "do") (compound_statement "{\n                piVar12 = (int *)((int)piVar12 + -1);\n                piVar13 = piVar13 + -1;\n                if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }\n                piVar20 = piVar14 + -1;\n                piVar8 = (int *)*piVar13;\n                piVar14 = piVar14 + -1;\n              }" ({ "{") (expression_statement "piVar12 = (int *)((int)piVar12 + -1);" (assignment_expression "piVar12 = (int *)((int)piVar12 + -1)" (identifier "piVar12") (= "=") (cast_expression "(int *)((int)piVar12 + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + -1)" (( "(") (binary_expression "(int)piVar12 + -1" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "piVar13 = piVar13 + -1;" (assignment_expression "piVar13 = piVar13 + -1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + -1" (identifier "piVar13") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (piVar12 == (int *)0xffffffff) {\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" (if "if") (parenthesized_expression "(piVar12 == (int *)0xffffffff)" (( "(") (binary_expression "piVar12 == (int *)0xffffffff" (identifier "piVar12") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n                  puVar2 = (undefined4 *)0x0;\n                  goto LAB_00037c04;\n                }" ({ "{") (expression_statement "puVar2 = (undefined4 *)0x0;" (assignment_expression "puVar2 = (undefined4 *)0x0" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00037c04;" (goto "goto") (statement_identifier "LAB_00037c04") (; ";")) (} "}"))) (expression_statement "piVar20 = piVar14 + -1;" (assignment_expression "piVar20 = piVar14 + -1" (identifier "piVar20") (= "=") (binary_expression "piVar14 + -1" (identifier "piVar14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar8 = (int *)*piVar13;" (assignment_expression "piVar8 = (int *)*piVar13" (identifier "piVar8") (= "=") (cast_expression "(int *)*piVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar13" (* "*") (identifier "piVar13")))) (; ";")) (expression_statement "piVar14 = piVar14 + -1;" (assignment_expression "piVar14 = piVar14 + -1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + -1" (identifier "piVar14") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)*piVar20 == piVar8)" (( "(") (binary_expression "(int *)*piVar20 == piVar8" (cast_expression "(int *)*piVar20" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (== "==") (identifier "piVar8")) () ")")) (; ";")) (expression_statement "puVar2 = (undefined4 *)0xffffffff;" (assignment_expression "puVar2 = (undefined4 *)0xffffffff" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0xffffffff" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (if_statement "if (piVar8 < (int *)*piVar20) {\n                puVar2 = (undefined4 *)0x1;\n              }" (if "if") (parenthesized_expression "(piVar8 < (int *)*piVar20)" (( "(") (binary_expression "piVar8 < (int *)*piVar20" (identifier "piVar8") (< "<") (cast_expression "(int *)*piVar20" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar20" (* "*") (identifier "piVar20")))) () ")")) (compound_statement "{\n                puVar2 = (undefined4 *)0x1;\n              }" ({ "{") (expression_statement "puVar2 = (undefined4 *)0x1;" (assignment_expression "puVar2 = (undefined4 *)0x1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" (else "else") (compound_statement "{\n              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);\n            }" ({ "{") (expression_statement "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);" (assignment_expression "puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)((int)piVar12 - (int)unaff_s5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 - (int)unaff_s5)" (( "(") (binary_expression "(int)piVar12 - (int)unaff_s5" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (- "-") (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5"))) () ")")))) (; ";")) (} "}")))) (labeled_statement "LAB_00037c04:\n            pcVar23 = *(code **)(puVar24 + -0x7a2c);" (statement_identifier "LAB_00037c04") (: ":") (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7a2c)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(puVar24 + -0x7a2c)" (* "*") (cast_expression "(code **)(puVar24 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + -0x7a2c)" (( "(") (binary_expression "puVar24 + -0x7a2c" (identifier "puVar24") (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";"))) (expression_statement "puVar10 = puVar26;" (assignment_expression "puVar10 = puVar26" (identifier "puVar10") (= "=") (identifier "puVar26")) (; ";")) (if_statement "if (iStack_70 != 0) goto LAB_00037c9c;" (if "if") (parenthesized_expression "(iStack_70 != 0)" (( "(") (binary_expression "iStack_70 != 0" (identifier "iStack_70") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00037c9c;" (goto "goto") (statement_identifier "LAB_00037c9c") (; ";"))) (} "}")))) (} "}"))) (} "}")))) (} "}"))) (} "}")))) (expression_statement "pcVar23 = *(code **)(puVar24 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(puVar24 + -0x7b70)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(puVar24 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar24 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + -0x7b70)" (( "(") (binary_expression "puVar24 + -0x7b70" (identifier "puVar24") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (if_statement "if (piStack_6c == (int *)*puVar18) {\n    return puVar2;\n  }" (if "if") (parenthesized_expression "(piStack_6c == (int *)*puVar18)" (( "(") (binary_expression "piStack_6c == (int *)*puVar18" (identifier "piStack_6c") (== "==") (cast_expression "(int *)*puVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) () ")")) (compound_statement "{\n    return puVar2;\n  }" ({ "{") (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (expression_statement "pcVar29 = __gmpq_div;" (assignment_expression "pcVar29 = __gmpq_div" (identifier "pcVar29") (= "=") (identifier "__gmpq_div")) (; ";")) (expression_statement "piVar12 = piStack_6c;" (assignment_expression "piVar12 = piStack_6c" (identifier "piVar12") (= "=") (identifier "piStack_6c")) (; ";")) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar25 = pcVar23 + 0x67350;" (assignment_expression "pcVar25 = pcVar23 + 0x67350" (identifier "pcVar25") (= "=") (binary_expression "pcVar23 + 0x67350" (identifier "pcVar23") (+ "+") (number_literal "0x67350"))) (; ";")) (expression_statement "puVar27 = puVar10 + -0x80;" (assignment_expression "puVar27 = puVar10 + -0x80" (identifier "puVar27") (= "=") (binary_expression "puVar10 + -0x80" (identifier "puVar10") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" (identifier "puVar4") (= "=") (binary_expression "puVar10 + -0x80" (identifier "puVar10") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "*(int **)(puVar10 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar10 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar10 + -0x14)" (* "*") (cast_expression "(int **)(puVar10 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x14)" (( "(") (binary_expression "puVar10 + -0x14" (identifier "puVar10") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(undefined4 **)(puVar10 + -0x28) = puVar2;" (assignment_expression "*(undefined4 **)(puVar10 + -0x28) = puVar2" (pointer_expression "*(undefined4 **)(puVar10 + -0x28)" (* "*") (cast_expression "(undefined4 **)(puVar10 + -0x28)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x28)" (( "(") (binary_expression "puVar10 + -0x28" (identifier "puVar10") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "piVar20 = *(int **)(pcVar23 + 0x5f850);" (assignment_expression "piVar20 = *(int **)(pcVar23 + 0x5f850)" (identifier "piVar20") (= "=") (pointer_expression "*(int **)(pcVar23 + 0x5f850)" (* "*") (cast_expression "(int **)(pcVar23 + 0x5f850)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f850)" (( "(") (binary_expression "pcVar23 + 0x5f850" (identifier "pcVar23") (+ "+") (number_literal "0x5f850")) () ")"))))) (; ";")) (expression_statement "piVar13 = (int *)param_3[1];" (assignment_expression "piVar13 = (int *)param_3[1]" (identifier "piVar13") (= "=") (cast_expression "(int *)param_3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*(undefined1 **)(puVar10 + -8) = auStack_88;" (assignment_expression "*(undefined1 **)(puVar10 + -8) = auStack_88" (pointer_expression "*(undefined1 **)(puVar10 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -8)" (( "(") (binary_expression "puVar10 + -8" (identifier "puVar10") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_88")) (; ";")) (expression_statement "*(code **)(puVar10 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar10 + -4) = pcVar29" (pointer_expression "*(code **)(puVar10 + -4)" (* "*") (cast_expression "(code **)(puVar10 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar29")) (; ";")) (expression_statement "*(undefined1 **)(puVar10 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar10 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar10 + -0xc)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0xc)" (( "(") (binary_expression "puVar10 + -0xc" (identifier "puVar10") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar10 + -0x10) = param_2" (pointer_expression "*(int **)(puVar10 + -0x10)" (* "*") (cast_expression "(int **)(puVar10 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x10)" (( "(") (binary_expression "puVar10 + -0x10" (identifier "puVar10") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar10 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar10 + -0x18)" (* "*") (cast_expression "(int **)(puVar10 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x18)" (( "(") (binary_expression "puVar10 + -0x18" (identifier "puVar10") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(undefined4 **)(puVar10 + -0x1c) = puVar18;" (assignment_expression "*(undefined4 **)(puVar10 + -0x1c) = puVar18" (pointer_expression "*(undefined4 **)(puVar10 + -0x1c)" (* "*") (cast_expression "(undefined4 **)(puVar10 + -0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x1c)" (( "(") (binary_expression "puVar10 + -0x1c" (identifier "puVar10") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar10 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar10 + -0x20)" (* "*") (cast_expression "(int **)(puVar10 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x20)" (( "(") (binary_expression "puVar10 + -0x20" (identifier "puVar10") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int **)(puVar10 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar10 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar10 + -0x24)" (* "*") (cast_expression "(int **)(puVar10 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x24)" (( "(") (binary_expression "puVar10 + -0x24" (identifier "puVar10") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(code **)(puVar10 + -0x70) = pcVar25;" (assignment_expression "*(code **)(puVar10 + -0x70) = pcVar25" (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (identifier "pcVar25")) (; ";")) (expression_statement "*(int *)(puVar10 + -0x2c) = *piVar20;" (assignment_expression "*(int *)(puVar10 + -0x2c) = *piVar20" (pointer_expression "*(int *)(puVar10 + -0x2c)" (* "*") (cast_expression "(int *)(puVar10 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x2c)" (( "(") (binary_expression "puVar10 + -0x2c" (identifier "puVar10") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "piVar14 = param_3;" (assignment_expression "piVar14 = param_3" (identifier "piVar14") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (piVar13 == (int *)0x0) {\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }\n  else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" (if "if") (parenthesized_expression "(piVar13 == (int *)0x0)" (( "(") (binary_expression "piVar13 == (int *)0x0" (identifier "piVar13") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (**(code **)(pcVar23 + 0x5f8ec))();\n  }" ({ "{") (expression_statement "(**(code **)(pcVar23 + 0x5f8ec))();" (call_expression "(**(code **)(pcVar23 + 0x5f8ec))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f8ec))" (( "(") (pointer_expression "**(code **)(pcVar23 + 0x5f8ec)" (* "*") (pointer_expression "*(code **)(pcVar23 + 0x5f8ec)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f8ec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f8ec)" (( "(") (binary_expression "pcVar23 + 0x5f8ec" (identifier "pcVar23") (+ "+") (number_literal "0x5f8ec")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" (else "else") (compound_statement "{\n    unaff_s2 = piVar12;\n    unaff_s4 = piVar8;\n    if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }\n  }" ({ "{") (expression_statement "unaff_s2 = piVar12;" (assignment_expression "unaff_s2 = piVar12" (identifier "unaff_s2") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "unaff_s4 = piVar8;" (assignment_expression "unaff_s4 = piVar8" (identifier "unaff_s4") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if (param_3 != piVar12) {\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" (if "if") (parenthesized_expression "(param_3 != piVar12)" (( "(") (binary_expression "param_3 != piVar12" (identifier "param_3") (!= "!=") (identifier "piVar12")) () ")")) (compound_statement "{\n      piVar14 = (int *)piVar8[1];\n      if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }\n      if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }\n      *(undefined1 **)(puVar10 + -0x54) = puVar4;\n      if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }\n      *(int **)(puVar10 + -0x44) = piVar13;\n      if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      iVar15 = param_3[4];\n      iVar3 = piVar8[4];\n      *(undefined1 **)(puVar10 + -0x3c) = puVar4;\n      iVar19 = iVar3;\n      if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }\n      *(int *)(puVar10 + -0x50) = iVar19;\n      if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      *(undefined1 **)(puVar10 + -0x48) = puVar4;\n      if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }\n      *(int *)(puVar10 + -0x38) = iVar3;\n      if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      pcVar23 = *(code **)(pcVar25 + -0x7e44);\n      unaff_s7 = puVar10 + -0x5c;\n      *(undefined1 **)(puVar10 + -0x30) = puVar4;\n      (*pcVar23)(unaff_s7,piVar8,param_3);\n      param_2 = (int *)(puVar10 + -0x50);\n      *(int **)(puVar10 + -100) = piVar8 + 3;\n      piVar13 = (int *)(puVar10 + -0x44);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);\n      unaff_s1 = (int *)(puVar10 + -0x38);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);\n      piVar8 = piVar13;\n      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);\n      pcVar25 = *(code **)(puVar10 + -0x70);\n      if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }\n      piVar12 = *(int **)(puVar10 + -0x60);\n      puVar4 = puVar27;\n      if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      goto LAB_00037f54;\n    }" ({ "{") (expression_statement "piVar14 = (int *)piVar8[1];" (assignment_expression "piVar14 = (int *)piVar8[1]" (identifier "piVar14") (= "=") (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (piVar14 == (int *)0x0) {\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar12[1] = 0;\n        *(undefined4 *)piVar12[5] = 1;\n        piVar12[4] = 1;\n        unaff_s1 = (int *)0x0;\n        puVar4 = puVar10 + -0x80;\n        goto LAB_00037f54;\n      }" ({ "{") (expression_statement "piVar12[1] = 0;" (assignment_expression "piVar12[1] = 0" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)piVar12[5] = 1;" (assignment_expression "*(undefined4 *)piVar12[5] = 1" (pointer_expression "*(undefined4 *)piVar12[5]" (* "*") (cast_expression "(undefined4 *)piVar12[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[4] = 1;" (assignment_expression "piVar12[4] = 1" (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_s1 = (int *)0x0;" (assignment_expression "unaff_s1 = (int *)0x0" (identifier "unaff_s1") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" (identifier "puVar4") (= "=") (binary_expression "puVar10 + -0x80" (identifier "puVar10") (+ "+") (number_literal "-0x80"))) (; ";")) (goto_statement "goto LAB_00037f54;" (goto "goto") (statement_identifier "LAB_00037f54") (; ";")) (} "}"))) (if_statement "if ((int)piVar14 < 0) {\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }\n      else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" (if "if") (parenthesized_expression "((int)piVar14 < 0)" (( "(") (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar14 = (int *)-(int)piVar14;\n        if (-1 < (int)piVar13) goto LAB_00037d70;\nLAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (uVar9 < 0x7f01) goto LAB_00037d90;\n        pcVar23 = *(code **)(pcVar23 + 0x5f600);\nLAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" ({ "{") (expression_statement "piVar14 = (int *)-(int)piVar14;" (assignment_expression "piVar14 = (int *)-(int)piVar14" (identifier "piVar14") (= "=") (cast_expression "(int *)-(int)piVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar14" (- "-") (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14"))))) (; ";")) (if_statement "if (-1 < (int)piVar13) goto LAB_00037d70;" (if "if") (parenthesized_expression "(-1 < (int)piVar13)" (( "(") (binary_expression "-1 < (int)piVar13" (number_literal "-1") (< "<") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))) () ")")) (goto_statement "goto LAB_00037d70;" (goto "goto") (statement_identifier "LAB_00037d70") (; ";"))) (labeled_statement "LAB_00037f98:\n        piVar13 = (int *)-(int)piVar13;" (statement_identifier "LAB_00037f98") (: ":") (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" (identifier "piVar13") (= "=") (cast_expression "(int *)-(int)piVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar13" (- "-") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))))) (; ";"))) (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" (identifier "piVar6") (= "=") (identifier "piVar13")) (; ";")) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" (if "if") (parenthesized_expression "((int)piVar14 <= (int)piVar13)" (( "(") (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (<= "<=") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))) () ")")) (compound_statement "{\n          piVar6 = piVar14;\n        }" ({ "{") (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" (identifier "piVar6") (= "=") (identifier "piVar14")) (; ";")) (} "}"))) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" (identifier "uVar9") (= "=") (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6")) (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" (* "*") (cast_expression "(int **)(puVar10 + -0x5c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x5c)" (( "(") (binary_expression "puVar10 + -0x5c" (identifier "puVar10") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (if_statement "if (uVar9 < 0x7f01) goto LAB_00037d90;" (if "if") (parenthesized_expression "(uVar9 < 0x7f01)" (( "(") (binary_expression "uVar9 < 0x7f01" (identifier "uVar9") (< "<") (number_literal "0x7f01")) () ")")) (goto_statement "goto LAB_00037d90;" (goto "goto") (statement_identifier "LAB_00037d90") (; ";"))) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar23 + 0x5f600)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f600)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f600)" (( "(") (binary_expression "pcVar23 + 0x5f600" (identifier "pcVar23") (+ "+") (number_literal "0x5f600")) () ")"))))) (; ";")) (labeled_statement "LAB_00037fec:\n        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" (statement_identifier "LAB_00037fec") (: ":") (expression_statement "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(*pcVar23)(puVar10 + -0x60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar23)(puVar10 + -0x60)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";"))) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" (else "else") (compound_statement "{\n        if ((int)piVar13 < 0) goto LAB_00037f98;\nLAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;\n        piVar6 = piVar13;\n        if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }\n        uVar9 = (int)piVar6 << 2;\n        *(int **)(puVar10 + -0x5c) = piVar6;\n        if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }\nLAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);\n        puVar27 = puVar10 + iVar3 + -0x80;\n        puVar4 = puVar10 + iVar3 + -0x70;\n      }" ({ "{") (if_statement "if ((int)piVar13 < 0) goto LAB_00037f98;" (if "if") (parenthesized_expression "((int)piVar13 < 0)" (( "(") (binary_expression "(int)piVar13 < 0" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00037f98;" (goto "goto") (statement_identifier "LAB_00037f98") (; ";"))) (labeled_statement "LAB_00037d70:\n        *(undefined4 *)(puVar10 + -0x60) = 0;" (statement_identifier "LAB_00037d70") (: ":") (expression_statement "*(undefined4 *)(puVar10 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar10 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar10 + -0x60)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar6 = piVar13;" (assignment_expression "piVar6 = piVar13" (identifier "piVar6") (= "=") (identifier "piVar13")) (; ";")) (if_statement "if ((int)piVar14 <= (int)piVar13) {\n          piVar6 = piVar14;\n        }" (if "if") (parenthesized_expression "((int)piVar14 <= (int)piVar13)" (( "(") (binary_expression "(int)piVar14 <= (int)piVar13" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (<= "<=") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))) () ")")) (compound_statement "{\n          piVar6 = piVar14;\n        }" ({ "{") (expression_statement "piVar6 = piVar14;" (assignment_expression "piVar6 = piVar14" (identifier "piVar6") (= "=") (identifier "piVar14")) (; ";")) (} "}"))) (expression_statement "uVar9 = (int)piVar6 << 2;" (assignment_expression "uVar9 = (int)piVar6 << 2" (identifier "uVar9") (= "=") (binary_expression "(int)piVar6 << 2" (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6")) (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "*(int **)(puVar10 + -0x5c) = piVar6;" (assignment_expression "*(int **)(puVar10 + -0x5c) = piVar6" (pointer_expression "*(int **)(puVar10 + -0x5c)" (* "*") (cast_expression "(int **)(puVar10 + -0x5c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x5c)" (( "(") (binary_expression "puVar10 + -0x5c" (identifier "puVar10") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "piVar6")) (; ";")) (if_statement "if (0x7f00 < uVar9) {\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" (if "if") (parenthesized_expression "(0x7f00 < uVar9)" (( "(") (binary_expression "0x7f00 < uVar9" (number_literal "0x7f00") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n          pcVar23 = *(code **)(pcVar23 + 0x5f600);\n          goto LAB_00037fec;\n        }" ({ "{") (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f600);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f600)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar23 + 0x5f600)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f600)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f600)" (( "(") (binary_expression "pcVar23 + 0x5f600" (identifier "pcVar23") (+ "+") (number_literal "0x5f600")) () ")"))))) (; ";")) (goto_statement "goto LAB_00037fec;" (goto "goto") (statement_identifier "LAB_00037fec") (; ";")) (} "}"))) (labeled_statement "LAB_00037d90:\n        iVar3 = -(uVar9 + 7 & 0xfffffff8);" (statement_identifier "LAB_00037d90") (: ":") (expression_statement "iVar3 = -(uVar9 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar9 + 7 & 0xfffffff8)" (identifier "iVar3") (= "=") (unary_expression "-(uVar9 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar9 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar9 + 7 & 0xfffffff8" (binary_expression "uVar9 + 7" (identifier "uVar9") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";"))) (expression_statement "puVar27 = puVar10 + iVar3 + -0x80;" (assignment_expression "puVar27 = puVar10 + iVar3 + -0x80" (identifier "puVar27") (= "=") (binary_expression "puVar10 + iVar3 + -0x80" (binary_expression "puVar10 + iVar3" (identifier "puVar10") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "puVar4 = puVar10 + iVar3 + -0x70;" (assignment_expression "puVar4 = puVar10 + iVar3 + -0x70" (identifier "puVar4") (= "=") (binary_expression "puVar10 + iVar3 + -0x70" (binary_expression "puVar10 + iVar3" (identifier "puVar10") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "-0x70"))) (; ";")) (} "}")))) (expression_statement "*(undefined1 **)(puVar10 + -0x54) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x54) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x54)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0x54)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x54)" (( "(") (binary_expression "puVar10 + -0x54" (identifier "puVar10") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (if_statement "if ((int)piVar13 <= (int)piVar14) {\n        piVar13 = piVar14;\n      }" (if "if") (parenthesized_expression "((int)piVar13 <= (int)piVar14)" (( "(") (binary_expression "(int)piVar13 <= (int)piVar14" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (<= "<=") (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14"))) () ")")) (compound_statement "{\n        piVar13 = piVar14;\n      }" ({ "{") (expression_statement "piVar13 = piVar14;" (assignment_expression "piVar13 = piVar14" (identifier "piVar13") (= "=") (identifier "piVar14")) (; ";")) (} "}"))) (expression_statement "*(int **)(puVar10 + -0x44) = piVar13;" (assignment_expression "*(int **)(puVar10 + -0x44) = piVar13" (pointer_expression "*(int **)(puVar10 + -0x44)" (* "*") (cast_expression "(int **)(puVar10 + -0x44)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x44)" (( "(") (binary_expression "puVar10 + -0x44" (identifier "puVar10") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (if_statement "if ((uint)((int)piVar13 * 4) < 0x7f01) {\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (if "if") (parenthesized_expression "((uint)((int)piVar13 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)((int)piVar13 * 4) < 0x7f01" (call_expression "(uint)((int)piVar13 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)piVar13 * 4)" (( "(") (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" ({ "{") (expression_statement "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8)" (identifier "iVar3") (= "=") (unary_expression "-((int)piVar13 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "((int)piVar13 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "(int)piVar13 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 * 4 + 7U" (binary_expression "(int)piVar13 * 4" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" (identifier "puVar4") (= "=") (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" (identifier "puVar27") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" (identifier "puVar27") (= "=") (binary_expression "puVar27 + iVar3" (identifier "puVar27") (+ "+") (identifier "iVar3"))) (; ";")) (} "}")) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (else "else") (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" ({ "{") (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" (( "(") (pointer_expression "**(code **)(pcVar25 + -0x7d50)" (* "*") (pointer_expression "*(code **)(pcVar25 + -0x7d50)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7d50)" (( "(") (binary_expression "pcVar25 + -0x7d50" (identifier "pcVar25") (+ "+") (number_literal "-0x7d50")) () ")"))))) () ")")) (argument_list "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar15 = param_3[4];" (assignment_expression "iVar15 = param_3[4]" (identifier "iVar15") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" (identifier "iVar3") (= "=") (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 **)(puVar10 + -0x3c) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x3c) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x3c)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0x3c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x3c)" (( "(") (binary_expression "puVar10 + -0x3c" (identifier "puVar10") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "iVar19 = iVar3;" (assignment_expression "iVar19 = iVar3" (identifier "iVar19") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar15 <= iVar3) {\n        iVar19 = iVar15;\n      }" (if "if") (parenthesized_expression "(iVar15 <= iVar3)" (( "(") (binary_expression "iVar15 <= iVar3" (identifier "iVar15") (<= "<=") (identifier "iVar3")) () ")")) (compound_statement "{\n        iVar19 = iVar15;\n      }" ({ "{") (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" (identifier "iVar19") (= "=") (identifier "iVar15")) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar10 + -0x50) = iVar19;" (assignment_expression "*(int *)(puVar10 + -0x50) = iVar19" (pointer_expression "*(int *)(puVar10 + -0x50)" (* "*") (cast_expression "(int *)(puVar10 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x50)" (( "(") (binary_expression "puVar10 + -0x50" (identifier "puVar10") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "iVar19")) (; ";")) (if_statement "if ((uint)(iVar19 * 4) < 0x7f01) {\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (if "if") (parenthesized_expression "((uint)(iVar19 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar19 * 4) < 0x7f01" (call_expression "(uint)(iVar19 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar19 * 4)" (( "(") (binary_expression "iVar19 * 4" (identifier "iVar19") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar19 + 0x10;\n        puVar27 = puVar27 + iVar19;\n      }" ({ "{") (expression_statement "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8)" (identifier "iVar19") (= "=") (unary_expression "-(iVar19 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar19 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar19 * 4 + 7U & 0xfffffff8" (binary_expression "iVar19 * 4 + 7U" (binary_expression "iVar19 * 4" (identifier "iVar19") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar4 = puVar27 + iVar19 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar19 + 0x10" (identifier "puVar4") (= "=") (binary_expression "puVar27 + iVar19 + 0x10" (binary_expression "puVar27 + iVar19" (identifier "puVar27") (+ "+") (identifier "iVar19")) (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar27 = puVar27 + iVar19;" (assignment_expression "puVar27 = puVar27 + iVar19" (identifier "puVar27") (= "=") (binary_expression "puVar27 + iVar19" (identifier "puVar27") (+ "+") (identifier "iVar19"))) (; ";")) (} "}")) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (else "else") (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" ({ "{") (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" (( "(") (pointer_expression "**(code **)(pcVar25 + -0x7d50)" (* "*") (pointer_expression "*(code **)(pcVar25 + -0x7d50)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7d50)" (( "(") (binary_expression "pcVar25 + -0x7d50" (identifier "pcVar25") (+ "+") (number_literal "-0x7d50")) () ")"))))) () ")")) (argument_list "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(undefined1 **)(puVar10 + -0x48) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x48) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x48)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0x48)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x48)" (( "(") (binary_expression "puVar10 + -0x48" (identifier "puVar10") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar3 <= iVar15) {\n        iVar3 = iVar15;\n      }" (if "if") (parenthesized_expression "(iVar3 <= iVar15)" (( "(") (binary_expression "iVar3 <= iVar15" (identifier "iVar3") (<= "<=") (identifier "iVar15")) () ")")) (compound_statement "{\n        iVar3 = iVar15;\n      }" ({ "{") (expression_statement "iVar3 = iVar15;" (assignment_expression "iVar3 = iVar15" (identifier "iVar3") (= "=") (identifier "iVar15")) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar10 + -0x38) = iVar3;" (assignment_expression "*(int *)(puVar10 + -0x38) = iVar3" (pointer_expression "*(int *)(puVar10 + -0x38)" (* "*") (cast_expression "(int *)(puVar10 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x38)" (( "(") (binary_expression "puVar10 + -0x38" (identifier "puVar10") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if ((uint)(iVar3 * 4) < 0x7f01) {\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }\n      else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (if "if") (parenthesized_expression "((uint)(iVar3 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar3 * 4) < 0x7f01" (call_expression "(uint)(iVar3 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 * 4)" (( "(") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);\n        puVar4 = puVar27 + iVar3 + 0x10;\n        puVar27 = puVar27 + iVar3;\n      }" ({ "{") (expression_statement "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8)" (identifier "iVar3") (= "=") (unary_expression "-(iVar3 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar3 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar3 * 4 + 7U & 0xfffffff8" (binary_expression "iVar3 * 4 + 7U" (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar4 = puVar27 + iVar3 + 0x10;" (assignment_expression "puVar4 = puVar27 + iVar3 + 0x10" (identifier "puVar4") (= "=") (binary_expression "puVar27 + iVar3 + 0x10" (binary_expression "puVar27 + iVar3" (identifier "puVar27") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "puVar27 = puVar27 + iVar3;" (assignment_expression "puVar27 = puVar27 + iVar3" (identifier "puVar27") (= "=") (binary_expression "puVar27 + iVar3" (identifier "puVar27") (+ "+") (identifier "iVar3"))) (; ";")) (} "}")) (else_clause "else {\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (else "else") (compound_statement "{\n        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" ({ "{") (expression_statement "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60)" (parenthesized_expression "(**(code **)(pcVar25 + -0x7d50))" (( "(") (pointer_expression "**(code **)(pcVar25 + -0x7d50)" (* "*") (pointer_expression "*(code **)(pcVar25 + -0x7d50)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7d50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7d50)" (( "(") (binary_expression "pcVar25 + -0x7d50" (identifier "pcVar25") (+ "+") (number_literal "-0x7d50")) () ")"))))) () ")")) (argument_list "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7e44);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7e44)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar25 + -0x7e44)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7e44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7e44)" (( "(") (binary_expression "pcVar25 + -0x7e44" (identifier "pcVar25") (+ "+") (number_literal "-0x7e44")) () ")"))))) (; ";")) (expression_statement "unaff_s7 = puVar10 + -0x5c;" (assignment_expression "unaff_s7 = puVar10 + -0x5c" (identifier "unaff_s7") (= "=") (binary_expression "puVar10 + -0x5c" (identifier "puVar10") (+ "+") (number_literal "-0x5c"))) (; ";")) (expression_statement "*(undefined1 **)(puVar10 + -0x30) = puVar4;" (assignment_expression "*(undefined1 **)(puVar10 + -0x30) = puVar4" (pointer_expression "*(undefined1 **)(puVar10 + -0x30)" (* "*") (cast_expression "(undefined1 **)(puVar10 + -0x30)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x30)" (( "(") (binary_expression "puVar10 + -0x30" (identifier "puVar10") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "(*pcVar23)(unaff_s7,piVar8,param_3);" (call_expression "(*pcVar23)(unaff_s7,piVar8,param_3)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "(unaff_s7,piVar8,param_3)" (( "(") (identifier "unaff_s7") (, ",") (identifier "piVar8") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_2 = (int *)(puVar10 + -0x50);" (assignment_expression "param_2 = (int *)(puVar10 + -0x50)" (identifier "param_2") (= "=") (cast_expression "(int *)(puVar10 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x50)" (( "(") (binary_expression "puVar10 + -0x50" (identifier "puVar10") (+ "+") (number_literal "-0x50")) () ")")))) (; ";")) (expression_statement "*(int **)(puVar10 + -100) = piVar8 + 3;" (assignment_expression "*(int **)(puVar10 + -100) = piVar8 + 3" (pointer_expression "*(int **)(puVar10 + -100)" (* "*") (cast_expression "(int **)(puVar10 + -100)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -100)" (( "(") (binary_expression "puVar10 + -100" (identifier "puVar10") (+ "+") (number_literal "-100")) () ")")))) (= "=") (binary_expression "piVar8 + 3" (identifier "piVar8") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "piVar13 = (int *)(puVar10 + -0x44);" (assignment_expression "piVar13 = (int *)(puVar10 + -0x44)" (identifier "piVar13") (= "=") (cast_expression "(int *)(puVar10 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x44)" (( "(") (binary_expression "puVar10 + -0x44" (identifier "puVar10") (+ "+") (number_literal "-0x44")) () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7e44)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7e44)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7e44" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7e44")) () ")"))))) () ")")) (argument_list "(param_2,param_3 + 3,piVar8 + 3)" (( "(") (identifier "param_2") (, ",") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) (, ",") (binary_expression "piVar8 + 3" (identifier "piVar8") (+ "+") (number_literal "3")) () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7cf0")) () ")"))))) () ")")) (argument_list "(piVar13,piVar8,unaff_s7)" (( "(") (identifier "piVar13") (, ",") (identifier "piVar8") (, ",") (identifier "unaff_s7") () ")"))) (; ";")) (expression_statement "unaff_s1 = (int *)(puVar10 + -0x38);" (assignment_expression "unaff_s1 = (int *)(puVar10 + -0x38)" (identifier "unaff_s1") (= "=") (cast_expression "(int *)(puVar10 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x38)" (( "(") (binary_expression "puVar10 + -0x38" (identifier "puVar10") (+ "+") (number_literal "-0x38")) () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7cf0")) () ")"))))) () ")")) (argument_list "(unaff_s1,param_3 + 3,param_2)" (( "(") (identifier "unaff_s1") (, ",") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7ba8")) () ")"))))) () ")")) (argument_list "(piVar12,piVar13,unaff_s1)" (( "(") (identifier "piVar12") (, ",") (identifier "piVar13") (, ",") (identifier "unaff_s1") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7cf0")) () ")"))))) () ")")) (argument_list "(piVar13,param_3,unaff_s7)" (( "(") (identifier "piVar13") (, ",") (identifier "param_3") (, ",") (identifier "unaff_s7") () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))\n                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7cf0)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7cf0" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7cf0")) () ")"))))) () ")")) (argument_list "(unaff_s1,*(undefined4 *)(puVar10 + -100),param_2)" (( "(") (identifier "unaff_s1") (, ",") (pointer_expression "*(undefined4 *)(puVar10 + -100)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -100)" (( "(") (binary_expression "puVar10 + -100" (identifier "puVar10") (+ "+") (number_literal "-100")) () ")")))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "piVar8 = piVar13;" (assignment_expression "piVar8 = piVar13" (identifier "piVar8") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);" (call_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1)" (parenthesized_expression "(**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (* "*") (cast_expression "(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar10 + -0x70) + -0x7ba8)" (( "(") (binary_expression "*(int *)(puVar10 + -0x70) + -0x7ba8" (pointer_expression "*(int *)(puVar10 + -0x70)" (* "*") (cast_expression "(int *)(puVar10 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7ba8")) () ")"))))) () ")")) (argument_list "(piVar12 + 3,piVar13,unaff_s1)" (( "(") (binary_expression "piVar12 + 3" (identifier "piVar12") (+ "+") (number_literal "3")) (, ",") (identifier "piVar13") (, ",") (identifier "unaff_s1") () ")"))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (if_statement "if (piVar12[4] < 0) {\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" (if "if") (parenthesized_expression "(piVar12[4] < 0)" (( "(") (binary_expression "piVar12[4] < 0" (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar12[4] = -piVar12[4];\n        piVar12[1] = -piVar12[1];\n      }" ({ "{") (expression_statement "piVar12[4] = -piVar12[4];" (assignment_expression "piVar12[4] = -piVar12[4]" (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")) (= "=") (unary_expression "-piVar12[4]" (- "-") (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "piVar12[1] = -piVar12[1];" (assignment_expression "piVar12[1] = -piVar12[1]" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (unary_expression "-piVar12[1]" (- "-") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "piVar12 = *(int **)(puVar10 + -0x60);" (assignment_expression "piVar12 = *(int **)(puVar10 + -0x60)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(puVar10 + -0x60)" (* "*") (cast_expression "(int **)(puVar10 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x60)" (( "(") (binary_expression "puVar10 + -0x60" (identifier "puVar10") (+ "+") (number_literal "-0x60")) () ")"))))) (; ";")) (expression_statement "puVar4 = puVar27;" (assignment_expression "puVar4 = puVar27" (identifier "puVar4") (= "=") (identifier "puVar27")) (; ";")) (if_statement "if (piVar12 != (int *)0x0) {\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" (if "if") (parenthesized_expression "(piVar12 != (int *)0x0)" (( "(") (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(pcVar25 + -0x7a2c))();\n        pcVar25 = *(code **)(puVar10 + -0x70);\n      }" ({ "{") (expression_statement "(**(code **)(pcVar25 + -0x7a2c))();" (call_expression "(**(code **)(pcVar25 + -0x7a2c))()" (parenthesized_expression "(**(code **)(pcVar25 + -0x7a2c))" (( "(") (pointer_expression "**(code **)(pcVar25 + -0x7a2c)" (* "*") (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7a2c)" (( "(") (binary_expression "pcVar25 + -0x7a2c" (identifier "pcVar25") (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}"))) (goto_statement "goto LAB_00037f54;" (goto "goto") (statement_identifier "LAB_00037f54") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar18 = (undefined4 *)piVar14[5];" (assignment_expression "puVar18 = (undefined4 *)piVar14[5]" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)piVar14[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar14[5]" (identifier "piVar14") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)piVar14[2];" (assignment_expression "puVar2 = (undefined4 *)piVar14[2]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)piVar14[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar14[2]" (identifier "piVar14") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (piVar14 == piVar8) {\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }\n  else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" (if "if") (parenthesized_expression "(piVar14 == piVar8)" (( "(") (binary_expression "piVar14 == piVar8" (identifier "piVar14") (== "==") (identifier "piVar8")) () ")")) (compound_statement "{\n    piVar12 = (int *)0x1;\n    *puVar2 = 1;\n    piVar14[1] = 1;\n    *puVar18 = 1;\n    piVar14[4] = 1;\n  }" ({ "{") (expression_statement "piVar12 = (int *)0x1;" (assignment_expression "piVar12 = (int *)0x1" (identifier "piVar12") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar14[1] = 1;" (assignment_expression "piVar14[1] = 1" (subscript_expression "piVar14[1]" (identifier "piVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*puVar18 = 1;" (assignment_expression "*puVar18 = 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar14[4] = 1;" (assignment_expression "piVar14[4] = 1" (subscript_expression "piVar14[4]" (identifier "piVar14") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" (else "else") (compound_statement "{\n    iVar19 = *piVar12;\n    iVar15 = piVar12[3];\n    iVar3 = piVar12[4];\n    unaff_s2[2] = (int)puVar18;\n    unaff_s2[5] = (int)puVar2;\n    *unaff_s2 = iVar15;\n    unaff_s2[3] = iVar19;\n    if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);\n    unaff_s2[1] = iVar3;\n    unaff_s2[4] = (int)piVar13;\n    piVar12 = unaff_s2;\n    piVar8 = unaff_s2;\n    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);\n    pcVar25 = *(code **)(puVar10 + -0x70);\n    puVar4 = puVar10 + -0x80;\n  }" ({ "{") (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" (identifier "iVar19") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "iVar15 = piVar12[3];" (assignment_expression "iVar15 = piVar12[3]" (identifier "iVar15") (= "=") (subscript_expression "piVar12[3]" (identifier "piVar12") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" (identifier "iVar3") (= "=") (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "unaff_s2[2] = (int)puVar18;" (assignment_expression "unaff_s2[2] = (int)puVar18" (subscript_expression "unaff_s2[2]" (identifier "unaff_s2") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "unaff_s2[5] = (int)puVar2;" (assignment_expression "unaff_s2[5] = (int)puVar2" (subscript_expression "unaff_s2[5]" (identifier "unaff_s2") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2"))) (; ";")) (expression_statement "*unaff_s2 = iVar15;" (assignment_expression "*unaff_s2 = iVar15" (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2")) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "unaff_s2[3] = iVar19;" (assignment_expression "unaff_s2[3] = iVar19" (subscript_expression "unaff_s2[3]" (identifier "unaff_s2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (if_statement "if ((int)piVar13 < 1) {\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" (if "if") (parenthesized_expression "((int)piVar13 < 1)" (( "(") (binary_expression "(int)piVar13 < 1" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar3 = -iVar3;\n      piVar13 = (int *)-(int)piVar13;\n    }" ({ "{") (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" (identifier "iVar3") (= "=") (unary_expression "-iVar3" (- "-") (identifier "iVar3"))) (; ";")) (expression_statement "piVar13 = (int *)-(int)piVar13;" (assignment_expression "piVar13 = (int *)-(int)piVar13" (identifier "piVar13") (= "=") (cast_expression "(int *)-(int)piVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar13" (- "-") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))))) (; ";")) (} "}"))) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f4e8);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f4e8)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar23 + 0x5f4e8)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f4e8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f4e8)" (( "(") (binary_expression "pcVar23 + 0x5f4e8" (identifier "pcVar23") (+ "+") (number_literal "0x5f4e8")) () ")"))))) (; ";")) (expression_statement "unaff_s2[1] = iVar3;" (assignment_expression "unaff_s2[1] = iVar3" (subscript_expression "unaff_s2[1]" (identifier "unaff_s2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "unaff_s2[4] = (int)piVar13;" (assignment_expression "unaff_s2[4] = (int)piVar13" (subscript_expression "unaff_s2[4]" (identifier "unaff_s2") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13"))) (; ";")) (expression_statement "piVar12 = unaff_s2;" (assignment_expression "piVar12 = unaff_s2" (identifier "piVar12") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "piVar8 = unaff_s2;" (assignment_expression "piVar8 = unaff_s2" (identifier "piVar8") (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4);" (call_expression "(*pcVar23)(unaff_s2,unaff_s2,unaff_s4)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "(unaff_s2,unaff_s2,unaff_s4)" (( "(") (identifier "unaff_s2") (, ",") (identifier "unaff_s2") (, ",") (identifier "unaff_s4") () ")"))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar10 + -0x70);" (assignment_expression "pcVar25 = *(code **)(puVar10 + -0x70)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar10 + -0x70)" (* "*") (cast_expression "(code **)(puVar10 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x70)" (( "(") (binary_expression "puVar10 + -0x70" (identifier "puVar10") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "puVar4 = puVar10 + -0x80;" (assignment_expression "puVar4 = puVar10 + -0x80" (identifier "puVar4") (= "=") (binary_expression "puVar10 + -0x80" (identifier "puVar10") (+ "+") (number_literal "-0x80"))) (; ";")) (} "}")))) (labeled_statement "LAB_00037f54:\n  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" (statement_identifier "LAB_00037f54") (: ":") (if_statement "if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {\n    return (undefined4 *)*piVar20;\n  }" (if "if") (parenthesized_expression "(*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20)" (( "(") (binary_expression "*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20" (pointer_expression "*(undefined4 **)(puVar10 + -0x2c)" (* "*") (cast_expression "(undefined4 **)(puVar10 + -0x2c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + -0x2c)" (( "(") (binary_expression "puVar10 + -0x2c" (identifier "puVar10") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (cast_expression "(undefined4 *)*piVar20" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar20" (* "*") (identifier "piVar20")))) () ")")) (compound_statement "{\n    return (undefined4 *)*piVar20;\n  }" ({ "{") (return_statement "return (undefined4 *)*piVar20;" (return "return") (cast_expression "(undefined4 *)*piVar20" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (} "}")))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar25 + -0x7b70)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7b70)" (( "(") (binary_expression "pcVar25 + -0x7b70" (identifier "pcVar25") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "pcVar29 = __gmpq_get_d;" (assignment_expression "pcVar29 = __gmpq_get_d" (identifier "pcVar29") (= "=") (identifier "__gmpq_get_d")) (; ";")) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar25 = pcVar23 + 0x66f70;" (assignment_expression "pcVar25 = pcVar23 + 0x66f70" (identifier "pcVar25") (= "=") (binary_expression "pcVar23 + 0x66f70" (identifier "pcVar23") (+ "+") (number_literal "0x66f70"))) (; ";")) (expression_statement "puVar27 = puVar4 + -0x70;" (assignment_expression "puVar27 = puVar4 + -0x70" (identifier "puVar27") (= "=") (binary_expression "puVar4 + -0x70" (identifier "puVar4") (+ "+") (number_literal "-0x70"))) (; ";")) (expression_statement "puVar28 = puVar4 + -0x70;" (assignment_expression "puVar28 = puVar4 + -0x70" (identifier "puVar28") (= "=") (binary_expression "puVar4 + -0x70" (identifier "puVar4") (+ "+") (number_literal "-0x70"))) (; ";")) (expression_statement "*(int **)(puVar4 + -0x14) = piVar20;" (assignment_expression "*(int **)(puVar4 + -0x14) = piVar20" (pointer_expression "*(int **)(puVar4 + -0x14)" (* "*") (cast_expression "(int **)(puVar4 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x14)" (( "(") (binary_expression "puVar4 + -0x14" (identifier "puVar4") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "piVar20")) (; ";")) (expression_statement "*(int **)(puVar4 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar4 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar4 + -0x18)" (* "*") (cast_expression "(int **)(puVar4 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x18)" (( "(") (binary_expression "puVar4 + -0x18" (identifier "puVar4") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "piVar14 = *(int **)(pcVar23 + 0x5f470);" (assignment_expression "piVar14 = *(int **)(pcVar23 + 0x5f470)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(pcVar23 + 0x5f470)" (* "*") (cast_expression "(int **)(pcVar23 + 0x5f470)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f470)" (( "(") (binary_expression "pcVar23 + 0x5f470" (identifier "pcVar23") (+ "+") (number_literal "0x5f470")) () ")"))))) (; ";")) (expression_statement "iVar19 = piVar12[1];" (assignment_expression "iVar19 = piVar12[1]" (identifier "iVar19") (= "=") (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;" (assignment_expression "*(undefined1 **)(puVar4 + -8) = puVar10 + -0x80" (pointer_expression "*(undefined1 **)(puVar4 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar4 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -8)" (( "(") (binary_expression "puVar4 + -8" (identifier "puVar4") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar10 + -0x80" (identifier "puVar10") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "*(int **)(puVar4 + -0x20) = unaff_s2;" (assignment_expression "*(int **)(puVar4 + -0x20) = unaff_s2" (pointer_expression "*(int **)(puVar4 + -0x20)" (* "*") (cast_expression "(int **)(puVar4 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x20)" (( "(") (binary_expression "puVar4 + -0x20" (identifier "puVar4") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(code **)(puVar4 + -4) = pcVar29;" (assignment_expression "*(code **)(puVar4 + -4) = pcVar29" (pointer_expression "*(code **)(puVar4 + -4)" (* "*") (cast_expression "(code **)(puVar4 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -4)" (( "(") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar29")) (; ";")) (expression_statement "*(undefined1 **)(puVar4 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar4 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar4 + -0xc)" (* "*") (cast_expression "(undefined1 **)(puVar4 + -0xc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0xc)" (( "(") (binary_expression "puVar4 + -0xc" (identifier "puVar4") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(int **)(puVar4 + -0x10) = param_2;" (assignment_expression "*(int **)(puVar4 + -0x10) = param_2" (pointer_expression "*(int **)(puVar4 + -0x10)" (* "*") (cast_expression "(int **)(puVar4 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x10)" (( "(") (binary_expression "puVar4 + -0x10" (identifier "puVar4") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int **)(puVar4 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar4 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar4 + -0x1c)" (* "*") (cast_expression "(int **)(puVar4 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x1c)" (( "(") (binary_expression "puVar4 + -0x1c" (identifier "puVar4") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(int **)(puVar4 + -0x24) = unaff_s1;" (assignment_expression "*(int **)(puVar4 + -0x24) = unaff_s1" (pointer_expression "*(int **)(puVar4 + -0x24)" (* "*") (cast_expression "(int **)(puVar4 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x24)" (( "(") (binary_expression "puVar4 + -0x24" (identifier "puVar4") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(int **)(puVar4 + -0x28) = piVar13;" (assignment_expression "*(int **)(puVar4 + -0x28) = piVar13" (pointer_expression "*(int **)(puVar4 + -0x28)" (* "*") (cast_expression "(int **)(puVar4 + -0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x28)" (( "(") (binary_expression "puVar4 + -0x28" (identifier "puVar4") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "*(code **)(puVar4 + -0x50) = pcVar25;" (assignment_expression "*(code **)(puVar4 + -0x50) = pcVar25" (pointer_expression "*(code **)(puVar4 + -0x50)" (* "*") (cast_expression "(code **)(puVar4 + -0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x50)" (( "(") (binary_expression "puVar4 + -0x50" (identifier "puVar4") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "pcVar25")) (; ";")) (expression_statement "iVar3 = piVar12[4];" (assignment_expression "iVar3 = piVar12[4]" (identifier "iVar3") (= "=") (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(int *)(puVar4 + -0x2c) = *piVar14;" (assignment_expression "*(int *)(puVar4 + -0x2c) = *piVar14" (pointer_expression "*(int *)(puVar4 + -0x2c)" (* "*") (cast_expression "(int *)(puVar4 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x2c)" (( "(") (binary_expression "puVar4 + -0x2c" (identifier "puVar4") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (if_statement "if (iVar19 != 0) {\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(puVar4 + -0x40) = 0;\n    iVar15 = iVar19;\n    if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }\n    if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }\n    puVar2 = (undefined4 *)piVar12[2];\n    iVar21 = piVar12[5];\n    iVar5 = 3 - (iVar15 - iVar3);\n    piVar13 = (int *)(iVar5 * -0x20);\n    iVar11 = iVar15;\n    iVar17 = iVar5;\n    if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }\n    iVar15 = iVar15 + iVar5;\n    iVar5 = iVar3;\n    if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }\n    pcVar23 = *(code **)(pcVar23 + 0x5f220);\n    if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }\n    puVar18 = puVar2;\n    iVar5 = iVar11;\n    if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }\n    pcVar23 = *(code **)(pcVar25 + -0x7a30);\n    unaff_s1 = (int *)(puVar4 + -0x3c);\n    *(int *)(puVar28 + 0x18) = iVar3;\n    *(int *)(puVar28 + 0x14) = iVar21;\n    *(int *)(puVar28 + 0x10) = iVar5;\n    (*pcVar23)(unaff_s1,puVar10,0,puVar18);\n    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));\n    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);\n    piVar12 = *(int **)(puVar4 + -0x40);\n    pcVar25 = *(code **)(puVar4 + -0x50);\n    puVar27 = puVar28;\n    if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar4 + -0x40) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x40) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x40)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x40)" (( "(") (binary_expression "puVar4 + -0x40" (identifier "puVar4") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = iVar19;" (assignment_expression "iVar15 = iVar19" (identifier "iVar15") (= "=") (identifier "iVar19")) (; ";")) (if_statement "if (iVar19 < 0) {\n      iVar15 = -iVar19;\n    }" (if "if") (parenthesized_expression "(iVar19 < 0)" (( "(") (binary_expression "iVar19 < 0" (identifier "iVar19") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar15 = -iVar19;\n    }" ({ "{") (expression_statement "iVar15 = -iVar19;" (assignment_expression "iVar15 = -iVar19" (identifier "iVar15") (= "=") (unary_expression "-iVar19" (- "-") (identifier "iVar19"))) (; ";")) (} "}"))) (if_statement "if (iVar3 < 0) {\n      iVar3 = -iVar3;\n    }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = -iVar3;\n    }" ({ "{") (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" (identifier "iVar3") (= "=") (unary_expression "-iVar3" (- "-") (identifier "iVar3"))) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)piVar12[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar21 = piVar12[5];" (assignment_expression "iVar21 = piVar12[5]" (identifier "iVar21") (= "=") (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar5 = 3 - (iVar15 - iVar3);" (assignment_expression "iVar5 = 3 - (iVar15 - iVar3)" (identifier "iVar5") (= "=") (binary_expression "3 - (iVar15 - iVar3)" (number_literal "3") (- "-") (parenthesized_expression "(iVar15 - iVar3)" (( "(") (binary_expression "iVar15 - iVar3" (identifier "iVar15") (- "-") (identifier "iVar3")) () ")")))) (; ";")) (expression_statement "piVar13 = (int *)(iVar5 * -0x20);" (assignment_expression "piVar13 = (int *)(iVar5 * -0x20)" (identifier "piVar13") (= "=") (cast_expression "(int *)(iVar5 * -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 * -0x20)" (( "(") (binary_expression "iVar5 * -0x20" (identifier "iVar5") (* "*") (number_literal "-0x20")) () ")")))) (; ";")) (expression_statement "iVar11 = iVar15;" (assignment_expression "iVar11 = iVar15" (identifier "iVar11") (= "=") (identifier "iVar15")) (; ";")) (expression_statement "iVar17 = iVar5;" (assignment_expression "iVar17 = iVar5" (identifier "iVar17") (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 < 0) {\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar17 = (iVar15 - iVar3) + -3;\n      puVar2 = puVar2 + iVar17;\n      iVar11 = iVar15 - iVar17;\n      iVar17 = iVar5 + iVar17;\n    }" ({ "{") (expression_statement "iVar17 = (iVar15 - iVar3) + -3;" (assignment_expression "iVar17 = (iVar15 - iVar3) + -3" (identifier "iVar17") (= "=") (binary_expression "(iVar15 - iVar3) + -3" (parenthesized_expression "(iVar15 - iVar3)" (( "(") (binary_expression "iVar15 - iVar3" (identifier "iVar15") (- "-") (identifier "iVar3")) () ")")) (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "puVar2 = puVar2 + iVar17;" (assignment_expression "puVar2 = puVar2 + iVar17" (identifier "puVar2") (= "=") (binary_expression "puVar2 + iVar17" (identifier "puVar2") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "iVar11 = iVar15 - iVar17;" (assignment_expression "iVar11 = iVar15 - iVar17" (identifier "iVar11") (= "=") (binary_expression "iVar15 - iVar17" (identifier "iVar15") (- "-") (identifier "iVar17"))) (; ";")) (expression_statement "iVar17 = iVar5 + iVar17;" (assignment_expression "iVar17 = iVar5 + iVar17" (identifier "iVar17") (= "=") (binary_expression "iVar5 + iVar17" (identifier "iVar5") (+ "+") (identifier "iVar17"))) (; ";")) (} "}"))) (expression_statement "iVar15 = iVar15 + iVar5;" (assignment_expression "iVar15 = iVar15 + iVar5" (identifier "iVar15") (= "=") (binary_expression "iVar15 + iVar5" (identifier "iVar15") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "iVar5 = iVar3;" (assignment_expression "iVar5 = iVar3" (identifier "iVar5") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (0 < iVar17) {\n      iVar5 = iVar3 + iVar15;\n    }" (if "if") (parenthesized_expression "(0 < iVar17)" (( "(") (binary_expression "0 < iVar17" (number_literal "0") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n      iVar5 = iVar3 + iVar15;\n    }" ({ "{") (expression_statement "iVar5 = iVar3 + iVar15;" (assignment_expression "iVar5 = iVar3 + iVar15" (identifier "iVar5") (= "=") (binary_expression "iVar3 + iVar15" (identifier "iVar3") (+ "+") (identifier "iVar15"))) (; ";")) (} "}"))) (expression_statement "pcVar23 = *(code **)(pcVar23 + 0x5f220);" (assignment_expression "pcVar23 = *(code **)(pcVar23 + 0x5f220)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar23 + 0x5f220)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f220)" (( "(") (binary_expression "pcVar23 + 0x5f220" (identifier "pcVar23") (+ "+") (number_literal "0x5f220")) () ")"))))) (; ";")) (if_statement "if ((uint)(iVar5 * 4) < 0x7f01) {\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }\n    else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" (if "if") (parenthesized_expression "((uint)(iVar5 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar5 * 4) < 0x7f01" (call_expression "(uint)(iVar5 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 * 4)" (( "(") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);\n      puVar28 = puVar4 + iVar5 + -0x70;\n      puVar10 = puVar4 + iVar5 + -0x50;\n    }" ({ "{") (expression_statement "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8)" (identifier "iVar5") (= "=") (unary_expression "-(iVar5 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar5 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar5 * 4 + 7U & 0xfffffff8" (binary_expression "iVar5 * 4 + 7U" (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar28 = puVar4 + iVar5 + -0x70;" (assignment_expression "puVar28 = puVar4 + iVar5 + -0x70" (identifier "puVar28") (= "=") (binary_expression "puVar4 + iVar5 + -0x70" (binary_expression "puVar4 + iVar5" (identifier "puVar4") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0x70"))) (; ";")) (expression_statement "puVar10 = puVar4 + iVar5 + -0x50;" (assignment_expression "puVar10 = puVar4 + iVar5 + -0x50" (identifier "puVar10") (= "=") (binary_expression "puVar4 + iVar5 + -0x50" (binary_expression "puVar4 + iVar5" (identifier "puVar4") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0x50"))) (; ";")) (} "}")) (else_clause "else {\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" (else "else") (compound_statement "{\n      *(int *)(puVar4 + -0x48) = iVar11;\n      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);\n      pcVar25 = *(code **)(puVar4 + -0x50);\n      iVar11 = *(int *)(puVar4 + -0x48);\n    }" ({ "{") (expression_statement "*(int *)(puVar4 + -0x48) = iVar11;" (assignment_expression "*(int *)(puVar4 + -0x48) = iVar11" (pointer_expression "*(int *)(puVar4 + -0x48)" (* "*") (cast_expression "(int *)(puVar4 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x48)" (( "(") (binary_expression "puVar4 + -0x48" (identifier "puVar4") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);" (assignment_expression "puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40)" (identifier "puVar10") (= "=") (cast_expression "(undefined1 *)(*pcVar23)(puVar4 + -0x40)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar23)(puVar4 + -0x40)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "(puVar4 + -0x40)" (( "(") (binary_expression "puVar4 + -0x40" (identifier "puVar4") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar4 + -0x50)" (* "*") (cast_expression "(code **)(puVar4 + -0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x50)" (( "(") (binary_expression "puVar4 + -0x50" (identifier "puVar4") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar4 + -0x48);" (assignment_expression "iVar11 = *(int *)(puVar4 + -0x48)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar4 + -0x48)" (* "*") (cast_expression "(int *)(puVar4 + -0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x48)" (( "(") (binary_expression "puVar4 + -0x48" (identifier "puVar4") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" (identifier "puVar18") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "iVar5 = iVar11;" (assignment_expression "iVar5 = iVar11" (identifier "iVar5") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (0 < iVar17) {\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" (if "if") (parenthesized_expression "(0 < iVar17)" (( "(") (binary_expression "0 < iVar17" (number_literal "0") (< "<") (identifier "iVar17")) () ")")) (compound_statement "{\n      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);\n      puVar7 = puVar18;\n      iVar5 = iVar17;\n      do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);\n      iVar5 = iVar15;\n      if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }\n    }" ({ "{") (expression_statement "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);" (assignment_expression "puVar18 = (undefined4 *)(puVar10 + iVar3 * 4)" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)(puVar10 + iVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + iVar3 * 4)" (( "(") (binary_expression "puVar10 + iVar3 * 4" (identifier "puVar10") (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar7 = puVar18;" (assignment_expression "puVar7 = puVar18" (identifier "puVar7") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "iVar5 = iVar17;" (assignment_expression "iVar5 = iVar17" (identifier "iVar5") (= "=") (identifier "iVar17")) (; ";")) (do_statement "do {\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      } while (iVar5 != 0);" (do "do") (compound_statement "{\n        iVar5 = iVar5 + -1;\n        *puVar7 = 0;\n        puVar7 = puVar7 + 1;\n      }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar5 = iVar15;" (assignment_expression "iVar5 = iVar15" (identifier "iVar5") (= "=") (identifier "iVar15")) (; ";")) (if_statement "if (iVar11 != 0) {\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar30 = *puVar2;\n        iVar15 = iVar11 + -1;\n        puVar16 = puVar18 + iVar17;\n        puVar7 = puVar16;\n        if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }\n        *puVar16 = uVar30;\n      }" ({ "{") (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" (identifier "uVar30") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "iVar15 = iVar11 + -1;" (assignment_expression "iVar15 = iVar11 + -1" (identifier "iVar15") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar16 = puVar18 + iVar17;" (assignment_expression "puVar16 = puVar18 + iVar17" (identifier "puVar16") (= "=") (binary_expression "puVar18 + iVar17" (identifier "puVar18") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" (identifier "puVar7") (= "=") (identifier "puVar16")) (; ";")) (if_statement "if (iVar15 != 0) {\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);\n          puVar16 = puVar16 + iVar11 + -1;\n        }" ({ "{") (do_statement "do {\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          } while (iVar15 != 0);" (do "do") (compound_statement "{\n            puVar2 = puVar2 + 1;\n            *puVar7 = uVar30;\n            iVar15 = iVar15 + -1;\n            uVar30 = *puVar2;\n            puVar7 = puVar7 + 1;\n          }" ({ "{") (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar30;" (assignment_expression "*puVar7 = uVar30" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar30 = *puVar2;" (assignment_expression "uVar30 = *puVar2" (identifier "uVar30") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar16 = puVar16 + iVar11 + -1;" (assignment_expression "puVar16 = puVar16 + iVar11 + -1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + iVar11 + -1" (binary_expression "puVar16 + iVar11" (identifier "puVar16") (+ "+") (identifier "iVar11")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puVar16 = uVar30;" (assignment_expression "*puVar16 = uVar30" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar30")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a30);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a30)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar25 + -0x7a30)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7a30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7a30)" (( "(") (binary_expression "pcVar25 + -0x7a30" (identifier "pcVar25") (+ "+") (number_literal "-0x7a30")) () ")"))))) (; ";")) (expression_statement "unaff_s1 = (int *)(puVar4 + -0x3c);" (assignment_expression "unaff_s1 = (int *)(puVar4 + -0x3c)" (identifier "unaff_s1") (= "=") (cast_expression "(int *)(puVar4 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x3c)" (( "(") (binary_expression "puVar4 + -0x3c" (identifier "puVar4") (+ "+") (number_literal "-0x3c")) () ")")))) (; ";")) (expression_statement "*(int *)(puVar28 + 0x18) = iVar3;" (assignment_expression "*(int *)(puVar28 + 0x18) = iVar3" (pointer_expression "*(int *)(puVar28 + 0x18)" (* "*") (cast_expression "(int *)(puVar28 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x18)" (( "(") (binary_expression "puVar28 + 0x18" (identifier "puVar28") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int *)(puVar28 + 0x14) = iVar21;" (assignment_expression "*(int *)(puVar28 + 0x14) = iVar21" (pointer_expression "*(int *)(puVar28 + 0x14)" (* "*") (cast_expression "(int *)(puVar28 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x14)" (( "(") (binary_expression "puVar28 + 0x14" (identifier "puVar28") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "*(int *)(puVar28 + 0x10) = iVar5;" (assignment_expression "*(int *)(puVar28 + 0x10) = iVar5" (pointer_expression "*(int *)(puVar28 + 0x10)" (* "*") (cast_expression "(int *)(puVar28 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x10)" (( "(") (binary_expression "puVar28 + 0x10" (identifier "puVar28") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "(*pcVar23)(unaff_s1,puVar10,0,puVar18);" (call_expression "(*pcVar23)(unaff_s1,puVar10,0,puVar18)" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "(unaff_s1,puVar10,0,puVar18)" (( "(") (identifier "unaff_s1") (, ",") (identifier "puVar10") (, ",") (number_literal "0") (, ",") (identifier "puVar18") () ")"))) (; ";")) (expression_statement "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));" (assignment_expression "piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" (identifier "piVar8") (= "=") (cast_expression "(int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(4 - (uint)(*(int *)(puVar4 + -0x30) == 0))" (( "(") (binary_expression "4 - (uint)(*(int *)(puVar4 + -0x30) == 0)" (number_literal "4") (- "-") (call_expression "(uint)(*(int *)(puVar4 + -0x30) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(puVar4 + -0x30) == 0)" (( "(") (binary_expression "*(int *)(puVar4 + -0x30) == 0" (pointer_expression "*(int *)(puVar4 + -0x30)" (* "*") (cast_expression "(int *)(puVar4 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x30)" (( "(") (binary_expression "puVar4 + -0x30" (identifier "puVar4") (+ "+") (number_literal "-0x30")) () ")")))) (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);" (assignment_expression "uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" (identifier "uVar31") (= "=") (call_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13)" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" (* "*") (cast_expression "(code **)(*(int *)(puVar4 + -0x50) + -0x7a48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar4 + -0x50) + -0x7a48)" (( "(") (binary_expression "*(int *)(puVar4 + -0x50) + -0x7a48" (pointer_expression "*(int *)(puVar4 + -0x50)" (* "*") (cast_expression "(int *)(puVar4 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x50)" (( "(") (binary_expression "puVar4 + -0x50" (identifier "puVar4") (+ "+") (number_literal "-0x50")) () ")")))) (+ "+") (number_literal "-0x7a48")) () ")"))))) () ")")) (argument_list "(unaff_s1,piVar8,iVar19,piVar13)" (( "(") (identifier "unaff_s1") (, ",") (identifier "piVar8") (, ",") (identifier "iVar19") (, ",") (identifier "piVar13") () ")")))) (; ";")) (expression_statement "piVar12 = *(int **)(puVar4 + -0x40);" (assignment_expression "piVar12 = *(int **)(puVar4 + -0x40)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(puVar4 + -0x40)" (* "*") (cast_expression "(int **)(puVar4 + -0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x40)" (( "(") (binary_expression "puVar4 + -0x40" (identifier "puVar4") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar4 + -0x50)" (* "*") (cast_expression "(code **)(puVar4 + -0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x50)" (( "(") (binary_expression "puVar4 + -0x50" (identifier "puVar4") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "puVar27 = puVar28;" (assignment_expression "puVar27 = puVar28" (identifier "puVar27") (= "=") (identifier "puVar28")) (; ";")) (if_statement "if (piVar12 != (int *)0x0) {\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" (if "if") (parenthesized_expression "(piVar12 != (int *)0x0)" (( "(") (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar23 = *(code **)(pcVar25 + -0x7a2c);\n      *(undefined8 *)(puVar4 + -0x48) = uVar31;\n      (*pcVar23)();\n      pcVar25 = *(code **)(puVar4 + -0x50);\n    }" ({ "{") (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7a2c);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7a2c)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar25 + -0x7a2c)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7a2c)" (( "(") (binary_expression "pcVar25 + -0x7a2c" (identifier "pcVar25") (+ "+") (number_literal "-0x7a2c")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar4 + -0x48) = uVar31;" (assignment_expression "*(undefined8 *)(puVar4 + -0x48) = uVar31" (pointer_expression "*(undefined8 *)(puVar4 + -0x48)" (* "*") (cast_expression "(undefined8 *)(puVar4 + -0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x48)" (( "(") (binary_expression "puVar4 + -0x48" (identifier "puVar4") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "uVar31")) (; ";")) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar25 = *(code **)(puVar4 + -0x50);" (assignment_expression "pcVar25 = *(code **)(puVar4 + -0x50)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar4 + -0x50)" (* "*") (cast_expression "(code **)(puVar4 + -0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x50)" (( "(") (binary_expression "puVar4 + -0x50" (identifier "puVar4") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar2 = (undefined4 *)*piVar14;" (assignment_expression "puVar2 = (undefined4 *)*piVar14" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*piVar14" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar14" (* "*") (identifier "piVar14")))) (; ";")) (expression_statement "pcVar23 = *(code **)(pcVar25 + -0x7b70);" (assignment_expression "pcVar23 = *(code **)(pcVar25 + -0x7b70)" (identifier "pcVar23") (= "=") (pointer_expression "*(code **)(pcVar25 + -0x7b70)" (* "*") (cast_expression "(code **)(pcVar25 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + -0x7b70)" (( "(") (binary_expression "pcVar25 + -0x7b70" (identifier "pcVar25") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (if_statement "if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" (if "if") (parenthesized_expression "(*(undefined4 **)(puVar4 + -0x2c) != puVar2)" (( "(") (binary_expression "*(undefined4 **)(puVar4 + -0x2c) != puVar2" (pointer_expression "*(undefined4 **)(puVar4 + -0x2c)" (* "*") (cast_expression "(undefined4 **)(puVar4 + -0x2c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + -0x2c)" (( "(") (binary_expression "puVar4 + -0x2c" (identifier "puVar4") (+ "+") (number_literal "-0x2c")) () ")")))) (!= "!=") (identifier "puVar2")) () ")")) (compound_statement "{\n    uVar30 = 0x3831c;\n    (*pcVar23)();\n    iVar19 = *piVar12;\n    *(int **)(puVar27 + -0x10) = piVar13;\n    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;\n    *(int *)(puVar27 + -8) = iVar3;\n    *(int **)(puVar27 + -0xc) = unaff_s1;\n    *(undefined4 *)(puVar27 + -4) = uVar30;\n    iVar3 = piVar8[4];\n    if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }\n    piVar12[1] = iVar3;\n    if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }\n    return puVar2;\n  }" ({ "{") (expression_statement "uVar30 = 0x3831c;" (assignment_expression "uVar30 = 0x3831c" (identifier "uVar30") (= "=") (number_literal "0x3831c")) (; ";")) (expression_statement "(*pcVar23)();" (call_expression "(*pcVar23)()" (parenthesized_expression "(*pcVar23)" (( "(") (pointer_expression "*pcVar23" (* "*") (identifier "pcVar23")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" (identifier "iVar19") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (expression_statement "*(int **)(puVar27 + -0x10) = piVar13;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar13" (pointer_expression "*(int **)(puVar27 + -0x10)" (* "*") (cast_expression "(int **)(puVar27 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x10)" (( "(") (binary_expression "puVar27 + -0x10" (identifier "puVar27") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;" (assignment_expression "*(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20" (pointer_expression "*(code **)(puVar27 + -0x18)" (* "*") (cast_expression "(code **)(puVar27 + -0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x18)" (( "(") (binary_expression "puVar27 + -0x18" (identifier "puVar27") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (binary_expression "pcVar23 + 0x66d20" (identifier "pcVar23") (+ "+") (number_literal "0x66d20"))) (; ";")) (expression_statement "*(int *)(puVar27 + -8) = iVar3;" (assignment_expression "*(int *)(puVar27 + -8) = iVar3" (pointer_expression "*(int *)(puVar27 + -8)" (* "*") (cast_expression "(int *)(puVar27 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -8)" (( "(") (binary_expression "puVar27 + -8" (identifier "puVar27") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s1;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s1" (pointer_expression "*(int **)(puVar27 + -0xc)" (* "*") (cast_expression "(int **)(puVar27 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0xc)" (( "(") (binary_expression "puVar27 + -0xc" (identifier "puVar27") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar30;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar30" (pointer_expression "*(undefined4 *)(puVar27 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -4)" (( "(") (binary_expression "puVar27 + -4" (identifier "puVar27") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "iVar3 = piVar8[4];" (assignment_expression "iVar3 = piVar8[4]" (identifier "iVar3") (= "=") (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar19 < iVar3) {\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }\n    else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" (if "if") (parenthesized_expression "(iVar19 < iVar3)" (( "(") (binary_expression "iVar19 < iVar3" (identifier "iVar19") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();" (assignment_expression "puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)(**(code **)(pcVar23 + 0x5f29c))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar23 + 0x5f29c))()" (parenthesized_expression "(**(code **)(pcVar23 + 0x5f29c))" (( "(") (pointer_expression "**(code **)(pcVar23 + 0x5f29c)" (* "*") (pointer_expression "*(code **)(pcVar23 + 0x5f29c)" (* "*") (cast_expression "(code **)(pcVar23 + 0x5f29c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar23 + 0x5f29c)" (( "(") (binary_expression "pcVar23 + 0x5f29c" (identifier "pcVar23") (+ "+") (number_literal "0x5f29c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      puVar2 = (undefined4 *)piVar12[2];\n    }" (else "else") (compound_statement "{\n      puVar2 = (undefined4 *)piVar12[2];\n    }" ({ "{") (expression_statement "puVar2 = (undefined4 *)piVar12[2];" (assignment_expression "puVar2 = (undefined4 *)piVar12[2]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)piVar12[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (expression_statement "piVar12[1] = iVar3;" (assignment_expression "piVar12[1] = iVar3" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 != 0) {\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar7 = (undefined4 *)piVar8[5];\n      iVar19 = iVar3 + -1;\n      uVar30 = *puVar7;\n      puVar18 = puVar2;\n      if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }\n      *puVar2 = uVar30;\n    }" ({ "{") (expression_statement "puVar7 = (undefined4 *)piVar8[5];" (assignment_expression "puVar7 = (undefined4 *)piVar8[5]" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)piVar8[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[5]" (identifier "piVar8") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "iVar19 = iVar3 + -1;" (assignment_expression "iVar19 = iVar3 + -1" (identifier "iVar19") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" (identifier "uVar30") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar18 = puVar2;" (assignment_expression "puVar18 = puVar2" (identifier "puVar18") (= "=") (identifier "puVar2")) (; ";")) (if_statement "if (iVar19 != 0) {\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);\n        puVar2 = puVar2 + iVar3 + -1;\n      }" ({ "{") (do_statement "do {\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        } while (iVar19 != 0);" (do "do") (compound_statement "{\n          puVar7 = puVar7 + 1;\n          *puVar18 = uVar30;\n          iVar19 = iVar19 + -1;\n          uVar30 = *puVar7;\n          puVar18 = puVar18 + 1;\n        }" ({ "{") (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar18 = uVar30;" (assignment_expression "*puVar18 = uVar30" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar30 = *puVar7;" (assignment_expression "uVar30 = *puVar7" (identifier "uVar30") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar2 = puVar2 + iVar3 + -1;" (assignment_expression "puVar2 = puVar2 + iVar3 + -1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + iVar3 + -1" (binary_expression "puVar2 + iVar3" (identifier "puVar2") (+ "+") (identifier "iVar3")) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puVar2 = uVar30;" (assignment_expression "*puVar2 = uVar30" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "uVar30")) (; ";")) (} "}"))) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}"))) (return_statement "return puVar2;" (return "return") (identifier "puVar2") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (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 declarator: (abstract_pointer_declarator))) 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 (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: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) 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: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))))))) (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 declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement (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: (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: (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))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (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 (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (do_statement body: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (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: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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))))))) (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: (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 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))) (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))) (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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: (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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (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: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (number_literal) right: (identifier))) 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))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (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: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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 (identifier) (binary_expression left: (identifier) right: (number_literal)) (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 (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (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 (identifier) (binary_expression left: (identifier) right: (number_literal)) (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: (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) (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: (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) (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: (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) (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)))) (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: (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 (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (unary_expression argument: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (unary_expression argument: (subscript_expression argument: (identifier) index: (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))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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 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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_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: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (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: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) alternative: (else_clause (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: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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 (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (number_literal) (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: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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))))))))) (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: (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) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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)) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (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)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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 (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: (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: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (return_statement (identifier)))) (return_statement (identifier)))))

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

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined1 *puVar4;
  int iVar5;
  int *piVar6;
  undefined4 *puVar7;
  int *piVar8;
  uint uVar9;
  undefined1 *puVar10;
  int iVar11;
  int *piVar12;
  int *piVar13;
  int *unaff_s1;
  int *piVar14;
  int iVar15;
  undefined4 *puVar16;
  int iVar17;
  int *unaff_s2;
  undefined4 *puVar18;
  int *unaff_s4;
  int iVar19;
  int *unaff_s5;
  int *piVar20;
  int *unaff_s6;
  int iVar21;
  undefined1 *unaff_s7;
  undefined *puVar22;
  code *pcVar23;
  undefined *puVar24;
  code *pcVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined1 *puVar28;
  code *pcVar29;
  undefined4 uVar30;
  undefined8 uVar31;
  undefined1 auStack_88 [16];
  undefined *apuStack_78 [2];
  int iStack_70;
  int *piStack_6c;
  undefined *puStack_64;
  undefined1 auStack_24 [4];
  int local_20;
  undefined4 local_1c;
  undefined4 local_14;
  undefined4 local_10;
  int *local_c;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  local_c = *(int **)PTR___stack_chk_guard_00097540;
  if ((int)param_2 < 0) {
    if (*(int *)(param_1 + 4) < 0) {
      local_1c = *(undefined4 *)(param_1 + 8);
      local_14 = *(undefined4 *)(param_1 + 0x10);
      param_2 = (int *)-(int)param_2;
      local_10 = *(undefined4 *)(param_1 + 0x14);
      local_20 = -*(int *)(param_1 + 4);
      iVar3 = (*(code *)PTR___gmpq_cmp_ui_0009760c)(auStack_24);
      puVar2 = (undefined4 *)-iVar3;
    }
    else {
      puVar2 = (undefined4 *)0x1;
    }
  }
  else {
    puVar2 = (undefined4 *)(*(code *)PTR___gmpq_cmp_ui_0009760c)();
  }
  if (local_c == *(int **)puVar1) {
    return puVar2;
  }
  piVar13 = local_c;
  puVar22 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar24 = puVar22 + 0x67550;
  puVar10 = auStack_88;
  puVar26 = auStack_88;
  puVar18 = *(undefined4 **)(puVar22 + 0x5fa50);
  puStack_64 = puVar1;
  piStack_6c = (int *)*puVar18;
  puVar2 = (undefined4 *)piVar13[1];
  pcVar23 = *(code **)(puVar22 + 0x5faec);
  apuStack_78[0] = puVar24;
  if (param_3 == (int *)0x0) {
    (*pcVar23)();
    piVar8 = param_2;
    param_2 = unaff_s6;
LAB_00037c9c:
    (*pcVar23)();
    puVar24 = apuStack_78[0];
  }
  else {
    piVar8 = param_2;
    puVar10 = auStack_88;
    if (param_2 != (int *)0x0) {
      if ((int)puVar2 < 1) {
        puVar2 = (undefined4 *)0xffffffff;
        puVar10 = auStack_88;
      }
      else {
        unaff_s5 = (int *)piVar13[4];
        piVar8 = (int *)((int)unaff_s5 + 1);
        unaff_s4 = piVar13;
        puVar10 = auStack_88;
        if ((int)puVar2 <= (int)piVar8) {
          unaff_s1 = (int *)((int)puVar2 + 1);
          if ((int)unaff_s1 < (int)unaff_s5) {
            puVar2 = (undefined4 *)-(int)puVar2;
            piVar8 = (int *)((int)piVar8 + (int)unaff_s1);
            puVar10 = auStack_88;
          }
          else {
            uVar9 = ((int)piVar8 + (int)unaff_s1) * 4;
            iStack_70 = 0;
            if (uVar9 < 0x7f01) {
              iVar3 = -(uVar9 + 7 & 0xfffffff8);
              puVar26 = auStack_88 + iVar3;
              unaff_s2 = (int *)((int)apuStack_78 + iVar3);
            }
            else {
              unaff_s2 = (int *)(**(code **)(puVar22 + 0x5f800))(&iStack_70);
            }
            iVar3 = (**(code **)(apuStack_78[0] + -0x7f9c))(unaff_s2,piVar13[2],puVar2,param_3);
            puVar1 = apuStack_78[0];
            unaff_s1 = unaff_s2 + (int)unaff_s1;
            piVar8 = (int *)piVar13[5];
            unaff_s1[-1] = iVar3;
            piVar12 = (int *)((uint)(iVar3 != 0) + (int)puVar2);
            param_3 = unaff_s5;
            iVar3 = (**(code **)(puVar1 + -0x7f9c))(unaff_s1,piVar8,unaff_s5,param_2);
            puVar24 = apuStack_78[0];
            piVar13 = unaff_s1 + (int)unaff_s5;
            unaff_s5 = (int *)((uint)(iVar3 != 0) + (int)unaff_s5);
            *piVar13 = iVar3;
            if (piVar12 == unaff_s5) {
              param_3 = (int *)0xffffffff;
              piVar14 = unaff_s2 + (int)piVar12;
              piVar13 = unaff_s1 + (int)piVar12;
              do {
                piVar12 = (int *)((int)piVar12 + -1);
                piVar13 = piVar13 + -1;
                if (piVar12 == (int *)0xffffffff) {
                  puVar2 = (undefined4 *)0x0;
                  goto LAB_00037c04;
                }
                piVar20 = piVar14 + -1;
                piVar8 = (int *)*piVar13;
                piVar14 = piVar14 + -1;
              } while ((int *)*piVar20 == piVar8);
              puVar2 = (undefined4 *)0xffffffff;
              if (piVar8 < (int *)*piVar20) {
                puVar2 = (undefined4 *)0x1;
              }
            }
            else {
              puVar2 = (undefined4 *)((int)piVar12 - (int)unaff_s5);
            }
LAB_00037c04:
            pcVar23 = *(code **)(puVar24 + -0x7a2c);
            puVar10 = puVar26;
            if (iStack_70 != 0) goto LAB_00037c9c;
          }
        }
      }
    }
  }
  pcVar23 = *(code **)(puVar24 + -0x7b70);
  if (piStack_6c == (int *)*puVar18) {
    return puVar2;
  }
  pcVar29 = __gmpq_div;
  piVar12 = piStack_6c;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x67350;
  puVar27 = puVar10 + -0x80;
  puVar4 = puVar10 + -0x80;
  *(int **)(puVar10 + -0x14) = unaff_s5;
  *(undefined4 **)(puVar10 + -0x28) = puVar2;
  piVar20 = *(int **)(pcVar23 + 0x5f850);
  piVar13 = (int *)param_3[1];
  *(undefined1 **)(puVar10 + -8) = auStack_88;
  *(code **)(puVar10 + -4) = pcVar29;
  *(undefined1 **)(puVar10 + -0xc) = unaff_s7;
  *(int **)(puVar10 + -0x10) = param_2;
  *(int **)(puVar10 + -0x18) = unaff_s4;
  *(undefined4 **)(puVar10 + -0x1c) = puVar18;
  *(int **)(puVar10 + -0x20) = unaff_s2;
  *(int **)(puVar10 + -0x24) = unaff_s1;
  *(code **)(puVar10 + -0x70) = pcVar25;
  *(int *)(puVar10 + -0x2c) = *piVar20;
  piVar14 = param_3;
  if (piVar13 == (int *)0x0) {
    (**(code **)(pcVar23 + 0x5f8ec))();
  }
  else {
    unaff_s2 = piVar12;
    unaff_s4 = piVar8;
    if (param_3 != piVar12) {
      piVar14 = (int *)piVar8[1];
      if (piVar14 == (int *)0x0) {
        piVar12[1] = 0;
        *(undefined4 *)piVar12[5] = 1;
        piVar12[4] = 1;
        unaff_s1 = (int *)0x0;
        puVar4 = puVar10 + -0x80;
        goto LAB_00037f54;
      }
      if ((int)piVar14 < 0) {
        piVar14 = (int *)-(int)piVar14;
        if (-1 < (int)piVar13) goto LAB_00037d70;
LAB_00037f98:
        piVar13 = (int *)-(int)piVar13;
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar6 = piVar13;
        if ((int)piVar14 <= (int)piVar13) {
          piVar6 = piVar14;
        }
        uVar9 = (int)piVar6 << 2;
        *(int **)(puVar10 + -0x5c) = piVar6;
        if (uVar9 < 0x7f01) goto LAB_00037d90;
        pcVar23 = *(code **)(pcVar23 + 0x5f600);
LAB_00037fec:
        puVar4 = (undefined1 *)(*pcVar23)(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      else {
        if ((int)piVar13 < 0) goto LAB_00037f98;
LAB_00037d70:
        *(undefined4 *)(puVar10 + -0x60) = 0;
        piVar6 = piVar13;
        if ((int)piVar14 <= (int)piVar13) {
          piVar6 = piVar14;
        }
        uVar9 = (int)piVar6 << 2;
        *(int **)(puVar10 + -0x5c) = piVar6;
        if (0x7f00 < uVar9) {
          pcVar23 = *(code **)(pcVar23 + 0x5f600);
          goto LAB_00037fec;
        }
LAB_00037d90:
        iVar3 = -(uVar9 + 7 & 0xfffffff8);
        puVar27 = puVar10 + iVar3 + -0x80;
        puVar4 = puVar10 + iVar3 + -0x70;
      }
      *(undefined1 **)(puVar10 + -0x54) = puVar4;
      if ((int)piVar13 <= (int)piVar14) {
        piVar13 = piVar14;
      }
      *(int **)(puVar10 + -0x44) = piVar13;
      if ((uint)((int)piVar13 * 4) < 0x7f01) {
        iVar3 = -((int)piVar13 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar3 + 0x10;
        puVar27 = puVar27 + iVar3;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      iVar15 = param_3[4];
      iVar3 = piVar8[4];
      *(undefined1 **)(puVar10 + -0x3c) = puVar4;
      iVar19 = iVar3;
      if (iVar15 <= iVar3) {
        iVar19 = iVar15;
      }
      *(int *)(puVar10 + -0x50) = iVar19;
      if ((uint)(iVar19 * 4) < 0x7f01) {
        iVar19 = -(iVar19 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar19 + 0x10;
        puVar27 = puVar27 + iVar19;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      *(undefined1 **)(puVar10 + -0x48) = puVar4;
      if (iVar3 <= iVar15) {
        iVar3 = iVar15;
      }
      *(int *)(puVar10 + -0x38) = iVar3;
      if ((uint)(iVar3 * 4) < 0x7f01) {
        iVar3 = -(iVar3 * 4 + 7U & 0xfffffff8);
        puVar4 = puVar27 + iVar3 + 0x10;
        puVar27 = puVar27 + iVar3;
      }
      else {
        puVar4 = (undefined1 *)(**(code **)(pcVar25 + -0x7d50))(puVar10 + -0x60);
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      pcVar23 = *(code **)(pcVar25 + -0x7e44);
      unaff_s7 = puVar10 + -0x5c;
      *(undefined1 **)(puVar10 + -0x30) = puVar4;
      (*pcVar23)(unaff_s7,piVar8,param_3);
      param_2 = (int *)(puVar10 + -0x50);
      *(int **)(puVar10 + -100) = piVar8 + 3;
      piVar13 = (int *)(puVar10 + -0x44);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7e44))(param_2,param_3 + 3,piVar8 + 3);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,piVar8,unaff_s7);
      unaff_s1 = (int *)(puVar10 + -0x38);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(unaff_s1,param_3 + 3,param_2);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12,piVar13,unaff_s1);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))(piVar13,param_3,unaff_s7);
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7cf0))
                (unaff_s1,*(undefined4 *)(puVar10 + -100),param_2);
      piVar8 = piVar13;
      (**(code **)(*(int *)(puVar10 + -0x70) + -0x7ba8))(piVar12 + 3,piVar13,unaff_s1);
      pcVar25 = *(code **)(puVar10 + -0x70);
      if (piVar12[4] < 0) {
        piVar12[4] = -piVar12[4];
        piVar12[1] = -piVar12[1];
      }
      piVar12 = *(int **)(puVar10 + -0x60);
      puVar4 = puVar27;
      if (piVar12 != (int *)0x0) {
        (**(code **)(pcVar25 + -0x7a2c))();
        pcVar25 = *(code **)(puVar10 + -0x70);
      }
      goto LAB_00037f54;
    }
  }
  puVar18 = (undefined4 *)piVar14[5];
  puVar2 = (undefined4 *)piVar14[2];
  if (piVar14 == piVar8) {
    piVar12 = (int *)0x1;
    *puVar2 = 1;
    piVar14[1] = 1;
    *puVar18 = 1;
    piVar14[4] = 1;
  }
  else {
    iVar19 = *piVar12;
    iVar15 = piVar12[3];
    iVar3 = piVar12[4];
    unaff_s2[2] = (int)puVar18;
    unaff_s2[5] = (int)puVar2;
    *unaff_s2 = iVar15;
    unaff_s2[3] = iVar19;
    if ((int)piVar13 < 1) {
      iVar3 = -iVar3;
      piVar13 = (int *)-(int)piVar13;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f4e8);
    unaff_s2[1] = iVar3;
    unaff_s2[4] = (int)piVar13;
    piVar12 = unaff_s2;
    piVar8 = unaff_s2;
    (*pcVar23)(unaff_s2,unaff_s2,unaff_s4);
    pcVar25 = *(code **)(puVar10 + -0x70);
    puVar4 = puVar10 + -0x80;
  }
LAB_00037f54:
  if (*(undefined4 **)(puVar10 + -0x2c) == (undefined4 *)*piVar20) {
    return (undefined4 *)*piVar20;
  }
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  pcVar29 = __gmpq_get_d;
  (*pcVar23)();
  pcVar25 = pcVar23 + 0x66f70;
  puVar27 = puVar4 + -0x70;
  puVar28 = puVar4 + -0x70;
  *(int **)(puVar4 + -0x14) = piVar20;
  *(int **)(puVar4 + -0x18) = unaff_s4;
  piVar14 = *(int **)(pcVar23 + 0x5f470);
  iVar19 = piVar12[1];
  *(undefined1 **)(puVar4 + -8) = puVar10 + -0x80;
  *(int **)(puVar4 + -0x20) = unaff_s2;
  *(code **)(puVar4 + -4) = pcVar29;
  *(undefined1 **)(puVar4 + -0xc) = unaff_s7;
  *(int **)(puVar4 + -0x10) = param_2;
  *(int **)(puVar4 + -0x1c) = param_3;
  *(int **)(puVar4 + -0x24) = unaff_s1;
  *(int **)(puVar4 + -0x28) = piVar13;
  *(code **)(puVar4 + -0x50) = pcVar25;
  iVar3 = piVar12[4];
  *(int *)(puVar4 + -0x2c) = *piVar14;
  if (iVar19 != 0) {
    *(undefined4 *)(puVar4 + -0x40) = 0;
    iVar15 = iVar19;
    if (iVar19 < 0) {
      iVar15 = -iVar19;
    }
    if (iVar3 < 0) {
      iVar3 = -iVar3;
    }
    puVar2 = (undefined4 *)piVar12[2];
    iVar21 = piVar12[5];
    iVar5 = 3 - (iVar15 - iVar3);
    piVar13 = (int *)(iVar5 * -0x20);
    iVar11 = iVar15;
    iVar17 = iVar5;
    if (iVar5 < 0) {
      iVar17 = (iVar15 - iVar3) + -3;
      puVar2 = puVar2 + iVar17;
      iVar11 = iVar15 - iVar17;
      iVar17 = iVar5 + iVar17;
    }
    iVar15 = iVar15 + iVar5;
    iVar5 = iVar3;
    if (0 < iVar17) {
      iVar5 = iVar3 + iVar15;
    }
    pcVar23 = *(code **)(pcVar23 + 0x5f220);
    if ((uint)(iVar5 * 4) < 0x7f01) {
      iVar5 = -(iVar5 * 4 + 7U & 0xfffffff8);
      puVar28 = puVar4 + iVar5 + -0x70;
      puVar10 = puVar4 + iVar5 + -0x50;
    }
    else {
      *(int *)(puVar4 + -0x48) = iVar11;
      puVar10 = (undefined1 *)(*pcVar23)(puVar4 + -0x40);
      pcVar25 = *(code **)(puVar4 + -0x50);
      iVar11 = *(int *)(puVar4 + -0x48);
    }
    puVar18 = puVar2;
    iVar5 = iVar11;
    if (0 < iVar17) {
      puVar18 = (undefined4 *)(puVar10 + iVar3 * 4);
      puVar7 = puVar18;
      iVar5 = iVar17;
      do {
        iVar5 = iVar5 + -1;
        *puVar7 = 0;
        puVar7 = puVar7 + 1;
      } while (iVar5 != 0);
      iVar5 = iVar15;
      if (iVar11 != 0) {
        uVar30 = *puVar2;
        iVar15 = iVar11 + -1;
        puVar16 = puVar18 + iVar17;
        puVar7 = puVar16;
        if (iVar15 != 0) {
          do {
            puVar2 = puVar2 + 1;
            *puVar7 = uVar30;
            iVar15 = iVar15 + -1;
            uVar30 = *puVar2;
            puVar7 = puVar7 + 1;
          } while (iVar15 != 0);
          puVar16 = puVar16 + iVar11 + -1;
        }
        *puVar16 = uVar30;
      }
    }
    pcVar23 = *(code **)(pcVar25 + -0x7a30);
    unaff_s1 = (int *)(puVar4 + -0x3c);
    *(int *)(puVar28 + 0x18) = iVar3;
    *(int *)(puVar28 + 0x14) = iVar21;
    *(int *)(puVar28 + 0x10) = iVar5;
    (*pcVar23)(unaff_s1,puVar10,0,puVar18);
    piVar8 = (int *)(4 - (uint)(*(int *)(puVar4 + -0x30) == 0));
    uVar31 = (**(code **)(*(int *)(puVar4 + -0x50) + -0x7a48))(unaff_s1,piVar8,iVar19,piVar13);
    piVar12 = *(int **)(puVar4 + -0x40);
    pcVar25 = *(code **)(puVar4 + -0x50);
    puVar27 = puVar28;
    if (piVar12 != (int *)0x0) {
      pcVar23 = *(code **)(pcVar25 + -0x7a2c);
      *(undefined8 *)(puVar4 + -0x48) = uVar31;
      (*pcVar23)();
      pcVar25 = *(code **)(puVar4 + -0x50);
    }
  }
  puVar2 = (undefined4 *)*piVar14;
  pcVar23 = *(code **)(pcVar25 + -0x7b70);
  if (*(undefined4 **)(puVar4 + -0x2c) != puVar2) {
    uVar30 = 0x3831c;
    (*pcVar23)();
    iVar19 = *piVar12;
    *(int **)(puVar27 + -0x10) = piVar13;
    *(code **)(puVar27 + -0x18) = pcVar23 + 0x66d20;
    *(int *)(puVar27 + -8) = iVar3;
    *(int **)(puVar27 + -0xc) = unaff_s1;
    *(undefined4 *)(puVar27 + -4) = uVar30;
    iVar3 = piVar8[4];
    if (iVar19 < iVar3) {
      puVar2 = (undefined4 *)(**(code **)(pcVar23 + 0x5f29c))();
    }
    else {
      puVar2 = (undefined4 *)piVar12[2];
    }
    piVar12[1] = iVar3;
    if (iVar3 != 0) {
      puVar7 = (undefined4 *)piVar8[5];
      iVar19 = iVar3 + -1;
      uVar30 = *puVar7;
      puVar18 = puVar2;
      if (iVar19 != 0) {
        do {
          puVar7 = puVar7 + 1;
          *puVar18 = uVar30;
          iVar19 = iVar19 + -1;
          uVar30 = *puVar7;
          puVar18 = puVar18 + 1;
        } while (iVar19 != 0);
        puVar2 = puVar2 + iVar3 + -1;
      }
      *puVar2 = uVar30;
    }
    return puVar2;
  }
  return puVar2;
}

