
mp_limb_t __gmpn_mod_34lsub1(mp_srcptr p,mp_size_t n)

{
  uint uVar1;
  uint uVar2;
  mp_srcptr pmVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  
  iVar4 = n + -3;
  uVar1 = 0;
  if (iVar4 < 0) {
    uVar2 = 0;
    uVar5 = 0;
    uVar11 = 0;
    uVar10 = 0;
  }
  else {
    uVar9 = 0;
    uVar11 = 0;
    uVar10 = 0;
    pmVar3 = p;
    uVar6 = 0;
    uVar7 = 0;
    do {
      p = pmVar3 + 3;
      iVar4 = iVar4 + -3;
      uVar5 = uVar6 + *pmVar3;
      uVar2 = uVar7 + pmVar3[1];
      uVar10 = uVar10 + (uVar5 < uVar6);
      uVar8 = uVar1 + pmVar3[2];
      uVar11 = uVar11 + (uVar2 < uVar7);
      uVar9 = uVar9 + (uVar8 < uVar1);
      uVar1 = uVar8;
      pmVar3 = p;
      uVar6 = uVar5;
      uVar7 = uVar2;
    } while (-1 < iVar4);
    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);
  }
  if (iVar4 != -3) {
    uVar6 = uVar5 + *p;
    uVar10 = uVar10 + (uVar6 < uVar5);
    uVar5 = uVar6;
    if (iVar4 != -2) {
      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);
      uVar2 = uVar2 + p[1];
    }
  }
  return (uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +
         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +
         (uVar11 & 0xff) * 0x10000;
}



int __gmpn_mod_34lsub1(int *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  param_2 = param_2 + -3;
  uVar1 = 0;
  if (param_2 < 0) {
    uVar2 = 0;
    uVar4 = 0;
    uVar10 = 0;
    uVar9 = 0;
  }
  else {
    uVar8 = 0;
    uVar10 = 0;
    uVar9 = 0;
    piVar3 = param_1;
    uVar5 = 0;
    uVar6 = 0;
    do {
      param_1 = piVar3 + 3;
      param_2 = param_2 + -3;
      uVar4 = uVar5 + *piVar3;
      uVar2 = uVar6 + piVar3[1];
      uVar9 = uVar9 + (uVar4 < uVar5);
      uVar7 = uVar1 + piVar3[2];
      uVar10 = uVar10 + (uVar2 < uVar6);
      uVar8 = uVar8 + (uVar7 < uVar1);
      uVar1 = uVar7;
      piVar3 = param_1;
      uVar5 = uVar4;
      uVar6 = uVar2;
    } while (-1 < param_2);
    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);
  }
  if (param_2 != -3) {
    uVar5 = uVar4 + *param_1;
    uVar9 = uVar9 + (uVar5 < uVar4);
    uVar4 = uVar5;
    if (param_2 != -2) {
      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);
      uVar2 = uVar2 + param_1[1];
    }
  }
  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +
         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +
         (uVar10 & 0xff) * 0x10000;
}


