
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Switch with 1 destination removed at 0x0001b500 */

void __gmpz_fac_ui(mpz_ptr x,ulong n)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint *puVar8;
  undefined1 *puVar9;
  mp_bitcnt_t cnt;
  int in_GS_OFFSET;
  undefined4 uStackY_50;
  undefined1 auStack_3c [4];
  mpz_ptr p_Stack_38;
  undefined **ppuStack_34;
  uint auStack_30 [7];
  undefined4 uStack_14;
  undefined **ppuStack_10;
  
  ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;
  uStack_14 = 0x2855b;
  puVar9 = auStack_3c;
  p_Stack_38 = x;
  ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;
  auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14);
  if (n < 0xd) {
    *x->_mp_d = __gmpz_fac_ui::table[n];
    x->_mp_size = 1;
  }
  else if (n < 0x23) {
    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);
    puVar9 = auStack_3c + iVar2;
    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);
    *puVar1 = 0x1c8cfc00;
    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);
    uVar7 = n - 1;
    iVar4 = 1;
    iVar5 = 2;
    if (n - 1 == 0xc) {
      iVar6 = 2;
      n = 0xd;
    }
    else {
      do {
        while (uVar3 = uVar7, n < 0x7507508) {
          n = n * uVar3;
          puVar8 = puVar1 + iVar4;
          iVar6 = iVar4 + 1;
          uVar7 = uVar3 - 1;
          iVar5 = iVar6;
          if (uVar3 - 1 == 0xc) goto LAB_00028633;
        }
        auStack_30[0] = uVar3 - 1;
        *puVar8 = n;
        puVar8 = puVar1 + iVar5;
        iVar6 = iVar5 + 1;
        uVar7 = auStack_30[0];
        iVar4 = iVar5;
        iVar5 = iVar6;
        n = uVar3;
      } while (auStack_30[0] != 0xc);
      n = 0xd;
    }
LAB_00028633:
    *puVar8 = n;
    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;
    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;
    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;
    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;
    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),
                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),
                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));
  }
  else {
    uStackY_50 = 0x2865e;
    __gmpz_oddfac_1(x,n,0);
    if (n < 0x32) {
      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];
    }
    else {
      uVar7 = n - (n >> 1 & 0x55555555);
      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;
      uVar7 = (uVar7 >> 8) + uVar7;
      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);
    }
    uStackY_50 = 0x28686;
    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);
    puVar9 = auStack_3c;
  }
  if (auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)(puVar9 + -4) = 0x286f4;
  __stack_chk_fail_local();
}



/* WARNING: Switch with 1 destination removed at 0x0001b500 */

void __gmpz_fac_ui(void)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined **ppuVar8;
  uint *puVar9;
  uint *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  int in_GS_OFFSET;
  uint auStack_54 [5];
  uint auStack_40 [11];
  undefined4 uStack_14;
  undefined **ppuStack_10;
  
  ppuVar8 = &__DT_PLTGOT;
  puVar11 = &stack0xfffffffc;
  ppuStack_10 = &__DT_PLTGOT;
  uStack_14 = 0x2855b;
  entry();
  puVar10 = auStack_40;
  iVar2 = *(int *)(puVar11 + 8);
  uVar12 = *(uint *)(puVar11 + 0xc);
  *(int *)(puVar11 + -0x34) = iVar2;
  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;
  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);
  if (uVar12 < 0xd) {
    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);
    *(undefined4 *)(iVar2 + 4) = 1;
  }
  else if (uVar12 < 0x23) {
    iVar6 = 1;
    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);
    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);
    *puVar1 = 0x1c8cfc00;
    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);
    uVar7 = uVar12 - 1;
    iVar4 = 2;
    if (uVar12 - 1 == 0xc) {
      iVar5 = 2;
      uVar12 = 0xd;
    }
    else {
      do {
        while (uVar3 = uVar7, 0x7507507 < uVar12) {
          *puVar9 = uVar12;
          puVar9 = puVar1 + iVar4;
          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;
          iVar5 = iVar4 + 1;
          if (uVar3 - 1 == 0xc) {
            uVar12 = 0xd;
            goto LAB_00028633;
          }
          uVar7 = *(uint *)(puVar11 + -0x2c);
          iVar6 = iVar4;
          iVar4 = iVar5;
          uVar12 = uVar3;
        }
        uVar12 = uVar12 * uVar3;
        puVar9 = puVar1 + iVar6;
        iVar5 = iVar6 + 1;
        uVar7 = uVar3 - 1;
        iVar4 = iVar5;
      } while (uVar3 - 1 != 0xc);
    }
LAB_00028633:
    *puVar9 = uVar12;
    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;
    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;
    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);
    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;
    __gmpz_prodlimbs();
    puVar10 = (uint *)((int)auStack_40 + iVar2);
  }
  else {
    auStack_54[3] = 0;
    auStack_54[1] = *(uint *)(puVar11 + -0x34);
    auStack_54[0] = 0x2865e;
    auStack_54[2] = uVar12;
    __gmpz_oddfac_1();
    if (uVar12 < 0x32) {
      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));
    }
    else {
      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);
      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;
      uVar7 = (uVar7 >> 8) + uVar7;
      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);
    }
    auStack_54[1] = *(uint *)(puVar11 + -0x34);
    auStack_54[0] = 0x28686;
    auStack_54[2] = auStack_54[1];
    __gmpz_mul_2exp();
    puVar10 = auStack_40;
  }
  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;
  FUN_0007ebe0();
}


