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

void * __gmpz_export(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,
                    mpz_srcptr z)

{
  int iVar1;
  ulong uVar2;
  long lVar3;
  ulong uVar4;
  ulong uVar5;
  size_t sVar6;
  ulong *puVar7;
  byte *pbVar8;
  ulong *puVar9;
  long lVar10;
  int iVar11;
  long lVar12;
  byte *pbVar13;
  ulong uVar14;
  ulong uVar15;
  ulong uVar16;
  ulong uVar17;
  long in_FS_OFFSET;
  long lStack_78;
  ulong *puStack_60;
  byte bStack_58;
  uint uStack_50;
  ulong uStack_48;
  long lStack_40;
  
  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (countp == (size_t *)0x0) {
    countp = &uStack_48;
  }
  uVar2 = (ulong)z->_mp_size;
  puStack_60 = (ulong *)data;
  if (uVar2 == 0) {
    *countp = 0;
    goto LAB_001168e4;
  }
  puVar9 = z->_mp_d;
  uVar15 = size * 8 - nail;
  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);
  lVar10 = 0x3f;
  if (puVar9[lVar3 + -1] != 0) {
    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {
    }
  }
  uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f);
  uVar2 = uVar16 / uVar15;
  *countp = uVar2;
  if (data == (void *)0x0) {
    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)
                                    (size * uVar2,countp,uVar16 % uVar15);
  }
  if (endian == 0) {
    if (nail == 0) {
      endian = 0xffffffff;
      goto LAB_00116868;
    }
    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;
    endian = 0xffffffff;
LAB_00116bcc:
    sVar6 = -size;
  }
  else {
    if (nail == 0) {
LAB_00116868:
      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {
        if ((order & endian) == 0xffffffff) {
          __gmpn_copyi(puStack_60,puVar9,uVar2);
          goto LAB_001168e4;
        }
        if ((endian == 0xffffffff) && (order == 1)) {
          puVar9 = puVar9 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar15 = 0;
            do {
              puStack_60[uVar15] = *puVar9;
              puVar9 = puVar9 + -1;
              uVar15 = uVar15 + 1;
            } while (uVar2 != uVar15);
          }
          goto LAB_001168e4;
        }
        if ((order == -1) && (endian == 1U)) {
          if (0 < (long)uVar2) {
            uVar15 = 0;
            puVar7 = puStack_60;
            do {
              uVar16 = puVar9[uVar15];
              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |
                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |
                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |
                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;
              puVar7 = puVar7 + 1;
              uVar15 = uVar15 + 1;
            } while (uVar2 != uVar15);
          }
          goto LAB_001168e4;
        }
        if ((order == 1) && (endian == 1U)) {
          puVar9 = puVar9 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar15 = 0;
            puVar7 = puStack_60;
            do {
              uVar16 = *puVar9;
              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |
                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |
                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |
                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;
              puVar7 = puVar7 + 1;
              puVar9 = puVar9 + -1;
              uVar15 = uVar15 + 1;
            } while (uVar2 != uVar15);
          }
          goto LAB_001168e4;
        }
      }
    }
    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;
    sVar6 = size;
    if (endian < 0) goto LAB_00116bcc;
  }
  uStack_50 = (uint)uVar15 & 7;
  uVar14 = uVar15 >> 3;
  if (order < 0) {
    lStack_78 = sVar6 + size;
    lVar10 = 0;
  }
  else {
    lStack_78 = sVar6 - size;
    lVar10 = (uVar2 - 1) * size;
  }
  lVar12 = size - 1;
  if (endian < 0) {
    lVar12 = 0;
  }
  pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60);
  puVar7 = puVar9 + lVar3;
  if (uVar15 <= uVar16) {
    lVar10 = (long)endian;
    lVar3 = -lVar10;
    iVar11 = 0;
    uVar17 = 0;
    uVar16 = 0;
    do {
      uVar5 = 0;
      pbVar8 = pbVar13;
      if (uVar14 != 0) {
        do {
          if (iVar11 < 8) {
            uVar4 = 0;
            if (puVar7 != puVar9) {
              uVar4 = *puVar9;
              puVar9 = puVar9 + 1;
            }
            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));
            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);
            iVar11 = iVar11 + 0x38;
          }
          else {
            *pbVar8 = (byte)uVar16;
            uVar16 = uVar16 >> 8;
            iVar11 = iVar11 + -8;
          }
          uVar5 = uVar5 + 1;
          pbVar8 = pbVar8 + lVar3;
        } while (uVar14 != uVar5);
        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);
      }
      if ((uVar15 & 7) != 0) {
        if (iVar11 < (int)uStack_50) {
          uVar4 = 0;
          if (puVar7 != puVar9) {
            uVar4 = *puVar9;
            puVar9 = puVar9 + 1;
          }
          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;
          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);
          iVar1 = 0x40 - uStack_50;
        }
        else {
          *pbVar13 = bStack_58 & (byte)uVar16;
          uVar16 = uVar16 >> (sbyte)uStack_50;
          iVar1 = -uStack_50;
        }
        iVar11 = iVar11 + iVar1;
        pbVar13 = pbVar13 + lVar3;
        uVar5 = uVar5 + 1;
      }
      uVar4 = uVar5;
      pbVar8 = pbVar13;
      if (uVar5 < size) {
        do {
          *pbVar8 = 0;
          pbVar8 = pbVar8 + lVar3;
          uVar4 = uVar4 + 1;
        } while (size != uVar4);
        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;
      }
      pbVar13 = pbVar13 + lStack_78;
      uVar17 = uVar17 + 1;
    } while (uVar17 < uVar2);
  }
LAB_001168e4:
  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return puStack_60;
}



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

ulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,
                     long param_6,long param_7)

{
  int iVar1;
  ulong uVar2;
  long lVar3;
  ulong uVar4;
  ulong uVar5;
  ulong *puVar6;
  byte *pbVar7;
  ulong *puVar8;
  long lVar9;
  int iVar10;
  long lVar11;
  byte *pbVar12;
  ulong uVar13;
  ulong uVar14;
  ulong uVar15;
  ulong uVar16;
  long in_FS_OFFSET;
  long lStack_78;
  ulong *puStack_60;
  byte bStack_58;
  uint uStack_50;
  ulong uStack_48;
  long lStack_40;
  
  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == (ulong *)0x0) {
    param_2 = &uStack_48;
  }
  uVar2 = (ulong)*(int *)(param_7 + 4);
  puStack_60 = param_1;
  if (uVar2 == 0) {
    *param_2 = 0;
    goto LAB_001168e4;
  }
  puVar8 = *(ulong **)(param_7 + 8);
  uVar14 = param_4 * 8 - param_6;
  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);
  lVar9 = 0x3f;
  if (puVar8[lVar3 + -1] != 0) {
    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {
    }
  }
  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);
  uVar2 = uVar15 / uVar14;
  *param_2 = uVar2;
  if (param_1 == (ulong *)0x0) {
    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)
                                    (param_4 * uVar2,param_2,uVar15 % uVar14);
  }
  if (param_5 == 0) {
    if (param_6 == 0) {
      param_5 = 0xffffffff;
      goto LAB_00116868;
    }
    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;
    param_5 = 0xffffffff;
LAB_00116bcc:
    uVar16 = -param_4;
  }
  else {
    if (param_6 == 0) {
LAB_00116868:
      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {
        if ((param_3 & param_5) == 0xffffffff) {
          __gmpn_copyi(puStack_60,puVar8,uVar2);
          goto LAB_001168e4;
        }
        if ((param_5 == 0xffffffff) && (param_3 == 1)) {
          puVar8 = puVar8 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar14 = 0;
            do {
              puStack_60[uVar14] = *puVar8;
              puVar8 = puVar8 + -1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
        if ((param_3 == 0xffffffff) && (param_5 == 1)) {
          if (0 < (long)uVar2) {
            uVar14 = 0;
            puVar6 = puStack_60;
            do {
              uVar15 = puVar8[uVar14];
              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |
                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |
                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |
                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;
              puVar6 = puVar6 + 1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
        if ((param_3 == 1) && (param_5 == 1)) {
          puVar8 = puVar8 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar14 = 0;
            puVar6 = puStack_60;
            do {
              uVar15 = *puVar8;
              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |
                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |
                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |
                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;
              puVar6 = puVar6 + 1;
              puVar8 = puVar8 + -1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
      }
    }
    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;
    uVar16 = param_4;
    if ((int)param_5 < 0) goto LAB_00116bcc;
  }
  uStack_50 = (uint)uVar14 & 7;
  uVar13 = uVar14 >> 3;
  if ((int)param_3 < 0) {
    lStack_78 = uVar16 + param_4;
    lVar9 = 0;
  }
  else {
    lStack_78 = uVar16 - param_4;
    lVar9 = (uVar2 - 1) * param_4;
  }
  lVar11 = param_4 - 1;
  if ((int)param_5 < 0) {
    lVar11 = 0;
  }
  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);
  puVar6 = puVar8 + lVar3;
  if (uVar14 <= uVar15) {
    lVar9 = (long)(int)param_5;
    lVar3 = -lVar9;
    iVar10 = 0;
    uVar16 = 0;
    uVar15 = 0;
    do {
      uVar5 = 0;
      pbVar7 = pbVar12;
      if (uVar13 != 0) {
        do {
          if (iVar10 < 8) {
            uVar4 = 0;
            if (puVar6 != puVar8) {
              uVar4 = *puVar8;
              puVar8 = puVar8 + 1;
            }
            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));
            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);
            iVar10 = iVar10 + 0x38;
          }
          else {
            *pbVar7 = (byte)uVar15;
            uVar15 = uVar15 >> 8;
            iVar10 = iVar10 + -8;
          }
          uVar5 = uVar5 + 1;
          pbVar7 = pbVar7 + lVar3;
        } while (uVar13 != uVar5);
        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);
      }
      if ((uVar14 & 7) != 0) {
        if (iVar10 < (int)uStack_50) {
          uVar4 = 0;
          if (puVar6 != puVar8) {
            uVar4 = *puVar8;
            puVar8 = puVar8 + 1;
          }
          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;
          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);
          iVar1 = 0x40 - uStack_50;
        }
        else {
          *pbVar12 = bStack_58 & (byte)uVar15;
          uVar15 = uVar15 >> (sbyte)uStack_50;
          iVar1 = -uStack_50;
        }
        iVar10 = iVar10 + iVar1;
        pbVar12 = pbVar12 + lVar3;
        uVar5 = uVar5 + 1;
      }
      uVar4 = uVar5;
      pbVar7 = pbVar12;
      if (uVar5 < param_4) {
        do {
          *pbVar7 = 0;
          pbVar7 = pbVar7 + lVar3;
          uVar4 = uVar4 + 1;
        } while (param_4 != uVar4);
        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;
      }
      pbVar12 = pbVar12 + lStack_78;
      uVar16 = uVar16 + 1;
    } while (uVar16 < uVar2);
  }
LAB_001168e4:
  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return puStack_60;
}


