
int __gmpn_perfect_square_p(mp_srcptr up,mp_size_t usize)

{
  tmp_reentrant_t *mark;
  ulong uVar1;
  long lVar2;
  mp_size_t mVar3;
  mp_ptr sp;
  tmp_reentrant_t **pptVar4;
  ulong uVar5;
  size_t size;
  uint uVar6;
  long in_FS_OFFSET;
  tmp_reentrant_t *__tmp_marker;
  mp_limb_t local_30 [2];
  
  uVar6 = 0;
  local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28);
  pptVar4 = &__tmp_marker;
  if ((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {
    uVar1 = __gmpn_mod_34lsub1();
    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);
    uVar1 = 0x8850a206953820e1;
    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;
    if (0x3f < uVar5) {
      uVar1 = 0x2191240;
    }
    pptVar4 = &__tmp_marker;
    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {
      uVar1 = 0x10b48c4b4206a105;
      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;
      if (0x3f < uVar5) {
        uVar1 = 0x82158;
      }
      pptVar4 = &__tmp_marker;
      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&
         (pptVar4 = &__tmp_marker, uVar6 = 0,
         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {
        uVar5 = 0x6067981b8b451b5f;
        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;
        if (0x3f < uVar1) {
          uVar5 = 0x1eb628b47;
        }
        pptVar4 = &__tmp_marker;
        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {
          __tmp_marker = (tmp_reentrant_t *)0x0;
          size = ((usize + 1) / 2) * 8;
          if (size < 0x7f01) {
            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);
            sp = (mp_ptr)((long)local_30 + lVar2);
            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);
          }
          else {
            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);
            pptVar4 = &__tmp_marker;
          }
          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;
          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);
          mark = __tmp_marker;
          uVar6 = (uint)(mVar3 == 0);
          if (__tmp_marker != (tmp_reentrant_t *)0x0) {
            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;
            __gmp_tmp_reentrant_free(mark);
          }
        }
      }
    }
  }
  if (local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;
    __stack_chk_fail();
  }
  return uVar6;
}



bool __gmpn_perfect_square_p(ulong *param_1,long param_2)

{
  long lVar1;
  ulong uVar2;
  long lVar3;
  long *plVar4;
  ulong uVar5;
  long in_FS_OFFSET;
  bool bVar6;
  long local_38;
  long local_30 [2];
  
  bVar6 = false;
  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);
  plVar4 = &local_38;
  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)
      != 0) {
    uVar2 = __gmpn_mod_34lsub1();
    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);
    uVar2 = 0x8850a206953820e1;
    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;
    if (0x3f < uVar5) {
      uVar2 = 0x2191240;
    }
    plVar4 = &local_38;
    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {
      uVar2 = 0x10b48c4b4206a105;
      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;
      if (0x3f < uVar5) {
        uVar2 = 0x82158;
      }
      plVar4 = &local_38;
      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&
         (plVar4 = &local_38, bVar6 = false,
         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {
        uVar5 = 0x6067981b8b451b5f;
        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;
        if (0x3f < uVar2) {
          uVar5 = 0x1eb628b47;
        }
        plVar4 = &local_38;
        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {
          local_38 = 0;
          uVar2 = ((param_2 + 1) / 2) * 8;
          if (uVar2 < 0x7f01) {
            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);
            lVar3 = (long)local_30 + lVar1;
            plVar4 = (long *)((long)local_30 + lVar1 + -8);
          }
          else {
            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);
            plVar4 = &local_38;
          }
          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;
          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);
          bVar6 = lVar3 == 0;
          if (local_38 != 0) {
            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;
            __gmp_tmp_reentrant_free();
          }
        }
      }
    }
  }
  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;
    __stack_chk_fail();
  }
  return bVar6;
}