JMP dword ptr [EBX + 0x13c]
(translation_unit "/* WARNING: Switch with 1 destination removed at 0x0001b500 */\n\nvoid __gmpz_fac_ui(void)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}\n\n" comment (function_definition "void __gmpz_fac_ui(void)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" primitive_type (function_declarator "__gmpz_fac_ui(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint auStack_54 [5];" type_identifier (array_declarator "auStack_54 [5]" identifier [ number_literal ]) ;) (declaration "uint auStack_40 [11];" type_identifier (array_declarator "auStack_40 [11]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined **ppuStack_10;" type_identifier (pointer_declarator "**ppuStack_10" * (pointer_declarator "*ppuStack_10" * identifier)) ;) (expression_statement "ppuVar8 = &__DT_PLTGOT;" (assignment_expression "ppuVar8 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = &stack0xfffffffc;" (assignment_expression "puVar11 = &stack0xfffffffc" identifier = (pointer_expression "&stack0xfffffffc" & identifier)) ;) (expression_statement "ppuStack_10 = &__DT_PLTGOT;" (assignment_expression "ppuStack_10 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "uStack_14 = 0x2855b;" (assignment_expression "uStack_14 = 0x2855b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar11 + 8);" (assignment_expression "iVar2 = *(int *)(puVar11 + 8)" identifier = (pointer_expression "*(int *)(puVar11 + 8)" * (cast_expression "(int *)(puVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)(puVar11 + 0xc);" (assignment_expression "uVar12 = *(uint *)(puVar11 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar11 + 0xc)" * (cast_expression "(uint *)(puVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar11 + -0x34) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x34) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x34)" * (cast_expression "(int *)(puVar11 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;" (assignment_expression "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5" (pointer_expression "*(int *)(puVar11 + -0x30)" * (cast_expression "(int *)(puVar11 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x30)" ( (binary_expression "puVar11 + -0x30" identifier + number_literal) )))) = (binary_expression "(int)ppuVar8 + 0x75aa5" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar11 + -0x1c)" * (cast_expression "(undefined4 *)(puVar11 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" if (parenthesized_expression "(uVar12 < 0xd)" ( (binary_expression "uVar12 < 0xd" identifier < number_literal) )) (compound_statement "{\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }" { (expression_statement "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);" (assignment_expression "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" (pointer_expression "**(undefined4 **)(iVar2 + 8)" * (pointer_expression "*(undefined4 **)(iVar2 + 8)" * (cast_expression "(undefined4 **)(iVar2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) = (pointer_expression "*(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" * (cast_expression "(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + uVar12 * 4 + 0x57045)" ( (binary_expression "(int)ppuVar8 + uVar12 * 4 + 0x57045" (binary_expression "(int)ppuVar8 + uVar12 * 4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar12 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 4) = 1;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 1" (pointer_expression "*(undefined4 *)(iVar2 + 4)" * (cast_expression "(undefined4 *)(iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" else (if_statement "if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" if (parenthesized_expression "(uVar12 < 0x23)" ( (binary_expression "uVar12 < 0x23" identifier < number_literal) )) (compound_statement "{\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);" (assignment_expression "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" identifier = (unary_expression "-((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" - (parenthesized_expression "((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" ( (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0" (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23" (parenthesized_expression "(uVar12 - 0xd & 0xfffffffc)" ( (binary_expression "uVar12 - 0xd & 0xfffffffc" (binary_expression "uVar12 - 0xd" identifier - number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)((int)auStack_40 + iVar2);" (assignment_expression "puVar1 = (undefined4 *)((int)auStack_40 + iVar2)" identifier = (cast_expression "(undefined4 *)((int)auStack_40 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2)" ( (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "*puVar1 = 0x1c8cfc00;" (assignment_expression "*puVar1 = 0x1c8cfc00" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);" (assignment_expression "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4)" identifier = (cast_expression "(uint *)((int)auStack_40 + iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2 + 4)" ( (binary_expression "(int)auStack_40 + iVar2 + 4" (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar7 = uVar12 - 1;" (assignment_expression "uVar7 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (if_statement "if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" if (parenthesized_expression "(uVar12 - 1 == 0xc)" ( (binary_expression "uVar12 - 1 == 0xc" (binary_expression "uVar12 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }" { (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" else (compound_statement "{\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" { (do_statement "do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);" do (compound_statement "{\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      }" { (while_statement "while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" while (parenthesized_expression "(uVar3 = uVar7, 0x7507507 < uVar12)" ( (comma_expression "uVar3 = uVar7, 0x7507507 < uVar12" (assignment_expression "uVar3 = uVar7" identifier = identifier) , (binary_expression "0x7507507 < uVar12" number_literal < identifier)) )) (compound_statement "{\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" { (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar1 + iVar4;" (assignment_expression "puVar9 = puVar1 + iVar4" identifier = (binary_expression "puVar1 + iVar4" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar11 + -0x2c) = uVar3 - 1;" (assignment_expression "*(uint *)(puVar11 + -0x2c) = uVar3 - 1" (pointer_expression "*(uint *)(puVar11 + -0x2c)" * (cast_expression "(uint *)(puVar11 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x2c)" ( (binary_expression "puVar11 + -0x2c" identifier + number_literal) )))) = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar5 = iVar4 + 1;" (assignment_expression "iVar5 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" if (parenthesized_expression "(uVar3 - 1 == 0xc)" ( (binary_expression "uVar3 - 1 == 0xc" (binary_expression "uVar3 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" { (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) (goto_statement "goto LAB_00028633;" goto statement_identifier ;) })) (expression_statement "uVar7 = *(uint *)(puVar11 + -0x2c);" (assignment_expression "uVar7 = *(uint *)(puVar11 + -0x2c)" identifier = (pointer_expression "*(uint *)(puVar11 + -0x2c)" * (cast_expression "(uint *)(puVar11 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x2c)" ( (binary_expression "puVar11 + -0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar4;" (assignment_expression "iVar6 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" identifier = identifier) ;) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar12 = uVar12 * uVar3;" (assignment_expression "uVar12 = uVar12 * uVar3" identifier = (binary_expression "uVar12 * uVar3" identifier * identifier)) ;) (expression_statement "puVar9 = puVar1 + iVar6;" (assignment_expression "puVar9 = puVar1 + iVar6" identifier = (binary_expression "puVar1 + iVar6" identifier + identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar3 - 1;" (assignment_expression "uVar7 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 - 1 != 0xc)" ( (binary_expression "uVar3 - 1 != 0xc" (binary_expression "uVar3 - 1" identifier - number_literal) != number_literal) )) ;) }))) (labeled_statement "LAB_00028633:\n    *puVar9 = uVar12;" statement_identifier : (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" * identifier) = identifier) ;)) (expression_statement "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;" (assignment_expression "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5" (pointer_expression "*(int *)((int)auStack_54 + iVar2 + 0xc)" * (cast_expression "(int *)((int)auStack_54 + iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 0xc)" ( (binary_expression "(int)auStack_54 + iVar2 + 0xc" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;" (assignment_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1" (pointer_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8)" * (cast_expression "(undefined4 **)((int)auStack_54 + iVar2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 8)" ( (binary_expression "(int)auStack_54 + iVar2 + 8" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34)" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4)" * (cast_expression "(undefined4 *)((int)auStack_54 + iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 4)" ( (binary_expression "(int)auStack_54 + iVar2 + 4" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + -0x34)" * (cast_expression "(undefined4 *)(puVar11 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2)" * (cast_expression "(undefined4 *)((int)auStack_54 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2)" ( (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__gmpz_prodlimbs();" (call_expression "__gmpz_prodlimbs()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = (uint *)((int)auStack_40 + iVar2);" (assignment_expression "puVar10 = (uint *)((int)auStack_40 + iVar2)" identifier = (cast_expression "(uint *)((int)auStack_40 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2)" ( (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" else (compound_statement "{\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" { (expression_statement "auStack_54[3] = 0;" (assignment_expression "auStack_54[3] = 0" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(puVar11 + -0x34)" * (cast_expression "(uint *)(puVar11 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "auStack_54[0] = 0x2865e;" (assignment_expression "auStack_54[0] = 0x2865e" (subscript_expression "auStack_54[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[2] = uVar12;" (assignment_expression "auStack_54[2] = uVar12" (subscript_expression "auStack_54[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__gmpz_oddfac_1();" (call_expression "__gmpz_oddfac_1()" identifier (argument_list "()" ( ))) ;) (if_statement "if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" if (parenthesized_expression "(uVar12 < 0x32)" ( (binary_expression "uVar12 < 0x32" identifier < number_literal) )) (compound_statement "{\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }" { (expression_statement "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));" (assignment_expression "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = (binary_expression "(uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" ( (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1)" (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1" (pointer_expression "*(int *)((int)ppuVar8 + 0x759f1)" * (cast_expression "(int *)((int)ppuVar8 + 0x759f1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x759f1)" ( (binary_expression "(int)ppuVar8 + 0x759f1" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) + (parenthesized_expression "(uVar12 >> 1)" ( (binary_expression "uVar12 >> 1" identifier >> number_literal) ))) ))))) ;) }) (else_clause "else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" else (compound_statement "{\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" { (expression_statement "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);" (assignment_expression "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555)" identifier = (binary_expression "uVar12 - (uVar12 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(uVar12 >> 1 & 0x55555555)" ( (binary_expression "uVar12 >> 1 & 0x55555555" (binary_expression "uVar12 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" identifier = (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" ( (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar7 & 0x33333333)" ( (binary_expression "uVar7 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f" identifier = (binary_expression "(uVar7 >> 4) + uVar7 & 0xf0f0f0f" (binary_expression "(uVar7 >> 4) + uVar7" (parenthesized_expression "(uVar7 >> 4)" ( (binary_expression "uVar7 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" identifier = (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);" (assignment_expression "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = (binary_expression "uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" identifier - (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" ( (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" ( (binary_expression "uVar7 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )))) ;) }))) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(puVar11 + -0x34)" * (cast_expression "(uint *)(puVar11 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "auStack_54[0] = 0x28686;" (assignment_expression "auStack_54[0] = 0x28686" (subscript_expression "auStack_54[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[2] = auStack_54[1];" (assignment_expression "auStack_54[2] = auStack_54[1]" (subscript_expression "auStack_54[2]" identifier [ number_literal ]) = (subscript_expression "auStack_54[1]" identifier [ number_literal ])) ;) (expression_statement "__gmpz_mul_2exp();" (call_expression "__gmpz_mul_2exp()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" identifier = identifier) ;) }))))) (if_statement "if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar11 + -0x1c)" * (cast_expression "(int *)(puVar11 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "*(undefined4 *)((int)puVar10 + -4) = 0x286f4;" (assignment_expression "*(undefined4 *)((int)puVar10 + -4) = 0x286f4" (pointer_expression "*(undefined4 *)((int)puVar10 + -4)" * (cast_expression "(undefined4 *)((int)puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + -4)" ( (binary_expression "(int)puVar10 + -4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Switch with 1 destination removed at 0x0001b500 */\n\nvoid __gmpz_fac_ui(mpz_ptr x,ulong n)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  mp_bitcnt_t cnt;\n  int in_GS_OFFSET;\n  undefined4 uStackY_50;\n  undefined1 auStack_3c [4];\n  mpz_ptr p_Stack_38;\n  undefined **ppuStack_34;\n  uint auStack_30 [7];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;\n  uStack_14 = 0x2855b;\n  puVar9 = auStack_3c;\n  p_Stack_38 = x;\n  ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;\n  auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14);\n  if (n < 0xd) {\n    *x->_mp_d = __gmpz_fac_ui::table[n];\n    x->_mp_size = 1;\n  }\n  else if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }\n  if (auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar9 + -4) = 0x286f4;\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "void __gmpz_fac_ui(mpz_ptr x,ulong n)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  mp_bitcnt_t cnt;\n  int in_GS_OFFSET;\n  undefined4 uStackY_50;\n  undefined1 auStack_3c [4];\n  mpz_ptr p_Stack_38;\n  undefined **ppuStack_34;\n  uint auStack_30 [7];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;\n  uStack_14 = 0x2855b;\n  puVar9 = auStack_3c;\n  p_Stack_38 = x;\n  ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;\n  auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14);\n  if (n < 0xd) {\n    *x->_mp_d = __gmpz_fac_ui::table[n];\n    x->_mp_size = 1;\n  }\n  else if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }\n  if (auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar9 + -4) = 0x286f4;\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "__gmpz_fac_ui(mpz_ptr x,ulong n)" identifier (parameter_list "(mpz_ptr x,ulong n)" ( (parameter_declaration "mpz_ptr x" type_identifier identifier) , (parameter_declaration "ulong n" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  mp_bitcnt_t cnt;\n  int in_GS_OFFSET;\n  undefined4 uStackY_50;\n  undefined1 auStack_3c [4];\n  mpz_ptr p_Stack_38;\n  undefined **ppuStack_34;\n  uint auStack_30 [7];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;\n  uStack_14 = 0x2855b;\n  puVar9 = auStack_3c;\n  p_Stack_38 = x;\n  ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;\n  auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14);\n  if (n < 0xd) {\n    *x->_mp_d = __gmpz_fac_ui::table[n];\n    x->_mp_size = 1;\n  }\n  else if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }\n  if (auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  *(undefined4 *)(puVar9 + -4) = 0x286f4;\n  __stack_chk_fail_local();\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "mp_bitcnt_t cnt;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uStackY_50;" type_identifier identifier ;) (declaration "undefined1 auStack_3c [4];" type_identifier (array_declarator "auStack_3c [4]" identifier [ number_literal ]) ;) (declaration "mpz_ptr p_Stack_38;" type_identifier identifier ;) (declaration "undefined **ppuStack_34;" type_identifier (pointer_declarator "**ppuStack_34" * (pointer_declarator "*ppuStack_34" * identifier)) ;) (declaration "uint auStack_30 [7];" type_identifier (array_declarator "auStack_30 [7]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined **ppuStack_10;" type_identifier (pointer_declarator "**ppuStack_10" * (pointer_declarator "*ppuStack_10" * identifier)) ;) (expression_statement "ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "ppuStack_10 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "uStack_14 = 0x2855b;" (assignment_expression "uStack_14 = 0x2855b" identifier = number_literal) ;) (expression_statement "puVar9 = auStack_3c;" (assignment_expression "puVar9 = auStack_3c" identifier = identifier) ;) (expression_statement "p_Stack_38 = x;" (assignment_expression "p_Stack_38 = x" identifier = identifier) ;) (expression_statement "ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;" (assignment_expression "ppuStack_34 = &_GLOBAL_OFFSET_TABLE_" identifier = (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) ;) (expression_statement "auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "auStack_30[4] = *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "auStack_30[4]" identifier [ number_literal ]) = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (n < 0xd) {\n    *x->_mp_d = __gmpz_fac_ui::table[n];\n    x->_mp_size = 1;\n  }\n  else if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }" if (parenthesized_expression "(n < 0xd)" ( (binary_expression "n < 0xd" identifier < number_literal) )) (compound_statement "{\n    *x->_mp_d = __gmpz_fac_ui::table[n];\n    x->_mp_size = 1;\n  }" { (expression_statement "*x->_mp_d = __gmpz_fac_ui::table[n];" (subscript_expression "*x->_mp_d = __gmpz_fac_ui::table[n]" (assignment_expression "*x->_mp_d = __gmpz_fac_ui" (pointer_expression "*x->_mp_d" * (field_expression "x->_mp_d" identifier -> field_identifier)) = identifier) (ERROR "::table" : : identifier) [ identifier ]) ;) (expression_statement "x->_mp_size = 1;" (assignment_expression "x->_mp_size = 1" (field_expression "x->_mp_size" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }" else (if_statement "if (n < 0x23) {\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }\n  else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }" if (parenthesized_expression "(n < 0x23)" ( (binary_expression "n < 0x23" identifier < number_literal) )) (compound_statement "{\n    iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar9 = auStack_3c + iVar2;\n    puVar1 = (undefined4 *)((int)auStack_30 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);\n    uVar7 = n - 1;\n    iVar4 = 1;\n    iVar5 = 2;\n    if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }\nLAB_00028633:\n    *puVar8 = n;\n    *(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;\n    *(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;\n    *(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;\n    *(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;\n    __gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));\n  }" { (expression_statement "iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);" (assignment_expression "iVar2 = -((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" identifier = (unary_expression "-((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" - (parenthesized_expression "((n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" ( (binary_expression "(n - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0" (binary_expression "(n - 0xd & 0xfffffffc) + 0x23" (parenthesized_expression "(n - 0xd & 0xfffffffc)" ( (binary_expression "n - 0xd & 0xfffffffc" (binary_expression "n - 0xd" identifier - number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar9 = auStack_3c + iVar2;" (assignment_expression "puVar9 = auStack_3c + iVar2" identifier = (binary_expression "auStack_3c + iVar2" identifier + identifier)) ;) (expression_statement "puVar1 = (undefined4 *)((int)auStack_30 + iVar2);" (assignment_expression "puVar1 = (undefined4 *)((int)auStack_30 + iVar2)" identifier = (cast_expression "(undefined4 *)((int)auStack_30 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2)" ( (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "*puVar1 = 0x1c8cfc00;" (assignment_expression "*puVar1 = 0x1c8cfc00" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar8 = (uint *)((int)auStack_30 + iVar2 + 4);" (assignment_expression "puVar8 = (uint *)((int)auStack_30 + iVar2 + 4)" identifier = (cast_expression "(uint *)((int)auStack_30 + iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + 4)" ( (binary_expression "(int)auStack_30 + iVar2 + 4" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar7 = n - 1;" (assignment_expression "uVar7 = n - 1" identifier = (binary_expression "n - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (if_statement "if (n - 1 == 0xc) {\n      iVar6 = 2;\n      n = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }" if (parenthesized_expression "(n - 1 == 0xc)" ( (binary_expression "n - 1 == 0xc" (binary_expression "n - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\n      iVar6 = 2;\n      n = 0xd;\n    }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (expression_statement "n = 0xd;" (assignment_expression "n = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }" else (compound_statement "{\n      do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);\n      n = 0xd;\n    }" { (do_statement "do {\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      } while (auStack_30[0] != 0xc);" do (compound_statement "{\n        while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }\n        auStack_30[0] = uVar3 - 1;\n        *puVar8 = n;\n        puVar8 = puVar1 + iVar5;\n        iVar6 = iVar5 + 1;\n        uVar7 = auStack_30[0];\n        iVar4 = iVar5;\n        iVar5 = iVar6;\n        n = uVar3;\n      }" { (while_statement "while (uVar3 = uVar7, n < 0x7507508) {\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }" while (parenthesized_expression "(uVar3 = uVar7, n < 0x7507508)" ( (comma_expression "uVar3 = uVar7, n < 0x7507508" (assignment_expression "uVar3 = uVar7" identifier = identifier) , (binary_expression "n < 0x7507508" identifier < number_literal)) )) (compound_statement "{\n          n = n * uVar3;\n          puVar8 = puVar1 + iVar4;\n          iVar6 = iVar4 + 1;\n          uVar7 = uVar3 - 1;\n          iVar5 = iVar6;\n          if (uVar3 - 1 == 0xc) goto LAB_00028633;\n        }" { (expression_statement "n = n * uVar3;" (assignment_expression "n = n * uVar3" identifier = (binary_expression "n * uVar3" identifier * identifier)) ;) (expression_statement "puVar8 = puVar1 + iVar4;" (assignment_expression "puVar8 = puVar1 + iVar4" identifier = (binary_expression "puVar1 + iVar4" identifier + identifier)) ;) (expression_statement "iVar6 = iVar4 + 1;" (assignment_expression "iVar6 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar3 - 1;" (assignment_expression "uVar7 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (if_statement "if (uVar3 - 1 == 0xc) goto LAB_00028633;" if (parenthesized_expression "(uVar3 - 1 == 0xc)" ( (binary_expression "uVar3 - 1 == 0xc" (binary_expression "uVar3 - 1" identifier - number_literal) == number_literal) )) (goto_statement "goto LAB_00028633;" goto statement_identifier ;)) })) (expression_statement "auStack_30[0] = uVar3 - 1;" (assignment_expression "auStack_30[0] = uVar3 - 1" (subscript_expression "auStack_30[0]" identifier [ number_literal ]) = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "*puVar8 = n;" (assignment_expression "*puVar8 = n" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar1 + iVar5;" (assignment_expression "puVar8 = puVar1 + iVar5" identifier = (binary_expression "puVar1 + iVar5" identifier + identifier)) ;) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = auStack_30[0];" (assignment_expression "uVar7 = auStack_30[0]" identifier = (subscript_expression "auStack_30[0]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" identifier = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (expression_statement "n = uVar3;" (assignment_expression "n = uVar3" identifier = identifier) ;) }) while (parenthesized_expression "(auStack_30[0] != 0xc)" ( (binary_expression "auStack_30[0] != 0xc" (subscript_expression "auStack_30[0]" identifier [ number_literal ]) != number_literal) )) ;) (expression_statement "n = 0xd;" (assignment_expression "n = 0xd" identifier = number_literal) ;) }))) (labeled_statement "LAB_00028633:\n    *puVar8 = n;" statement_identifier : (expression_statement "*puVar8 = n;" (assignment_expression "*puVar8 = n" (pointer_expression "*puVar8" * identifier) = identifier) ;)) (expression_statement "*(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6;" (assignment_expression "*(int *)((int)auStack_30 + iVar2 + -0x14) = iVar6" (pointer_expression "*(int *)((int)auStack_30 + iVar2 + -0x14)" * (cast_expression "(int *)((int)auStack_30 + iVar2 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x14)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x14" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1;" (assignment_expression "*(undefined4 **)((int)auStack_30 + iVar2 + -0x18) = puVar1" (pointer_expression "*(undefined4 **)((int)auStack_30 + iVar2 + -0x18)" * (cast_expression "(undefined4 **)((int)auStack_30 + iVar2 + -0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x18)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x18" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38;" (assignment_expression "*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c) = p_Stack_38" (pointer_expression "*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c)" * (cast_expression "(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x1c)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x1c" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645;" (assignment_expression "*(undefined4 *)((int)&uStackY_50 + iVar2) = 0x28645" (pointer_expression "*(undefined4 *)((int)&uStackY_50 + iVar2)" * (cast_expression "(undefined4 *)((int)&uStackY_50 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStackY_50 + iVar2)" ( (binary_expression "(int)&uStackY_50 + iVar2" (cast_expression "(int)&uStackY_50" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStackY_50" & identifier)) + identifier) )))) = number_literal) ;) (expression_statement "__gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14));" (call_expression "__gmpz_prodlimbs(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14))" identifier (argument_list "(*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c),\n                     *(mp_ptr *)((int)auStack_30 + iVar2 + -0x18),\n                     *(mp_size_t *)((int)auStack_30 + iVar2 + -0x14))" ( (pointer_expression "*(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c)" * (cast_expression "(mpz_ptr *)((int)auStack_30 + iVar2 + -0x1c)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x1c)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x1c" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) , (pointer_expression "*(mp_ptr *)((int)auStack_30 + iVar2 + -0x18)" * (cast_expression "(mp_ptr *)((int)auStack_30 + iVar2 + -0x18)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x18)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x18" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) , (pointer_expression "*(mp_size_t *)((int)auStack_30 + iVar2 + -0x14)" * (cast_expression "(mp_size_t *)((int)auStack_30 + iVar2 + -0x14)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_30 + iVar2 + -0x14)" ( (binary_expression "(int)auStack_30 + iVar2 + -0x14" (binary_expression "(int)auStack_30 + iVar2" (cast_expression "(int)auStack_30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ))) ;) }) (else_clause "else {\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }" else (compound_statement "{\n    uStackY_50 = 0x2865e;\n    __gmpz_oddfac_1(x,n,0);\n    if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    uStackY_50 = 0x28686;\n    __gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);\n    puVar9 = auStack_3c;\n  }" { (expression_statement "uStackY_50 = 0x2865e;" (assignment_expression "uStackY_50 = 0x2865e" identifier = number_literal) ;) (expression_statement "__gmpz_oddfac_1(x,n,0);" (call_expression "__gmpz_oddfac_1(x,n,0)" identifier (argument_list "(x,n,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (n < 0x32) {\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }\n    else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" if (parenthesized_expression "(n < 0x32)" ( (binary_expression "n < 0x32" identifier < number_literal) )) (compound_statement "{\n      cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];\n    }" { (expression_statement "cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1];" (assignment_expression "cnt = (mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1]" identifier = (cast_expression "(mp_bitcnt_t)(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1]" ( (type_descriptor "mp_bitcnt_t" type_identifier) ) (cast_expression "(byte)PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR___gmp_fac2cnt_table_0009df4c[(n >> 1) - 1]" identifier [ (binary_expression "(n >> 1) - 1" (parenthesized_expression "(n >> 1)" ( (binary_expression "n >> 1" identifier >> number_literal) )) - number_literal) ])))) ;) }) (else_clause "else {\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" else (compound_statement "{\n      uVar7 = n - (n >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" { (expression_statement "uVar7 = n - (n >> 1 & 0x55555555);" (assignment_expression "uVar7 = n - (n >> 1 & 0x55555555)" identifier = (binary_expression "n - (n >> 1 & 0x55555555)" identifier - (parenthesized_expression "(n >> 1 & 0x55555555)" ( (binary_expression "n >> 1 & 0x55555555" (binary_expression "n >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" identifier = (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" ( (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar7 & 0x33333333)" ( (binary_expression "uVar7 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f" identifier = (binary_expression "(uVar7 >> 4) + uVar7 & 0xf0f0f0f" (binary_expression "(uVar7 >> 4) + uVar7" (parenthesized_expression "(uVar7 >> 4)" ( (binary_expression "uVar7 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" identifier = (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff);" (assignment_expression "cnt = n - ((uVar7 >> 0x10) + uVar7 & 0xff)" identifier = (binary_expression "n - ((uVar7 >> 0x10) + uVar7 & 0xff)" identifier - (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" ( (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" ( (binary_expression "uVar7 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )))) ;) }))) (expression_statement "uStackY_50 = 0x28686;" (assignment_expression "uStackY_50 = 0x28686" identifier = number_literal) ;) (expression_statement "__gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt);" (call_expression "__gmpz_mul_2exp(p_Stack_38,p_Stack_38,cnt)" identifier (argument_list "(p_Stack_38,p_Stack_38,cnt)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = auStack_3c;" (assignment_expression "puVar9 = auStack_3c" identifier = identifier) ;) }))))) (if_statement "if (auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "auStack_30[4] == *(int *)(in_GS_OFFSET + 0x14)" (subscript_expression "auStack_30[4]" identifier [ number_literal ]) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "*(undefined4 *)(puVar9 + -4) = 0x286f4;" (assignment_expression "*(undefined4 *)(puVar9 + -4) = 0x286f4" (pointer_expression "*(undefined4 *)(puVar9 + -4)" * (cast_expression "(undefined4 *)(puVar9 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -4)" ( (binary_expression "puVar9 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __gmpz_fac_ui(void)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}\n\n" (function_definition "void __gmpz_fac_ui(void)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" primitive_type (function_declarator "__gmpz_fac_ui(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint auStack_54 [5];" type_identifier (array_declarator "auStack_54 [5]" identifier [ number_literal ]) ;) (declaration "uint auStack_40 [11];" type_identifier (array_declarator "auStack_40 [11]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (declaration "undefined **ppuStack_10;" type_identifier (pointer_declarator "**ppuStack_10" * (pointer_declarator "*ppuStack_10" * identifier)) ;) (expression_statement "ppuVar8 = &__DT_PLTGOT;" (assignment_expression "ppuVar8 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "puVar11 = &stack0xfffffffc;" (assignment_expression "puVar11 = &stack0xfffffffc" identifier = (pointer_expression "&stack0xfffffffc" & identifier)) ;) (expression_statement "ppuStack_10 = &__DT_PLTGOT;" (assignment_expression "ppuStack_10 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "uStack_14 = 0x2855b;" (assignment_expression "uStack_14 = 0x2855b" identifier = number_literal) ;) (expression_statement "entry();" (call_expression "entry()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar11 + 8);" (assignment_expression "iVar2 = *(int *)(puVar11 + 8)" identifier = (pointer_expression "*(int *)(puVar11 + 8)" * (cast_expression "(int *)(puVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 8)" ( (binary_expression "puVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(uint *)(puVar11 + 0xc);" (assignment_expression "uVar12 = *(uint *)(puVar11 + 0xc)" identifier = (pointer_expression "*(uint *)(puVar11 + 0xc)" * (cast_expression "(uint *)(puVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0xc)" ( (binary_expression "puVar11 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar11 + -0x34) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x34) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x34)" * (cast_expression "(int *)(puVar11 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;" (assignment_expression "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5" (pointer_expression "*(int *)(puVar11 + -0x30)" * (cast_expression "(int *)(puVar11 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x30)" ( (binary_expression "puVar11 + -0x30" identifier + number_literal) )))) = (binary_expression "(int)ppuVar8 + 0x75aa5" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar11 + -0x1c)" * (cast_expression "(undefined4 *)(puVar11 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" if (parenthesized_expression "(uVar12 < 0xd)" ( (binary_expression "uVar12 < 0xd" identifier < number_literal) )) (compound_statement "{\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }" { (expression_statement "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);" (assignment_expression "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" (pointer_expression "**(undefined4 **)(iVar2 + 8)" * (pointer_expression "*(undefined4 **)(iVar2 + 8)" * (cast_expression "(undefined4 **)(iVar2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) = (pointer_expression "*(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" * (cast_expression "(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + uVar12 * 4 + 0x57045)" ( (binary_expression "(int)ppuVar8 + uVar12 * 4 + 0x57045" (binary_expression "(int)ppuVar8 + uVar12 * 4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar12 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar2 + 4) = 1;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 1" (pointer_expression "*(undefined4 *)(iVar2 + 4)" * (cast_expression "(undefined4 *)(iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" else (if_statement "if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" if (parenthesized_expression "(uVar12 < 0x23)" ( (binary_expression "uVar12 < 0x23" identifier < number_literal) )) (compound_statement "{\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);" (assignment_expression "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" identifier = (unary_expression "-((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" - (parenthesized_expression "((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" ( (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0" (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23" (parenthesized_expression "(uVar12 - 0xd & 0xfffffffc)" ( (binary_expression "uVar12 - 0xd & 0xfffffffc" (binary_expression "uVar12 - 0xd" identifier - number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar1 = (undefined4 *)((int)auStack_40 + iVar2);" (assignment_expression "puVar1 = (undefined4 *)((int)auStack_40 + iVar2)" identifier = (cast_expression "(undefined4 *)((int)auStack_40 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2)" ( (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "*puVar1 = 0x1c8cfc00;" (assignment_expression "*puVar1 = 0x1c8cfc00" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);" (assignment_expression "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4)" identifier = (cast_expression "(uint *)((int)auStack_40 + iVar2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2 + 4)" ( (binary_expression "(int)auStack_40 + iVar2 + 4" (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (expression_statement "uVar7 = uVar12 - 1;" (assignment_expression "uVar7 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (if_statement "if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" if (parenthesized_expression "(uVar12 - 1 == 0xc)" ( (binary_expression "uVar12 - 1 == 0xc" (binary_expression "uVar12 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }" { (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" else (compound_statement "{\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" { (do_statement "do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);" do (compound_statement "{\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      }" { (while_statement "while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" while (parenthesized_expression "(uVar3 = uVar7, 0x7507507 < uVar12)" ( (comma_expression "uVar3 = uVar7, 0x7507507 < uVar12" (assignment_expression "uVar3 = uVar7" identifier = identifier) , (binary_expression "0x7507507 < uVar12" number_literal < identifier)) )) (compound_statement "{\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" { (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar1 + iVar4;" (assignment_expression "puVar9 = puVar1 + iVar4" identifier = (binary_expression "puVar1 + iVar4" identifier + identifier)) ;) (expression_statement "*(uint *)(puVar11 + -0x2c) = uVar3 - 1;" (assignment_expression "*(uint *)(puVar11 + -0x2c) = uVar3 - 1" (pointer_expression "*(uint *)(puVar11 + -0x2c)" * (cast_expression "(uint *)(puVar11 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x2c)" ( (binary_expression "puVar11 + -0x2c" identifier + number_literal) )))) = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar5 = iVar4 + 1;" (assignment_expression "iVar5 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" if (parenthesized_expression "(uVar3 - 1 == 0xc)" ( (binary_expression "uVar3 - 1 == 0xc" (binary_expression "uVar3 - 1" identifier - number_literal) == number_literal) )) (compound_statement "{\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" { (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" identifier = number_literal) ;) (goto_statement "goto LAB_00028633;" goto statement_identifier ;) })) (expression_statement "uVar7 = *(uint *)(puVar11 + -0x2c);" (assignment_expression "uVar7 = *(uint *)(puVar11 + -0x2c)" identifier = (pointer_expression "*(uint *)(puVar11 + -0x2c)" * (cast_expression "(uint *)(puVar11 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x2c)" ( (binary_expression "puVar11 + -0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar4;" (assignment_expression "iVar6 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" identifier = identifier) ;) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar12 = uVar12 * uVar3;" (assignment_expression "uVar12 = uVar12 * uVar3" identifier = (binary_expression "uVar12 * uVar3" identifier * identifier)) ;) (expression_statement "puVar9 = puVar1 + iVar6;" (assignment_expression "puVar9 = puVar1 + iVar6" identifier = (binary_expression "puVar1 + iVar6" identifier + identifier)) ;) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar3 - 1;" (assignment_expression "uVar7 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 - 1 != 0xc)" ( (binary_expression "uVar3 - 1 != 0xc" (binary_expression "uVar3 - 1" identifier - number_literal) != number_literal) )) ;) }))) (labeled_statement "LAB_00028633:\n    *puVar9 = uVar12;" statement_identifier : (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" * identifier) = identifier) ;)) (expression_statement "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;" (assignment_expression "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5" (pointer_expression "*(int *)((int)auStack_54 + iVar2 + 0xc)" * (cast_expression "(int *)((int)auStack_54 + iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 0xc)" ( (binary_expression "(int)auStack_54 + iVar2 + 0xc" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;" (assignment_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1" (pointer_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8)" * (cast_expression "(undefined4 **)((int)auStack_54 + iVar2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 8)" ( (binary_expression "(int)auStack_54 + iVar2 + 8" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34)" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4)" * (cast_expression "(undefined4 *)((int)auStack_54 + iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2 + 4)" ( (binary_expression "(int)auStack_54 + iVar2 + 4" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar11 + -0x34)" * (cast_expression "(undefined4 *)(puVar11 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2)" * (cast_expression "(undefined4 *)((int)auStack_54 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_54 + iVar2)" ( (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__gmpz_prodlimbs();" (call_expression "__gmpz_prodlimbs()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = (uint *)((int)auStack_40 + iVar2);" (assignment_expression "puVar10 = (uint *)((int)auStack_40 + iVar2)" identifier = (cast_expression "(uint *)((int)auStack_40 + iVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)auStack_40 + iVar2)" ( (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" else (compound_statement "{\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" { (expression_statement "auStack_54[3] = 0;" (assignment_expression "auStack_54[3] = 0" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(puVar11 + -0x34)" * (cast_expression "(uint *)(puVar11 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "auStack_54[0] = 0x2865e;" (assignment_expression "auStack_54[0] = 0x2865e" (subscript_expression "auStack_54[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[2] = uVar12;" (assignment_expression "auStack_54[2] = uVar12" (subscript_expression "auStack_54[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__gmpz_oddfac_1();" (call_expression "__gmpz_oddfac_1()" identifier (argument_list "()" ( ))) ;) (if_statement "if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" if (parenthesized_expression "(uVar12 < 0x32)" ( (binary_expression "uVar12 < 0x32" identifier < number_literal) )) (compound_statement "{\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }" { (expression_statement "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));" (assignment_expression "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = (binary_expression "(uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" ( (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1)" (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1" (pointer_expression "*(int *)((int)ppuVar8 + 0x759f1)" * (cast_expression "(int *)((int)ppuVar8 + 0x759f1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x759f1)" ( (binary_expression "(int)ppuVar8 + 0x759f1" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) + (parenthesized_expression "(uVar12 >> 1)" ( (binary_expression "uVar12 >> 1" identifier >> number_literal) ))) ))))) ;) }) (else_clause "else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" else (compound_statement "{\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" { (expression_statement "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);" (assignment_expression "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555)" identifier = (binary_expression "uVar12 - (uVar12 >> 1 & 0x55555555)" identifier - (parenthesized_expression "(uVar12 >> 1 & 0x55555555)" ( (binary_expression "uVar12 >> 1 & 0x55555555" (binary_expression "uVar12 >> 1" identifier >> number_literal) & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" identifier = (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" ( (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" identifier >> number_literal) & number_literal) )) + (parenthesized_expression "(uVar7 & 0x33333333)" ( (binary_expression "uVar7 & 0x33333333" identifier & number_literal) )))) ;) (expression_statement "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f" identifier = (binary_expression "(uVar7 >> 4) + uVar7 & 0xf0f0f0f" (binary_expression "(uVar7 >> 4) + uVar7" (parenthesized_expression "(uVar7 >> 4)" ( (binary_expression "uVar7 >> 4" identifier >> number_literal) )) + identifier) & number_literal)) ;) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" identifier = (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + identifier)) ;) (expression_statement "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);" (assignment_expression "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" (subscript_expression "auStack_54[3]" identifier [ number_literal ]) = (binary_expression "uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" identifier - (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" ( (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" ( (binary_expression "uVar7 >> 0x10" identifier >> number_literal) )) + identifier) & number_literal) )))) ;) }))) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(puVar11 + -0x34)" * (cast_expression "(uint *)(puVar11 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x34)" ( (binary_expression "puVar11 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "auStack_54[0] = 0x28686;" (assignment_expression "auStack_54[0] = 0x28686" (subscript_expression "auStack_54[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_54[2] = auStack_54[1];" (assignment_expression "auStack_54[2] = auStack_54[1]" (subscript_expression "auStack_54[2]" identifier [ number_literal ]) = (subscript_expression "auStack_54[1]" identifier [ number_literal ])) ;) (expression_statement "__gmpz_mul_2exp();" (call_expression "__gmpz_mul_2exp()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" identifier = identifier) ;) }))))) (if_statement "if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar11 + -0x1c)" * (cast_expression "(int *)(puVar11 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -0x1c)" ( (binary_expression "puVar11 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "*(undefined4 *)((int)puVar10 + -4) = 0x286f4;" (assignment_expression "*(undefined4 *)((int)puVar10 + -4) = 0x286f4" (pointer_expression "*(undefined4 *)((int)puVar10 + -4)" * (cast_expression "(undefined4 *)((int)puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + -4)" ( (binary_expression "(int)puVar10 + -4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (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) ;) (expression_statement (assignment_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 + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != LIT) )) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) & LIT) )))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __gmpz_fac_ui(void)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" (primitive_type "void") (function_declarator "__gmpz_fac_ui(void)" (identifier "__gmpz_fac_ui") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  undefined **ppuVar8;\n  uint *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint auStack_54 [5];\n  uint auStack_40 [11];\n  undefined4 uStack_14;\n  undefined **ppuStack_10;\n  \n  ppuVar8 = &__DT_PLTGOT;\n  puVar11 = &stack0xfffffffc;\n  ppuStack_10 = &__DT_PLTGOT;\n  uStack_14 = 0x2855b;\n  entry();\n  puVar10 = auStack_40;\n  iVar2 = *(int *)(puVar11 + 8);\n  uVar12 = *(uint *)(puVar11 + 0xc);\n  *(int *)(puVar11 + -0x34) = iVar2;\n  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;\n  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }\n  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;\n  FUN_0007ebe0();\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined **ppuVar8;" (type_identifier "undefined") (pointer_declarator "**ppuVar8" (* "*") (pointer_declarator "*ppuVar8" (* "*") (identifier "ppuVar8"))) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint auStack_54 [5];" (type_identifier "uint") (array_declarator "auStack_54 [5]" (identifier "auStack_54") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "uint auStack_40 [11];" (type_identifier "uint") (array_declarator "auStack_40 [11]" (identifier "auStack_40") ([ "[") (number_literal "11") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (declaration "undefined **ppuStack_10;" (type_identifier "undefined") (pointer_declarator "**ppuStack_10" (* "*") (pointer_declarator "*ppuStack_10" (* "*") (identifier "ppuStack_10"))) (; ";")) (expression_statement "ppuVar8 = &__DT_PLTGOT;" (assignment_expression "ppuVar8 = &__DT_PLTGOT" (identifier "ppuVar8") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "puVar11 = &stack0xfffffffc;" (assignment_expression "puVar11 = &stack0xfffffffc" (identifier "puVar11") (= "=") (pointer_expression "&stack0xfffffffc" (& "&") (identifier "stack0xfffffffc"))) (; ";")) (expression_statement "ppuStack_10 = &__DT_PLTGOT;" (assignment_expression "ppuStack_10 = &__DT_PLTGOT" (identifier "ppuStack_10") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "uStack_14 = 0x2855b;" (assignment_expression "uStack_14 = 0x2855b" (identifier "uStack_14") (= "=") (number_literal "0x2855b")) (; ";")) (expression_statement "entry();" (call_expression "entry()" (identifier "entry") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" (identifier "puVar10") (= "=") (identifier "auStack_40")) (; ";")) (expression_statement "iVar2 = *(int *)(puVar11 + 8);" (assignment_expression "iVar2 = *(int *)(puVar11 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar11 + 8)" (* "*") (cast_expression "(int *)(puVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 8)" (( "(") (binary_expression "puVar11 + 8" (identifier "puVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar12 = *(uint *)(puVar11 + 0xc);" (assignment_expression "uVar12 = *(uint *)(puVar11 + 0xc)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(puVar11 + 0xc)" (* "*") (cast_expression "(uint *)(puVar11 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0xc)" (( "(") (binary_expression "puVar11 + 0xc" (identifier "puVar11") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar11 + -0x34) = iVar2;" (assignment_expression "*(int *)(puVar11 + -0x34) = iVar2" (pointer_expression "*(int *)(puVar11 + -0x34)" (* "*") (cast_expression "(int *)(puVar11 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x34)" (( "(") (binary_expression "puVar11 + -0x34" (identifier "puVar11") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;" (assignment_expression "*(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5" (pointer_expression "*(int *)(puVar11 + -0x30)" (* "*") (cast_expression "(int *)(puVar11 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x30)" (( "(") (binary_expression "puVar11 + -0x30" (identifier "puVar11") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (binary_expression "(int)ppuVar8 + 0x75aa5" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x75aa5"))) (; ";")) (expression_statement "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "*(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(undefined4 *)(puVar11 + -0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x1c)" (( "(") (binary_expression "puVar11 + -0x1c" (identifier "puVar11") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (uVar12 < 0xd) {\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }\n  else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" (if "if") (parenthesized_expression "(uVar12 < 0xd)" (( "(") (binary_expression "uVar12 < 0xd" (identifier "uVar12") (< "<") (number_literal "0xd")) () ")")) (compound_statement "{\n    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);\n    *(undefined4 *)(iVar2 + 4) = 1;\n  }" ({ "{") (expression_statement "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);" (assignment_expression "**(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" (pointer_expression "**(undefined4 **)(iVar2 + 8)" (* "*") (pointer_expression "*(undefined4 **)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 **)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (= "=") (pointer_expression "*(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + uVar12 * 4 + 0x57045)" (( "(") (binary_expression "(int)ppuVar8 + uVar12 * 4 + 0x57045" (binary_expression "(int)ppuVar8 + uVar12 * 4" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x57045")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 4) = 1;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 1" (pointer_expression "*(undefined4 *)(iVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" (else "else") (if_statement "if (uVar12 < 0x23) {\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }\n  else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" (if "if") (parenthesized_expression "(uVar12 < 0x23)" (( "(") (binary_expression "uVar12 < 0x23" (identifier "uVar12") (< "<") (number_literal "0x23")) () ")")) (compound_statement "{\n    iVar6 = 1;\n    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);\n    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);\n    *puVar1 = 0x1c8cfc00;\n    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);\n    uVar7 = uVar12 - 1;\n    iVar4 = 2;\n    if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }\nLAB_00028633:\n    *puVar9 = uVar12;\n    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;\n    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;\n    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);\n    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;\n    __gmpz_prodlimbs();\n    puVar10 = (uint *)((int)auStack_40 + iVar2);\n  }" ({ "{") (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);" (assignment_expression "iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" (identifier "iVar2") (= "=") (unary_expression "-((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" (- "-") (parenthesized_expression "((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0)" (( "(") (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0" (binary_expression "(uVar12 - 0xd & 0xfffffffc) + 0x23" (parenthesized_expression "(uVar12 - 0xd & 0xfffffffc)" (( "(") (binary_expression "uVar12 - 0xd & 0xfffffffc" (binary_expression "uVar12 - 0xd" (identifier "uVar12") (- "-") (number_literal "0xd")) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (number_literal "0x23")) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "puVar1 = (undefined4 *)((int)auStack_40 + iVar2);" (assignment_expression "puVar1 = (undefined4 *)((int)auStack_40 + iVar2)" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)((int)auStack_40 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_40 + iVar2)" (( "(") (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_40")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "*puVar1 = 0x1c8cfc00;" (assignment_expression "*puVar1 = 0x1c8cfc00" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0x1c8cfc00")) (; ";")) (expression_statement "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);" (assignment_expression "puVar9 = (uint *)((int)auStack_40 + iVar2 + 4)" (identifier "puVar9") (= "=") (cast_expression "(uint *)((int)auStack_40 + iVar2 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_40 + iVar2 + 4)" (( "(") (binary_expression "(int)auStack_40 + iVar2 + 4" (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_40")) (+ "+") (identifier "iVar2")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar12 - 1;" (assignment_expression "uVar7 = uVar12 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (if_statement "if (uVar12 - 1 == 0xc) {\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }\n    else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" (if "if") (parenthesized_expression "(uVar12 - 1 == 0xc)" (( "(") (binary_expression "uVar12 - 1 == 0xc" (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) (== "==") (number_literal "0xc")) () ")")) (compound_statement "{\n      iVar5 = 2;\n      uVar12 = 0xd;\n    }" ({ "{") (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" (identifier "iVar5") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" (identifier "uVar12") (= "=") (number_literal "0xd")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" (else "else") (compound_statement "{\n      do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);\n    }" ({ "{") (do_statement "do {\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      } while (uVar3 - 1 != 0xc);" (do "do") (compound_statement "{\n        while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }\n        uVar12 = uVar12 * uVar3;\n        puVar9 = puVar1 + iVar6;\n        iVar5 = iVar6 + 1;\n        uVar7 = uVar3 - 1;\n        iVar4 = iVar5;\n      }" ({ "{") (while_statement "while (uVar3 = uVar7, 0x7507507 < uVar12) {\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" (while "while") (parenthesized_expression "(uVar3 = uVar7, 0x7507507 < uVar12)" (( "(") (comma_expression "uVar3 = uVar7, 0x7507507 < uVar12" (assignment_expression "uVar3 = uVar7" (identifier "uVar3") (= "=") (identifier "uVar7")) (, ",") (binary_expression "0x7507507 < uVar12" (number_literal "0x7507507") (< "<") (identifier "uVar12"))) () ")")) (compound_statement "{\n          *puVar9 = uVar12;\n          puVar9 = puVar1 + iVar4;\n          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;\n          iVar5 = iVar4 + 1;\n          if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }\n          uVar7 = *(uint *)(puVar11 + -0x2c);\n          iVar6 = iVar4;\n          iVar4 = iVar5;\n          uVar12 = uVar3;\n        }" ({ "{") (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puVar9 = puVar1 + iVar4;" (assignment_expression "puVar9 = puVar1 + iVar4" (identifier "puVar9") (= "=") (binary_expression "puVar1 + iVar4" (identifier "puVar1") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "*(uint *)(puVar11 + -0x2c) = uVar3 - 1;" (assignment_expression "*(uint *)(puVar11 + -0x2c) = uVar3 - 1" (pointer_expression "*(uint *)(puVar11 + -0x2c)" (* "*") (cast_expression "(uint *)(puVar11 + -0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x2c)" (( "(") (binary_expression "puVar11 + -0x2c" (identifier "puVar11") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar4 + 1;" (assignment_expression "iVar5 = iVar4 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 - 1 == 0xc) {\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" (if "if") (parenthesized_expression "(uVar3 - 1 == 0xc)" (( "(") (binary_expression "uVar3 - 1 == 0xc" (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) (== "==") (number_literal "0xc")) () ")")) (compound_statement "{\n            uVar12 = 0xd;\n            goto LAB_00028633;\n          }" ({ "{") (expression_statement "uVar12 = 0xd;" (assignment_expression "uVar12 = 0xd" (identifier "uVar12") (= "=") (number_literal "0xd")) (; ";")) (goto_statement "goto LAB_00028633;" (goto "goto") (statement_identifier "LAB_00028633") (; ";")) (} "}"))) (expression_statement "uVar7 = *(uint *)(puVar11 + -0x2c);" (assignment_expression "uVar7 = *(uint *)(puVar11 + -0x2c)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(puVar11 + -0x2c)" (* "*") (cast_expression "(uint *)(puVar11 + -0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x2c)" (( "(") (binary_expression "puVar11 + -0x2c" (identifier "puVar11") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar4;" (assignment_expression "iVar6 = iVar4" (identifier "iVar6") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" (identifier "iVar4") (= "=") (identifier "iVar5")) (; ";")) (expression_statement "uVar12 = uVar3;" (assignment_expression "uVar12 = uVar3" (identifier "uVar12") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar12 * uVar3;" (assignment_expression "uVar12 = uVar12 * uVar3" (identifier "uVar12") (= "=") (binary_expression "uVar12 * uVar3" (identifier "uVar12") (* "*") (identifier "uVar3"))) (; ";")) (expression_statement "puVar9 = puVar1 + iVar6;" (assignment_expression "puVar9 = puVar1 + iVar6" (identifier "puVar9") (= "=") (binary_expression "puVar1 + iVar6" (identifier "puVar1") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar5 = iVar6 + 1;" (assignment_expression "iVar5 = iVar6 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = uVar3 - 1;" (assignment_expression "uVar7 = uVar3 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar5;" (assignment_expression "iVar4 = iVar5" (identifier "iVar4") (= "=") (identifier "iVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 - 1 != 0xc)" (( "(") (binary_expression "uVar3 - 1 != 0xc" (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) (!= "!=") (number_literal "0xc")) () ")")) (; ";")) (} "}")))) (labeled_statement "LAB_00028633:\n    *puVar9 = uVar12;" (statement_identifier "LAB_00028633") (: ":") (expression_statement "*puVar9 = uVar12;" (assignment_expression "*puVar9 = uVar12" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar12")) (; ";"))) (expression_statement "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;" (assignment_expression "*(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5" (pointer_expression "*(int *)((int)auStack_54 + iVar2 + 0xc)" (* "*") (cast_expression "(int *)((int)auStack_54 + iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_54 + iVar2 + 0xc)" (( "(") (binary_expression "(int)auStack_54 + iVar2 + 0xc" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_54")) (+ "+") (identifier "iVar2")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;" (assignment_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1" (pointer_expression "*(undefined4 **)((int)auStack_54 + iVar2 + 8)" (* "*") (cast_expression "(undefined4 **)((int)auStack_54 + iVar2 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)auStack_54 + iVar2 + 8)" (( "(") (binary_expression "(int)auStack_54 + iVar2 + 8" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_54")) (+ "+") (identifier "iVar2")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34)" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2 + 4)" (* "*") (cast_expression "(undefined4 *)((int)auStack_54 + iVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_54 + iVar2 + 4)" (( "(") (binary_expression "(int)auStack_54 + iVar2 + 4" (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_54")) (+ "+") (identifier "iVar2")) (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar11 + -0x34)" (* "*") (cast_expression "(undefined4 *)(puVar11 + -0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x34)" (( "(") (binary_expression "puVar11 + -0x34" (identifier "puVar11") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;" (assignment_expression "*(undefined4 *)((int)auStack_54 + iVar2) = 0x28645" (pointer_expression "*(undefined4 *)((int)auStack_54 + iVar2)" (* "*") (cast_expression "(undefined4 *)((int)auStack_54 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_54 + iVar2)" (( "(") (binary_expression "(int)auStack_54 + iVar2" (cast_expression "(int)auStack_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_54")) (+ "+") (identifier "iVar2")) () ")")))) (= "=") (number_literal "0x28645")) (; ";")) (expression_statement "__gmpz_prodlimbs();" (call_expression "__gmpz_prodlimbs()" (identifier "__gmpz_prodlimbs") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = (uint *)((int)auStack_40 + iVar2);" (assignment_expression "puVar10 = (uint *)((int)auStack_40 + iVar2)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)auStack_40 + iVar2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)auStack_40 + iVar2)" (( "(") (binary_expression "(int)auStack_40 + iVar2" (cast_expression "(int)auStack_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "auStack_40")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" (else "else") (compound_statement "{\n    auStack_54[3] = 0;\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x2865e;\n    auStack_54[2] = uVar12;\n    __gmpz_oddfac_1();\n    if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }\n    auStack_54[1] = *(uint *)(puVar11 + -0x34);\n    auStack_54[0] = 0x28686;\n    auStack_54[2] = auStack_54[1];\n    __gmpz_mul_2exp();\n    puVar10 = auStack_40;\n  }" ({ "{") (expression_statement "auStack_54[3] = 0;" (assignment_expression "auStack_54[3] = 0" (subscript_expression "auStack_54[3]" (identifier "auStack_54") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" (identifier "auStack_54") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(uint *)(puVar11 + -0x34)" (* "*") (cast_expression "(uint *)(puVar11 + -0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x34)" (( "(") (binary_expression "puVar11 + -0x34" (identifier "puVar11") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "auStack_54[0] = 0x2865e;" (assignment_expression "auStack_54[0] = 0x2865e" (subscript_expression "auStack_54[0]" (identifier "auStack_54") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x2865e")) (; ";")) (expression_statement "auStack_54[2] = uVar12;" (assignment_expression "auStack_54[2] = uVar12" (subscript_expression "auStack_54[2]" (identifier "auStack_54") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "__gmpz_oddfac_1();" (call_expression "__gmpz_oddfac_1()" (identifier "__gmpz_oddfac_1") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (uVar12 < 0x32) {\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }\n    else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" (if "if") (parenthesized_expression "(uVar12 < 0x32)" (( "(") (binary_expression "uVar12 < 0x32" (identifier "uVar12") (< "<") (number_literal "0x32")) () ")")) (compound_statement "{\n      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));\n    }" ({ "{") (expression_statement "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));" (assignment_expression "auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (subscript_expression "auStack_54[3]" (identifier "auStack_54") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "(uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1))" (( "(") (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1)" (binary_expression "*(int *)((int)ppuVar8 + 0x759f1) + -1" (pointer_expression "*(int *)((int)ppuVar8 + 0x759f1)" (* "*") (cast_expression "(int *)((int)ppuVar8 + 0x759f1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x759f1)" (( "(") (binary_expression "(int)ppuVar8 + 0x759f1" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x759f1")) () ")")))) (+ "+") (number_literal "-1")) (+ "+") (parenthesized_expression "(uVar12 >> 1)" (( "(") (binary_expression "uVar12 >> 1" (identifier "uVar12") (>> ">>") (number_literal "1")) () ")"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" (else "else") (compound_statement "{\n      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);\n      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);\n      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;\n      uVar7 = (uVar7 >> 8) + uVar7;\n      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);\n    }" ({ "{") (expression_statement "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);" (assignment_expression "uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555)" (identifier "uVar7") (= "=") (binary_expression "uVar12 - (uVar12 >> 1 & 0x55555555)" (identifier "uVar12") (- "-") (parenthesized_expression "(uVar12 >> 1 & 0x55555555)" (( "(") (binary_expression "uVar12 >> 1 & 0x55555555" (binary_expression "uVar12 >> 1" (identifier "uVar12") (>> ">>") (number_literal "1")) (& "&") (number_literal "0x55555555")) () ")")))) (; ";")) (expression_statement "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);" (assignment_expression "uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (identifier "uVar7") (= "=") (binary_expression "(uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333)" (parenthesized_expression "(uVar7 >> 2 & 0x33333333)" (( "(") (binary_expression "uVar7 >> 2 & 0x33333333" (binary_expression "uVar7 >> 2" (identifier "uVar7") (>> ">>") (number_literal "2")) (& "&") (number_literal "0x33333333")) () ")")) (+ "+") (parenthesized_expression "(uVar7 & 0x33333333)" (( "(") (binary_expression "uVar7 & 0x33333333" (identifier "uVar7") (& "&") (number_literal "0x33333333")) () ")")))) (; ";")) (expression_statement "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;" (assignment_expression "uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f" (identifier "uVar7") (= "=") (binary_expression "(uVar7 >> 4) + uVar7 & 0xf0f0f0f" (binary_expression "(uVar7 >> 4) + uVar7" (parenthesized_expression "(uVar7 >> 4)" (( "(") (binary_expression "uVar7 >> 4" (identifier "uVar7") (>> ">>") (number_literal "4")) () ")")) (+ "+") (identifier "uVar7")) (& "&") (number_literal "0xf0f0f0f"))) (; ";")) (expression_statement "uVar7 = (uVar7 >> 8) + uVar7;" (assignment_expression "uVar7 = (uVar7 >> 8) + uVar7" (identifier "uVar7") (= "=") (binary_expression "(uVar7 >> 8) + uVar7" (parenthesized_expression "(uVar7 >> 8)" (( "(") (binary_expression "uVar7 >> 8" (identifier "uVar7") (>> ">>") (number_literal "8")) () ")")) (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);" (assignment_expression "auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" (subscript_expression "auStack_54[3]" (identifier "auStack_54") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff)" (identifier "uVar12") (- "-") (parenthesized_expression "((uVar7 >> 0x10) + uVar7 & 0xff)" (( "(") (binary_expression "(uVar7 >> 0x10) + uVar7 & 0xff" (binary_expression "(uVar7 >> 0x10) + uVar7" (parenthesized_expression "(uVar7 >> 0x10)" (( "(") (binary_expression "uVar7 >> 0x10" (identifier "uVar7") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (identifier "uVar7")) (& "&") (number_literal "0xff")) () ")")))) (; ";")) (} "}")))) (expression_statement "auStack_54[1] = *(uint *)(puVar11 + -0x34);" (assignment_expression "auStack_54[1] = *(uint *)(puVar11 + -0x34)" (subscript_expression "auStack_54[1]" (identifier "auStack_54") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(uint *)(puVar11 + -0x34)" (* "*") (cast_expression "(uint *)(puVar11 + -0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x34)" (( "(") (binary_expression "puVar11 + -0x34" (identifier "puVar11") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "auStack_54[0] = 0x28686;" (assignment_expression "auStack_54[0] = 0x28686" (subscript_expression "auStack_54[0]" (identifier "auStack_54") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0x28686")) (; ";")) (expression_statement "auStack_54[2] = auStack_54[1];" (assignment_expression "auStack_54[2] = auStack_54[1]" (subscript_expression "auStack_54[2]" (identifier "auStack_54") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "auStack_54[1]" (identifier "auStack_54") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "__gmpz_mul_2exp();" (call_expression "__gmpz_mul_2exp()" (identifier "__gmpz_mul_2exp") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = auStack_40;" (assignment_expression "puVar10 = auStack_40" (identifier "puVar10") (= "=") (identifier "auStack_40")) (; ";")) (} "}")))))) (if_statement "if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)" (pointer_expression "*(int *)(puVar11 + -0x1c)" (* "*") (cast_expression "(int *)(puVar11 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + -0x1c)" (( "(") (binary_expression "puVar11 + -0x1c" (identifier "puVar11") (+ "+") (number_literal "-0x1c")) () ")")))) (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)puVar10 + -4) = 0x286f4;" (assignment_expression "*(undefined4 *)((int)puVar10 + -4) = 0x286f4" (pointer_expression "*(undefined4 *)((int)puVar10 + -4)" (* "*") (cast_expression "(undefined4 *)((int)puVar10 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + -4)" (( "(") (binary_expression "(int)puVar10 + -4" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x286f4")) (; ";")) (expression_statement "FUN_0007ebe0();" (call_expression "FUN_0007ebe0()" (identifier "FUN_0007ebe0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Switch with 1 destination removed at 0x0001b500 */

void function_1(type_1 x,type_2 var_2)

{
  type_3 *var_6;
  int var_4;
  type_4 var_5;
  int var_7;
  int var_8;
  int iVar6;
  type_4 var_11;
  type_4 *puVar8;
  type_5 *var_13;
  type_6 cnt;
  int var_1;
  type_3 uStackY_50;
  type_5 var_3 [4];
  type_1 p_Stack_38;
  type_7 **ppuStack_34;
  type_4 auStack_30 [7];
  type_3 uStack_14;
  type_7 **ppuStack_10;
  
  ppuStack_10 = &_GLOBAL_OFFSET_TABLE_;
  uStack_14 = 0x2855b;
  var_13 = var_3;
  p_Stack_38 = x;
  ppuStack_34 = &_GLOBAL_OFFSET_TABLE_;
  auStack_30[4] = *(int *)(var_1 + 0x14);
  if (var_2 < 0xd) {
    *x->_mp_d = function_1::table[var_2];
    x->_mp_size = 1;
  }
  else if (var_2 < 0x23) {
    var_4 = -((var_2 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);
    var_13 = var_3 + var_4;
    var_6 = (type_3 *)((int)auStack_30 + var_4);
    *var_6 = 0x1c8cfc00;
    puVar8 = (type_4 *)((int)auStack_30 + var_4 + 4);
    var_11 = var_2 - 1;
    var_7 = 1;
    var_8 = 2;
    if (var_2 - 1 == 0xc) {
      iVar6 = 2;
      var_2 = 0xd;
    }
    else {
      do {
        while (var_5 = var_11, var_2 < 0x7507508) {
          var_2 = var_2 * var_5;
          puVar8 = var_6 + var_7;
          iVar6 = var_7 + 1;
          var_11 = var_5 - 1;
          var_8 = iVar6;
          if (var_5 - 1 == 0xc) goto LAB_00028633;
        }
        auStack_30[0] = var_5 - 1;
        *puVar8 = var_2;
        puVar8 = var_6 + var_8;
        iVar6 = var_8 + 1;
        var_11 = auStack_30[0];
        var_7 = var_8;
        var_8 = iVar6;
        var_2 = var_5;
      } while (auStack_30[0] != 0xc);
      var_2 = 0xd;
    }
LAB_00028633:
    *puVar8 = var_2;
    *(int *)((int)auStack_30 + var_4 + -0x14) = iVar6;
    *(type_3 **)((int)auStack_30 + var_4 + -0x18) = var_6;
    *(type_1 *)((int)auStack_30 + var_4 + -0x1c) = p_Stack_38;
    *(type_3 *)((int)&uStackY_50 + var_4) = 0x28645;
    var_9(*(type_1 *)((int)auStack_30 + var_4 + -0x1c),
                     *(type_8 *)((int)auStack_30 + var_4 + -0x18),
                     *(type_9 *)((int)auStack_30 + var_4 + -0x14));
  }
  else {
    uStackY_50 = 0x2865e;
    var_10(x,var_2,0);
    if (var_2 < 0x32) {
      cnt = (type_6)(type_10)PTR___gmp_fac2cnt_table_0009df4c[(var_2 >> 1) - 1];
    }
    else {
      var_11 = var_2 - (var_2 >> 1 & 0x55555555);
      var_11 = (var_11 >> 2 & 0x33333333) + (var_11 & 0x33333333);
      var_11 = (var_11 >> 4) + var_11 & 0xf0f0f0f;
      var_11 = (var_11 >> 8) + var_11;
      cnt = var_2 - ((var_11 >> 0x10) + var_11 & 0xff);
    }
    uStackY_50 = 0x28686;
    var_12(p_Stack_38,p_Stack_38,cnt);
    var_13 = var_3;
  }
  if (auStack_30[4] == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(type_3 *)(var_13 + -4) = 0x286f4;
  var_14();
}


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

/* WARNING: Switch with 1 destination removed at 0x0001b500 */

void MASKED(void)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined **ppuVar8;
  uint *puVar9;
  uint *puVar10;
  undefined1 *puVar11;
  uint uVar12;
  int in_GS_OFFSET;
  uint auStack_54 [5];
  uint auStack_40 [11];
  undefined4 uStack_14;
  undefined **ppuStack_10;
  
  ppuVar8 = &__DT_PLTGOT;
  puVar11 = &stack0xfffffffc;
  ppuStack_10 = &__DT_PLTGOT;
  uStack_14 = 0x2855b;
  entry();
  puVar10 = auStack_40;
  iVar2 = *(int *)(puVar11 + 8);
  uVar12 = *(uint *)(puVar11 + 0xc);
  *(int *)(puVar11 + -0x34) = iVar2;
  *(int *)(puVar11 + -0x30) = (int)ppuVar8 + 0x75aa5;
  *(undefined4 *)(puVar11 + -0x1c) = *(undefined4 *)(in_GS_OFFSET + 0x14);
  if (uVar12 < 0xd) {
    **(undefined4 **)(iVar2 + 8) = *(undefined4 *)((int)ppuVar8 + uVar12 * 4 + 0x57045);
    *(undefined4 *)(iVar2 + 4) = 1;
  }
  else if (uVar12 < 0x23) {
    iVar6 = 1;
    iVar2 = -((uVar12 - 0xd & 0xfffffffc) + 0x23 & 0xfffffff0);
    puVar1 = (undefined4 *)((int)auStack_40 + iVar2);
    *puVar1 = 0x1c8cfc00;
    puVar9 = (uint *)((int)auStack_40 + iVar2 + 4);
    uVar7 = uVar12 - 1;
    iVar4 = 2;
    if (uVar12 - 1 == 0xc) {
      iVar5 = 2;
      uVar12 = 0xd;
    }
    else {
      do {
        while (uVar3 = uVar7, 0x7507507 < uVar12) {
          *puVar9 = uVar12;
          puVar9 = puVar1 + iVar4;
          *(uint *)(puVar11 + -0x2c) = uVar3 - 1;
          iVar5 = iVar4 + 1;
          if (uVar3 - 1 == 0xc) {
            uVar12 = 0xd;
            goto LAB_00028633;
          }
          uVar7 = *(uint *)(puVar11 + -0x2c);
          iVar6 = iVar4;
          iVar4 = iVar5;
          uVar12 = uVar3;
        }
        uVar12 = uVar12 * uVar3;
        puVar9 = puVar1 + iVar6;
        iVar5 = iVar6 + 1;
        uVar7 = uVar3 - 1;
        iVar4 = iVar5;
      } while (uVar3 - 1 != 0xc);
    }
LAB_00028633:
    *puVar9 = uVar12;
    *(int *)((int)auStack_54 + iVar2 + 0xc) = iVar5;
    *(undefined4 **)((int)auStack_54 + iVar2 + 8) = puVar1;
    *(undefined4 *)((int)auStack_54 + iVar2 + 4) = *(undefined4 *)(puVar11 + -0x34);
    *(undefined4 *)((int)auStack_54 + iVar2) = 0x28645;
    __gmpz_prodlimbs();
    puVar10 = (uint *)((int)auStack_40 + iVar2);
  }
  else {
    auStack_54[3] = 0;
    auStack_54[1] = *(uint *)(puVar11 + -0x34);
    auStack_54[0] = 0x2865e;
    auStack_54[2] = uVar12;
    __gmpz_oddfac_1();
    if (uVar12 < 0x32) {
      auStack_54[3] = (uint)*(byte *)(*(int *)((int)ppuVar8 + 0x759f1) + -1 + (uVar12 >> 1));
    }
    else {
      uVar7 = uVar12 - (uVar12 >> 1 & 0x55555555);
      uVar7 = (uVar7 >> 2 & 0x33333333) + (uVar7 & 0x33333333);
      uVar7 = (uVar7 >> 4) + uVar7 & 0xf0f0f0f;
      uVar7 = (uVar7 >> 8) + uVar7;
      auStack_54[3] = uVar12 - ((uVar7 >> 0x10) + uVar7 & 0xff);
    }
    auStack_54[1] = *(uint *)(puVar11 + -0x34);
    auStack_54[0] = 0x28686;
    auStack_54[2] = auStack_54[1];
    __gmpz_mul_2exp();
    puVar10 = auStack_40;
  }
  if (*(int *)(puVar11 + -0x1c) == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  *(undefined4 *)((int)puVar10 + -4) = 0x286f4;
  FUN_0007ebe0();
}