JMP qword ptr [0x00173988]
(translation_unit "/* WARNING: Switch with 1 destination removed at 0x0010c310 */\n\nulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}\n\n" comment (function_definition "ulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" type_identifier (pointer_declarator "* __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" * (function_declarator "__gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" identifier (parameter_list "(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "ulong param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_7" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "ulong *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_78;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "byte bStack_58;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (declaration "ulong uStack_48;" type_identifier identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lStack_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lStack_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_2 = &uStack_48;\n  }" { (expression_statement "param_2 = &uStack_48;" (assignment_expression "param_2 = &uStack_48" identifier = (pointer_expression "&uStack_48" & identifier)) ;) })) (expression_statement "uVar2 = (ulong)*(int *)(param_7 + 4);" (assignment_expression "uVar2 = (ulong)*(int *)(param_7 + 4)" identifier = (binary_expression "(ulong)*(int *)(param_7 + 4)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(param_7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 4)" ( (binary_expression "param_7 + 4" identifier + number_literal) ))))) ;) (expression_statement "puStack_60 = param_1;" (assignment_expression "puStack_60 = param_1" identifier = identifier) ;) (if_statement "if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" { (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (expression_statement "puVar8 = *(ulong **)(param_7 + 8);" (assignment_expression "puVar8 = *(ulong **)(param_7 + 8)" identifier = (pointer_expression "*(ulong **)(param_7 + 8)" * (cast_expression "(ulong **)(param_7 + 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + 8)" ( (binary_expression "param_7 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = param_4 * 8 - param_6;" (assignment_expression "uVar14 = param_4 * 8 - param_6" identifier = (binary_expression "param_4 * 8 - param_6" (binary_expression "param_4 * 8" identifier * number_literal) - identifier)) ;) (expression_statement "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);" (assignment_expression "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" identifier = (binary_expression "(uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" (parenthesized_expression "(uVar2 ^ (long)uVar2 >> 0x3f)" ( (binary_expression "uVar2 ^ (long)uVar2 >> 0x3f" identifier ^ (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal)) )) - (parenthesized_expression "((long)uVar2 >> 0x3f)" ( (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar9 = 0x3f;" (assignment_expression "lVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" if (parenthesized_expression "(puVar8[lVar3 + -1] != 0)" ( (binary_expression "puVar8[lVar3 + -1] != 0" (subscript_expression "puVar8[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) != number_literal) )) (compound_statement "{\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" { (for_statement "for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }" for ( ; (binary_expression "puVar8[lVar3 + -1] >> lVar9 == 0" (binary_expression "puVar8[lVar3 + -1] >> lVar9" (subscript_expression "puVar8[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) >> identifier) == number_literal) ; (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);" (assignment_expression "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" identifier = (binary_expression "((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" (parenthesized_expression "((uVar14 - 1) + lVar3 * 0x40)" ( (binary_expression "(uVar14 - 1) + lVar3 * 0x40" (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )) + (binary_expression "lVar3 * 0x40" identifier * number_literal)) )) - (cast_expression "(long)(int)((uint)lVar9 ^ 0x3f)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((uint)lVar9 ^ 0x3f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)lVar9 ^ 0x3f)" ( (binary_expression "(uint)lVar9 ^ 0x3f" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) ^ number_literal) )))))) ;) (expression_statement "uVar2 = uVar15 / uVar14;" (assignment_expression "uVar2 = uVar15 / uVar14" identifier = (binary_expression "uVar15 / uVar14" identifier / identifier)) ;) (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" if (parenthesized_expression "(param_1 == (ulong *)0x0)" ( (binary_expression "param_1 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" { (expression_statement "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);" (assignment_expression "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" identifier = (cast_expression "(ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" (parenthesized_expression "(**(code **)PTR___gmp_allocate_func_00172f08)" ( (pointer_expression "**(code **)PTR___gmp_allocate_func_00172f08" * (pointer_expression "*(code **)PTR___gmp_allocate_func_00172f08" * (cast_expression "(code **)PTR___gmp_allocate_func_00172f08" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(param_4 * uVar2,param_2,uVar15 % uVar14)" ( (binary_expression "param_4 * uVar2" identifier * identifier) , identifier , (binary_expression "uVar15 % uVar14" identifier % identifier) ))))) ;) })) (if_statement "if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }" { (if_statement "if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" { (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00116868;" goto statement_identifier ;) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar14 & 7))" ( (binary_expression "1L << ((byte)uVar14 & 7)" number_literal << (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00116bcc:\n    uVar16 = -param_4;" statement_identifier : (expression_statement "uVar16 = -param_4;" (assignment_expression "uVar16 = -param_4" identifier = (unary_expression "-param_4" - identifier)) ;)) }) (else_clause "else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" else (compound_statement "{\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" { (if_statement "if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" { (labeled_statement "LAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" statement_identifier : (if_statement "if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" if (parenthesized_expression "((param_4 == 8) && (((ulong)puStack_60 & 7) == 0))" ( (binary_expression "(param_4 == 8) && (((ulong)puStack_60 & 7) == 0)" (parenthesized_expression "(param_4 == 8)" ( (binary_expression "param_4 == 8" identifier == number_literal) )) && (parenthesized_expression "(((ulong)puStack_60 & 7) == 0)" ( (binary_expression "((ulong)puStack_60 & 7) == 0" (parenthesized_expression "((ulong)puStack_60 & 7)" ( (binary_expression "(ulong)puStack_60 & 7" (cast_expression "(ulong)puStack_60" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" { (if_statement "if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 & param_5) == 0xffffffff)" ( (binary_expression "(param_3 & param_5) == 0xffffffff" (parenthesized_expression "(param_3 & param_5)" ( (binary_expression "param_3 & param_5" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" { (expression_statement "__gmpn_copyi(puStack_60,puVar8,uVar2);" (call_expression "__gmpn_copyi(puStack_60,puVar8,uVar2)" identifier (argument_list "(puStack_60,puVar8,uVar2)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_5 == 0xffffffff) && (param_3 == 1))" ( (binary_expression "(param_5 == 0xffffffff) && (param_3 == 1)" (parenthesized_expression "(param_5 == 0xffffffff)" ( (binary_expression "param_5 == 0xffffffff" identifier == number_literal) )) && (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "puStack_60[uVar14] = *puVar8;" (assignment_expression "puStack_60[uVar14] = *puVar8" (subscript_expression "puStack_60[uVar14]" identifier [ identifier ]) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 == 0xffffffff) && (param_5 == 1))" ( (binary_expression "(param_3 == 0xffffffff) && (param_5 == 1)" (parenthesized_expression "(param_3 == 0xffffffff)" ( (binary_expression "param_3 == 0xffffffff" identifier == number_literal) )) && (parenthesized_expression "(param_5 == 1)" ( (binary_expression "param_5 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "uVar15 = puVar8[uVar14];" (assignment_expression "uVar15 = puVar8[uVar14]" identifier = (subscript_expression "puVar8[uVar14]" identifier [ identifier ])) ;) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" ( (binary_expression "uVar15 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" ( (binary_expression "uVar15 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" ( (binary_expression "uVar15 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" ( (binary_expression "uVar15 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" ( (binary_expression "uVar15 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" ( (binary_expression "uVar15 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar15 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 == 1) && (param_5 == 1))" ( (binary_expression "(param_3 == 1) && (param_5 == 1)" (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) && (parenthesized_expression "(param_5 == 1)" ( (binary_expression "param_5 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "uVar15 = *puVar8;" (assignment_expression "uVar15 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" ( (binary_expression "uVar15 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" ( (binary_expression "uVar15 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" ( (binary_expression "uVar15 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" ( (binary_expression "uVar15 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" ( (binary_expression "uVar15 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" ( (binary_expression "uVar15 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar15 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) }))) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar14 & 7))" ( (binary_expression "1L << ((byte)uVar14 & 7)" number_literal << (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "uVar16 = param_4;" (assignment_expression "uVar16 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_5 < 0) goto LAB_00116bcc;" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00116bcc;" goto statement_identifier ;)) }))) (expression_statement "uStack_50 = (uint)uVar14 & 7;" (assignment_expression "uStack_50 = (uint)uVar14 & 7" identifier = (binary_expression "(uint)uVar14 & 7" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = uVar14 >> 3;" (assignment_expression "uVar13 = uVar14 >> 3" identifier = (binary_expression "uVar14 >> 3" identifier >> number_literal)) ;) (if_statement "if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }" { (expression_statement "lStack_78 = uVar16 + param_4;" (assignment_expression "lStack_78 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" else (compound_statement "{\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" { (expression_statement "lStack_78 = uVar16 - param_4;" (assignment_expression "lStack_78 = uVar16 - param_4" identifier = (binary_expression "uVar16 - param_4" identifier - identifier)) ;) (expression_statement "lVar9 = (uVar2 - 1) * param_4;" (assignment_expression "lVar9 = (uVar2 - 1) * param_4" identifier = (binary_expression "(uVar2 - 1) * param_4" (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )) * identifier)) ;) }))) (expression_statement "lVar11 = param_4 - 1;" (assignment_expression "lVar11 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (if_statement "if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lVar11 = 0;\n  }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) })) (expression_statement "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);" (assignment_expression "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60)" identifier = (cast_expression "(byte *)(lVar11 + lVar9 + (long)puStack_60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar9 + (long)puStack_60)" ( (binary_expression "lVar11 + lVar9 + (long)puStack_60" (binary_expression "lVar11 + lVar9" identifier + identifier) + (cast_expression "(long)puStack_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "puVar6 = puVar8 + lVar3;" (assignment_expression "puVar6 = puVar8 + lVar3" identifier = (binary_expression "puVar8 + lVar3" identifier + identifier)) ;) (if_statement "if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (compound_statement "{\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" { (expression_statement "lVar9 = (long)(int)param_5;" (assignment_expression "lVar9 = (long)(int)param_5" identifier = (cast_expression "(long)(int)param_5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar3 = -lVar9;" (assignment_expression "lVar3 = -lVar9" identifier = (unary_expression "-lVar9" - identifier)) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);" do (compound_statement "{\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" identifier = identifier) ;) (if_statement "if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" { (do_statement "do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);" do (compound_statement "{\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        }" { (if_statement "if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" if (parenthesized_expression "(iVar10 < 8)" ( (binary_expression "iVar10 < 8" identifier < number_literal) )) (compound_statement "{\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" if (parenthesized_expression "(puVar6 != puVar8)" ( (binary_expression "puVar6 != puVar8" identifier != identifier) )) (compound_statement "{\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" { (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));" (assignment_expression "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (pointer_expression "*pbVar7" * identifier) = (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x3f)" ( (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f)" identifier = (binary_expression "uVar4 >> (8 - (byte)iVar10 & 0x3f)" identifier >> (parenthesized_expression "(8 - (byte)iVar10 & 0x3f)" ( (binary_expression "8 - (byte)iVar10 & 0x3f" (binary_expression "8 - (byte)iVar10" number_literal - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + 0x38;" (assignment_expression "iVar10 = iVar10 + 0x38" identifier = (binary_expression "iVar10 + 0x38" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" else (compound_statement "{\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" { (expression_statement "*pbVar7 = (byte)uVar15;" (assignment_expression "*pbVar7 = (byte)uVar15" (pointer_expression "*pbVar7" * identifier) = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 >> 8;" (assignment_expression "uVar15 = uVar15 >> 8" identifier = (binary_expression "uVar15 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar10 = iVar10 + -8;" (assignment_expression "iVar10 = iVar10 + -8" identifier = (binary_expression "iVar10 + -8" identifier + number_literal)) ;) }))) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" identifier = (binary_expression "pbVar7 + lVar3" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar13 != uVar5)" ( (binary_expression "uVar13 != uVar5" identifier != identifier) )) ;) (expression_statement "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);" (assignment_expression "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" identifier = (binary_expression "pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" identifier + (parenthesized_expression "(-lVar9 - (uVar13 - 1) * lVar9)" ( (binary_expression "-lVar9 - (uVar13 - 1) * lVar9" (unary_expression "-lVar9" - identifier) - (binary_expression "(uVar13 - 1) * lVar9" (parenthesized_expression "(uVar13 - 1)" ( (binary_expression "uVar13 - 1" identifier - number_literal) )) * identifier)) )))) ;) })) (if_statement "if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "((uVar14 & 7) != 0)" ( (binary_expression "(uVar14 & 7) != 0" (parenthesized_expression "(uVar14 & 7)" ( (binary_expression "uVar14 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" { (if_statement "if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" if (parenthesized_expression "(iVar10 < (int)uStack_50)" ( (binary_expression "iVar10 < (int)uStack_50" identifier < (cast_expression "(int)uStack_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" if (parenthesized_expression "(puVar6 != puVar8)" ( (binary_expression "puVar6 != puVar8" identifier != identifier) )) (compound_statement "{\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" { (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;" (assignment_expression "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (pointer_expression "*pbVar12" * identifier) = (binary_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (parenthesized_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f)))" ( (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x3f)" ( (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) )) & identifier)) ;) (expression_statement "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" identifier = (binary_expression "uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" identifier >> (parenthesized_expression "((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" ( (binary_expression "(sbyte)uStack_50 - (byte)iVar10 & 0x3f" (binary_expression "(sbyte)uStack_50 - (byte)iVar10" (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier) - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar1 = 0x40 - uStack_50;" (assignment_expression "iVar1 = 0x40 - uStack_50" identifier = (binary_expression "0x40 - uStack_50" number_literal - identifier)) ;) }) (else_clause "else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" else (compound_statement "{\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" { (expression_statement "*pbVar12 = bStack_58 & (byte)uVar15;" (assignment_expression "*pbVar12 = bStack_58 & (byte)uVar15" (pointer_expression "*pbVar12" * identifier) = (binary_expression "bStack_58 & (byte)uVar15" identifier & (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "uVar15 = uVar15 >> (sbyte)uStack_50;" (assignment_expression "uVar15 = uVar15 >> (sbyte)uStack_50" identifier = (binary_expression "uVar15 >> (sbyte)uStack_50" identifier >> (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "iVar1 = -uStack_50;" (assignment_expression "iVar1 = -uStack_50" identifier = (unary_expression "-uStack_50" - identifier)) ;) }))) (expression_statement "iVar10 = iVar10 + iVar1;" (assignment_expression "iVar10 = iVar10 + iVar1" identifier = (binary_expression "iVar10 + iVar1" identifier + identifier)) ;) (expression_statement "pbVar12 = pbVar12 + lVar3;" (assignment_expression "pbVar12 = pbVar12 + lVar3" identifier = (binary_expression "pbVar12 + lVar3" identifier + identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" identifier = identifier) ;) (if_statement "if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" if (parenthesized_expression "(uVar5 < param_4)" ( (binary_expression "uVar5 < param_4" identifier < identifier) )) (compound_statement "{\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" { (do_statement "do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);" do (compound_statement "{\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        }" { (expression_statement "*pbVar7 = 0;" (assignment_expression "*pbVar7 = 0" (pointer_expression "*pbVar7" * identifier) = number_literal) ;) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" identifier = (binary_expression "pbVar7 + lVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != uVar4)" ( (binary_expression "param_4 != uVar4" identifier != identifier) )) ;) (expression_statement "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;" (assignment_expression "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9" identifier = (binary_expression "pbVar12 + (uVar5 - param_4) * lVar9" identifier + (binary_expression "(uVar5 - param_4) * lVar9" (parenthesized_expression "(uVar5 - param_4)" ( (binary_expression "uVar5 - param_4" identifier - identifier) )) * identifier))) ;) })) (expression_statement "pbVar12 = pbVar12 + lStack_78;" (assignment_expression "pbVar12 = pbVar12 + lStack_78" identifier = (binary_expression "pbVar12 + lStack_78" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 < uVar2)" ( (binary_expression "uVar16 < uVar2" identifier < identifier) )) ;) })) (labeled_statement "LAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lStack_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lStack_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return puStack_60;" return identifier ;) })))
(translation_unit "/* WARNING: Switch with 1 destination removed at 0x0010c310 */\n\nvoid * __gmpz_export(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,\n                    mpz_srcptr z)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  size_t sVar6;\n  ulong *puVar7;\n  byte *pbVar8;\n  ulong *puVar9;\n  long lVar10;\n  int iVar11;\n  long lVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (countp == (size_t *)0x0) {\n    countp = &uStack_48;\n  }\n  uVar2 = (ulong)z->_mp_size;\n  puStack_60 = (ulong *)data;\n  if (uVar2 == 0) {\n    *countp = 0;\n    goto LAB_001168e4;\n  }\n  puVar9 = z->_mp_d;\n  uVar15 = size * 8 - nail;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar10 = 0x3f;\n  if (puVar9[lVar3 + -1] != 0) {\n    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }\n  }\n  uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f);\n  uVar2 = uVar16 / uVar15;\n  *countp = uVar2;\n  if (data == (void *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);\n  }\n  if (endian == 0) {\n    if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    endian = 0xffffffff;\nLAB_00116bcc:\n    sVar6 = -size;\n  }\n  else {\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar15 & 7;\n  uVar14 = uVar15 >> 3;\n  if (order < 0) {\n    lStack_78 = sVar6 + size;\n    lVar10 = 0;\n  }\n  else {\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }\n  lVar12 = size - 1;\n  if (endian < 0) {\n    lVar12 = 0;\n  }\n  pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60);\n  puVar7 = puVar9 + lVar3;\n  if (uVar15 <= uVar16) {\n    lVar10 = (long)endian;\n    lVar3 = -lVar10;\n    iVar11 = 0;\n    uVar17 = 0;\n    uVar16 = 0;\n    do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}\n\n" comment (function_definition "void * __gmpz_export(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,\n                    mpz_srcptr z)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  size_t sVar6;\n  ulong *puVar7;\n  byte *pbVar8;\n  ulong *puVar9;\n  long lVar10;\n  int iVar11;\n  long lVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (countp == (size_t *)0x0) {\n    countp = &uStack_48;\n  }\n  uVar2 = (ulong)z->_mp_size;\n  puStack_60 = (ulong *)data;\n  if (uVar2 == 0) {\n    *countp = 0;\n    goto LAB_001168e4;\n  }\n  puVar9 = z->_mp_d;\n  uVar15 = size * 8 - nail;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar10 = 0x3f;\n  if (puVar9[lVar3 + -1] != 0) {\n    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }\n  }\n  uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f);\n  uVar2 = uVar16 / uVar15;\n  *countp = uVar2;\n  if (data == (void *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);\n  }\n  if (endian == 0) {\n    if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    endian = 0xffffffff;\nLAB_00116bcc:\n    sVar6 = -size;\n  }\n  else {\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar15 & 7;\n  uVar14 = uVar15 >> 3;\n  if (order < 0) {\n    lStack_78 = sVar6 + size;\n    lVar10 = 0;\n  }\n  else {\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }\n  lVar12 = size - 1;\n  if (endian < 0) {\n    lVar12 = 0;\n  }\n  pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60);\n  puVar7 = puVar9 + lVar3;\n  if (uVar15 <= uVar16) {\n    lVar10 = (long)endian;\n    lVar3 = -lVar10;\n    iVar11 = 0;\n    uVar17 = 0;\n    uVar16 = 0;\n    do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" primitive_type (pointer_declarator "* __gmpz_export(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,\n                    mpz_srcptr z)" * (function_declarator "__gmpz_export(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,\n                    mpz_srcptr z)" identifier (parameter_list "(void *data,size_t *countp,int order,size_t size,int endian,size_t nail,\n                    mpz_srcptr z)" ( (parameter_declaration "void *data" primitive_type (pointer_declarator "*data" * identifier)) , (parameter_declaration "size_t *countp" primitive_type (pointer_declarator "*countp" * identifier)) , (parameter_declaration "int order" primitive_type identifier) , (parameter_declaration "size_t size" primitive_type identifier) , (parameter_declaration "int endian" primitive_type identifier) , (parameter_declaration "size_t nail" primitive_type identifier) , (parameter_declaration "mpz_srcptr z" type_identifier identifier) )))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  size_t sVar6;\n  ulong *puVar7;\n  byte *pbVar8;\n  ulong *puVar9;\n  long lVar10;\n  int iVar11;\n  long lVar12;\n  byte *pbVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (countp == (size_t *)0x0) {\n    countp = &uStack_48;\n  }\n  uVar2 = (ulong)z->_mp_size;\n  puStack_60 = (ulong *)data;\n  if (uVar2 == 0) {\n    *countp = 0;\n    goto LAB_001168e4;\n  }\n  puVar9 = z->_mp_d;\n  uVar15 = size * 8 - nail;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar10 = 0x3f;\n  if (puVar9[lVar3 + -1] != 0) {\n    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }\n  }\n  uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f);\n  uVar2 = uVar16 / uVar15;\n  *countp = uVar2;\n  if (data == (void *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);\n  }\n  if (endian == 0) {\n    if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    endian = 0xffffffff;\nLAB_00116bcc:\n    sVar6 = -size;\n  }\n  else {\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar15 & 7;\n  uVar14 = uVar15 >> 3;\n  if (order < 0) {\n    lStack_78 = sVar6 + size;\n    lVar10 = 0;\n  }\n  else {\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }\n  lVar12 = size - 1;\n  if (endian < 0) {\n    lVar12 = 0;\n  }\n  pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60);\n  puVar7 = puVar9 + lVar3;\n  if (uVar15 <= uVar16) {\n    lVar10 = (long)endian;\n    lVar3 = -lVar10;\n    iVar11 = 0;\n    uVar17 = 0;\n    uVar16 = 0;\n    do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "ulong *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "ulong *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_78;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "byte bStack_58;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (declaration "ulong uStack_48;" type_identifier identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lStack_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lStack_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (countp == (size_t *)0x0) {\n    countp = &uStack_48;\n  }" if (parenthesized_expression "(countp == (size_t *)0x0)" ( (binary_expression "countp == (size_t *)0x0" identifier == (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    countp = &uStack_48;\n  }" { (expression_statement "countp = &uStack_48;" (assignment_expression "countp = &uStack_48" identifier = (pointer_expression "&uStack_48" & identifier)) ;) })) (expression_statement "uVar2 = (ulong)z->_mp_size;" (assignment_expression "uVar2 = (ulong)z->_mp_size" identifier = (cast_expression "(ulong)z->_mp_size" ( (type_descriptor "ulong" type_identifier) ) (field_expression "z->_mp_size" identifier -> field_identifier))) ;) (expression_statement "puStack_60 = (ulong *)data;" (assignment_expression "puStack_60 = (ulong *)data" identifier = (cast_expression "(ulong *)data" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar2 == 0) {\n    *countp = 0;\n    goto LAB_001168e4;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *countp = 0;\n    goto LAB_001168e4;\n  }" { (expression_statement "*countp = 0;" (assignment_expression "*countp = 0" (pointer_expression "*countp" * identifier) = number_literal) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (expression_statement "puVar9 = z->_mp_d;" (assignment_expression "puVar9 = z->_mp_d" identifier = (field_expression "z->_mp_d" identifier -> field_identifier)) ;) (expression_statement "uVar15 = size * 8 - nail;" (assignment_expression "uVar15 = size * 8 - nail" identifier = (binary_expression "size * 8 - nail" (binary_expression "size * 8" identifier * number_literal) - identifier)) ;) (expression_statement "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);" (assignment_expression "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" identifier = (binary_expression "(uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" (parenthesized_expression "(uVar2 ^ (long)uVar2 >> 0x3f)" ( (binary_expression "uVar2 ^ (long)uVar2 >> 0x3f" identifier ^ (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal)) )) - (parenthesized_expression "((long)uVar2 >> 0x3f)" ( (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar10 = 0x3f;" (assignment_expression "lVar10 = 0x3f" identifier = number_literal) ;) (if_statement "if (puVar9[lVar3 + -1] != 0) {\n    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }\n  }" if (parenthesized_expression "(puVar9[lVar3 + -1] != 0)" ( (binary_expression "puVar9[lVar3 + -1] != 0" (subscript_expression "puVar9[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) != number_literal) )) (compound_statement "{\n    for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }\n  }" { (for_statement "for (; puVar9[lVar3 + -1] >> lVar10 == 0; lVar10 = lVar10 + -1) {\n    }" for ( ; (binary_expression "puVar9[lVar3 + -1] >> lVar10 == 0" (binary_expression "puVar9[lVar3 + -1] >> lVar10" (subscript_expression "puVar9[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) >> identifier) == number_literal) ; (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f);" (assignment_expression "uVar16 = ((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f)" identifier = (binary_expression "((uVar15 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar10 ^ 0x3f)" (parenthesized_expression "((uVar15 - 1) + lVar3 * 0x40)" ( (binary_expression "(uVar15 - 1) + lVar3 * 0x40" (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) )) + (binary_expression "lVar3 * 0x40" identifier * number_literal)) )) - (cast_expression "(long)(int)((uint)lVar10 ^ 0x3f)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((uint)lVar10 ^ 0x3f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)lVar10 ^ 0x3f)" ( (binary_expression "(uint)lVar10 ^ 0x3f" (cast_expression "(uint)lVar10" ( (type_descriptor "uint" type_identifier) ) identifier) ^ number_literal) )))))) ;) (expression_statement "uVar2 = uVar16 / uVar15;" (assignment_expression "uVar2 = uVar16 / uVar15" identifier = (binary_expression "uVar16 / uVar15" identifier / identifier)) ;) (expression_statement "*countp = uVar2;" (assignment_expression "*countp = uVar2" (pointer_expression "*countp" * identifier) = identifier) ;) (if_statement "if (data == (void *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);\n  }" if (parenthesized_expression "(data == (void *)0x0)" ( (binary_expression "data == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);\n  }" { (expression_statement "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15);" (assignment_expression "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15)" identifier = (cast_expression "(ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (size * uVar2,countp,uVar16 % uVar15)" (parenthesized_expression "(**(code **)PTR___gmp_allocate_func_00172f08)" ( (pointer_expression "**(code **)PTR___gmp_allocate_func_00172f08" * (pointer_expression "*(code **)PTR___gmp_allocate_func_00172f08" * (cast_expression "(code **)PTR___gmp_allocate_func_00172f08" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(size * uVar2,countp,uVar16 % uVar15)" ( (binary_expression "size * uVar2" identifier * identifier) , identifier , (binary_expression "uVar16 % uVar15" identifier % identifier) ))))) ;) })) (if_statement "if (endian == 0) {\n    if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    endian = 0xffffffff;\nLAB_00116bcc:\n    sVar6 = -size;\n  }\n  else {\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }" if (parenthesized_expression "(endian == 0)" ( (binary_expression "endian == 0" identifier == number_literal) )) (compound_statement "{\n    if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    endian = 0xffffffff;\nLAB_00116bcc:\n    sVar6 = -size;\n  }" { (if_statement "if (nail == 0) {\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }" if (parenthesized_expression "(nail == 0)" ( (binary_expression "nail == 0" identifier == number_literal) )) (compound_statement "{\n      endian = 0xffffffff;\n      goto LAB_00116868;\n    }" { (expression_statement "endian = 0xffffffff;" (assignment_expression "endian = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00116868;" goto statement_identifier ;) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar15 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar15 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar15 & 7))" ( (binary_expression "1L << ((byte)uVar15 & 7)" number_literal << (parenthesized_expression "((byte)uVar15 & 7)" ( (binary_expression "(byte)uVar15 & 7" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "endian = 0xffffffff;" (assignment_expression "endian = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00116bcc:\n    sVar6 = -size;" statement_identifier : (expression_statement "sVar6 = -size;" (assignment_expression "sVar6 = -size" identifier = (unary_expression "-size" - identifier)) ;)) }) (else_clause "else {\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }" else (compound_statement "{\n    if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;\n    sVar6 = size;\n    if (endian < 0) goto LAB_00116bcc;\n  }" { (if_statement "if (nail == 0) {\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" if (parenthesized_expression "(nail == 0)" ( (binary_expression "nail == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" { (labeled_statement "LAB_00116868:\n      if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }" statement_identifier : (if_statement "if ((size == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }" if (parenthesized_expression "((size == 8) && (((ulong)puStack_60 & 7) == 0))" ( (binary_expression "(size == 8) && (((ulong)puStack_60 & 7) == 0)" (parenthesized_expression "(size == 8)" ( (binary_expression "size == 8" identifier == number_literal) )) && (parenthesized_expression "(((ulong)puStack_60 & 7) == 0)" ( (binary_expression "((ulong)puStack_60 & 7) == 0" (parenthesized_expression "((ulong)puStack_60 & 7)" ( (binary_expression "(ulong)puStack_60 & 7" (cast_expression "(ulong)puStack_60" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n        if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }\n      }" { (if_statement "if ((order & endian) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((order & endian) == 0xffffffff)" ( (binary_expression "(order & endian) == 0xffffffff" (parenthesized_expression "(order & endian)" ( (binary_expression "order & endian" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          __gmpn_copyi(puStack_60,puVar9,uVar2);\n          goto LAB_001168e4;\n        }" { (expression_statement "__gmpn_copyi(puStack_60,puVar9,uVar2);" (call_expression "__gmpn_copyi(puStack_60,puVar9,uVar2)" identifier (argument_list "(puStack_60,puVar9,uVar2)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((endian == 0xffffffff) && (order == 1)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((endian == 0xffffffff) && (order == 1))" ( (binary_expression "(endian == 0xffffffff) && (order == 1)" (parenthesized_expression "(endian == 0xffffffff)" ( (binary_expression "endian == 0xffffffff" identifier == number_literal) )) && (parenthesized_expression "(order == 1)" ( (binary_expression "order == 1" identifier == number_literal) ))) )) (compound_statement "{\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar9 = puVar9 + (uVar2 - 1);" (assignment_expression "puVar9 = puVar9 + (uVar2 - 1)" identifier = (binary_expression "puVar9 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar15 = 0;\n            do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);" do (compound_statement "{\n              puStack_60[uVar15] = *puVar9;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            }" { (expression_statement "puStack_60[uVar15] = *puVar9;" (assignment_expression "puStack_60[uVar15] = *puVar9" (subscript_expression "puStack_60[uVar15]" identifier [ identifier ]) = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar15)" ( (binary_expression "uVar2 != uVar15" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((order == -1) && (endian == 1U)) {\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((order == -1) && (endian == 1U))" ( (binary_expression "(order == -1) && (endian == 1U)" (parenthesized_expression "(order == -1)" ( (binary_expression "order == -1" identifier == number_literal) )) && (parenthesized_expression "(endian == 1U)" ( (binary_expression "endian == 1U" identifier == number_literal) ))) )) (compound_statement "{\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" { (if_statement "if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = puStack_60;" (assignment_expression "puVar7 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);" do (compound_statement "{\n              uVar16 = puVar9[uVar15];\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              uVar15 = uVar15 + 1;\n            }" { (expression_statement "uVar16 = puVar9[uVar15];" (assignment_expression "uVar16 = puVar9[uVar15]" identifier = (subscript_expression "puVar9[uVar15]" identifier [ identifier ])) ;) (expression_statement "*puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;" (assignment_expression "*puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28" (binary_expression "uVar16 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar16 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar16 & 0xff000000000000)" ( (binary_expression "uVar16 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar16 & 0xff0000000000)" ( (binary_expression "uVar16 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff00000000) >> 8" (parenthesized_expression "(uVar16 & 0xff00000000)" ( (binary_expression "uVar16 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff000000) << 8" (parenthesized_expression "(uVar16 & 0xff000000)" ( (binary_expression "uVar16 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar16 & 0xff0000) << 0x18" (parenthesized_expression "(uVar16 & 0xff0000)" ( (binary_expression "uVar16 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar16 & 0xff00) << 0x28" (parenthesized_expression "(uVar16 & 0xff00)" ( (binary_expression "uVar16 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar16 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar15)" ( (binary_expression "uVar2 != uVar15" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((order == 1) && (endian == 1U)) {\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((order == 1) && (endian == 1U))" ( (binary_expression "(order == 1) && (endian == 1U)" (parenthesized_expression "(order == 1)" ( (binary_expression "order == 1" identifier == number_literal) )) && (parenthesized_expression "(endian == 1U)" ( (binary_expression "endian == 1U" identifier == number_literal) ))) )) (compound_statement "{\n          puVar9 = puVar9 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar9 = puVar9 + (uVar2 - 1);" (assignment_expression "puVar9 = puVar9 + (uVar2 - 1)" identifier = (binary_expression "puVar9 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar15 = 0;\n            puVar7 = puStack_60;\n            do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = puStack_60;" (assignment_expression "puVar7 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            } while (uVar2 != uVar15);" do (compound_statement "{\n              uVar16 = *puVar9;\n              *puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;\n              puVar7 = puVar7 + 1;\n              puVar9 = puVar9 + -1;\n              uVar15 = uVar15 + 1;\n            }" { (expression_statement "uVar16 = *puVar9;" (assignment_expression "uVar16 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "*puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38;" (assignment_expression "*puVar7 = uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28 | uVar16 << 0x38" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18 |\n                        (uVar16 & 0xff00) << 0x28" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8 | (uVar16 & 0xff0000) << 0x18" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8 |\n                        (uVar16 & 0xff000000) << 8" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18 | (uVar16 & 0xff00000000) >> 8" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28 |\n                        (uVar16 & 0xff0000000000) >> 0x18" (binary_expression "uVar16 >> 0x38 | (uVar16 & 0xff000000000000) >> 0x28" (binary_expression "uVar16 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar16 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar16 & 0xff000000000000)" ( (binary_expression "uVar16 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar16 & 0xff0000000000)" ( (binary_expression "uVar16 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff00000000) >> 8" (parenthesized_expression "(uVar16 & 0xff00000000)" ( (binary_expression "uVar16 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar16 & 0xff000000) << 8" (parenthesized_expression "(uVar16 & 0xff000000)" ( (binary_expression "uVar16 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar16 & 0xff0000) << 0x18" (parenthesized_expression "(uVar16 & 0xff0000)" ( (binary_expression "uVar16 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar16 & 0xff00) << 0x28" (parenthesized_expression "(uVar16 & 0xff00)" ( (binary_expression "uVar16 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar16 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar15)" ( (binary_expression "uVar2 != uVar15" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) }))) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar15 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar15 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar15 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar15 & 7))" ( (binary_expression "1L << ((byte)uVar15 & 7)" number_literal << (parenthesized_expression "((byte)uVar15 & 7)" ( (binary_expression "(byte)uVar15 & 7" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "sVar6 = size;" (assignment_expression "sVar6 = size" identifier = identifier) ;) (if_statement "if (endian < 0) goto LAB_00116bcc;" if (parenthesized_expression "(endian < 0)" ( (binary_expression "endian < 0" identifier < number_literal) )) (goto_statement "goto LAB_00116bcc;" goto statement_identifier ;)) }))) (expression_statement "uStack_50 = (uint)uVar15 & 7;" (assignment_expression "uStack_50 = (uint)uVar15 & 7" identifier = (binary_expression "(uint)uVar15 & 7" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar14 = uVar15 >> 3;" (assignment_expression "uVar14 = uVar15 >> 3" identifier = (binary_expression "uVar15 >> 3" identifier >> number_literal)) ;) (if_statement "if (order < 0) {\n    lStack_78 = sVar6 + size;\n    lVar10 = 0;\n  }\n  else {\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }" if (parenthesized_expression "(order < 0)" ( (binary_expression "order < 0" identifier < number_literal) )) (compound_statement "{\n    lStack_78 = sVar6 + size;\n    lVar10 = 0;\n  }" { (expression_statement "lStack_78 = sVar6 + size;" (assignment_expression "lStack_78 = sVar6 + size" identifier = (binary_expression "sVar6 + size" identifier + identifier)) ;) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }" else (compound_statement "{\n    lStack_78 = sVar6 - size;\n    lVar10 = (uVar2 - 1) * size;\n  }" { (expression_statement "lStack_78 = sVar6 - size;" (assignment_expression "lStack_78 = sVar6 - size" identifier = (binary_expression "sVar6 - size" identifier - identifier)) ;) (expression_statement "lVar10 = (uVar2 - 1) * size;" (assignment_expression "lVar10 = (uVar2 - 1) * size" identifier = (binary_expression "(uVar2 - 1) * size" (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )) * identifier)) ;) }))) (expression_statement "lVar12 = size - 1;" (assignment_expression "lVar12 = size - 1" identifier = (binary_expression "size - 1" identifier - number_literal)) ;) (if_statement "if (endian < 0) {\n    lVar12 = 0;\n  }" if (parenthesized_expression "(endian < 0)" ( (binary_expression "endian < 0" identifier < number_literal) )) (compound_statement "{\n    lVar12 = 0;\n  }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) })) (expression_statement "pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60);" (assignment_expression "pbVar13 = (byte *)(lVar12 + lVar10 + (long)puStack_60)" identifier = (cast_expression "(byte *)(lVar12 + lVar10 + (long)puStack_60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + lVar10 + (long)puStack_60)" ( (binary_expression "lVar12 + lVar10 + (long)puStack_60" (binary_expression "lVar12 + lVar10" identifier + identifier) + (cast_expression "(long)puStack_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "puVar7 = puVar9 + lVar3;" (assignment_expression "puVar7 = puVar9 + lVar3" identifier = (binary_expression "puVar9 + lVar3" identifier + identifier)) ;) (if_statement "if (uVar15 <= uVar16) {\n    lVar10 = (long)endian;\n    lVar3 = -lVar10;\n    iVar11 = 0;\n    uVar17 = 0;\n    uVar16 = 0;\n    do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);\n  }" if (parenthesized_expression "(uVar15 <= uVar16)" ( (binary_expression "uVar15 <= uVar16" identifier <= identifier) )) (compound_statement "{\n    lVar10 = (long)endian;\n    lVar3 = -lVar10;\n    iVar11 = 0;\n    uVar17 = 0;\n    uVar16 = 0;\n    do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);\n  }" { (expression_statement "lVar10 = (long)endian;" (assignment_expression "lVar10 = (long)endian" identifier = (cast_expression "(long)endian" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar3 = -lVar10;" (assignment_expression "lVar3 = -lVar10" identifier = (unary_expression "-lVar10" - identifier)) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    } while (uVar17 < uVar2);" do (compound_statement "{\n      uVar5 = 0;\n      pbVar8 = pbVar13;\n      if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }\n      if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar8 = pbVar13;\n      if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }\n      pbVar13 = pbVar13 + lStack_78;\n      uVar17 = uVar17 + 1;\n    }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar8 = pbVar13;" (assignment_expression "pbVar8 = pbVar13" identifier = identifier) ;) (if_statement "if (uVar14 != 0) {\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);\n        pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);\n      }" { (do_statement "do {\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        } while (uVar14 != uVar5);" do (compound_statement "{\n          if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar8 = pbVar8 + lVar3;\n        }" { (if_statement "if (iVar11 < 8) {\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }\n          else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }" if (parenthesized_expression "(iVar11 < 8)" ( (binary_expression "iVar11 < 8" identifier < number_literal) )) (compound_statement "{\n            uVar4 = 0;\n            if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }\n            *pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));\n            uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);\n            iVar11 = iVar11 + 0x38;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar7 != puVar9) {\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }" if (parenthesized_expression "(puVar7 != puVar9)" ( (binary_expression "puVar7 != puVar9" identifier != identifier) )) (compound_statement "{\n              uVar4 = *puVar9;\n              puVar9 = puVar9 + 1;\n            }" { (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f));" (assignment_expression "*pbVar8 = (byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))" (pointer_expression "*pbVar8" * identifier) = (binary_expression "(byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar11 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar11 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar11 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar11 & 0x3f)" ( (binary_expression "(byte)iVar11 & 0x3f" (cast_expression "(byte)iVar11" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f);" (assignment_expression "uVar16 = uVar4 >> (8 - (byte)iVar11 & 0x3f)" identifier = (binary_expression "uVar4 >> (8 - (byte)iVar11 & 0x3f)" identifier >> (parenthesized_expression "(8 - (byte)iVar11 & 0x3f)" ( (binary_expression "8 - (byte)iVar11 & 0x3f" (binary_expression "8 - (byte)iVar11" number_literal - (cast_expression "(byte)iVar11" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar11 = iVar11 + 0x38;" (assignment_expression "iVar11 = iVar11 + 0x38" identifier = (binary_expression "iVar11 + 0x38" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }" else (compound_statement "{\n            *pbVar8 = (byte)uVar16;\n            uVar16 = uVar16 >> 8;\n            iVar11 = iVar11 + -8;\n          }" { (expression_statement "*pbVar8 = (byte)uVar16;" (assignment_expression "*pbVar8 = (byte)uVar16" (pointer_expression "*pbVar8" * identifier) = (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar16 = uVar16 >> 8;" (assignment_expression "uVar16 = uVar16 >> 8" identifier = (binary_expression "uVar16 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar11 = iVar11 + -8;" (assignment_expression "iVar11 = iVar11 + -8" identifier = (binary_expression "iVar11 + -8" identifier + number_literal)) ;) }))) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + lVar3;" (assignment_expression "pbVar8 = pbVar8 + lVar3" identifier = (binary_expression "pbVar8 + lVar3" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar14 != uVar5)" ( (binary_expression "uVar14 != uVar5" identifier != identifier) )) ;) (expression_statement "pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10);" (assignment_expression "pbVar13 = pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10)" identifier = (binary_expression "pbVar13 + (-lVar10 - (uVar14 - 1) * lVar10)" identifier + (parenthesized_expression "(-lVar10 - (uVar14 - 1) * lVar10)" ( (binary_expression "-lVar10 - (uVar14 - 1) * lVar10" (unary_expression "-lVar10" - identifier) - (binary_expression "(uVar14 - 1) * lVar10" (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )) * identifier)) )))) ;) })) (if_statement "if ((uVar15 & 7) != 0) {\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "((uVar15 & 7) != 0)" ( (binary_expression "(uVar15 & 7) != 0" (parenthesized_expression "(uVar15 & 7)" ( (binary_expression "uVar15 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar11 = iVar11 + iVar1;\n        pbVar13 = pbVar13 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" { (if_statement "if (iVar11 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" if (parenthesized_expression "(iVar11 < (int)uStack_50)" ( (binary_expression "iVar11 < (int)uStack_50" identifier < (cast_expression "(int)uStack_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar4 = 0;\n          if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }\n          *pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;\n          uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar7 != puVar9) {\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }" if (parenthesized_expression "(puVar7 != puVar9)" ( (binary_expression "puVar7 != puVar9" identifier != identifier) )) (compound_statement "{\n            uVar4 = *puVar9;\n            puVar9 = puVar9 + 1;\n          }" { (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58;" (assignment_expression "*pbVar13 = ((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58" (pointer_expression "*pbVar13" * identifier) = (binary_expression "((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))) & bStack_58" (parenthesized_expression "((byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f)))" ( (binary_expression "(byte)uVar16 | (byte)(uVar4 << ((byte)iVar11 & 0x3f))" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar11 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar11 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar11 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar11 & 0x3f)" ( (binary_expression "(byte)iVar11 & 0x3f" (cast_expression "(byte)iVar11" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) )) & identifier)) ;) (expression_statement "uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f);" (assignment_expression "uVar16 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f)" identifier = (binary_expression "uVar4 >> ((sbyte)uStack_50 - (byte)iVar11 & 0x3f)" identifier >> (parenthesized_expression "((sbyte)uStack_50 - (byte)iVar11 & 0x3f)" ( (binary_expression "(sbyte)uStack_50 - (byte)iVar11 & 0x3f" (binary_expression "(sbyte)uStack_50 - (byte)iVar11" (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier) - (cast_expression "(byte)iVar11" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar1 = 0x40 - uStack_50;" (assignment_expression "iVar1 = 0x40 - uStack_50" identifier = (binary_expression "0x40 - uStack_50" number_literal - identifier)) ;) }) (else_clause "else {\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" else (compound_statement "{\n          *pbVar13 = bStack_58 & (byte)uVar16;\n          uVar16 = uVar16 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" { (expression_statement "*pbVar13 = bStack_58 & (byte)uVar16;" (assignment_expression "*pbVar13 = bStack_58 & (byte)uVar16" (pointer_expression "*pbVar13" * identifier) = (binary_expression "bStack_58 & (byte)uVar16" identifier & (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "uVar16 = uVar16 >> (sbyte)uStack_50;" (assignment_expression "uVar16 = uVar16 >> (sbyte)uStack_50" identifier = (binary_expression "uVar16 >> (sbyte)uStack_50" identifier >> (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "iVar1 = -uStack_50;" (assignment_expression "iVar1 = -uStack_50" identifier = (unary_expression "-uStack_50" - identifier)) ;) }))) (expression_statement "iVar11 = iVar11 + iVar1;" (assignment_expression "iVar11 = iVar11 + iVar1" identifier = (binary_expression "iVar11 + iVar1" identifier + identifier)) ;) (expression_statement "pbVar13 = pbVar13 + lVar3;" (assignment_expression "pbVar13 = pbVar13 + lVar3" identifier = (binary_expression "pbVar13 + lVar3" identifier + identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (expression_statement "pbVar8 = pbVar13;" (assignment_expression "pbVar8 = pbVar13" identifier = identifier) ;) (if_statement "if (uVar5 < size) {\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }" if (parenthesized_expression "(uVar5 < size)" ( (binary_expression "uVar5 < size" identifier < identifier) )) (compound_statement "{\n        do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);\n        pbVar13 = pbVar13 + (uVar5 - size) * lVar10;\n      }" { (do_statement "do {\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (size != uVar4);" do (compound_statement "{\n          *pbVar8 = 0;\n          pbVar8 = pbVar8 + lVar3;\n          uVar4 = uVar4 + 1;\n        }" { (expression_statement "*pbVar8 = 0;" (assignment_expression "*pbVar8 = 0" (pointer_expression "*pbVar8" * identifier) = number_literal) ;) (expression_statement "pbVar8 = pbVar8 + lVar3;" (assignment_expression "pbVar8 = pbVar8 + lVar3" identifier = (binary_expression "pbVar8 + lVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(size != uVar4)" ( (binary_expression "size != uVar4" identifier != identifier) )) ;) (expression_statement "pbVar13 = pbVar13 + (uVar5 - size) * lVar10;" (assignment_expression "pbVar13 = pbVar13 + (uVar5 - size) * lVar10" identifier = (binary_expression "pbVar13 + (uVar5 - size) * lVar10" identifier + (binary_expression "(uVar5 - size) * lVar10" (parenthesized_expression "(uVar5 - size)" ( (binary_expression "uVar5 - size" identifier - identifier) )) * identifier))) ;) })) (expression_statement "pbVar13 = pbVar13 + lStack_78;" (assignment_expression "pbVar13 = pbVar13 + lStack_78" identifier = (binary_expression "pbVar13 + lStack_78" identifier + identifier)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 < uVar2)" ( (binary_expression "uVar17 < uVar2" identifier < identifier) )) ;) })) (labeled_statement "LAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lStack_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lStack_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return puStack_60;" return identifier ;) })))
(translation_unit "ulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return puStack_60;\n}\n\n" (function_definition "ulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" type_identifier (pointer_declarator "* __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" * (function_declarator "__gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" identifier (parameter_list "(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "ulong param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_7" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "ulong *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long lStack_78;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "byte bStack_58;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (declaration "ulong uStack_48;" type_identifier identifier ;) (declaration "long lStack_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lStack_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lStack_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    param_2 = &uStack_48;\n  }" { (expression_statement "param_2 = &uStack_48;" (assignment_expression "param_2 = &uStack_48" identifier = (pointer_expression "&uStack_48" & identifier)) ;) })) (expression_statement "uVar2 = (ulong)*(int *)(param_7 + 4);" (assignment_expression "uVar2 = (ulong)*(int *)(param_7 + 4)" identifier = (binary_expression "(ulong)*(int *)(param_7 + 4)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(int *)(param_7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 4)" ( (binary_expression "param_7 + 4" identifier + number_literal) ))))) ;) (expression_statement "puStack_60 = param_1;" (assignment_expression "puStack_60 = param_1" identifier = identifier) ;) (if_statement "if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" { (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (expression_statement "puVar8 = *(ulong **)(param_7 + 8);" (assignment_expression "puVar8 = *(ulong **)(param_7 + 8)" identifier = (pointer_expression "*(ulong **)(param_7 + 8)" * (cast_expression "(ulong **)(param_7 + 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + 8)" ( (binary_expression "param_7 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = param_4 * 8 - param_6;" (assignment_expression "uVar14 = param_4 * 8 - param_6" identifier = (binary_expression "param_4 * 8 - param_6" (binary_expression "param_4 * 8" identifier * number_literal) - identifier)) ;) (expression_statement "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);" (assignment_expression "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" identifier = (binary_expression "(uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" (parenthesized_expression "(uVar2 ^ (long)uVar2 >> 0x3f)" ( (binary_expression "uVar2 ^ (long)uVar2 >> 0x3f" identifier ^ (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal)) )) - (parenthesized_expression "((long)uVar2 >> 0x3f)" ( (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) ;) (expression_statement "lVar9 = 0x3f;" (assignment_expression "lVar9 = 0x3f" identifier = number_literal) ;) (if_statement "if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" if (parenthesized_expression "(puVar8[lVar3 + -1] != 0)" ( (binary_expression "puVar8[lVar3 + -1] != 0" (subscript_expression "puVar8[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) != number_literal) )) (compound_statement "{\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" { (for_statement "for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }" for ( ; (binary_expression "puVar8[lVar3 + -1] >> lVar9 == 0" (binary_expression "puVar8[lVar3 + -1] >> lVar9" (subscript_expression "puVar8[lVar3 + -1]" identifier [ (binary_expression "lVar3 + -1" identifier + number_literal) ]) >> identifier) == number_literal) ; (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) })) (expression_statement "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);" (assignment_expression "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" identifier = (binary_expression "((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" (parenthesized_expression "((uVar14 - 1) + lVar3 * 0x40)" ( (binary_expression "(uVar14 - 1) + lVar3 * 0x40" (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )) + (binary_expression "lVar3 * 0x40" identifier * number_literal)) )) - (cast_expression "(long)(int)((uint)lVar9 ^ 0x3f)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((uint)lVar9 ^ 0x3f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)lVar9 ^ 0x3f)" ( (binary_expression "(uint)lVar9 ^ 0x3f" (cast_expression "(uint)lVar9" ( (type_descriptor "uint" type_identifier) ) identifier) ^ number_literal) )))))) ;) (expression_statement "uVar2 = uVar15 / uVar14;" (assignment_expression "uVar2 = uVar15 / uVar14" identifier = (binary_expression "uVar15 / uVar14" identifier / identifier)) ;) (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" if (parenthesized_expression "(param_1 == (ulong *)0x0)" ( (binary_expression "param_1 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" { (expression_statement "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);" (assignment_expression "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" identifier = (cast_expression "(ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" (parenthesized_expression "(**(code **)PTR___gmp_allocate_func_00172f08)" ( (pointer_expression "**(code **)PTR___gmp_allocate_func_00172f08" * (pointer_expression "*(code **)PTR___gmp_allocate_func_00172f08" * (cast_expression "(code **)PTR___gmp_allocate_func_00172f08" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(param_4 * uVar2,param_2,uVar15 % uVar14)" ( (binary_expression "param_4 * uVar2" identifier * identifier) , identifier , (binary_expression "uVar15 % uVar14" identifier % identifier) ))))) ;) })) (if_statement "if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }" { (if_statement "if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" { (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_00116868;" goto statement_identifier ;) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar14 & 7))" ( (binary_expression "1L << ((byte)uVar14 & 7)" number_literal << (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00116bcc:\n    uVar16 = -param_4;" statement_identifier : (expression_statement "uVar16 = -param_4;" (assignment_expression "uVar16 = -param_4" identifier = (unary_expression "-param_4" - identifier)) ;)) }) (else_clause "else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" else (compound_statement "{\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" { (if_statement "if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" { (labeled_statement "LAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" statement_identifier : (if_statement "if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" if (parenthesized_expression "((param_4 == 8) && (((ulong)puStack_60 & 7) == 0))" ( (binary_expression "(param_4 == 8) && (((ulong)puStack_60 & 7) == 0)" (parenthesized_expression "(param_4 == 8)" ( (binary_expression "param_4 == 8" identifier == number_literal) )) && (parenthesized_expression "(((ulong)puStack_60 & 7) == 0)" ( (binary_expression "((ulong)puStack_60 & 7) == 0" (parenthesized_expression "((ulong)puStack_60 & 7)" ( (binary_expression "(ulong)puStack_60 & 7" (cast_expression "(ulong)puStack_60" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" { (if_statement "if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 & param_5) == 0xffffffff)" ( (binary_expression "(param_3 & param_5) == 0xffffffff" (parenthesized_expression "(param_3 & param_5)" ( (binary_expression "param_3 & param_5" identifier & identifier) )) == number_literal) )) (compound_statement "{\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" { (expression_statement "__gmpn_copyi(puStack_60,puVar8,uVar2);" (call_expression "__gmpn_copyi(puStack_60,puVar8,uVar2)" identifier (argument_list "(puStack_60,puVar8,uVar2)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_5 == 0xffffffff) && (param_3 == 1))" ( (binary_expression "(param_5 == 0xffffffff) && (param_3 == 1)" (parenthesized_expression "(param_5 == 0xffffffff)" ( (binary_expression "param_5 == 0xffffffff" identifier == number_literal) )) && (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "puStack_60[uVar14] = *puVar8;" (assignment_expression "puStack_60[uVar14] = *puVar8" (subscript_expression "puStack_60[uVar14]" identifier [ identifier ]) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 == 0xffffffff) && (param_5 == 1))" ( (binary_expression "(param_3 == 0xffffffff) && (param_5 == 1)" (parenthesized_expression "(param_3 == 0xffffffff)" ( (binary_expression "param_3 == 0xffffffff" identifier == number_literal) )) && (parenthesized_expression "(param_5 == 1)" ( (binary_expression "param_5 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "uVar15 = puVar8[uVar14];" (assignment_expression "uVar15 = puVar8[uVar14]" identifier = (subscript_expression "puVar8[uVar14]" identifier [ identifier ])) ;) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" ( (binary_expression "uVar15 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" ( (binary_expression "uVar15 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" ( (binary_expression "uVar15 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" ( (binary_expression "uVar15 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" ( (binary_expression "uVar15 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" ( (binary_expression "uVar15 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar15 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) (if_statement "if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" if (parenthesized_expression "((param_3 == 1) && (param_5 == 1))" ( (binary_expression "(param_3 == 1) && (param_5 == 1)" (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) && (parenthesized_expression "(param_5 == 1)" ( (binary_expression "param_5 == 1" identifier == number_literal) ))) )) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" { (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" identifier = identifier) ;) (do_statement "do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" do (compound_statement "{\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" { (expression_statement "uVar15 = *puVar8;" (assignment_expression "uVar15 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" * identifier) = (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" ( (binary_expression "uVar15 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" ( (binary_expression "uVar15 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" ( (binary_expression "uVar15 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" ( (binary_expression "uVar15 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" ( (binary_expression "uVar15 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" ( (binary_expression "uVar15 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar15 << 0x38" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != uVar14)" ( (binary_expression "uVar2 != uVar14" identifier != identifier) )) ;) })) (goto_statement "goto LAB_001168e4;" goto statement_identifier ;) })) }))) })) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" identifier = (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(1L << ((byte)uVar14 & 7))" ( (binary_expression "1L << ((byte)uVar14 & 7)" number_literal << (parenthesized_expression "((byte)uVar14 & 7)" ( (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))) - number_literal)) ;) (expression_statement "uVar16 = param_4;" (assignment_expression "uVar16 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_5 < 0) goto LAB_00116bcc;" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00116bcc;" goto statement_identifier ;)) }))) (expression_statement "uStack_50 = (uint)uVar14 & 7;" (assignment_expression "uStack_50 = (uint)uVar14 & 7" identifier = (binary_expression "(uint)uVar14 & 7" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar13 = uVar14 >> 3;" (assignment_expression "uVar13 = uVar14 >> 3" identifier = (binary_expression "uVar14 >> 3" identifier >> number_literal)) ;) (if_statement "if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }" { (expression_statement "lStack_78 = uVar16 + param_4;" (assignment_expression "lStack_78 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" else (compound_statement "{\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" { (expression_statement "lStack_78 = uVar16 - param_4;" (assignment_expression "lStack_78 = uVar16 - param_4" identifier = (binary_expression "uVar16 - param_4" identifier - identifier)) ;) (expression_statement "lVar9 = (uVar2 - 1) * param_4;" (assignment_expression "lVar9 = (uVar2 - 1) * param_4" identifier = (binary_expression "(uVar2 - 1) * param_4" (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )) * identifier)) ;) }))) (expression_statement "lVar11 = param_4 - 1;" (assignment_expression "lVar11 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (if_statement "if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lVar11 = 0;\n  }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) })) (expression_statement "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);" (assignment_expression "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60)" identifier = (cast_expression "(byte *)(lVar11 + lVar9 + (long)puStack_60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar9 + (long)puStack_60)" ( (binary_expression "lVar11 + lVar9 + (long)puStack_60" (binary_expression "lVar11 + lVar9" identifier + identifier) + (cast_expression "(long)puStack_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "puVar6 = puVar8 + lVar3;" (assignment_expression "puVar6 = puVar8 + lVar3" identifier = (binary_expression "puVar8 + lVar3" identifier + identifier)) ;) (if_statement "if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" if (parenthesized_expression "(uVar14 <= uVar15)" ( (binary_expression "uVar14 <= uVar15" identifier <= identifier) )) (compound_statement "{\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" { (expression_statement "lVar9 = (long)(int)param_5;" (assignment_expression "lVar9 = (long)(int)param_5" identifier = (cast_expression "(long)(int)param_5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "lVar3 = -lVar9;" (assignment_expression "lVar3 = -lVar9" identifier = (unary_expression "-lVar9" - identifier)) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);" do (compound_statement "{\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" identifier = identifier) ;) (if_statement "if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" { (do_statement "do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);" do (compound_statement "{\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        }" { (if_statement "if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" if (parenthesized_expression "(iVar10 < 8)" ( (binary_expression "iVar10 < 8" identifier < number_literal) )) (compound_statement "{\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" if (parenthesized_expression "(puVar6 != puVar8)" ( (binary_expression "puVar6 != puVar8" identifier != identifier) )) (compound_statement "{\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" { (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));" (assignment_expression "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (pointer_expression "*pbVar7" * identifier) = (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x3f)" ( (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) (expression_statement "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f)" identifier = (binary_expression "uVar4 >> (8 - (byte)iVar10 & 0x3f)" identifier >> (parenthesized_expression "(8 - (byte)iVar10 & 0x3f)" ( (binary_expression "8 - (byte)iVar10 & 0x3f" (binary_expression "8 - (byte)iVar10" number_literal - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + 0x38;" (assignment_expression "iVar10 = iVar10 + 0x38" identifier = (binary_expression "iVar10 + 0x38" identifier + number_literal)) ;) }) (else_clause "else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" else (compound_statement "{\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" { (expression_statement "*pbVar7 = (byte)uVar15;" (assignment_expression "*pbVar7 = (byte)uVar15" (pointer_expression "*pbVar7" * identifier) = (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar15 = uVar15 >> 8;" (assignment_expression "uVar15 = uVar15 >> 8" identifier = (binary_expression "uVar15 >> 8" identifier >> number_literal)) ;) (expression_statement "iVar10 = iVar10 + -8;" (assignment_expression "iVar10 = iVar10 + -8" identifier = (binary_expression "iVar10 + -8" identifier + number_literal)) ;) }))) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" identifier = (binary_expression "pbVar7 + lVar3" identifier + identifier)) ;) }) while (parenthesized_expression "(uVar13 != uVar5)" ( (binary_expression "uVar13 != uVar5" identifier != identifier) )) ;) (expression_statement "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);" (assignment_expression "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" identifier = (binary_expression "pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" identifier + (parenthesized_expression "(-lVar9 - (uVar13 - 1) * lVar9)" ( (binary_expression "-lVar9 - (uVar13 - 1) * lVar9" (unary_expression "-lVar9" - identifier) - (binary_expression "(uVar13 - 1) * lVar9" (parenthesized_expression "(uVar13 - 1)" ( (binary_expression "uVar13 - 1" identifier - number_literal) )) * identifier)) )))) ;) })) (if_statement "if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "((uVar14 & 7) != 0)" ( (binary_expression "(uVar14 & 7) != 0" (parenthesized_expression "(uVar14 & 7)" ( (binary_expression "uVar14 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" { (if_statement "if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" if (parenthesized_expression "(iVar10 < (int)uStack_50)" ( (binary_expression "iVar10 < (int)uStack_50" identifier < (cast_expression "(int)uStack_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" if (parenthesized_expression "(puVar6 != puVar8)" ( (binary_expression "puVar6 != puVar8" identifier != identifier) )) (compound_statement "{\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" { (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;" (assignment_expression "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (pointer_expression "*pbVar12" * identifier) = (binary_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (parenthesized_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f)))" ( (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier) | (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" ( (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" identifier << (parenthesized_expression "((byte)iVar10 & 0x3f)" ( (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) )) & identifier)) ;) (expression_statement "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" identifier = (binary_expression "uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" identifier >> (parenthesized_expression "((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" ( (binary_expression "(sbyte)uStack_50 - (byte)iVar10 & 0x3f" (binary_expression "(sbyte)uStack_50 - (byte)iVar10" (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier) - (cast_expression "(byte)iVar10" ( (type_descriptor "byte" type_identifier) ) identifier)) & number_literal) )))) ;) (expression_statement "iVar1 = 0x40 - uStack_50;" (assignment_expression "iVar1 = 0x40 - uStack_50" identifier = (binary_expression "0x40 - uStack_50" number_literal - identifier)) ;) }) (else_clause "else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" else (compound_statement "{\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" { (expression_statement "*pbVar12 = bStack_58 & (byte)uVar15;" (assignment_expression "*pbVar12 = bStack_58 & (byte)uVar15" (pointer_expression "*pbVar12" * identifier) = (binary_expression "bStack_58 & (byte)uVar15" identifier & (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier))) ;) (expression_statement "uVar15 = uVar15 >> (sbyte)uStack_50;" (assignment_expression "uVar15 = uVar15 >> (sbyte)uStack_50" identifier = (binary_expression "uVar15 >> (sbyte)uStack_50" identifier >> (cast_expression "(sbyte)uStack_50" ( (type_descriptor "sbyte" type_identifier) ) identifier))) ;) (expression_statement "iVar1 = -uStack_50;" (assignment_expression "iVar1 = -uStack_50" identifier = (unary_expression "-uStack_50" - identifier)) ;) }))) (expression_statement "iVar10 = iVar10 + iVar1;" (assignment_expression "iVar10 = iVar10 + iVar1" identifier = (binary_expression "iVar10 + iVar1" identifier + identifier)) ;) (expression_statement "pbVar12 = pbVar12 + lVar3;" (assignment_expression "pbVar12 = pbVar12 + lVar3" identifier = (binary_expression "pbVar12 + lVar3" identifier + identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" identifier = identifier) ;) (if_statement "if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" if (parenthesized_expression "(uVar5 < param_4)" ( (binary_expression "uVar5 < param_4" identifier < identifier) )) (compound_statement "{\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" { (do_statement "do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);" do (compound_statement "{\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        }" { (expression_statement "*pbVar7 = 0;" (assignment_expression "*pbVar7 = 0" (pointer_expression "*pbVar7" * identifier) = number_literal) ;) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" identifier = (binary_expression "pbVar7 + lVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != uVar4)" ( (binary_expression "param_4 != uVar4" identifier != identifier) )) ;) (expression_statement "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;" (assignment_expression "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9" identifier = (binary_expression "pbVar12 + (uVar5 - param_4) * lVar9" identifier + (binary_expression "(uVar5 - param_4) * lVar9" (parenthesized_expression "(uVar5 - param_4)" ( (binary_expression "uVar5 - param_4" identifier - identifier) )) * identifier))) ;) })) (expression_statement "pbVar12 = pbVar12 + lStack_78;" (assignment_expression "pbVar12 = pbVar12 + lStack_78" identifier = (binary_expression "pbVar12 + lStack_78" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 < uVar2)" ( (binary_expression "uVar16 < uVar2" identifier < identifier) )) ;) })) (labeled_statement "LAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lStack_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lStack_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return puStack_60;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT)) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) + (binary_expression IDENT * LIT)) )) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) ^ LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (binary_expression IDENT * IDENT) , IDENT , (binary_expression IDENT % IDENT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (unary_expression - IDENT) - (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * IDENT)) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )))) )) & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT & (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "ulong * __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" (type_identifier "ulong") (pointer_declarator "* __gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" (* "*") (function_declarator "__gmpz_export(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" (identifier "__gmpz_export") (parameter_list "(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,\n                     long param_6,long param_7)" (( "(") (parameter_declaration "ulong *param_1" (type_identifier "ulong") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "ulong param_4" (type_identifier "ulong") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "long param_6" (sized_type_specifier "long" (long "long")) (identifier "param_6")) (, ",") (parameter_declaration "long param_7" (sized_type_specifier "long" (long "long")) (identifier "param_7")) () ")")))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong *puVar6;\n  byte *pbVar7;\n  ulong *puVar8;\n  long lVar9;\n  int iVar10;\n  long lVar11;\n  byte *pbVar12;\n  ulong uVar13;\n  ulong uVar14;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  long lStack_78;\n  ulong *puStack_60;\n  byte bStack_58;\n  uint uStack_50;\n  ulong uStack_48;\n  long lStack_40;\n  \n  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }\n  uVar2 = (ulong)*(int *)(param_7 + 4);\n  puStack_60 = param_1;\n  if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }\n  puVar8 = *(ulong **)(param_7 + 8);\n  uVar14 = param_4 * 8 - param_6;\n  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);\n  lVar9 = 0x3f;\n  if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }\n  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);\n  uVar2 = uVar15 / uVar14;\n  *param_2 = uVar2;\n  if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }\n  if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }\n  uStack_50 = (uint)uVar14 & 7;\n  uVar13 = uVar14 >> 3;\n  if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }\n  lVar11 = param_4 - 1;\n  if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }\n  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);\n  puVar6 = puVar8 + lVar3;\n  if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }\nLAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return puStack_60;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong *puVar6;" (type_identifier "ulong") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "ulong *puVar8;" (type_identifier "ulong") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "ulong uVar16;" (type_identifier "ulong") (identifier "uVar16") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "long lStack_78;" (sized_type_specifier "long" (long "long")) (identifier "lStack_78") (; ";")) (declaration "ulong *puStack_60;" (type_identifier "ulong") (pointer_declarator "*puStack_60" (* "*") (identifier "puStack_60")) (; ";")) (declaration "byte bStack_58;" (type_identifier "byte") (identifier "bStack_58") (; ";")) (declaration "uint uStack_50;" (type_identifier "uint") (identifier "uStack_50") (; ";")) (declaration "ulong uStack_48;" (type_identifier "ulong") (identifier "uStack_48") (; ";")) (declaration "long lStack_40;" (sized_type_specifier "long" (long "long")) (identifier "lStack_40") (; ";")) (expression_statement "lStack_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lStack_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "lStack_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_2 == (ulong *)0x0) {\n    param_2 = &uStack_48;\n  }" (if "if") (parenthesized_expression "(param_2 == (ulong *)0x0)" (( "(") (binary_expression "param_2 == (ulong *)0x0" (identifier "param_2") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    param_2 = &uStack_48;\n  }" ({ "{") (expression_statement "param_2 = &uStack_48;" (assignment_expression "param_2 = &uStack_48" (identifier "param_2") (= "=") (pointer_expression "&uStack_48" (& "&") (identifier "uStack_48"))) (; ";")) (} "}"))) (expression_statement "uVar2 = (ulong)*(int *)(param_7 + 4);" (assignment_expression "uVar2 = (ulong)*(int *)(param_7 + 4)" (identifier "uVar2") (= "=") (binary_expression "(ulong)*(int *)(param_7 + 4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(int *)(param_7 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 4)" (( "(") (binary_expression "param_7 + 4" (identifier "param_7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puStack_60 = param_1;" (assignment_expression "puStack_60 = param_1" (identifier "puStack_60") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (uVar2 == 0) {\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *param_2 = 0;\n    goto LAB_001168e4;\n  }" ({ "{") (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_001168e4;" (goto "goto") (statement_identifier "LAB_001168e4") (; ";")) (} "}"))) (expression_statement "puVar8 = *(ulong **)(param_7 + 8);" (assignment_expression "puVar8 = *(ulong **)(param_7 + 8)" (identifier "puVar8") (= "=") (pointer_expression "*(ulong **)(param_7 + 8)" (* "*") (cast_expression "(ulong **)(param_7 + 8)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + 8)" (( "(") (binary_expression "param_7 + 8" (identifier "param_7") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar14 = param_4 * 8 - param_6;" (assignment_expression "uVar14 = param_4 * 8 - param_6" (identifier "uVar14") (= "=") (binary_expression "param_4 * 8 - param_6" (binary_expression "param_4 * 8" (identifier "param_4") (* "*") (number_literal "8")) (- "-") (identifier "param_6"))) (; ";")) (expression_statement "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);" (assignment_expression "lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" (identifier "lVar3") (= "=") (binary_expression "(uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f)" (parenthesized_expression "(uVar2 ^ (long)uVar2 >> 0x3f)" (( "(") (binary_expression "uVar2 ^ (long)uVar2 >> 0x3f" (identifier "uVar2") (^ "^") (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x3f"))) () ")")) (- "-") (parenthesized_expression "((long)uVar2 >> 0x3f)" (( "(") (binary_expression "(long)uVar2 >> 0x3f" (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "lVar9 = 0x3f;" (assignment_expression "lVar9 = 0x3f" (identifier "lVar9") (= "=") (number_literal "0x3f")) (; ";")) (if_statement "if (puVar8[lVar3 + -1] != 0) {\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" (if "if") (parenthesized_expression "(puVar8[lVar3 + -1] != 0)" (( "(") (binary_expression "puVar8[lVar3 + -1] != 0" (subscript_expression "puVar8[lVar3 + -1]" (identifier "puVar8") ([ "[") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }\n  }" ({ "{") (for_statement "for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {\n    }" (for "for") (( "(") (; ";") (binary_expression "puVar8[lVar3 + -1] >> lVar9 == 0" (binary_expression "puVar8[lVar3 + -1] >> lVar9" (subscript_expression "puVar8[lVar3 + -1]" (identifier "puVar8") ([ "[") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (] "]")) (>> ">>") (identifier "lVar9")) (== "==") (number_literal "0")) (; ";") (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    }" ({ "{") (} "}"))) (} "}"))) (expression_statement "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);" (assignment_expression "uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" (identifier "uVar15") (= "=") (binary_expression "((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f)" (parenthesized_expression "((uVar14 - 1) + lVar3 * 0x40)" (( "(") (binary_expression "(uVar14 - 1) + lVar3 * 0x40" (parenthesized_expression "(uVar14 - 1)" (( "(") (binary_expression "uVar14 - 1" (identifier "uVar14") (- "-") (number_literal "1")) () ")")) (+ "+") (binary_expression "lVar3 * 0x40" (identifier "lVar3") (* "*") (number_literal "0x40"))) () ")")) (- "-") (cast_expression "(long)(int)((uint)lVar9 ^ 0x3f)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)((uint)lVar9 ^ 0x3f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)lVar9 ^ 0x3f)" (( "(") (binary_expression "(uint)lVar9 ^ 0x3f" (cast_expression "(uint)lVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar9")) (^ "^") (number_literal "0x3f")) () ")")))))) (; ";")) (expression_statement "uVar2 = uVar15 / uVar14;" (assignment_expression "uVar2 = uVar15 / uVar14" (identifier "uVar2") (= "=") (binary_expression "uVar15 / uVar14" (identifier "uVar15") (/ "/") (identifier "uVar14"))) (; ";")) (expression_statement "*param_2 = uVar2;" (assignment_expression "*param_2 = uVar2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (param_1 == (ulong *)0x0) {\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" (if "if") (parenthesized_expression "(param_1 == (ulong *)0x0)" (( "(") (binary_expression "param_1 == (ulong *)0x0" (identifier "param_1") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);\n  }" ({ "{") (expression_statement "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14);" (assignment_expression "puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" (identifier "puStack_60") (= "=") (cast_expression "(ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)PTR___gmp_allocate_func_00172f08)\n                                    (param_4 * uVar2,param_2,uVar15 % uVar14)" (parenthesized_expression "(**(code **)PTR___gmp_allocate_func_00172f08)" (( "(") (pointer_expression "**(code **)PTR___gmp_allocate_func_00172f08" (* "*") (pointer_expression "*(code **)PTR___gmp_allocate_func_00172f08" (* "*") (cast_expression "(code **)PTR___gmp_allocate_func_00172f08" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___gmp_allocate_func_00172f08")))) () ")")) (argument_list "(param_4 * uVar2,param_2,uVar15 % uVar14)" (( "(") (binary_expression "param_4 * uVar2" (identifier "param_4") (* "*") (identifier "uVar2")) (, ",") (identifier "param_2") (, ",") (binary_expression "uVar15 % uVar14" (identifier "uVar15") (% "%") (identifier "uVar14")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }\n  else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    param_5 = 0xffffffff;\nLAB_00116bcc:\n    uVar16 = -param_4;\n  }" ({ "{") (if_statement "if (param_6 == 0) {\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_5 = 0xffffffff;\n      goto LAB_00116868;\n    }" ({ "{") (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" (identifier "param_5") (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_00116868;" (goto "goto") (statement_identifier "LAB_00116868") (; ";")) (} "}"))) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" (identifier "bStack_58") (= "=") (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(1L << ((byte)uVar14 & 7))" (( "(") (binary_expression "1L << ((byte)uVar14 & 7)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)uVar14 & 7)" (( "(") (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar14")) (& "&") (number_literal "7")) () ")"))) () ")"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_5 = 0xffffffff;" (assignment_expression "param_5 = 0xffffffff" (identifier "param_5") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_00116bcc:\n    uVar16 = -param_4;" (statement_identifier "LAB_00116bcc") (: ":") (expression_statement "uVar16 = -param_4;" (assignment_expression "uVar16 = -param_4" (identifier "uVar16") (= "=") (unary_expression "-param_4" (- "-") (identifier "param_4"))) (; ";"))) (} "}")) (else_clause "else {\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" (else "else") (compound_statement "{\n    if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }\n    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;\n    uVar16 = param_4;\n    if ((int)param_5 < 0) goto LAB_00116bcc;\n  }" ({ "{") (if_statement "if (param_6 == 0) {\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_00116868:\n      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" (statement_identifier "LAB_00116868") (: ":") (if_statement "if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" (if "if") (parenthesized_expression "((param_4 == 8) && (((ulong)puStack_60 & 7) == 0))" (( "(") (binary_expression "(param_4 == 8) && (((ulong)puStack_60 & 7) == 0)" (parenthesized_expression "(param_4 == 8)" (( "(") (binary_expression "param_4 == 8" (identifier "param_4") (== "==") (number_literal "8")) () ")")) (&& "&&") (parenthesized_expression "(((ulong)puStack_60 & 7) == 0)" (( "(") (binary_expression "((ulong)puStack_60 & 7) == 0" (parenthesized_expression "((ulong)puStack_60 & 7)" (( "(") (binary_expression "(ulong)puStack_60 & 7" (cast_expression "(ulong)puStack_60" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "puStack_60")) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }\n        if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n        if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }\n      }" ({ "{") (if_statement "if ((param_3 & param_5) == 0xffffffff) {\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" (if "if") (parenthesized_expression "((param_3 & param_5) == 0xffffffff)" (( "(") (binary_expression "(param_3 & param_5) == 0xffffffff" (parenthesized_expression "(param_3 & param_5)" (( "(") (binary_expression "param_3 & param_5" (identifier "param_3") (& "&") (identifier "param_5")) () ")")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          __gmpn_copyi(puStack_60,puVar8,uVar2);\n          goto LAB_001168e4;\n        }" ({ "{") (expression_statement "__gmpn_copyi(puStack_60,puVar8,uVar2);" (call_expression "__gmpn_copyi(puStack_60,puVar8,uVar2)" (identifier "__gmpn_copyi") (argument_list "(puStack_60,puVar8,uVar2)" (( "(") (identifier "puStack_60") (, ",") (identifier "puVar8") (, ",") (identifier "uVar2") () ")"))) (; ";")) (goto_statement "goto LAB_001168e4;" (goto "goto") (statement_identifier "LAB_001168e4") (; ";")) (} "}"))) (if_statement "if ((param_5 == 0xffffffff) && (param_3 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" (if "if") (parenthesized_expression "((param_5 == 0xffffffff) && (param_3 == 1))" (( "(") (binary_expression "(param_5 == 0xffffffff) && (param_3 == 1)" (parenthesized_expression "(param_5 == 0xffffffff)" (( "(") (binary_expression "param_5 == 0xffffffff" (identifier "param_5") (== "==") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" ({ "{") (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uVar2 - 1)" (identifier "puVar8") (+ "+") (parenthesized_expression "(uVar2 - 1)" (( "(") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" (if "if") (parenthesized_expression "(0 < (long)uVar2)" (( "(") (binary_expression "0 < (long)uVar2" (number_literal "0") (< "<") (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n            uVar14 = 0;\n            do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" (do "do") (compound_statement "{\n              puStack_60[uVar14] = *puVar8;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" ({ "{") (expression_statement "puStack_60[uVar14] = *puVar8;" (assignment_expression "puStack_60[uVar14] = *puVar8" (subscript_expression "puStack_60[uVar14]" (identifier "puStack_60") ([ "[") (identifier "uVar14") (] "]")) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != uVar14)" (( "(") (binary_expression "uVar2 != uVar14" (identifier "uVar2") (!= "!=") (identifier "uVar14")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_001168e4;" (goto "goto") (statement_identifier "LAB_001168e4") (; ";")) (} "}"))) (if_statement "if ((param_3 == 0xffffffff) && (param_5 == 1)) {\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" (if "if") (parenthesized_expression "((param_3 == 0xffffffff) && (param_5 == 1))" (( "(") (binary_expression "(param_3 == 0xffffffff) && (param_5 == 1)" (parenthesized_expression "(param_3 == 0xffffffff)" (( "(") (binary_expression "param_3 == 0xffffffff" (identifier "param_3") (== "==") (number_literal "0xffffffff")) () ")")) (&& "&&") (parenthesized_expression "(param_5 == 1)" (( "(") (binary_expression "param_5 == 1" (identifier "param_5") (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" ({ "{") (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" (if "if") (parenthesized_expression "(0 < (long)uVar2)" (( "(") (binary_expression "0 < (long)uVar2" (number_literal "0") (< "<") (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" (identifier "puVar6") (= "=") (identifier "puStack_60")) (; ";")) (do_statement "do {\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" (do "do") (compound_statement "{\n              uVar15 = puVar8[uVar14];\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              uVar14 = uVar14 + 1;\n            }" ({ "{") (expression_statement "uVar15 = puVar8[uVar14];" (assignment_expression "uVar15 = puVar8[uVar14]" (identifier "uVar15") (= "=") (subscript_expression "puVar8[uVar14]" (identifier "puVar8") ([ "[") (identifier "uVar14") (] "]"))) (; ";")) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" (identifier "uVar15") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" (( "(") (binary_expression "uVar15 & 0xff000000000000" (identifier "uVar15") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" (( "(") (binary_expression "uVar15 & 0xff0000000000" (identifier "uVar15") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" (( "(") (binary_expression "uVar15 & 0xff00000000" (identifier "uVar15") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" (( "(") (binary_expression "uVar15 & 0xff000000" (identifier "uVar15") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" (( "(") (binary_expression "uVar15 & 0xff0000" (identifier "uVar15") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" (( "(") (binary_expression "uVar15 & 0xff00" (identifier "uVar15") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar15 << 0x38" (identifier "uVar15") (<< "<<") (number_literal "0x38")))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != uVar14)" (( "(") (binary_expression "uVar2 != uVar14" (identifier "uVar2") (!= "!=") (identifier "uVar14")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_001168e4;" (goto "goto") (statement_identifier "LAB_001168e4") (; ";")) (} "}"))) (if_statement "if ((param_3 == 1) && (param_5 == 1)) {\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" (if "if") (parenthesized_expression "((param_3 == 1) && (param_5 == 1))" (( "(") (binary_expression "(param_3 == 1) && (param_5 == 1)" (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(param_5 == 1)" (( "(") (binary_expression "param_5 == 1" (identifier "param_5") (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n          puVar8 = puVar8 + (uVar2 - 1);\n          if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }\n          goto LAB_001168e4;\n        }" ({ "{") (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uVar2 - 1)" (identifier "puVar8") (+ "+") (parenthesized_expression "(uVar2 - 1)" (( "(") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (0 < (long)uVar2) {\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" (if "if") (parenthesized_expression "(0 < (long)uVar2)" (( "(") (binary_expression "0 < (long)uVar2" (number_literal "0") (< "<") (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n            uVar14 = 0;\n            puVar6 = puStack_60;\n            do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);\n          }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puStack_60;" (assignment_expression "puVar6 = puStack_60" (identifier "puVar6") (= "=") (identifier "puStack_60")) (; ";")) (do_statement "do {\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            } while (uVar2 != uVar14);" (do "do") (compound_statement "{\n              uVar15 = *puVar8;\n              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;\n              puVar6 = puVar6 + 1;\n              puVar8 = puVar8 + -1;\n              uVar14 = uVar14 + 1;\n            }" ({ "{") (expression_statement "uVar15 = *puVar8;" (assignment_expression "uVar15 = *puVar8" (identifier "uVar15") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;" (assignment_expression "*puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |\n                        (uVar15 & 0xff00) << 0x28" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |\n                        (uVar15 & 0xff000000) << 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |\n                        (uVar15 & 0xff0000000000) >> 0x18" (binary_expression "uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28" (binary_expression "uVar15 >> 0x38" (identifier "uVar15") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar15 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar15 & 0xff000000000000)" (( "(") (binary_expression "uVar15 & 0xff000000000000" (identifier "uVar15") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar15 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar15 & 0xff0000000000)" (( "(") (binary_expression "uVar15 & 0xff0000000000" (identifier "uVar15") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar15 & 0xff00000000) >> 8" (parenthesized_expression "(uVar15 & 0xff00000000)" (( "(") (binary_expression "uVar15 & 0xff00000000" (identifier "uVar15") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar15 & 0xff000000) << 8" (parenthesized_expression "(uVar15 & 0xff000000)" (( "(") (binary_expression "uVar15 & 0xff000000" (identifier "uVar15") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar15 & 0xff0000) << 0x18" (parenthesized_expression "(uVar15 & 0xff0000)" (( "(") (binary_expression "uVar15 & 0xff0000" (identifier "uVar15") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar15 & 0xff00) << 0x28" (parenthesized_expression "(uVar15 & 0xff00)" (( "(") (binary_expression "uVar15 & 0xff00" (identifier "uVar15") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar15 << 0x38" (identifier "uVar15") (<< "<<") (number_literal "0x38")))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != uVar14)" (( "(") (binary_expression "uVar2 != uVar14" (identifier "uVar2") (!= "!=") (identifier "uVar14")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_001168e4;" (goto "goto") (statement_identifier "LAB_001168e4") (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;" (assignment_expression "bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1" (identifier "bStack_58") (= "=") (binary_expression "(char)(1L << ((byte)uVar14 & 7)) - 1" (cast_expression "(char)(1L << ((byte)uVar14 & 7))" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(1L << ((byte)uVar14 & 7))" (( "(") (binary_expression "1L << ((byte)uVar14 & 7)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)uVar14 & 7)" (( "(") (binary_expression "(byte)uVar14 & 7" (cast_expression "(byte)uVar14" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar14")) (& "&") (number_literal "7")) () ")"))) () ")"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = param_4;" (assignment_expression "uVar16 = param_4" (identifier "uVar16") (= "=") (identifier "param_4")) (; ";")) (if_statement "if ((int)param_5 < 0) goto LAB_00116bcc;" (if "if") (parenthesized_expression "((int)param_5 < 0)" (( "(") (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00116bcc;" (goto "goto") (statement_identifier "LAB_00116bcc") (; ";"))) (} "}")))) (expression_statement "uStack_50 = (uint)uVar14 & 7;" (assignment_expression "uStack_50 = (uint)uVar14 & 7" (identifier "uStack_50") (= "=") (binary_expression "(uint)uVar14 & 7" (cast_expression "(uint)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar14")) (& "&") (number_literal "7"))) (; ";")) (expression_statement "uVar13 = uVar14 >> 3;" (assignment_expression "uVar13 = uVar14 >> 3" (identifier "uVar13") (= "=") (binary_expression "uVar14 >> 3" (identifier "uVar14") (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if ((int)param_3 < 0) {\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }\n  else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    lStack_78 = uVar16 + param_4;\n    lVar9 = 0;\n  }" ({ "{") (expression_statement "lStack_78 = uVar16 + param_4;" (assignment_expression "lStack_78 = uVar16 + param_4" (identifier "lStack_78") (= "=") (binary_expression "uVar16 + param_4" (identifier "uVar16") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" (else "else") (compound_statement "{\n    lStack_78 = uVar16 - param_4;\n    lVar9 = (uVar2 - 1) * param_4;\n  }" ({ "{") (expression_statement "lStack_78 = uVar16 - param_4;" (assignment_expression "lStack_78 = uVar16 - param_4" (identifier "lStack_78") (= "=") (binary_expression "uVar16 - param_4" (identifier "uVar16") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "lVar9 = (uVar2 - 1) * param_4;" (assignment_expression "lVar9 = (uVar2 - 1) * param_4" (identifier "lVar9") (= "=") (binary_expression "(uVar2 - 1) * param_4" (parenthesized_expression "(uVar2 - 1)" (( "(") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) () ")")) (* "*") (identifier "param_4"))) (; ";")) (} "}")))) (expression_statement "lVar11 = param_4 - 1;" (assignment_expression "lVar11 = param_4 - 1" (identifier "lVar11") (= "=") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((int)param_5 < 0) {\n    lVar11 = 0;\n  }" (if "if") (parenthesized_expression "((int)param_5 < 0)" (( "(") (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    lVar11 = 0;\n  }" ({ "{") (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);" (assignment_expression "pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(lVar11 + lVar9 + (long)puStack_60)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + lVar9 + (long)puStack_60)" (( "(") (binary_expression "lVar11 + lVar9 + (long)puStack_60" (binary_expression "lVar11 + lVar9" (identifier "lVar11") (+ "+") (identifier "lVar9")) (+ "+") (cast_expression "(long)puStack_60" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puStack_60"))) () ")")))) (; ";")) (expression_statement "puVar6 = puVar8 + lVar3;" (assignment_expression "puVar6 = puVar8 + lVar3" (identifier "puVar6") (= "=") (binary_expression "puVar8 + lVar3" (identifier "puVar8") (+ "+") (identifier "lVar3"))) (; ";")) (if_statement "if (uVar14 <= uVar15) {\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" (if "if") (parenthesized_expression "(uVar14 <= uVar15)" (( "(") (binary_expression "uVar14 <= uVar15" (identifier "uVar14") (<= "<=") (identifier "uVar15")) () ")")) (compound_statement "{\n    lVar9 = (long)(int)param_5;\n    lVar3 = -lVar9;\n    iVar10 = 0;\n    uVar16 = 0;\n    uVar15 = 0;\n    do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);\n  }" ({ "{") (expression_statement "lVar9 = (long)(int)param_5;" (assignment_expression "lVar9 = (long)(int)param_5" (identifier "lVar9") (= "=") (cast_expression "(long)(int)param_5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")))) (; ";")) (expression_statement "lVar3 = -lVar9;" (assignment_expression "lVar3 = -lVar9" (identifier "lVar3") (= "=") (unary_expression "-lVar9" (- "-") (identifier "lVar9"))) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    } while (uVar16 < uVar2);" (do "do") (compound_statement "{\n      uVar5 = 0;\n      pbVar7 = pbVar12;\n      if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }\n      if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }\n      uVar4 = uVar5;\n      pbVar7 = pbVar12;\n      if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }\n      pbVar12 = pbVar12 + lStack_78;\n      uVar16 = uVar16 + 1;\n    }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" (identifier "pbVar7") (= "=") (identifier "pbVar12")) (; ";")) (if_statement "if (uVar13 != 0) {\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);\n        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);\n      }" ({ "{") (do_statement "do {\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        } while (uVar13 != uVar5);" (do "do") (compound_statement "{\n          if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }\n          uVar5 = uVar5 + 1;\n          pbVar7 = pbVar7 + lVar3;\n        }" ({ "{") (if_statement "if (iVar10 < 8) {\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }\n          else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" (if "if") (parenthesized_expression "(iVar10 < 8)" (( "(") (binary_expression "iVar10 < 8" (identifier "iVar10") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n            uVar4 = 0;\n            if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }\n            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));\n            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);\n            iVar10 = iVar10 + 0x38;\n          }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar6 != puVar8) {\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" (if "if") (parenthesized_expression "(puVar6 != puVar8)" (( "(") (binary_expression "puVar6 != puVar8" (identifier "puVar6") (!= "!=") (identifier "puVar8")) () ")")) (compound_statement "{\n              uVar4 = *puVar8;\n              puVar8 = puVar8 + 1;\n            }" ({ "{") (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" (identifier "uVar4") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));" (assignment_expression "*pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (= "=") (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (| "|") (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" (( "(") (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" (identifier "uVar4") (<< "<<") (parenthesized_expression "((byte)iVar10 & 0x3f)" (( "(") (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10")) (& "&") (number_literal "0x3f")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f)" (identifier "uVar15") (= "=") (binary_expression "uVar4 >> (8 - (byte)iVar10 & 0x3f)" (identifier "uVar4") (>> ">>") (parenthesized_expression "(8 - (byte)iVar10 & 0x3f)" (( "(") (binary_expression "8 - (byte)iVar10 & 0x3f" (binary_expression "8 - (byte)iVar10" (number_literal "8") (- "-") (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10"))) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "iVar10 = iVar10 + 0x38;" (assignment_expression "iVar10 = iVar10 + 0x38" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 0x38" (identifier "iVar10") (+ "+") (number_literal "0x38"))) (; ";")) (} "}")) (else_clause "else {\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" (else "else") (compound_statement "{\n            *pbVar7 = (byte)uVar15;\n            uVar15 = uVar15 >> 8;\n            iVar10 = iVar10 + -8;\n          }" ({ "{") (expression_statement "*pbVar7 = (byte)uVar15;" (assignment_expression "*pbVar7 = (byte)uVar15" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (= "=") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar15 = uVar15 >> 8;" (assignment_expression "uVar15 = uVar15 >> 8" (identifier "uVar15") (= "=") (binary_expression "uVar15 >> 8" (identifier "uVar15") (>> ">>") (number_literal "8"))) (; ";")) (expression_statement "iVar10 = iVar10 + -8;" (assignment_expression "iVar10 = iVar10 + -8" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -8" (identifier "iVar10") (+ "+") (number_literal "-8"))) (; ";")) (} "}")))) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + lVar3" (identifier "pbVar7") (+ "+") (identifier "lVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 != uVar5)" (( "(") (binary_expression "uVar13 != uVar5" (identifier "uVar13") (!= "!=") (identifier "uVar5")) () ")")) (; ";")) (expression_statement "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);" (assignment_expression "pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9)" (identifier "pbVar12") (+ "+") (parenthesized_expression "(-lVar9 - (uVar13 - 1) * lVar9)" (( "(") (binary_expression "-lVar9 - (uVar13 - 1) * lVar9" (unary_expression "-lVar9" (- "-") (identifier "lVar9")) (- "-") (binary_expression "(uVar13 - 1) * lVar9" (parenthesized_expression "(uVar13 - 1)" (( "(") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1")) () ")")) (* "*") (identifier "lVar9"))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((uVar14 & 7) != 0) {\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" (if "if") (parenthesized_expression "((uVar14 & 7) != 0)" (( "(") (binary_expression "(uVar14 & 7) != 0" (parenthesized_expression "(uVar14 & 7)" (( "(") (binary_expression "uVar14 & 7" (identifier "uVar14") (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }\n        iVar10 = iVar10 + iVar1;\n        pbVar12 = pbVar12 + lVar3;\n        uVar5 = uVar5 + 1;\n      }" ({ "{") (if_statement "if (iVar10 < (int)uStack_50) {\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }\n        else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" (if "if") (parenthesized_expression "(iVar10 < (int)uStack_50)" (( "(") (binary_expression "iVar10 < (int)uStack_50" (identifier "iVar10") (< "<") (cast_expression "(int)uStack_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uStack_50"))) () ")")) (compound_statement "{\n          uVar4 = 0;\n          if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }\n          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;\n          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);\n          iVar1 = 0x40 - uStack_50;\n        }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar6 != puVar8) {\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" (if "if") (parenthesized_expression "(puVar6 != puVar8)" (( "(") (binary_expression "puVar6 != puVar8" (identifier "puVar6") (!= "!=") (identifier "puVar8")) () ")")) (compound_statement "{\n            uVar4 = *puVar8;\n            puVar8 = puVar8 + 1;\n          }" ({ "{") (expression_statement "uVar4 = *puVar8;" (assignment_expression "uVar4 = *puVar8" (identifier "uVar4") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;" (assignment_expression "*pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (= "=") (binary_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58" (parenthesized_expression "((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f)))" (( "(") (binary_expression "(byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))" (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")) (| "|") (call_expression "(byte)(uVar4 << ((byte)iVar10 & 0x3f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar4 << ((byte)iVar10 & 0x3f))" (( "(") (binary_expression "uVar4 << ((byte)iVar10 & 0x3f)" (identifier "uVar4") (<< "<<") (parenthesized_expression "((byte)iVar10 & 0x3f)" (( "(") (binary_expression "(byte)iVar10 & 0x3f" (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10")) (& "&") (number_literal "0x3f")) () ")"))) () ")")))) () ")")) (& "&") (identifier "bStack_58"))) (; ";")) (expression_statement "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);" (assignment_expression "uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" (identifier "uVar15") (= "=") (binary_expression "uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" (identifier "uVar4") (>> ">>") (parenthesized_expression "((sbyte)uStack_50 - (byte)iVar10 & 0x3f)" (( "(") (binary_expression "(sbyte)uStack_50 - (byte)iVar10 & 0x3f" (binary_expression "(sbyte)uStack_50 - (byte)iVar10" (cast_expression "(sbyte)uStack_50" (( "(") (type_descriptor "sbyte" (type_identifier "sbyte")) () ")") (identifier "uStack_50")) (- "-") (cast_expression "(byte)iVar10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar10"))) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "iVar1 = 0x40 - uStack_50;" (assignment_expression "iVar1 = 0x40 - uStack_50" (identifier "iVar1") (= "=") (binary_expression "0x40 - uStack_50" (number_literal "0x40") (- "-") (identifier "uStack_50"))) (; ";")) (} "}")) (else_clause "else {\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" (else "else") (compound_statement "{\n          *pbVar12 = bStack_58 & (byte)uVar15;\n          uVar15 = uVar15 >> (sbyte)uStack_50;\n          iVar1 = -uStack_50;\n        }" ({ "{") (expression_statement "*pbVar12 = bStack_58 & (byte)uVar15;" (assignment_expression "*pbVar12 = bStack_58 & (byte)uVar15" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (= "=") (binary_expression "bStack_58 & (byte)uVar15" (identifier "bStack_58") (& "&") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15")))) (; ";")) (expression_statement "uVar15 = uVar15 >> (sbyte)uStack_50;" (assignment_expression "uVar15 = uVar15 >> (sbyte)uStack_50" (identifier "uVar15") (= "=") (binary_expression "uVar15 >> (sbyte)uStack_50" (identifier "uVar15") (>> ">>") (cast_expression "(sbyte)uStack_50" (( "(") (type_descriptor "sbyte" (type_identifier "sbyte")) () ")") (identifier "uStack_50")))) (; ";")) (expression_statement "iVar1 = -uStack_50;" (assignment_expression "iVar1 = -uStack_50" (identifier "iVar1") (= "=") (unary_expression "-uStack_50" (- "-") (identifier "uStack_50"))) (; ";")) (} "}")))) (expression_statement "iVar10 = iVar10 + iVar1;" (assignment_expression "iVar10 = iVar10 + iVar1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + iVar1" (identifier "iVar10") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + lVar3;" (assignment_expression "pbVar12 = pbVar12 + lVar3" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + lVar3" (identifier "pbVar12") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "pbVar7 = pbVar12;" (assignment_expression "pbVar7 = pbVar12" (identifier "pbVar7") (= "=") (identifier "pbVar12")) (; ";")) (if_statement "if (uVar5 < param_4) {\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" (if "if") (parenthesized_expression "(uVar5 < param_4)" (( "(") (binary_expression "uVar5 < param_4" (identifier "uVar5") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n        do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);\n        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;\n      }" ({ "{") (do_statement "do {\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        } while (param_4 != uVar4);" (do "do") (compound_statement "{\n          *pbVar7 = 0;\n          pbVar7 = pbVar7 + lVar3;\n          uVar4 = uVar4 + 1;\n        }" ({ "{") (expression_statement "*pbVar7 = 0;" (assignment_expression "*pbVar7 = 0" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar7 + lVar3;" (assignment_expression "pbVar7 = pbVar7 + lVar3" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + lVar3" (identifier "pbVar7") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != uVar4)" (( "(") (binary_expression "param_4 != uVar4" (identifier "param_4") (!= "!=") (identifier "uVar4")) () ")")) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;" (assignment_expression "pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uVar5 - param_4) * lVar9" (identifier "pbVar12") (+ "+") (binary_expression "(uVar5 - param_4) * lVar9" (parenthesized_expression "(uVar5 - param_4)" (( "(") (binary_expression "uVar5 - param_4" (identifier "uVar5") (- "-") (identifier "param_4")) () ")")) (* "*") (identifier "lVar9")))) (; ";")) (} "}"))) (expression_statement "pbVar12 = pbVar12 + lStack_78;" (assignment_expression "pbVar12 = pbVar12 + lStack_78" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + lStack_78" (identifier "pbVar12") (+ "+") (identifier "lStack_78"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < uVar2)" (( "(") (binary_expression "uVar16 < uVar2" (identifier "uVar16") (< "<") (identifier "uVar2")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001168e4:\n  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_001168e4") (: ":") (if_statement "if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(lStack_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "lStack_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "lStack_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return puStack_60;" (return "return") (identifier "puStack_60") (; ";")) (} "}")))

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

void * function_1(void *var_10,size_t *var_2,int var_12,size_t var_4,int var_11,size_t var_5,
                    type_1 z)

{
  int var_26;
  type_2 var_3;
  long var_6;
  type_2 var_20;
  type_2 var_21;
  size_t var_16;
  type_2 *var_15;
  type_3 *var_22;
  type_2 *var_14;
  long var_7;
  int var_19;
  long var_17;
  type_3 *var_23;
  type_2 var_18;
  type_2 var_8;
  type_2 var_9;
  type_2 var_28;
  long var_1;
  long var_27;
  type_2 *puStack_60;
  type_3 var_24;
  type_4 var_25;
  type_2 uStack_48;
  long var_29;
  
  var_29 = *(long *)(var_1 + 0x28);
  if (var_2 == (size_t *)0x0) {
    var_2 = &uStack_48;
  }
  var_3 = (type_2)z->_mp_size;
  puStack_60 = (type_2 *)var_10;
  if (var_3 == 0) {
    *var_2 = 0;
    goto LAB_001168e4;
  }
  var_14 = z->_mp_d;
  var_8 = var_4 * 8 - var_5;
  var_6 = (var_3 ^ (long)var_3 >> 0x3f) - ((long)var_3 >> 0x3f);
  var_7 = 0x3f;
  if (var_14[var_6 + -1] != 0) {
    for (; var_14[var_6 + -1] >> var_7 == 0; var_7 = var_7 + -1) {
    }
  }
  var_9 = ((var_8 - 1) + var_6 * 0x40) - (long)(int)((type_4)var_7 ^ 0x3f);
  var_3 = var_9 / var_8;
  *var_2 = var_3;
  if (var_10 == (void *)0x0) {
    puStack_60 = (type_2 *)(**(type_5 **)PTR___gmp_allocate_func_00172f08)
                                    (var_4 * var_3,var_2,var_9 % var_8);
  }
  if (var_11 == 0) {
    if (var_5 == 0) {
      var_11 = 0xffffffff;
      goto LAB_00116868;
    }
    var_24 = (char)(1L << ((type_3)var_8 & 7)) - 1;
    var_11 = 0xffffffff;
LAB_00116bcc:
    var_16 = -var_4;
  }
  else {
    if (var_5 == 0) {
LAB_00116868:
      if ((var_4 == 8) && (((type_2)puStack_60 & 7) == 0)) {
        if ((var_12 & var_11) == 0xffffffff) {
          var_13(puStack_60,var_14,var_3);
          goto LAB_001168e4;
        }
        if ((var_11 == 0xffffffff) && (var_12 == 1)) {
          var_14 = var_14 + (var_3 - 1);
          if (0 < (long)var_3) {
            var_8 = 0;
            do {
              puStack_60[var_8] = *var_14;
              var_14 = var_14 + -1;
              var_8 = var_8 + 1;
            } while (var_3 != var_8);
          }
          goto LAB_001168e4;
        }
        if ((var_12 == -1) && (var_11 == 1U)) {
          if (0 < (long)var_3) {
            var_8 = 0;
            var_15 = puStack_60;
            do {
              var_9 = var_14[var_8];
              *var_15 = var_9 >> 0x38 | (var_9 & 0xff000000000000) >> 0x28 |
                        (var_9 & 0xff0000000000) >> 0x18 | (var_9 & 0xff00000000) >> 8 |
                        (var_9 & 0xff000000) << 8 | (var_9 & 0xff0000) << 0x18 |
                        (var_9 & 0xff00) << 0x28 | var_9 << 0x38;
              var_15 = var_15 + 1;
              var_8 = var_8 + 1;
            } while (var_3 != var_8);
          }
          goto LAB_001168e4;
        }
        if ((var_12 == 1) && (var_11 == 1U)) {
          var_14 = var_14 + (var_3 - 1);
          if (0 < (long)var_3) {
            var_8 = 0;
            var_15 = puStack_60;
            do {
              var_9 = *var_14;
              *var_15 = var_9 >> 0x38 | (var_9 & 0xff000000000000) >> 0x28 |
                        (var_9 & 0xff0000000000) >> 0x18 | (var_9 & 0xff00000000) >> 8 |
                        (var_9 & 0xff000000) << 8 | (var_9 & 0xff0000) << 0x18 |
                        (var_9 & 0xff00) << 0x28 | var_9 << 0x38;
              var_15 = var_15 + 1;
              var_14 = var_14 + -1;
              var_8 = var_8 + 1;
            } while (var_3 != var_8);
          }
          goto LAB_001168e4;
        }
      }
    }
    var_24 = (char)(1L << ((type_3)var_8 & 7)) - 1;
    var_16 = var_4;
    if (var_11 < 0) goto LAB_00116bcc;
  }
  var_25 = (type_4)var_8 & 7;
  var_18 = var_8 >> 3;
  if (var_12 < 0) {
    var_27 = var_16 + var_4;
    var_7 = 0;
  }
  else {
    var_27 = var_16 - var_4;
    var_7 = (var_3 - 1) * var_4;
  }
  var_17 = var_4 - 1;
  if (var_11 < 0) {
    var_17 = 0;
  }
  var_23 = (type_3 *)(var_17 + var_7 + (long)puStack_60);
  var_15 = var_14 + var_6;
  if (var_8 <= var_9) {
    var_7 = (long)var_11;
    var_6 = -var_7;
    var_19 = 0;
    var_28 = 0;
    var_9 = 0;
    do {
      var_21 = 0;
      var_22 = var_23;
      if (var_18 != 0) {
        do {
          if (var_19 < 8) {
            var_20 = 0;
            if (var_15 != var_14) {
              var_20 = *var_14;
              var_14 = var_14 + 1;
            }
            *var_22 = (type_3)var_9 | (type_3)(var_20 << ((type_3)var_19 & 0x3f));
            var_9 = var_20 >> (8 - (type_3)var_19 & 0x3f);
            var_19 = var_19 + 0x38;
          }
          else {
            *var_22 = (type_3)var_9;
            var_9 = var_9 >> 8;
            var_19 = var_19 + -8;
          }
          var_21 = var_21 + 1;
          var_22 = var_22 + var_6;
        } while (var_18 != var_21);
        var_23 = var_23 + (-var_7 - (var_18 - 1) * var_7);
      }
      if ((var_8 & 7) != 0) {
        if (var_19 < (int)var_25) {
          var_20 = 0;
          if (var_15 != var_14) {
            var_20 = *var_14;
            var_14 = var_14 + 1;
          }
          *var_23 = ((type_3)var_9 | (type_3)(var_20 << ((type_3)var_19 & 0x3f))) & var_24;
          var_9 = var_20 >> ((type_6)var_25 - (type_3)var_19 & 0x3f);
          var_26 = 0x40 - var_25;
        }
        else {
          *var_23 = var_24 & (type_3)var_9;
          var_9 = var_9 >> (type_6)var_25;
          var_26 = -var_25;
        }
        var_19 = var_19 + var_26;
        var_23 = var_23 + var_6;
        var_21 = var_21 + 1;
      }
      var_20 = var_21;
      var_22 = var_23;
      if (var_21 < var_4) {
        do {
          *var_22 = 0;
          var_22 = var_22 + var_6;
          var_20 = var_20 + 1;
        } while (var_4 != var_20);
        var_23 = var_23 + (var_21 - var_4) * var_7;
      }
      var_23 = var_23 + var_27;
      var_28 = var_28 + 1;
    } while (var_28 < var_3);
  }
LAB_001168e4:
  if (var_29 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_30();
  }
  return puStack_60;
}


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

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

ulong * MASKED(ulong *param_1,ulong *param_2,uint param_3,ulong param_4,uint param_5,
                     long param_6,long param_7)

{
  int iVar1;
  ulong uVar2;
  long lVar3;
  ulong uVar4;
  ulong uVar5;
  ulong *puVar6;
  byte *pbVar7;
  ulong *puVar8;
  long lVar9;
  int iVar10;
  long lVar11;
  byte *pbVar12;
  ulong uVar13;
  ulong uVar14;
  ulong uVar15;
  ulong uVar16;
  long in_FS_OFFSET;
  long lStack_78;
  ulong *puStack_60;
  byte bStack_58;
  uint uStack_50;
  ulong uStack_48;
  long lStack_40;
  
  lStack_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == (ulong *)0x0) {
    param_2 = &uStack_48;
  }
  uVar2 = (ulong)*(int *)(param_7 + 4);
  puStack_60 = param_1;
  if (uVar2 == 0) {
    *param_2 = 0;
    goto LAB_001168e4;
  }
  puVar8 = *(ulong **)(param_7 + 8);
  uVar14 = param_4 * 8 - param_6;
  lVar3 = (uVar2 ^ (long)uVar2 >> 0x3f) - ((long)uVar2 >> 0x3f);
  lVar9 = 0x3f;
  if (puVar8[lVar3 + -1] != 0) {
    for (; puVar8[lVar3 + -1] >> lVar9 == 0; lVar9 = lVar9 + -1) {
    }
  }
  uVar15 = ((uVar14 - 1) + lVar3 * 0x40) - (long)(int)((uint)lVar9 ^ 0x3f);
  uVar2 = uVar15 / uVar14;
  *param_2 = uVar2;
  if (param_1 == (ulong *)0x0) {
    puStack_60 = (ulong *)(**(code **)PTR___gmp_allocate_func_00172f08)
                                    (param_4 * uVar2,param_2,uVar15 % uVar14);
  }
  if (param_5 == 0) {
    if (param_6 == 0) {
      param_5 = 0xffffffff;
      goto LAB_00116868;
    }
    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;
    param_5 = 0xffffffff;
LAB_00116bcc:
    uVar16 = -param_4;
  }
  else {
    if (param_6 == 0) {
LAB_00116868:
      if ((param_4 == 8) && (((ulong)puStack_60 & 7) == 0)) {
        if ((param_3 & param_5) == 0xffffffff) {
          __gmpn_copyi(puStack_60,puVar8,uVar2);
          goto LAB_001168e4;
        }
        if ((param_5 == 0xffffffff) && (param_3 == 1)) {
          puVar8 = puVar8 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar14 = 0;
            do {
              puStack_60[uVar14] = *puVar8;
              puVar8 = puVar8 + -1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
        if ((param_3 == 0xffffffff) && (param_5 == 1)) {
          if (0 < (long)uVar2) {
            uVar14 = 0;
            puVar6 = puStack_60;
            do {
              uVar15 = puVar8[uVar14];
              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |
                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |
                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |
                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;
              puVar6 = puVar6 + 1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
        if ((param_3 == 1) && (param_5 == 1)) {
          puVar8 = puVar8 + (uVar2 - 1);
          if (0 < (long)uVar2) {
            uVar14 = 0;
            puVar6 = puStack_60;
            do {
              uVar15 = *puVar8;
              *puVar6 = uVar15 >> 0x38 | (uVar15 & 0xff000000000000) >> 0x28 |
                        (uVar15 & 0xff0000000000) >> 0x18 | (uVar15 & 0xff00000000) >> 8 |
                        (uVar15 & 0xff000000) << 8 | (uVar15 & 0xff0000) << 0x18 |
                        (uVar15 & 0xff00) << 0x28 | uVar15 << 0x38;
              puVar6 = puVar6 + 1;
              puVar8 = puVar8 + -1;
              uVar14 = uVar14 + 1;
            } while (uVar2 != uVar14);
          }
          goto LAB_001168e4;
        }
      }
    }
    bStack_58 = (char)(1L << ((byte)uVar14 & 7)) - 1;
    uVar16 = param_4;
    if ((int)param_5 < 0) goto LAB_00116bcc;
  }
  uStack_50 = (uint)uVar14 & 7;
  uVar13 = uVar14 >> 3;
  if ((int)param_3 < 0) {
    lStack_78 = uVar16 + param_4;
    lVar9 = 0;
  }
  else {
    lStack_78 = uVar16 - param_4;
    lVar9 = (uVar2 - 1) * param_4;
  }
  lVar11 = param_4 - 1;
  if ((int)param_5 < 0) {
    lVar11 = 0;
  }
  pbVar12 = (byte *)(lVar11 + lVar9 + (long)puStack_60);
  puVar6 = puVar8 + lVar3;
  if (uVar14 <= uVar15) {
    lVar9 = (long)(int)param_5;
    lVar3 = -lVar9;
    iVar10 = 0;
    uVar16 = 0;
    uVar15 = 0;
    do {
      uVar5 = 0;
      pbVar7 = pbVar12;
      if (uVar13 != 0) {
        do {
          if (iVar10 < 8) {
            uVar4 = 0;
            if (puVar6 != puVar8) {
              uVar4 = *puVar8;
              puVar8 = puVar8 + 1;
            }
            *pbVar7 = (byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f));
            uVar15 = uVar4 >> (8 - (byte)iVar10 & 0x3f);
            iVar10 = iVar10 + 0x38;
          }
          else {
            *pbVar7 = (byte)uVar15;
            uVar15 = uVar15 >> 8;
            iVar10 = iVar10 + -8;
          }
          uVar5 = uVar5 + 1;
          pbVar7 = pbVar7 + lVar3;
        } while (uVar13 != uVar5);
        pbVar12 = pbVar12 + (-lVar9 - (uVar13 - 1) * lVar9);
      }
      if ((uVar14 & 7) != 0) {
        if (iVar10 < (int)uStack_50) {
          uVar4 = 0;
          if (puVar6 != puVar8) {
            uVar4 = *puVar8;
            puVar8 = puVar8 + 1;
          }
          *pbVar12 = ((byte)uVar15 | (byte)(uVar4 << ((byte)iVar10 & 0x3f))) & bStack_58;
          uVar15 = uVar4 >> ((sbyte)uStack_50 - (byte)iVar10 & 0x3f);
          iVar1 = 0x40 - uStack_50;
        }
        else {
          *pbVar12 = bStack_58 & (byte)uVar15;
          uVar15 = uVar15 >> (sbyte)uStack_50;
          iVar1 = -uStack_50;
        }
        iVar10 = iVar10 + iVar1;
        pbVar12 = pbVar12 + lVar3;
        uVar5 = uVar5 + 1;
      }
      uVar4 = uVar5;
      pbVar7 = pbVar12;
      if (uVar5 < param_4) {
        do {
          *pbVar7 = 0;
          pbVar7 = pbVar7 + lVar3;
          uVar4 = uVar4 + 1;
        } while (param_4 != uVar4);
        pbVar12 = pbVar12 + (uVar5 - param_4) * lVar9;
      }
      pbVar12 = pbVar12 + lStack_78;
      uVar16 = uVar16 + 1;
    } while (uVar16 < uVar2);
  }
LAB_001168e4:
  if (lStack_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return puStack_60;
}