addiu a1,a1,-0x3
bltz a1,0x0003d0f0
_or v0,zero,zero
or t0,zero,zero
or a3,zero,zero
or t2,zero,zero
or t4,zero,zero
or t3,zero,zero
lw a2,0x0(a0)
addiu a0,a0,0xc
lw v1,-0x8(a0)
addiu a1,a1,-0x3
addu a2,a3,a2
addu v1,t0,v1
lw t1,-0x4(a0)
sltu a3,a2,a3
sltu t0,v1,t0
addu t3,t3,a3
addu t1,v0,t1
addu t4,t4,t0
sltu v0,t1,v0
addu t2,t2,v0
or a3,a2,zero
or t0,v1,zero
bgez a1,0x0003cff0
_or v0,t1,zero
ext t0,t2,0x0,0x18
srl a3,t1,0x8
srl t2,t2,0x18
addu a3,a3,t0
sll v0,t1,0x10
addu t2,a3,t2
lui a3,0xff
and v0,v0,a3
addu v0,t2,v0
li a3,-0x3
beq a1,a3,0x0003d0e8
_li t0,-0x2
lw a3,0x0(a0)
addu a3,a2,a3
sltu a2,a3,a2
beq a1,t0,0x0003d090
_addu t3,t3,a2
lw a0,0x4(a0)
addu a0,v1,a0
sltu v1,a0,v1
addu t4,t4,v1
or v1,a0,zero
ext a1,a3,0x0,0x18
srl a3,a3,0x18
srl t0,v1,0x10
addu a1,a1,a3
srl a0,t3,0x10
addu a1,a1,v0
lui a2,0xff
addu a1,a1,t0
srl v0,t4,0x8
addu a1,a1,a0
sll v1,v1,0x8
ori a0,a2,0xff00
addu a1,a1,v0
and v1,v1,a0
sll v0,t3,0x8
addu v1,a1,v1
and v0,v0,a0
sll a0,t4,0x10
addu v0,v1,v0
and a0,a0,a2
jr ra
_addu v0,v0,a0
b 0x0003d090
_or a3,a2,zero
or v1,zero,zero
or a2,zero,zero
or t4,zero,zero
b 0x0003d05c
_or t3,zero,zero
(translation_unit "int __gmpn_mod_34lsub1(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}\n\n" (function_definition "int __gmpn_mod_34lsub1(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" primitive_type (function_declarator "__gmpn_mod_34lsub1(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" else (compound_statement "{\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);" do (compound_statement "{\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    }" { (expression_statement "param_1 = piVar3 + 3;" (assignment_expression "param_1 = piVar3 + 3" identifier = (binary_expression "piVar3 + 3" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar5 + *piVar3;" (assignment_expression "uVar4 = uVar5 + *piVar3" identifier = (binary_expression "uVar5 + *piVar3" identifier + (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "uVar2 = uVar6 + piVar3[1];" (assignment_expression "uVar2 = uVar6 + piVar3[1]" identifier = (binary_expression "uVar6 + piVar3[1]" identifier + (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = uVar9 + (uVar4 < uVar5);" (assignment_expression "uVar9 = uVar9 + (uVar4 < uVar5)" identifier = (binary_expression "uVar9 + (uVar4 < uVar5)" identifier + (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )))) ;) (expression_statement "uVar7 = uVar1 + piVar3[2];" (assignment_expression "uVar7 = uVar1 + piVar3[2]" identifier = (binary_expression "uVar1 + piVar3[2]" identifier + (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = uVar10 + (uVar2 < uVar6);" (assignment_expression "uVar10 = uVar10 + (uVar2 < uVar6)" identifier = (binary_expression "uVar10 + (uVar2 < uVar6)" identifier + (parenthesized_expression "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) )))) ;) (expression_statement "uVar8 = uVar8 + (uVar7 < uVar1);" (assignment_expression "uVar8 = uVar8 + (uVar7 < uVar1)" identifier = (binary_expression "uVar8 + (uVar7 < uVar1)" identifier + (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" identifier = identifier) ;) }) while (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) ;) (expression_statement "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);" (assignment_expression "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" identifier = (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff)" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + (parenthesized_expression "(uVar8 & 0xffffff)" ( (binary_expression "uVar8 & 0xffffff" identifier & number_literal) ))) + (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) + (parenthesized_expression "(uVar7 * 0x10000 & 0xff0000)" ( (binary_expression "uVar7 * 0x10000 & 0xff0000" (binary_expression "uVar7 * 0x10000" identifier * number_literal) & number_literal) )))) ;) }))) (if_statement "if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" if (parenthesized_expression "(param_2 != -3)" ( (binary_expression "param_2 != -3" identifier != number_literal) )) (compound_statement "{\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" { (expression_statement "uVar5 = uVar4 + *param_1;" (assignment_expression "uVar5 = uVar4 + *param_1" identifier = (binary_expression "uVar4 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar9 = uVar9 + (uVar5 < uVar4);" (assignment_expression "uVar9 = uVar9 + (uVar5 < uVar4)" identifier = (binary_expression "uVar9 + (uVar5 < uVar4)" identifier + (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )))) ;) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" if (parenthesized_expression "(param_2 != -2)" ( (binary_expression "param_2 != -2" identifier != number_literal) )) (compound_statement "{\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" { (expression_statement "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);" (assignment_expression "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2)" identifier = (binary_expression "uVar10 + (uVar2 + param_1[1] < uVar2)" identifier + (parenthesized_expression "(uVar2 + param_1[1] < uVar2)" ( (binary_expression "uVar2 + param_1[1] < uVar2" (binary_expression "uVar2 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ])) < identifier) )))) ;) (expression_statement "uVar2 = uVar2 + param_1[1];" (assignment_expression "uVar2 = uVar2 + param_1[1]" identifier = (binary_expression "uVar2 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) })) (return_statement "return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;" return (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18)" (parenthesized_expression "(uVar4 & 0xffffff)" ( (binary_expression "uVar4 & 0xffffff" identifier & number_literal) )) + (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) ))) + identifier) + (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar9 >> 0x10)" ( (binary_expression "uVar9 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) ))) + (binary_expression "(uVar2 & 0xffff) * 0x100" (parenthesized_expression "(uVar2 & 0xffff)" ( (binary_expression "uVar2 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar9 & 0xffff) * 0x100" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar10 & 0xff) * 0x10000" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) * number_literal)) ;) })))
(translation_unit "mp_limb_t __gmpn_mod_34lsub1(mp_srcptr p,mp_size_t n)\n\n{\n  uint uVar1;\n  uint uVar2;\n  mp_srcptr pmVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  iVar4 = n + -3;\n  uVar1 = 0;\n  if (iVar4 < 0) {\n    uVar2 = 0;\n    uVar5 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n  }\n  else {\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }\n  if (iVar4 != -3) {\n    uVar6 = uVar5 + *p;\n    uVar10 = uVar10 + (uVar6 < uVar5);\n    uVar5 = uVar6;\n    if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }\n  }\n  return (uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +\n         (uVar11 & 0xff) * 0x10000;\n}\n\n" (function_definition "mp_limb_t __gmpn_mod_34lsub1(mp_srcptr p,mp_size_t n)\n\n{\n  uint uVar1;\n  uint uVar2;\n  mp_srcptr pmVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  iVar4 = n + -3;\n  uVar1 = 0;\n  if (iVar4 < 0) {\n    uVar2 = 0;\n    uVar5 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n  }\n  else {\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }\n  if (iVar4 != -3) {\n    uVar6 = uVar5 + *p;\n    uVar10 = uVar10 + (uVar6 < uVar5);\n    uVar5 = uVar6;\n    if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }\n  }\n  return (uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +\n         (uVar11 & 0xff) * 0x10000;\n}" type_identifier (function_declarator "__gmpn_mod_34lsub1(mp_srcptr p,mp_size_t n)" identifier (parameter_list "(mp_srcptr p,mp_size_t n)" ( (parameter_declaration "mp_srcptr p" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  mp_srcptr pmVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  iVar4 = n + -3;\n  uVar1 = 0;\n  if (iVar4 < 0) {\n    uVar2 = 0;\n    uVar5 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n  }\n  else {\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }\n  if (iVar4 != -3) {\n    uVar6 = uVar5 + *p;\n    uVar10 = uVar10 + (uVar6 < uVar5);\n    uVar5 = uVar6;\n    if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }\n  }\n  return (uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +\n         (uVar11 & 0xff) * 0x10000;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "mp_srcptr pmVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "iVar4 = n + -3;" (assignment_expression "iVar4 = n + -3" identifier = (binary_expression "n + -3" identifier + number_literal)) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (iVar4 < 0) {\n    uVar2 = 0;\n    uVar5 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n  }\n  else {\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar2 = 0;\n    uVar5 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }" else (compound_statement "{\n    uVar9 = 0;\n    uVar11 = 0;\n    uVar10 = 0;\n    pmVar3 = p;\n    uVar6 = 0;\n    uVar7 = 0;\n    do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);\n    uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);\n  }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "pmVar3 = p;" (assignment_expression "pmVar3 = p" identifier = identifier) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    } while (-1 < iVar4);" do (compound_statement "{\n      p = pmVar3 + 3;\n      iVar4 = iVar4 + -3;\n      uVar5 = uVar6 + *pmVar3;\n      uVar2 = uVar7 + pmVar3[1];\n      uVar10 = uVar10 + (uVar5 < uVar6);\n      uVar8 = uVar1 + pmVar3[2];\n      uVar11 = uVar11 + (uVar2 < uVar7);\n      uVar9 = uVar9 + (uVar8 < uVar1);\n      uVar1 = uVar8;\n      pmVar3 = p;\n      uVar6 = uVar5;\n      uVar7 = uVar2;\n    }" { (expression_statement "p = pmVar3 + 3;" (assignment_expression "p = pmVar3 + 3" identifier = (binary_expression "pmVar3 + 3" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + -3;" (assignment_expression "iVar4 = iVar4 + -3" identifier = (binary_expression "iVar4 + -3" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar6 + *pmVar3;" (assignment_expression "uVar5 = uVar6 + *pmVar3" identifier = (binary_expression "uVar6 + *pmVar3" identifier + (pointer_expression "*pmVar3" * identifier))) ;) (expression_statement "uVar2 = uVar7 + pmVar3[1];" (assignment_expression "uVar2 = uVar7 + pmVar3[1]" identifier = (binary_expression "uVar7 + pmVar3[1]" identifier + (subscript_expression "pmVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = uVar10 + (uVar5 < uVar6);" (assignment_expression "uVar10 = uVar10 + (uVar5 < uVar6)" identifier = (binary_expression "uVar10 + (uVar5 < uVar6)" identifier + (parenthesized_expression "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) )))) ;) (expression_statement "uVar8 = uVar1 + pmVar3[2];" (assignment_expression "uVar8 = uVar1 + pmVar3[2]" identifier = (binary_expression "uVar1 + pmVar3[2]" identifier + (subscript_expression "pmVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar11 = uVar11 + (uVar2 < uVar7);" (assignment_expression "uVar11 = uVar11 + (uVar2 < uVar7)" identifier = (binary_expression "uVar11 + (uVar2 < uVar7)" identifier + (parenthesized_expression "(uVar2 < uVar7)" ( (binary_expression "uVar2 < uVar7" identifier < identifier) )))) ;) (expression_statement "uVar9 = uVar9 + (uVar8 < uVar1);" (assignment_expression "uVar9 = uVar9 + (uVar8 < uVar1)" identifier = (binary_expression "uVar9 + (uVar8 < uVar1)" identifier + (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )))) ;) (expression_statement "uVar1 = uVar8;" (assignment_expression "uVar1 = uVar8" identifier = identifier) ;) (expression_statement "pmVar3 = p;" (assignment_expression "pmVar3 = p" identifier = identifier) ;) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) }) while (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) ;) (expression_statement "uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000);" (assignment_expression "uVar1 = (uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000)" identifier = (binary_expression "(uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18) + (uVar8 * 0x10000 & 0xff0000)" (binary_expression "(uVar8 >> 8) + (uVar9 & 0xffffff) + (uVar9 >> 0x18)" (binary_expression "(uVar8 >> 8) + (uVar9 & 0xffffff)" (parenthesized_expression "(uVar8 >> 8)" ( (binary_expression "uVar8 >> 8" identifier >> number_literal) )) + (parenthesized_expression "(uVar9 & 0xffffff)" ( (binary_expression "uVar9 & 0xffffff" identifier & number_literal) ))) + (parenthesized_expression "(uVar9 >> 0x18)" ( (binary_expression "uVar9 >> 0x18" identifier >> number_literal) ))) + (parenthesized_expression "(uVar8 * 0x10000 & 0xff0000)" ( (binary_expression "uVar8 * 0x10000 & 0xff0000" (binary_expression "uVar8 * 0x10000" identifier * number_literal) & number_literal) )))) ;) }))) (if_statement "if (iVar4 != -3) {\n    uVar6 = uVar5 + *p;\n    uVar10 = uVar10 + (uVar6 < uVar5);\n    uVar5 = uVar6;\n    if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }\n  }" if (parenthesized_expression "(iVar4 != -3)" ( (binary_expression "iVar4 != -3" identifier != number_literal) )) (compound_statement "{\n    uVar6 = uVar5 + *p;\n    uVar10 = uVar10 + (uVar6 < uVar5);\n    uVar5 = uVar6;\n    if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }\n  }" { (expression_statement "uVar6 = uVar5 + *p;" (assignment_expression "uVar6 = uVar5 + *p" identifier = (binary_expression "uVar5 + *p" identifier + (pointer_expression "*p" * identifier))) ;) (expression_statement "uVar10 = uVar10 + (uVar6 < uVar5);" (assignment_expression "uVar10 = uVar10 + (uVar6 < uVar5)" identifier = (binary_expression "uVar10 + (uVar6 < uVar5)" identifier + (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )))) ;) (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) (if_statement "if (iVar4 != -2) {\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }" if (parenthesized_expression "(iVar4 != -2)" ( (binary_expression "iVar4 != -2" identifier != number_literal) )) (compound_statement "{\n      uVar11 = uVar11 + (uVar2 + p[1] < uVar2);\n      uVar2 = uVar2 + p[1];\n    }" { (expression_statement "uVar11 = uVar11 + (uVar2 + p[1] < uVar2);" (assignment_expression "uVar11 = uVar11 + (uVar2 + p[1] < uVar2)" identifier = (binary_expression "uVar11 + (uVar2 + p[1] < uVar2)" identifier + (parenthesized_expression "(uVar2 + p[1] < uVar2)" ( (binary_expression "uVar2 + p[1] < uVar2" (binary_expression "uVar2 + p[1]" identifier + (subscript_expression "p[1]" identifier [ number_literal ])) < identifier) )))) ;) (expression_statement "uVar2 = uVar2 + p[1];" (assignment_expression "uVar2 = uVar2 + p[1]" identifier = (binary_expression "uVar2 + p[1]" identifier + (subscript_expression "p[1]" identifier [ number_literal ]))) ;) })) })) (return_statement "return (uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +\n         (uVar11 & 0xff) * 0x10000;" return (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100 +\n         (uVar11 & 0xff) * 0x10000" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar10 & 0xffff) * 0x100" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8) + (uVar2 & 0xffff) * 0x100" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10) +\n         (uVar11 >> 8)" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar10 >> 0x10)" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1 + (uVar2 >> 0x10)" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18) + uVar1" (binary_expression "(uVar5 & 0xffffff) + (uVar5 >> 0x18)" (parenthesized_expression "(uVar5 & 0xffffff)" ( (binary_expression "uVar5 & 0xffffff" identifier & number_literal) )) + (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) ))) + identifier) + (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar10 >> 0x10)" ( (binary_expression "uVar10 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar11 >> 8)" ( (binary_expression "uVar11 >> 8" identifier >> number_literal) ))) + (binary_expression "(uVar2 & 0xffff) * 0x100" (parenthesized_expression "(uVar2 & 0xffff)" ( (binary_expression "uVar2 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar10 & 0xffff) * 0x100" (parenthesized_expression "(uVar10 & 0xffff)" ( (binary_expression "uVar10 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar11 & 0xff) * 0x10000" (parenthesized_expression "(uVar11 & 0xff)" ( (binary_expression "uVar11 & 0xff" identifier & number_literal) )) * number_literal)) ;) })))
(translation_unit "int __gmpn_mod_34lsub1(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}\n\n" (function_definition "int __gmpn_mod_34lsub1(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" primitive_type (function_declarator "__gmpn_mod_34lsub1(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (if_statement "if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" if (parenthesized_expression "(param_2 < 0)" ( (binary_expression "param_2 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" else (compound_statement "{\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);" do (compound_statement "{\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    }" { (expression_statement "param_1 = piVar3 + 3;" (assignment_expression "param_1 = piVar3 + 3" identifier = (binary_expression "piVar3 + 3" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar5 + *piVar3;" (assignment_expression "uVar4 = uVar5 + *piVar3" identifier = (binary_expression "uVar5 + *piVar3" identifier + (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "uVar2 = uVar6 + piVar3[1];" (assignment_expression "uVar2 = uVar6 + piVar3[1]" identifier = (binary_expression "uVar6 + piVar3[1]" identifier + (subscript_expression "piVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar9 = uVar9 + (uVar4 < uVar5);" (assignment_expression "uVar9 = uVar9 + (uVar4 < uVar5)" identifier = (binary_expression "uVar9 + (uVar4 < uVar5)" identifier + (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )))) ;) (expression_statement "uVar7 = uVar1 + piVar3[2];" (assignment_expression "uVar7 = uVar1 + piVar3[2]" identifier = (binary_expression "uVar1 + piVar3[2]" identifier + (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = uVar10 + (uVar2 < uVar6);" (assignment_expression "uVar10 = uVar10 + (uVar2 < uVar6)" identifier = (binary_expression "uVar10 + (uVar2 < uVar6)" identifier + (parenthesized_expression "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) )))) ;) (expression_statement "uVar8 = uVar8 + (uVar7 < uVar1);" (assignment_expression "uVar8 = uVar8 + (uVar7 < uVar1)" identifier = (binary_expression "uVar8 + (uVar7 < uVar1)" identifier + (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" identifier = identifier) ;) }) while (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) ;) (expression_statement "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);" (assignment_expression "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" identifier = (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff)" (parenthesized_expression "(uVar7 >> 8)" ( (binary_expression "uVar7 >> 8" identifier >> number_literal) )) + (parenthesized_expression "(uVar8 & 0xffffff)" ( (binary_expression "uVar8 & 0xffffff" identifier & number_literal) ))) + (parenthesized_expression "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) + (parenthesized_expression "(uVar7 * 0x10000 & 0xff0000)" ( (binary_expression "uVar7 * 0x10000 & 0xff0000" (binary_expression "uVar7 * 0x10000" identifier * number_literal) & number_literal) )))) ;) }))) (if_statement "if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" if (parenthesized_expression "(param_2 != -3)" ( (binary_expression "param_2 != -3" identifier != number_literal) )) (compound_statement "{\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" { (expression_statement "uVar5 = uVar4 + *param_1;" (assignment_expression "uVar5 = uVar4 + *param_1" identifier = (binary_expression "uVar4 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar9 = uVar9 + (uVar5 < uVar4);" (assignment_expression "uVar9 = uVar9 + (uVar5 < uVar4)" identifier = (binary_expression "uVar9 + (uVar5 < uVar4)" identifier + (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )))) ;) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" identifier = identifier) ;) (if_statement "if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" if (parenthesized_expression "(param_2 != -2)" ( (binary_expression "param_2 != -2" identifier != number_literal) )) (compound_statement "{\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" { (expression_statement "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);" (assignment_expression "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2)" identifier = (binary_expression "uVar10 + (uVar2 + param_1[1] < uVar2)" identifier + (parenthesized_expression "(uVar2 + param_1[1] < uVar2)" ( (binary_expression "uVar2 + param_1[1] < uVar2" (binary_expression "uVar2 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ])) < identifier) )))) ;) (expression_statement "uVar2 = uVar2 + param_1[1];" (assignment_expression "uVar2 = uVar2 + param_1[1]" identifier = (binary_expression "uVar2 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) })) (return_statement "return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;" return (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18)" (parenthesized_expression "(uVar4 & 0xffffff)" ( (binary_expression "uVar4 & 0xffffff" identifier & number_literal) )) + (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) ))) + identifier) + (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar9 >> 0x10)" ( (binary_expression "uVar9 >> 0x10" identifier >> number_literal) ))) + (parenthesized_expression "(uVar10 >> 8)" ( (binary_expression "uVar10 >> 8" identifier >> number_literal) ))) + (binary_expression "(uVar2 & 0xffff) * 0x100" (parenthesized_expression "(uVar2 & 0xffff)" ( (binary_expression "uVar2 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar9 & 0xffff) * 0x100" (parenthesized_expression "(uVar9 & 0xffff)" ( (binary_expression "uVar9 & 0xffff" identifier & number_literal) )) * number_literal)) + (binary_expression "(uVar10 & 0xff) * 0x10000" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) * number_literal)) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (parenthesized_expression ( (binary_expression IDENT & LIT) ))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) & LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) })) })) (return_statement return (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + IDENT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ;) })))
(function_definition "int __gmpn_mod_34lsub1(int *param_1,int param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" (primitive_type "int") (function_declarator "__gmpn_mod_34lsub1(int *param_1,int param_2)" (identifier "__gmpn_mod_34lsub1") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  int *piVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  \n  param_2 = param_2 + -3;\n  uVar1 = 0;\n  if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }\n  if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }\n  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" (identifier "param_2") (= "=") (binary_expression "param_2 + -3" (identifier "param_2") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 < 0) {\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }\n  else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" (if "if") (parenthesized_expression "(param_2 < 0)" (( "(") (binary_expression "param_2 < 0" (identifier "param_2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = 0;\n    uVar4 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" (else "else") (compound_statement "{\n    uVar8 = 0;\n    uVar10 = 0;\n    uVar9 = 0;\n    piVar3 = param_1;\n    uVar5 = 0;\n    uVar6 = 0;\n    do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);\n    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);\n  }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" (identifier "piVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    } while (-1 < param_2);" (do "do") (compound_statement "{\n      param_1 = piVar3 + 3;\n      param_2 = param_2 + -3;\n      uVar4 = uVar5 + *piVar3;\n      uVar2 = uVar6 + piVar3[1];\n      uVar9 = uVar9 + (uVar4 < uVar5);\n      uVar7 = uVar1 + piVar3[2];\n      uVar10 = uVar10 + (uVar2 < uVar6);\n      uVar8 = uVar8 + (uVar7 < uVar1);\n      uVar1 = uVar7;\n      piVar3 = param_1;\n      uVar5 = uVar4;\n      uVar6 = uVar2;\n    }" ({ "{") (expression_statement "param_1 = piVar3 + 3;" (assignment_expression "param_1 = piVar3 + 3" (identifier "param_1") (= "=") (binary_expression "piVar3 + 3" (identifier "piVar3") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "param_2 = param_2 + -3;" (assignment_expression "param_2 = param_2 + -3" (identifier "param_2") (= "=") (binary_expression "param_2 + -3" (identifier "param_2") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "uVar4 = uVar5 + *piVar3;" (assignment_expression "uVar4 = uVar5 + *piVar3" (identifier "uVar4") (= "=") (binary_expression "uVar5 + *piVar3" (identifier "uVar5") (+ "+") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (expression_statement "uVar2 = uVar6 + piVar3[1];" (assignment_expression "uVar2 = uVar6 + piVar3[1]" (identifier "uVar2") (= "=") (binary_expression "uVar6 + piVar3[1]" (identifier "uVar6") (+ "+") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar9 = uVar9 + (uVar4 < uVar5);" (assignment_expression "uVar9 = uVar9 + (uVar4 < uVar5)" (identifier "uVar9") (= "=") (binary_expression "uVar9 + (uVar4 < uVar5)" (identifier "uVar9") (+ "+") (parenthesized_expression "(uVar4 < uVar5)" (( "(") (binary_expression "uVar4 < uVar5" (identifier "uVar4") (< "<") (identifier "uVar5")) () ")")))) (; ";")) (expression_statement "uVar7 = uVar1 + piVar3[2];" (assignment_expression "uVar7 = uVar1 + piVar3[2]" (identifier "uVar7") (= "=") (binary_expression "uVar1 + piVar3[2]" (identifier "uVar1") (+ "+") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar10 = uVar10 + (uVar2 < uVar6);" (assignment_expression "uVar10 = uVar10 + (uVar2 < uVar6)" (identifier "uVar10") (= "=") (binary_expression "uVar10 + (uVar2 < uVar6)" (identifier "uVar10") (+ "+") (parenthesized_expression "(uVar2 < uVar6)" (( "(") (binary_expression "uVar2 < uVar6" (identifier "uVar2") (< "<") (identifier "uVar6")) () ")")))) (; ";")) (expression_statement "uVar8 = uVar8 + (uVar7 < uVar1);" (assignment_expression "uVar8 = uVar8 + (uVar7 < uVar1)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + (uVar7 < uVar1)" (identifier "uVar8") (+ "+") (parenthesized_expression "(uVar7 < uVar1)" (( "(") (binary_expression "uVar7 < uVar1" (identifier "uVar7") (< "<") (identifier "uVar1")) () ")")))) (; ";")) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" (identifier "uVar1") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "piVar3 = param_1;" (assignment_expression "piVar3 = param_1" (identifier "piVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" (identifier "uVar5") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" (identifier "uVar6") (= "=") (identifier "uVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(-1 < param_2)" (( "(") (binary_expression "-1 < param_2" (number_literal "-1") (< "<") (identifier "param_2")) () ")")) (; ";")) (expression_statement "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);" (assignment_expression "uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" (identifier "uVar1") (= "=") (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18)" (binary_expression "(uVar7 >> 8) + (uVar8 & 0xffffff)" (parenthesized_expression "(uVar7 >> 8)" (( "(") (binary_expression "uVar7 >> 8" (identifier "uVar7") (>> ">>") (number_literal "8")) () ")")) (+ "+") (parenthesized_expression "(uVar8 & 0xffffff)" (( "(") (binary_expression "uVar8 & 0xffffff" (identifier "uVar8") (& "&") (number_literal "0xffffff")) () ")"))) (+ "+") (parenthesized_expression "(uVar8 >> 0x18)" (( "(") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) () ")"))) (+ "+") (parenthesized_expression "(uVar7 * 0x10000 & 0xff0000)" (( "(") (binary_expression "uVar7 * 0x10000 & 0xff0000" (binary_expression "uVar7 * 0x10000" (identifier "uVar7") (* "*") (number_literal "0x10000")) (& "&") (number_literal "0xff0000")) () ")")))) (; ";")) (} "}")))) (if_statement "if (param_2 != -3) {\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" (if "if") (parenthesized_expression "(param_2 != -3)" (( "(") (binary_expression "param_2 != -3" (identifier "param_2") (!= "!=") (number_literal "-3")) () ")")) (compound_statement "{\n    uVar5 = uVar4 + *param_1;\n    uVar9 = uVar9 + (uVar5 < uVar4);\n    uVar4 = uVar5;\n    if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }\n  }" ({ "{") (expression_statement "uVar5 = uVar4 + *param_1;" (assignment_expression "uVar5 = uVar4 + *param_1" (identifier "uVar5") (= "=") (binary_expression "uVar4 + *param_1" (identifier "uVar4") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar9 = uVar9 + (uVar5 < uVar4);" (assignment_expression "uVar9 = uVar9 + (uVar5 < uVar4)" (identifier "uVar9") (= "=") (binary_expression "uVar9 + (uVar5 < uVar4)" (identifier "uVar9") (+ "+") (parenthesized_expression "(uVar5 < uVar4)" (( "(") (binary_expression "uVar5 < uVar4" (identifier "uVar5") (< "<") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar5;" (assignment_expression "uVar4 = uVar5" (identifier "uVar4") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (param_2 != -2) {\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" (if "if") (parenthesized_expression "(param_2 != -2)" (( "(") (binary_expression "param_2 != -2" (identifier "param_2") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);\n      uVar2 = uVar2 + param_1[1];\n    }" ({ "{") (expression_statement "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);" (assignment_expression "uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2)" (identifier "uVar10") (= "=") (binary_expression "uVar10 + (uVar2 + param_1[1] < uVar2)" (identifier "uVar10") (+ "+") (parenthesized_expression "(uVar2 + param_1[1] < uVar2)" (( "(") (binary_expression "uVar2 + param_1[1] < uVar2" (binary_expression "uVar2 + param_1[1]" (identifier "uVar2") (+ "+") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (< "<") (identifier "uVar2")) () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 + param_1[1];" (assignment_expression "uVar2 = uVar2 + param_1[1]" (identifier "uVar2") (= "=") (binary_expression "uVar2 + param_1[1]" (identifier "uVar2") (+ "+") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (} "}"))) (return_statement "return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000;" (return "return") (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +\n         (uVar10 & 0xff) * 0x10000" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +\n         (uVar10 >> 8)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10)" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1" (binary_expression "(uVar4 & 0xffffff) + (uVar4 >> 0x18)" (parenthesized_expression "(uVar4 & 0xffffff)" (( "(") (binary_expression "uVar4 & 0xffffff" (identifier "uVar4") (& "&") (number_literal "0xffffff")) () ")")) (+ "+") (parenthesized_expression "(uVar4 >> 0x18)" (( "(") (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) () ")"))) (+ "+") (identifier "uVar1")) (+ "+") (parenthesized_expression "(uVar2 >> 0x10)" (( "(") (binary_expression "uVar2 >> 0x10" (identifier "uVar2") (>> ">>") (number_literal "0x10")) () ")"))) (+ "+") (parenthesized_expression "(uVar9 >> 0x10)" (( "(") (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")) () ")"))) (+ "+") (parenthesized_expression "(uVar10 >> 8)" (( "(") (binary_expression "uVar10 >> 8" (identifier "uVar10") (>> ">>") (number_literal "8")) () ")"))) (+ "+") (binary_expression "(uVar2 & 0xffff) * 0x100" (parenthesized_expression "(uVar2 & 0xffff)" (( "(") (binary_expression "uVar2 & 0xffff" (identifier "uVar2") (& "&") (number_literal "0xffff")) () ")")) (* "*") (number_literal "0x100"))) (+ "+") (binary_expression "(uVar9 & 0xffff) * 0x100" (parenthesized_expression "(uVar9 & 0xffff)" (( "(") (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) () ")")) (* "*") (number_literal "0x100"))) (+ "+") (binary_expression "(uVar10 & 0xff) * 0x10000" (parenthesized_expression "(uVar10 & 0xff)" (( "(") (binary_expression "uVar10 & 0xff" (identifier "uVar10") (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "0x10000"))) (; ";")) (} "}")))

type_1 function_1(type_2 p,type_3 var_1)

{
  type_4 var_8;
  type_4 var_10;
  type_2 var_3;
  int var_2;
  type_4 var_7;
  type_4 var_4;
  type_4 var_5;
  type_4 var_12;
  type_4 var_11;
  type_4 var_6;
  type_4 var_9;
  
  var_2 = var_1 + -3;
  var_8 = 0;
  if (var_2 < 0) {
    var_10 = 0;
    var_7 = 0;
    var_9 = 0;
    var_6 = 0;
  }
  else {
    var_11 = 0;
    var_9 = 0;
    var_6 = 0;
    var_3 = p;
    var_4 = 0;
    var_5 = 0;
    do {
      p = var_3 + 3;
      var_2 = var_2 + -3;
      var_7 = var_4 + *var_3;
      var_10 = var_5 + var_3[1];
      var_6 = var_6 + (var_7 < var_4);
      var_12 = var_8 + var_3[2];
      var_9 = var_9 + (var_10 < var_5);
      var_11 = var_11 + (var_12 < var_8);
      var_8 = var_12;
      var_3 = p;
      var_4 = var_7;
      var_5 = var_10;
    } while (-1 < var_2);
    var_8 = (var_12 >> 8) + (var_11 & 0xffffff) + (var_11 >> 0x18) + (var_12 * 0x10000 & 0xff0000);
  }
  if (var_2 != -3) {
    var_4 = var_7 + *p;
    var_6 = var_6 + (var_4 < var_7);
    var_7 = var_4;
    if (var_2 != -2) {
      var_9 = var_9 + (var_10 + p[1] < var_10);
      var_10 = var_10 + p[1];
    }
  }
  return (var_7 & 0xffffff) + (var_7 >> 0x18) + var_8 + (var_10 >> 0x10) + (var_6 >> 0x10) +
         (var_9 >> 8) + (var_10 & 0xffff) * 0x100 + (var_6 & 0xffff) * 0x100 +
         (var_9 & 0xff) * 0x10000;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) 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: (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) (return_statement (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))

int MASKED(int *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  param_2 = param_2 + -3;
  uVar1 = 0;
  if (param_2 < 0) {
    uVar2 = 0;
    uVar4 = 0;
    uVar10 = 0;
    uVar9 = 0;
  }
  else {
    uVar8 = 0;
    uVar10 = 0;
    uVar9 = 0;
    piVar3 = param_1;
    uVar5 = 0;
    uVar6 = 0;
    do {
      param_1 = piVar3 + 3;
      param_2 = param_2 + -3;
      uVar4 = uVar5 + *piVar3;
      uVar2 = uVar6 + piVar3[1];
      uVar9 = uVar9 + (uVar4 < uVar5);
      uVar7 = uVar1 + piVar3[2];
      uVar10 = uVar10 + (uVar2 < uVar6);
      uVar8 = uVar8 + (uVar7 < uVar1);
      uVar1 = uVar7;
      piVar3 = param_1;
      uVar5 = uVar4;
      uVar6 = uVar2;
    } while (-1 < param_2);
    uVar1 = (uVar7 >> 8) + (uVar8 & 0xffffff) + (uVar8 >> 0x18) + (uVar7 * 0x10000 & 0xff0000);
  }
  if (param_2 != -3) {
    uVar5 = uVar4 + *param_1;
    uVar9 = uVar9 + (uVar5 < uVar4);
    uVar4 = uVar5;
    if (param_2 != -2) {
      uVar10 = uVar10 + (uVar2 + param_1[1] < uVar2);
      uVar2 = uVar2 + param_1[1];
    }
  }
  return (uVar4 & 0xffffff) + (uVar4 >> 0x18) + uVar1 + (uVar2 >> 0x10) + (uVar9 >> 0x10) +
         (uVar10 >> 8) + (uVar2 & 0xffff) * 0x100 + (uVar9 & 0xffff) * 0x100 +
         (uVar10 & 0xff) * 0x10000;
}