PUSH RBP
LEA RCX,[0x16d2a0]
MOV RBP,RSP
PUSH R13
XOR R13D,R13D
PUSH R12
PUSH RBX
SUB RSP,0x18
MOV RDX,qword ptr [RDI]
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RBP + -0x28],RAX
XOR EAX,EAX
MOV EAX,EDX
SHR EAX,0x6
AND EAX,0x3
MOV RAX,qword ptr [RCX + RAX*0x8]
BT RAX,RDX
JNC 0x00139f40
MOV RBX,RDI
MOV R12,RSI
CALL 0x0010c090
MOV EDI,0x2191240
MOV RDX,0xffffffffffff
MOV RSI,0xfd2fd2fd2fd3
MOV RCX,0x1ffffffffffff
AND RDX,RAX
SHR RAX,0x30
ADD RAX,RDX
MOV RDX,-0x77af5df96ac7df1f
IMUL RSI,RAX
AND RSI,RCX
IMUL RSI,RSI,0x5b
SHR RSI,0x31
CMP RSI,0x40
CMOVNC RDX,RDI
BT RDX,RSI
JNC 0x00139f40
MOV RDX,0xfcfcfcfcfcfd
MOV EDI,0x82158
IMUL RDX,RAX
AND RDX,RCX
LEA RSI,[RDX + RDX*0x4]
MOV RDX,RSI
SHL RDX,0x4
ADD RSI,RDX
MOV RDX,0x10b48c4b4206a105
SHR RSI,0x31
CMP RSI,0x40
CMOVNC RDX,RDI
BT RDX,RSI
JNC 0x00139f40
MOV RDX,0xe38e38e38e39
MOV ESI,0x93
IMUL RDX,RAX
AND RDX,RCX
LEA RDX,[RDX + RDX*0x8]
SHR RDX,0x31
BT RSI,RDX
JNC 0x00139f40
MOV RDX,0xfd5c5f02a3a1
IMUL RAX,RDX
AND RAX,RCX
MOV RCX,0x1eb628b47
LEA RDX,[RAX + RAX*0x2]
SHL RDX,0x5
ADD RAX,RDX
MOV RDX,0x6067981b8b451b5f
SHR RAX,0x31
CMP RAX,0x40
CMOVNC RDX,RCX
BT RDX,RAX
JNC 0x00139f40
LEA RAX,[R12 + 0x1]
MOV qword ptr [RBP + -0x30],0x0
MOV RSI,RAX
SHR RSI,0x3f
ADD RSI,RAX
SAR RSI,0x1
SHL RSI,0x3
CMP RSI,0x7f00
JA 0x00139f70
ADD RSI,0x17
AND RSI,-0x10
SUB RSP,RSI
LEA RDI,[RSP + 0xf]
AND RDI,-0x10
XOR ESI,ESI
MOV RCX,R12
MOV RDX,RBX
XOR R13D,R13D
CALL 0x0010c480
MOV RDI,qword ptr [RBP + -0x30]
TEST RAX,RAX
SETZ R13B
TEST RDI,RDI
JNZ 0x00139f60
NOP dword ptr [RAX + RAX*0x1]
MOV RBX,qword ptr [RBP + -0x28]
XOR RBX,qword ptr FS:[0x28]
MOV EAX,R13D
JNZ 0x00139f7e
LEA RSP,[RBP + -0x18]
POP RBX
POP R12
POP R13
POP RBP
RET
CALL 0x0010b040
JMP 0x00139f40
LEA RDI,[RBP + -0x30]
CALL 0x0010bcb0
MOV RDI,RAX
JMP 0x00139f1b
CALL 0x0010b530
(translation_unit "bool __gmpn_perfect_square_p(ulong *param_1,long param_2)\n\n{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}\n\n" (function_definition "bool __gmpn_perfect_square_p(ulong *param_1,long param_2)\n\n{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" primitive_type (function_declarator "__gmpn_perfect_square_p(ulong *param_1,long param_2)" identifier (parameter_list "(ulong *param_1,long param_2)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "long local_38;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_30 [2];" (sized_type_specifier "long" long) (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "local_30[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) = (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) ))))) ;) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0)" ( (binary_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0" (parenthesized_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1" (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f)" (pointer_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" * (cast_expression "(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" ( (binary_expression "&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8" (pointer_expression "&DAT_0016d2a0" & identifier) + (binary_expression "(ulong)((uint)(*param_1 >> 6) & 3) * 8" (call_expression "(ulong)((uint)(*param_1 >> 6) & 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)(*param_1 >> 6) & 3)" ( (binary_expression "(uint)(*param_1 >> 6) & 3" (call_expression "(uint)(*param_1 >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_1 >> 6)" ( (binary_expression "*param_1 >> 6" (pointer_expression "*param_1" * identifier) >> number_literal) ))) & number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*param_1 & 0x3f)" ( (binary_expression "*param_1 & 0x3f" (pointer_expression "*param_1" * identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar2 = __gmpn_mod_34lsub1();" (assignment_expression "uVar2 = __gmpn_mod_34lsub1()" identifier = (call_expression "__gmpn_mod_34lsub1()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);" (assignment_expression "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" identifier = (binary_expression "(uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" (parenthesized_expression "(uVar2 >> 0x30)" ( (binary_expression "uVar2 >> 0x30" identifier >> number_literal) )) + (parenthesized_expression "(uVar2 & 0xffffffffffff)" ( (binary_expression "uVar2 & 0xffffffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar2 = 0x8850a206953820e1;" (assignment_expression "uVar2 = 0x8850a206953820e1" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" identifier = (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b" (parenthesized_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd2fd2fd2fd3" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n      uVar2 = 0x2191240;\n    }" { (expression_statement "uVar2 = 0x2191240;" (assignment_expression "uVar2 = 0x2191240" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" if (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" { (expression_statement "uVar2 = 0x10b48c4b4206a105;" (assignment_expression "uVar2 = 0x10b48c4b4206a105" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" identifier = (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55" (parenthesized_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfcfcfcfcfcfd" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n        uVar2 = 0x82158;\n      }" { (expression_statement "uVar2 = 0x82158;" (assignment_expression "uVar2 = 0x82158" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" if (parenthesized_expression "(((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0))" ( (binary_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" ( (comma_expression "plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) , (comma_expression "bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "bVar6 = false" identifier = false) , (binary_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (parenthesized_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1)" ( (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1" (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" number_literal >> (parenthesized_expression "((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" ( (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31" (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9" (parenthesized_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xe38e38e38e39" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal) ))) & number_literal) )) != number_literal))) ))) )) (compound_statement "{\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" { (expression_statement "uVar5 = 0x6067981b8b451b5f;" (assignment_expression "uVar5 = 0x6067981b8b451b5f" identifier = number_literal) ;) (expression_statement "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;" (assignment_expression "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" identifier = (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61" (parenthesized_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd5c5f02a3a1" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }" if (parenthesized_expression "(0x3f < uVar2)" ( (binary_expression "0x3f < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar5 = 0x1eb628b47;\n        }" { (expression_statement "uVar5 = 0x1eb628b47;" (assignment_expression "uVar5 = 0x1eb628b47" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" if (parenthesized_expression "((uVar5 >> (uVar2 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar5 >> (uVar2 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar5 >> (uVar2 & 0x3f) & 1)" ( (binary_expression "uVar5 >> (uVar2 & 0x3f) & 1" (binary_expression "uVar5 >> (uVar2 & 0x3f)" identifier >> (parenthesized_expression "(uVar2 & 0x3f)" ( (binary_expression "uVar2 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = ((param_2 + 1) / 2) * 8;" (assignment_expression "uVar2 = ((param_2 + 1) / 2) * 8" identifier = (binary_expression "((param_2 + 1) / 2) * 8" (parenthesized_expression "((param_2 + 1) / 2)" ( (binary_expression "(param_2 + 1) / 2" (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )) / number_literal) )) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }" { (expression_statement "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(uVar2 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(uVar2 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "uVar2 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar2 + 0x17" identifier + number_literal) & number_literal) )))) ;) (expression_statement "lVar3 = (long)local_30 + lVar1;" (assignment_expression "lVar3 = (long)local_30 + lVar1" identifier = (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "plVar4 = (long *)((long)local_30 + lVar1 + -8);" (assignment_expression "plVar4 = (long *)((long)local_30 + lVar1 + -8)" identifier = (cast_expression "(long *)((long)local_30 + lVar1 + -8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_30 + lVar1 + -8)" ( (binary_expression "(long)local_30 + lVar1 + -8" (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" else (compound_statement "{\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" { (expression_statement "lVar3 = __gmp_tmp_reentrant_alloc(&local_38);" (assignment_expression "lVar3 = __gmp_tmp_reentrant_alloc(&local_38)" identifier = (call_expression "__gmp_tmp_reentrant_alloc(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) )))) ;) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) }))) (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);" (assignment_expression "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2)" identifier = (call_expression "__gmpn_sqrtrem(lVar3,0,param_1,param_2)" identifier (argument_list "(lVar3,0,param_1,param_2)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "bVar6 = lVar3 == 0;" (assignment_expression "bVar6 = lVar3 == 0" identifier = (binary_expression "lVar3 == 0" identifier == number_literal)) ;) (if_statement "if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" if (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) (compound_statement "{\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" { (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f65;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f65" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) })) })) })) })) })) (if_statement "if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30[0] != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (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    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" { comment (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f83;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f83" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return bVar6;" return identifier ;) })))
(translation_unit "int __gmpn_perfect_square_p(mp_srcptr up,mp_size_t usize)\n\n{\n  tmp_reentrant_t *mark;\n  ulong uVar1;\n  long lVar2;\n  mp_size_t mVar3;\n  mp_ptr sp;\n  tmp_reentrant_t **pptVar4;\n  ulong uVar5;\n  size_t size;\n  uint uVar6;\n  long in_FS_OFFSET;\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t local_30 [2];\n  \n  uVar6 = 0;\n  local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28);\n  pptVar4 = &__tmp_marker;\n  if ((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {\n    uVar1 = __gmpn_mod_34lsub1();\n    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);\n    uVar1 = 0x8850a206953820e1;\n    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }\n    pptVar4 = &__tmp_marker;\n    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return uVar6;\n}\n\n" (function_definition "int __gmpn_perfect_square_p(mp_srcptr up,mp_size_t usize)\n\n{\n  tmp_reentrant_t *mark;\n  ulong uVar1;\n  long lVar2;\n  mp_size_t mVar3;\n  mp_ptr sp;\n  tmp_reentrant_t **pptVar4;\n  ulong uVar5;\n  size_t size;\n  uint uVar6;\n  long in_FS_OFFSET;\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t local_30 [2];\n  \n  uVar6 = 0;\n  local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28);\n  pptVar4 = &__tmp_marker;\n  if ((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {\n    uVar1 = __gmpn_mod_34lsub1();\n    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);\n    uVar1 = 0x8850a206953820e1;\n    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }\n    pptVar4 = &__tmp_marker;\n    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return uVar6;\n}" primitive_type (function_declarator "__gmpn_perfect_square_p(mp_srcptr up,mp_size_t usize)" identifier (parameter_list "(mp_srcptr up,mp_size_t usize)" ( (parameter_declaration "mp_srcptr up" type_identifier identifier) , (parameter_declaration "mp_size_t usize" type_identifier identifier) ))) (compound_statement "{\n  tmp_reentrant_t *mark;\n  ulong uVar1;\n  long lVar2;\n  mp_size_t mVar3;\n  mp_ptr sp;\n  tmp_reentrant_t **pptVar4;\n  ulong uVar5;\n  size_t size;\n  uint uVar6;\n  long in_FS_OFFSET;\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t local_30 [2];\n  \n  uVar6 = 0;\n  local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28);\n  pptVar4 = &__tmp_marker;\n  if ((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {\n    uVar1 = __gmpn_mod_34lsub1();\n    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);\n    uVar1 = 0x8850a206953820e1;\n    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }\n    pptVar4 = &__tmp_marker;\n    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return uVar6;\n}" { (declaration "tmp_reentrant_t *mark;" type_identifier (pointer_declarator "*mark" * identifier) ;) (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "mp_size_t mVar3;" type_identifier identifier ;) (declaration "mp_ptr sp;" type_identifier identifier ;) (declaration "tmp_reentrant_t **pptVar4;" type_identifier (pointer_declarator "**pptVar4" * (pointer_declarator "*pptVar4" * identifier)) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "size_t size;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mp_limb_t local_30 [2];" type_identifier (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30[0] = *(mp_limb_t *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) = (pointer_expression "*(mp_limb_t *)(in_FS_OFFSET + 0x28)" * (cast_expression "(mp_limb_t *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pptVar4 = &__tmp_marker;" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) (if_statement "if ((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {\n    uVar1 = __gmpn_mod_34lsub1();\n    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);\n    uVar1 = 0x8850a206953820e1;\n    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }\n    pptVar4 = &__tmp_marker;\n    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0)" ( (binary_expression "(sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0" (parenthesized_expression "(sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1)" ( (binary_expression "sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f) & 1" (binary_expression "sq_res_0x100[(uint)(*up >> 6) & 3] >> (*up & 0x3f)" (subscript_expression "sq_res_0x100[(uint)(*up >> 6) & 3]" identifier [ (binary_expression "(uint)(*up >> 6) & 3" (call_expression "(uint)(*up >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*up >> 6)" ( (binary_expression "*up >> 6" (pointer_expression "*up" * identifier) >> number_literal) ))) & number_literal) ]) >> (parenthesized_expression "(*up & 0x3f)" ( (binary_expression "*up & 0x3f" (pointer_expression "*up" * identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar1 = __gmpn_mod_34lsub1();\n    lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);\n    uVar1 = 0x8850a206953820e1;\n    uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }\n    pptVar4 = &__tmp_marker;\n    if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar1 = __gmpn_mod_34lsub1();" (assignment_expression "uVar1 = __gmpn_mod_34lsub1()" identifier = (call_expression "__gmpn_mod_34lsub1()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff);" (assignment_expression "lVar2 = (uVar1 >> 0x30) + (uVar1 & 0xffffffffffff)" identifier = (binary_expression "(uVar1 >> 0x30) + (uVar1 & 0xffffffffffff)" (parenthesized_expression "(uVar1 >> 0x30)" ( (binary_expression "uVar1 >> 0x30" identifier >> number_literal) )) + (parenthesized_expression "(uVar1 & 0xffffffffffff)" ( (binary_expression "uVar1 & 0xffffffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar1 = 0x8850a206953820e1;" (assignment_expression "uVar1 = 0x8850a206953820e1" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;" (assignment_expression "uVar5 = (lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" identifier = (binary_expression "(lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" (binary_expression "(lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b" (parenthesized_expression "(lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU)" ( (binary_expression "lVar2 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU" (binary_expression "lVar2 * 0xfd2fd2fd2fd3" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n      uVar1 = 0x2191240;\n    }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n      uVar1 = 0x2191240;\n    }" { (expression_statement "uVar1 = 0x2191240;" (assignment_expression "uVar1 = 0x2191240" identifier = number_literal) ;) })) (expression_statement "pptVar4 = &__tmp_marker;" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) (if_statement "if ((uVar1 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }" if (parenthesized_expression "((uVar1 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar1 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar1 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar1 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar1 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar1 = 0x10b48c4b4206a105;\n      uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }\n      pptVar4 = &__tmp_marker;\n      if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }\n    }" { (expression_statement "uVar1 = 0x10b48c4b4206a105;" (assignment_expression "uVar1 = 0x10b48c4b4206a105" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;" (assignment_expression "uVar5 = (lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" identifier = (binary_expression "(lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" (binary_expression "(lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55" (parenthesized_expression "(lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU)" ( (binary_expression "lVar2 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU" (binary_expression "lVar2 * 0xfcfcfcfcfcfd" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n        uVar1 = 0x82158;\n      }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n        uVar1 = 0x82158;\n      }" { (expression_statement "uVar1 = 0x82158;" (assignment_expression "uVar1 = 0x82158" identifier = number_literal) ;) })) (expression_statement "pptVar4 = &__tmp_marker;" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) (if_statement "if (((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }" if (parenthesized_expression "(((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0))" ( (binary_expression "((uVar1 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" (parenthesized_expression "((uVar1 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar1 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar1 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar1 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar1 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" ( (comma_expression "pptVar4 = &__tmp_marker, uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) , (comma_expression "uVar6 = 0,\n         (0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "uVar6 = 0" identifier = number_literal) , (binary_expression "(0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (parenthesized_expression "(0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1)" ( (binary_expression "0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1" (binary_expression "0x93UL >> ((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" number_literal >> (parenthesized_expression "((lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" ( (binary_expression "(lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31" (binary_expression "(lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9" (parenthesized_expression "(lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU)" ( (binary_expression "lVar2 * 0xe38e38e38e39 & 0x1ffffffffffffU" (binary_expression "lVar2 * 0xe38e38e38e39" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal) ))) & number_literal) )) != number_literal))) ))) )) (compound_statement "{\n        uVar5 = 0x6067981b8b451b5f;\n        uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }\n        pptVar4 = &__tmp_marker;\n        if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }\n      }" { (expression_statement "uVar5 = 0x6067981b8b451b5f;" (assignment_expression "uVar5 = 0x6067981b8b451b5f" identifier = number_literal) ;) (expression_statement "uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;" (assignment_expression "uVar1 = (lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" identifier = (binary_expression "(lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" (binary_expression "(lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61" (parenthesized_expression "(lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU)" ( (binary_expression "lVar2 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU" (binary_expression "lVar2 * 0xfd5c5f02a3a1" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar1) {\n          uVar5 = 0x1eb628b47;\n        }" if (parenthesized_expression "(0x3f < uVar1)" ( (binary_expression "0x3f < uVar1" number_literal < identifier) )) (compound_statement "{\n          uVar5 = 0x1eb628b47;\n        }" { (expression_statement "uVar5 = 0x1eb628b47;" (assignment_expression "uVar5 = 0x1eb628b47" identifier = number_literal) ;) })) (expression_statement "pptVar4 = &__tmp_marker;" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) (if_statement "if ((uVar5 >> (uVar1 & 0x3f) & 1) != 0) {\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }" if (parenthesized_expression "((uVar5 >> (uVar1 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar5 >> (uVar1 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar5 >> (uVar1 & 0x3f) & 1)" ( (binary_expression "uVar5 >> (uVar1 & 0x3f) & 1" (binary_expression "uVar5 >> (uVar1 & 0x3f)" identifier >> (parenthesized_expression "(uVar1 & 0x3f)" ( (binary_expression "uVar1 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __tmp_marker = (tmp_reentrant_t *)0x0;\n          size = ((usize + 1) / 2) * 8;\n          if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }\n          *(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;\n          mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);\n          mark = __tmp_marker;\n          uVar6 = (uint)(mVar3 == 0);\n          if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }\n        }" { (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "size = ((usize + 1) / 2) * 8;" (assignment_expression "size = ((usize + 1) / 2) * 8" identifier = (binary_expression "((usize + 1) / 2) * 8" (parenthesized_expression "((usize + 1) / 2)" ( (binary_expression "(usize + 1) / 2" (parenthesized_expression "(usize + 1)" ( (binary_expression "usize + 1" identifier + number_literal) )) / number_literal) )) * number_literal)) ;) (if_statement "if (size < 0x7f01) {\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }\n          else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }" if (parenthesized_expression "(size < 0x7f01)" ( (binary_expression "size < 0x7f01" identifier < number_literal) )) (compound_statement "{\n            lVar2 = -(size + 0x17 & 0xfffffffffffffff0);\n            sp = (mp_ptr)((long)local_30 + lVar2);\n            pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);\n          }" { (expression_statement "lVar2 = -(size + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar2 = -(size + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(size + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(size + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "size + 0x17 & 0xfffffffffffffff0" (binary_expression "size + 0x17" identifier + number_literal) & number_literal) )))) ;) (expression_statement "sp = (mp_ptr)((long)local_30 + lVar2);" (assignment_expression "sp = (mp_ptr)((long)local_30 + lVar2)" identifier = (call_expression "(mp_ptr)((long)local_30 + lVar2)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((long)local_30 + lVar2)" ( (binary_expression "(long)local_30 + lVar2" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8);" (assignment_expression "pptVar4 = (tmp_reentrant_t **)((long)local_30 + lVar2 + -8)" identifier = (cast_expression "(tmp_reentrant_t **)((long)local_30 + lVar2 + -8)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)local_30 + lVar2 + -8)" ( (binary_expression "(long)local_30 + lVar2 + -8" (binary_expression "(long)local_30 + lVar2" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }" else (compound_statement "{\n            sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);\n            pptVar4 = &__tmp_marker;\n          }" { (expression_statement "sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size);" (assignment_expression "sp = (mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size)" identifier = (cast_expression "(mp_ptr)__gmp_tmp_reentrant_alloc(&__tmp_marker,size)" ( (type_descriptor "mp_ptr" type_identifier) ) (call_expression "__gmp_tmp_reentrant_alloc(&__tmp_marker,size)" identifier (argument_list "(&__tmp_marker,size)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier ))))) ;) (expression_statement "pptVar4 = &__tmp_marker;" (assignment_expression "pptVar4 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) }))) (expression_statement "*(undefined8 *)((long)pptVar4 + -8) = 0x139f2b;" (assignment_expression "*(undefined8 *)((long)pptVar4 + -8) = 0x139f2b" (pointer_expression "*(undefined8 *)((long)pptVar4 + -8)" * (cast_expression "(undefined8 *)((long)pptVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pptVar4 + -8)" ( (binary_expression "(long)pptVar4 + -8" (cast_expression "(long)pptVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize);" (assignment_expression "mVar3 = __gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize)" identifier = (call_expression "__gmpn_sqrtrem(sp,(mp_ptr)0x0,up,usize)" identifier (argument_list "(sp,(mp_ptr)0x0,up,usize)" ( identifier , (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal) , identifier , identifier )))) ;) (expression_statement "mark = __tmp_marker;" (assignment_expression "mark = __tmp_marker" identifier = identifier) ;) (expression_statement "uVar6 = (uint)(mVar3 == 0);" (assignment_expression "uVar6 = (uint)(mVar3 == 0)" identifier = (call_expression "(uint)(mVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(mVar3 == 0)" ( (binary_expression "mVar3 == 0" identifier == number_literal) )))) ;) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(undefined8 *)((long)pptVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free(mark);\n          }" { (expression_statement "*(undefined8 *)((long)pptVar4 + -8) = 0x139f65;" (assignment_expression "*(undefined8 *)((long)pptVar4 + -8) = 0x139f65" (pointer_expression "*(undefined8 *)((long)pptVar4 + -8)" * (cast_expression "(undefined8 *)((long)pptVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pptVar4 + -8)" ( (binary_expression "(long)pptVar4 + -8" (cast_expression "(long)pptVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free(mark);" (call_expression "__gmp_tmp_reentrant_free(mark)" identifier (argument_list "(mark)" ( identifier ))) ;) })) })) })) })) })) (if_statement "if (local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30[0] != *(mp_limb_t *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (pointer_expression "*(mp_limb_t *)(in_FS_OFFSET + 0x28)" * (cast_expression "(mp_limb_t *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "mp_limb_t *" type_identifier (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    *(undefined8 *)((long)pptVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" { comment (expression_statement "*(undefined8 *)((long)pptVar4 + -8) = 0x139f83;" (assignment_expression "*(undefined8 *)((long)pptVar4 + -8) = 0x139f83" (pointer_expression "*(undefined8 *)((long)pptVar4 + -8)" * (cast_expression "(undefined8 *)((long)pptVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pptVar4 + -8)" ( (binary_expression "(long)pptVar4 + -8" (cast_expression "(long)pptVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "bool __gmpn_perfect_square_p(ulong *param_1,long param_2)\n\n{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}\n\n" (function_definition "bool __gmpn_perfect_square_p(ulong *param_1,long param_2)\n\n{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" primitive_type (function_declarator "__gmpn_perfect_square_p(ulong *param_1,long param_2)" identifier (parameter_list "(ulong *param_1,long param_2)" ( (parameter_declaration "ulong *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "long local_38;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_30 [2];" (sized_type_specifier "long" long) (array_declarator "local_30 [2]" identifier [ number_literal ]) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "local_30[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) = (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) ))))) ;) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0)" ( (binary_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0" (parenthesized_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1" (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f)" (pointer_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" * (cast_expression "(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" ( (binary_expression "&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8" (pointer_expression "&DAT_0016d2a0" & identifier) + (binary_expression "(ulong)((uint)(*param_1 >> 6) & 3) * 8" (call_expression "(ulong)((uint)(*param_1 >> 6) & 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)(*param_1 >> 6) & 3)" ( (binary_expression "(uint)(*param_1 >> 6) & 3" (call_expression "(uint)(*param_1 >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*param_1 >> 6)" ( (binary_expression "*param_1 >> 6" (pointer_expression "*param_1" * identifier) >> number_literal) ))) & number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*param_1 & 0x3f)" ( (binary_expression "*param_1 & 0x3f" (pointer_expression "*param_1" * identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar2 = __gmpn_mod_34lsub1();" (assignment_expression "uVar2 = __gmpn_mod_34lsub1()" identifier = (call_expression "__gmpn_mod_34lsub1()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);" (assignment_expression "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" identifier = (binary_expression "(uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" (parenthesized_expression "(uVar2 >> 0x30)" ( (binary_expression "uVar2 >> 0x30" identifier >> number_literal) )) + (parenthesized_expression "(uVar2 & 0xffffffffffff)" ( (binary_expression "uVar2 & 0xffffffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar2 = 0x8850a206953820e1;" (assignment_expression "uVar2 = 0x8850a206953820e1" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" identifier = (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b" (parenthesized_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd2fd2fd2fd3" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n      uVar2 = 0x2191240;\n    }" { (expression_statement "uVar2 = 0x2191240;" (assignment_expression "uVar2 = 0x2191240" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" if (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" { (expression_statement "uVar2 = 0x10b48c4b4206a105;" (assignment_expression "uVar2 = 0x10b48c4b4206a105" identifier = number_literal) ;) (expression_statement "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" identifier = (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55" (parenthesized_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfcfcfcfcfcfd" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }" if (parenthesized_expression "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )) (compound_statement "{\n        uVar2 = 0x82158;\n      }" { (expression_statement "uVar2 = 0x82158;" (assignment_expression "uVar2 = 0x82158" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" if (parenthesized_expression "(((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0))" ( (binary_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" ( (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" identifier >> (parenthesized_expression "(uVar5 & 0x3f)" ( (binary_expression "uVar5 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" ( (comma_expression "plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) , (comma_expression "bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "bVar6 = false" identifier = false) , (binary_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (parenthesized_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1)" ( (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1" (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" number_literal >> (parenthesized_expression "((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" ( (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31" (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9" (parenthesized_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xe38e38e38e39" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal) ))) & number_literal) )) != number_literal))) ))) )) (compound_statement "{\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" { (expression_statement "uVar5 = 0x6067981b8b451b5f;" (assignment_expression "uVar5 = 0x6067981b8b451b5f" identifier = number_literal) ;) (expression_statement "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;" (assignment_expression "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" identifier = (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61" (parenthesized_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU)" ( (binary_expression "lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd5c5f02a3a1" identifier * number_literal) & number_literal) )) * number_literal) >> number_literal)) ;) (if_statement "if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }" if (parenthesized_expression "(0x3f < uVar2)" ( (binary_expression "0x3f < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar5 = 0x1eb628b47;\n        }" { (expression_statement "uVar5 = 0x1eb628b47;" (assignment_expression "uVar5 = 0x1eb628b47" identifier = number_literal) ;) })) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) (if_statement "if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" if (parenthesized_expression "((uVar5 >> (uVar2 & 0x3f) & 1) != 0)" ( (binary_expression "(uVar5 >> (uVar2 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar5 >> (uVar2 & 0x3f) & 1)" ( (binary_expression "uVar5 >> (uVar2 & 0x3f) & 1" (binary_expression "uVar5 >> (uVar2 & 0x3f)" identifier >> (parenthesized_expression "(uVar2 & 0x3f)" ( (binary_expression "uVar2 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = ((param_2 + 1) / 2) * 8;" (assignment_expression "uVar2 = ((param_2 + 1) / 2) * 8" identifier = (binary_expression "((param_2 + 1) / 2) * 8" (parenthesized_expression "((param_2 + 1) / 2)" ( (binary_expression "(param_2 + 1) / 2" (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )) / number_literal) )) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }" { (expression_statement "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(uVar2 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(uVar2 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "uVar2 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar2 + 0x17" identifier + number_literal) & number_literal) )))) ;) (expression_statement "lVar3 = (long)local_30 + lVar1;" (assignment_expression "lVar3 = (long)local_30 + lVar1" identifier = (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "plVar4 = (long *)((long)local_30 + lVar1 + -8);" (assignment_expression "plVar4 = (long *)((long)local_30 + lVar1 + -8)" identifier = (cast_expression "(long *)((long)local_30 + lVar1 + -8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_30 + lVar1 + -8)" ( (binary_expression "(long)local_30 + lVar1 + -8" (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" else (compound_statement "{\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" { (expression_statement "lVar3 = __gmp_tmp_reentrant_alloc(&local_38);" (assignment_expression "lVar3 = __gmp_tmp_reentrant_alloc(&local_38)" identifier = (call_expression "__gmp_tmp_reentrant_alloc(&local_38)" identifier (argument_list "(&local_38)" ( (pointer_expression "&local_38" & identifier) )))) ;) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) }))) (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);" (assignment_expression "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2)" identifier = (call_expression "__gmpn_sqrtrem(lVar3,0,param_1,param_2)" identifier (argument_list "(lVar3,0,param_1,param_2)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "bVar6 = lVar3 == 0;" (assignment_expression "bVar6 = lVar3 == 0" identifier = (binary_expression "lVar3 == 0" identifier == number_literal)) ;) (if_statement "if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" if (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) (compound_statement "{\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" { (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f65;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f65" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" identifier (argument_list "()" ( ))) ;) })) })) })) })) })) (if_statement "if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30[0] != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (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    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" { (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f83;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f83" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" * (cast_expression "(undefined8 *)((long)plVar4 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + -8)" ( (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return bVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) & LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )) * LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )) * LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression & IDENT)) , (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )) * LIT) >> LIT) ))) & LIT) )) != LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )) * LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "bool __gmpn_perfect_square_p(ulong *param_1,long param_2)\n\n{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" (primitive_type "bool") (function_declarator "__gmpn_perfect_square_p(ulong *param_1,long param_2)" (identifier "__gmpn_perfect_square_p") (parameter_list "(ulong *param_1,long param_2)" (( "(") (parameter_declaration "ulong *param_1" (type_identifier "ulong") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  ulong uVar5;\n  long in_FS_OFFSET;\n  bool bVar6;\n  long local_38;\n  long local_30 [2];\n  \n  bVar6 = false;\n  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);\n  plVar4 = &local_38;\n  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }\n  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }\n  return bVar6;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "long local_38;" (sized_type_specifier "long" (long "long")) (identifier "local_38") (; ";")) (declaration "long local_30 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (expression_statement "local_30[0] = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30[0] = *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (= "=") (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")) () ")"))))) (; ";")) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (if_statement "if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0) {\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0)" (( "(") (binary_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)\n      != 0" (parenthesized_expression "(*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)" (( "(") (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1" (binary_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f)" (pointer_expression "*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" (* "*") (cast_expression "(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8)" (( "(") (binary_expression "&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8" (pointer_expression "&DAT_0016d2a0" (& "&") (identifier "DAT_0016d2a0")) (+ "+") (binary_expression "(ulong)((uint)(*param_1 >> 6) & 3) * 8" (call_expression "(ulong)((uint)(*param_1 >> 6) & 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)(*param_1 >> 6) & 3)" (( "(") (binary_expression "(uint)(*param_1 >> 6) & 3" (call_expression "(uint)(*param_1 >> 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*param_1 >> 6)" (( "(") (binary_expression "*param_1 >> 6" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (>> ">>") (number_literal "6")) () ")"))) (& "&") (number_literal "3")) () ")"))) (* "*") (number_literal "8"))) () ")")))) (>> ">>") (parenthesized_expression "(*param_1 & 0x3f)" (( "(") (binary_expression "*param_1 & 0x3f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = __gmpn_mod_34lsub1();\n    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);\n    uVar2 = 0x8850a206953820e1;\n    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;\n    if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }\n    plVar4 = &local_38;\n    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "uVar2 = __gmpn_mod_34lsub1();" (assignment_expression "uVar2 = __gmpn_mod_34lsub1()" (identifier "uVar2") (= "=") (call_expression "__gmpn_mod_34lsub1()" (identifier "__gmpn_mod_34lsub1") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);" (assignment_expression "lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" (identifier "lVar3") (= "=") (binary_expression "(uVar2 >> 0x30) + (uVar2 & 0xffffffffffff)" (parenthesized_expression "(uVar2 >> 0x30)" (( "(") (binary_expression "uVar2 >> 0x30" (identifier "uVar2") (>> ">>") (number_literal "0x30")) () ")")) (+ "+") (parenthesized_expression "(uVar2 & 0xffffffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffffffff")) () ")")))) (; ";")) (expression_statement "uVar2 = 0x8850a206953820e1;" (assignment_expression "uVar2 = 0x8850a206953820e1" (identifier "uVar2") (= "=") (number_literal "0x8850a206953820e1")) (; ";")) (expression_statement "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" (identifier "uVar5") (= "=") (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31" (binary_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b" (parenthesized_expression "(lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU)" (( "(") (binary_expression "lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd2fd2fd2fd3" (identifier "lVar3") (* "*") (number_literal "0xfd2fd2fd2fd3")) (& "&") (number_literal "0x1ffffffffffffU")) () ")")) (* "*") (number_literal "0x5b")) (>> ">>") (number_literal "0x31"))) (; ";")) (if_statement "if (0x3f < uVar5) {\n      uVar2 = 0x2191240;\n    }" (if "if") (parenthesized_expression "(0x3f < uVar5)" (( "(") (binary_expression "0x3f < uVar5" (number_literal "0x3f") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n      uVar2 = 0x2191240;\n    }" ({ "{") (expression_statement "uVar2 = 0x2191240;" (assignment_expression "uVar2 = 0x2191240" (identifier "uVar2") (= "=") (number_literal "0x2191240")) (; ";")) (} "}"))) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (if_statement "if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" (( "(") (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" (( "(") (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" (identifier "uVar2") (>> ">>") (parenthesized_expression "(uVar5 & 0x3f)" (( "(") (binary_expression "uVar5 & 0x3f" (identifier "uVar5") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = 0x10b48c4b4206a105;\n      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;\n      if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }\n      plVar4 = &local_38;\n      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "uVar2 = 0x10b48c4b4206a105;" (assignment_expression "uVar2 = 0x10b48c4b4206a105" (identifier "uVar2") (= "=") (number_literal "0x10b48c4b4206a105")) (; ";")) (expression_statement "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;" (assignment_expression "uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" (identifier "uVar5") (= "=") (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31" (binary_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55" (parenthesized_expression "(lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU)" (( "(") (binary_expression "lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfcfcfcfcfcfd" (identifier "lVar3") (* "*") (number_literal "0xfcfcfcfcfcfd")) (& "&") (number_literal "0x1ffffffffffffU")) () ")")) (* "*") (number_literal "0x55")) (>> ">>") (number_literal "0x31"))) (; ";")) (if_statement "if (0x3f < uVar5) {\n        uVar2 = 0x82158;\n      }" (if "if") (parenthesized_expression "(0x3f < uVar5)" (( "(") (binary_expression "0x3f < uVar5" (number_literal "0x3f") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        uVar2 = 0x82158;\n      }" ({ "{") (expression_statement "uVar2 = 0x82158;" (assignment_expression "uVar2 = 0x82158" (identifier "uVar2") (= "=") (number_literal "0x82158")) (; ";")) (} "}"))) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (if_statement "if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" (if "if") (parenthesized_expression "(((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0))" (( "(") (binary_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&\n         (plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" (parenthesized_expression "((uVar2 >> (uVar5 & 0x3f) & 1) != 0)" (( "(") (binary_expression "(uVar2 >> (uVar5 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar2 >> (uVar5 & 0x3f) & 1)" (( "(") (binary_expression "uVar2 >> (uVar5 & 0x3f) & 1" (binary_expression "uVar2 >> (uVar5 & 0x3f)" (identifier "uVar2") (>> ">>") (parenthesized_expression "(uVar5 & 0x3f)" (( "(") (binary_expression "uVar5 & 0x3f" (identifier "uVar5") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)" (( "(") (comma_expression "plVar4 = &local_38, bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (, ",") (comma_expression "bVar6 = false,\n         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (, ",") (binary_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0" (parenthesized_expression "(0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1)" (( "(") (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1" (binary_expression "0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" (number_literal "0x93UL") (>> ">>") (parenthesized_expression "((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31)" (( "(") (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31" (binary_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9" (parenthesized_expression "(lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU)" (( "(") (binary_expression "lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xe38e38e38e39" (identifier "lVar3") (* "*") (number_literal "0xe38e38e38e39")) (& "&") (number_literal "0x1ffffffffffffU")) () ")")) (* "*") (number_literal "9")) (>> ">>") (number_literal "0x31")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n        uVar5 = 0x6067981b8b451b5f;\n        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;\n        if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }\n        plVar4 = &local_38;\n        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }\n      }" ({ "{") (expression_statement "uVar5 = 0x6067981b8b451b5f;" (assignment_expression "uVar5 = 0x6067981b8b451b5f" (identifier "uVar5") (= "=") (number_literal "0x6067981b8b451b5f")) (; ";")) (expression_statement "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;" (assignment_expression "uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" (identifier "uVar2") (= "=") (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31" (binary_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61" (parenthesized_expression "(lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU)" (( "(") (binary_expression "lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU" (binary_expression "lVar3 * 0xfd5c5f02a3a1" (identifier "lVar3") (* "*") (number_literal "0xfd5c5f02a3a1")) (& "&") (number_literal "0x1ffffffffffffU")) () ")")) (* "*") (number_literal "0x61")) (>> ">>") (number_literal "0x31"))) (; ";")) (if_statement "if (0x3f < uVar2) {\n          uVar5 = 0x1eb628b47;\n        }" (if "if") (parenthesized_expression "(0x3f < uVar2)" (( "(") (binary_expression "0x3f < uVar2" (number_literal "0x3f") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n          uVar5 = 0x1eb628b47;\n        }" ({ "{") (expression_statement "uVar5 = 0x1eb628b47;" (assignment_expression "uVar5 = 0x1eb628b47" (identifier "uVar5") (= "=") (number_literal "0x1eb628b47")) (; ";")) (} "}"))) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (if_statement "if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" (if "if") (parenthesized_expression "((uVar5 >> (uVar2 & 0x3f) & 1) != 0)" (( "(") (binary_expression "(uVar5 >> (uVar2 & 0x3f) & 1) != 0" (parenthesized_expression "(uVar5 >> (uVar2 & 0x3f) & 1)" (( "(") (binary_expression "uVar5 >> (uVar2 & 0x3f) & 1" (binary_expression "uVar5 >> (uVar2 & 0x3f)" (identifier "uVar5") (>> ">>") (parenthesized_expression "(uVar2 & 0x3f)" (( "(") (binary_expression "uVar2 & 0x3f" (identifier "uVar2") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_38 = 0;\n          uVar2 = ((param_2 + 1) / 2) * 8;\n          if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }\n          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;\n          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);\n          bVar6 = lVar3 == 0;\n          if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }\n        }" ({ "{") (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = ((param_2 + 1) / 2) * 8;" (assignment_expression "uVar2 = ((param_2 + 1) / 2) * 8" (identifier "uVar2") (= "=") (binary_expression "((param_2 + 1) / 2) * 8" (parenthesized_expression "((param_2 + 1) / 2)" (( "(") (binary_expression "(param_2 + 1) / 2" (parenthesized_expression "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2")) () ")")) (* "*") (number_literal "8"))) (; ";")) (if_statement "if (uVar2 < 0x7f01) {\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }\n          else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" (if "if") (parenthesized_expression "(uVar2 < 0x7f01)" (( "(") (binary_expression "uVar2 < 0x7f01" (identifier "uVar2") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);\n            lVar3 = (long)local_30 + lVar1;\n            plVar4 = (long *)((long)local_30 + lVar1 + -8);\n          }" ({ "{") (expression_statement "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0)" (identifier "lVar1") (= "=") (unary_expression "-(uVar2 + 0x17 & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(uVar2 + 0x17 & 0xfffffffffffffff0)" (( "(") (binary_expression "uVar2 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar2 + 0x17" (identifier "uVar2") (+ "+") (number_literal "0x17")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "lVar3 = (long)local_30 + lVar1;" (assignment_expression "lVar3 = (long)local_30 + lVar1" (identifier "lVar3") (= "=") (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_30")) (+ "+") (identifier "lVar1"))) (; ";")) (expression_statement "plVar4 = (long *)((long)local_30 + lVar1 + -8);" (assignment_expression "plVar4 = (long *)((long)local_30 + lVar1 + -8)" (identifier "plVar4") (= "=") (cast_expression "(long *)((long)local_30 + lVar1 + -8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_30 + lVar1 + -8)" (( "(") (binary_expression "(long)local_30 + lVar1 + -8" (binary_expression "(long)local_30 + lVar1" (cast_expression "(long)local_30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_30")) (+ "+") (identifier "lVar1")) (+ "+") (number_literal "-8")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" (else "else") (compound_statement "{\n            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);\n            plVar4 = &local_38;\n          }" ({ "{") (expression_statement "lVar3 = __gmp_tmp_reentrant_alloc(&local_38);" (assignment_expression "lVar3 = __gmp_tmp_reentrant_alloc(&local_38)" (identifier "lVar3") (= "=") (call_expression "__gmp_tmp_reentrant_alloc(&local_38)" (identifier "__gmp_tmp_reentrant_alloc") (argument_list "(&local_38)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) () ")")))) (; ";")) (expression_statement "plVar4 = &local_38;" (assignment_expression "plVar4 = &local_38" (identifier "plVar4") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f2b" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" (* "*") (cast_expression "(undefined8 *)((long)plVar4 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + -8)" (( "(") (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x139f2b")) (; ";")) (expression_statement "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);" (assignment_expression "lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2)" (identifier "lVar3") (= "=") (call_expression "__gmpn_sqrtrem(lVar3,0,param_1,param_2)" (identifier "__gmpn_sqrtrem") (argument_list "(lVar3,0,param_1,param_2)" (( "(") (identifier "lVar3") (, ",") (number_literal "0") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "bVar6 = lVar3 == 0;" (assignment_expression "bVar6 = lVar3 == 0" (identifier "bVar6") (= "=") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (local_38 != 0) {\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" (if "if") (parenthesized_expression "(local_38 != 0)" (( "(") (binary_expression "local_38 != 0" (identifier "local_38") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;\n            __gmp_tmp_reentrant_free();\n          }" ({ "{") (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f65;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f65" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" (* "*") (cast_expression "(undefined8 *)((long)plVar4 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + -8)" (( "(") (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x139f65")) (; ";")) (expression_statement "__gmp_tmp_reentrant_free();" (call_expression "__gmp_tmp_reentrant_free()" (identifier "__gmp_tmp_reentrant_free") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_30[0] != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30[0] != *(long *)(in_FS_OFFSET + 0x28)" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (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    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;\n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "*(undefined8 *)((long)plVar4 + -8) = 0x139f83;" (assignment_expression "*(undefined8 *)((long)plVar4 + -8) = 0x139f83" (pointer_expression "*(undefined8 *)((long)plVar4 + -8)" (* "*") (cast_expression "(undefined8 *)((long)plVar4 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + -8)" (( "(") (binary_expression "(long)plVar4 + -8" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x139f83")) (; ";")) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return bVar6;" (return "return") (identifier "bVar6") (; ";")) (} "}")))

int function_1(type_1 up,type_2 var_6)

{
  type_3 *mark;
  type_4 var_3;
  long var_4;
  type_2 var_10;
  type_5 sp;
  type_3 **pptVar4;
  type_4 var_5;
  size_t var_7;
  type_6 uVar6;
  long var_1;
  type_3 *var_11;
  type_7 local_30 [2];
  
  uVar6 = 0;
  local_30[0] = *(type_7 *)(var_1 + 0x28);
  pptVar4 = &var_11;
  if ((sq_res_0x100[(type_6)(*up >> 6) & 3] >> (*up & 0x3f) & 1) != 0) {
    var_3 = var_2();
    var_4 = (var_3 >> 0x30) + (var_3 & 0xffffffffffff);
    var_3 = 0x8850a206953820e1;
    var_5 = (var_4 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;
    if (0x3f < var_5) {
      var_3 = 0x2191240;
    }
    pptVar4 = &var_11;
    if ((var_3 >> (var_5 & 0x3f) & 1) != 0) {
      var_3 = 0x10b48c4b4206a105;
      var_5 = (var_4 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;
      if (0x3f < var_5) {
        var_3 = 0x82158;
      }
      pptVar4 = &var_11;
      if (((var_3 >> (var_5 & 0x3f) & 1) != 0) &&
         (pptVar4 = &var_11, uVar6 = 0,
         (0x93UL >> ((var_4 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {
        var_5 = 0x6067981b8b451b5f;
        var_3 = (var_4 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;
        if (0x3f < var_3) {
          var_5 = 0x1eb628b47;
        }
        pptVar4 = &var_11;
        if ((var_5 >> (var_3 & 0x3f) & 1) != 0) {
          var_11 = (type_3 *)0x0;
          var_7 = ((var_6 + 1) / 2) * 8;
          if (var_7 < 0x7f01) {
            var_4 = -(var_7 + 0x17 & 0xfffffffffffffff0);
            sp = (type_5)((long)local_30 + var_4);
            pptVar4 = (type_3 **)((long)local_30 + var_4 + -8);
          }
          else {
            sp = (type_5)var_8(&var_11,var_7);
            pptVar4 = &var_11;
          }
          *(type_8 *)((long)pptVar4 + -8) = 0x139f2b;
          var_10 = var_9(sp,(type_5)0x0,up,var_6);
          mark = var_11;
          uVar6 = (type_6)(var_10 == 0);
          if (var_11 != (type_3 *)0x0) {
            *(type_8 *)((long)pptVar4 + -8) = 0x139f65;
            var_12(mark);
          }
        }
      }
    }
  }
  if (local_30[0] != *(type_7 *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    *(type_8 *)((long)pptVar4 + -8) = 0x139f83;
    var_13();
  }
  return uVar6;
}


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

bool MASKED(ulong *param_1,long param_2)

{
  long lVar1;
  ulong uVar2;
  long lVar3;
  long *plVar4;
  ulong uVar5;
  long in_FS_OFFSET;
  bool bVar6;
  long local_38;
  long local_30 [2];
  
  bVar6 = false;
  local_30[0] = *(long *)(in_FS_OFFSET + 0x28);
  plVar4 = &local_38;
  if ((*(ulong *)(&DAT_0016d2a0 + (ulong)((uint)(*param_1 >> 6) & 3) * 8) >> (*param_1 & 0x3f) & 1)
      != 0) {
    uVar2 = __gmpn_mod_34lsub1();
    lVar3 = (uVar2 >> 0x30) + (uVar2 & 0xffffffffffff);
    uVar2 = 0x8850a206953820e1;
    uVar5 = (lVar3 * 0xfd2fd2fd2fd3 & 0x1ffffffffffffU) * 0x5b >> 0x31;
    if (0x3f < uVar5) {
      uVar2 = 0x2191240;
    }
    plVar4 = &local_38;
    if ((uVar2 >> (uVar5 & 0x3f) & 1) != 0) {
      uVar2 = 0x10b48c4b4206a105;
      uVar5 = (lVar3 * 0xfcfcfcfcfcfd & 0x1ffffffffffffU) * 0x55 >> 0x31;
      if (0x3f < uVar5) {
        uVar2 = 0x82158;
      }
      plVar4 = &local_38;
      if (((uVar2 >> (uVar5 & 0x3f) & 1) != 0) &&
         (plVar4 = &local_38, bVar6 = false,
         (0x93UL >> ((lVar3 * 0xe38e38e38e39 & 0x1ffffffffffffU) * 9 >> 0x31) & 1) != 0)) {
        uVar5 = 0x6067981b8b451b5f;
        uVar2 = (lVar3 * 0xfd5c5f02a3a1 & 0x1ffffffffffffU) * 0x61 >> 0x31;
        if (0x3f < uVar2) {
          uVar5 = 0x1eb628b47;
        }
        plVar4 = &local_38;
        if ((uVar5 >> (uVar2 & 0x3f) & 1) != 0) {
          local_38 = 0;
          uVar2 = ((param_2 + 1) / 2) * 8;
          if (uVar2 < 0x7f01) {
            lVar1 = -(uVar2 + 0x17 & 0xfffffffffffffff0);
            lVar3 = (long)local_30 + lVar1;
            plVar4 = (long *)((long)local_30 + lVar1 + -8);
          }
          else {
            lVar3 = __gmp_tmp_reentrant_alloc(&local_38);
            plVar4 = &local_38;
          }
          *(undefined8 *)((long)plVar4 + -8) = 0x139f2b;
          lVar3 = __gmpn_sqrtrem(lVar3,0,param_1,param_2);
          bVar6 = lVar3 == 0;
          if (local_38 != 0) {
            *(undefined8 *)((long)plVar4 + -8) = 0x139f65;
            __gmp_tmp_reentrant_free();
          }
        }
      }
    }
  }
  if (local_30[0] != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    *(undefined8 *)((long)plVar4 + -8) = 0x139f83;
    __stack_chk_fail();
  }
  return bVar6;
}

