
mp_size_t __gmpn_mu_div_qr_choose_in(mp_size_t qn,mp_size_t dn,int k)

{
  int iVar1;
  
  if (k != 0) {
    if (dn < qn) {
      qn = dn;
    }
    if (k == 0) {
      trap(7);
    }
    return (qn + -1) / k + 1;
  }
  if (dn < qn) {
    if (dn == 0) {
      trap(7);
    }
    iVar1 = (qn + -1) / dn + 1;
    if (iVar1 == 0) {
      trap(7);
    }
    return (qn + -1) / iVar1 + 1;
  }
  if (dn < qn * 3) {
    return (qn + -1) / 2 + 1;
  }
  return qn;
}



int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  if (param_3 != 0) {
    if (param_2 < param_1) {
      param_1 = param_2;
    }
    if (param_3 == 0) {
      trap(7);
    }
    return (param_1 + -1) / param_3 + 1;
  }
  if (param_2 < param_1) {
    if (param_2 == 0) {
      trap(7);
    }
    iVar1 = (param_1 + -1) / param_2 + 1;
    if (iVar1 == 0) {
      trap(7);
    }
    return (param_1 + -1) / iVar1 + 1;
  }
  if (param_2 < param_1 * 3) {
    return (param_1 + -1) / 2 + 1;
  }
  return param_1;
}


bne a2,zero,0x00073eb4
_slt v1,a1,a0
slt v0,a1,a0
beq v0,zero,0x00073e88
_nop
addiu a0,a0,-0x1
teq a1,zero
div a0,a1
mflo a1
addiu v0,a1,0x1
teq v0,zero
div a0,v0
mflo a0
jr ra
_addiu v0,a0,0x1
sll v0,a0,0x1
addu v0,v0,a0
slt a1,a1,v0
beq a1,zero,0x00073ed0
_nop
addiu a0,a0,-0x1
srl v0,a0,0x1f
addu a0,v0,a0
sra a0,a0,0x1
jr ra
_addiu v0,a0,0x1
movn a0,a1,v1
addiu a0,a0,-0x1
teq a2,zero
div a0,a2
mflo a0
jr ra
_addiu v0,a0,0x1
jr ra
_or v0,a0,zero
(translation_unit "int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}\n\n" (function_definition "int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" primitive_type (function_declarator "__gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" { (if_statement "if (param_2 < param_1) {\n      param_1 = param_2;\n    }" if (parenthesized_expression "(param_2 < param_1)" ( (binary_expression "param_2 < param_1" identifier < identifier) )) (compound_statement "{\n      param_1 = param_2;\n    }" { (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) })) (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (param_1 + -1) / param_3 + 1;" return (binary_expression "(param_1 + -1) / param_3 + 1" (binary_expression "(param_1 + -1) / param_3" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" if (parenthesized_expression "(param_2 < param_1)" ( (binary_expression "param_2 < param_1" identifier < identifier) )) (compound_statement "{\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" { (if_statement "if (param_2 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar1 = (param_1 + -1) / param_2 + 1;" (assignment_expression "iVar1 = (param_1 + -1) / param_2 + 1" identifier = (binary_expression "(param_1 + -1) / param_2 + 1" (binary_expression "(param_1 + -1) / param_2" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal)) ;) (if_statement "if (iVar1 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (param_1 + -1) / iVar1 + 1;" return (binary_expression "(param_1 + -1) / iVar1 + 1" (binary_expression "(param_1 + -1) / iVar1" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }" if (parenthesized_expression "(param_2 < param_1 * 3)" ( (binary_expression "param_2 < param_1 * 3" identifier < (binary_expression "param_1 * 3" identifier * number_literal)) )) (compound_statement "{\n    return (param_1 + -1) / 2 + 1;\n  }" { (return_statement "return (param_1 + -1) / 2 + 1;" return (binary_expression "(param_1 + -1) / 2 + 1" (binary_expression "(param_1 + -1) / 2" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / number_literal) + number_literal) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "mp_size_t __gmpn_mu_div_qr_choose_in(mp_size_t qn,mp_size_t dn,int k)\n\n{\n  int iVar1;\n  \n  if (k != 0) {\n    if (dn < qn) {\n      qn = dn;\n    }\n    if (k == 0) {\n      trap(7);\n    }\n    return (qn + -1) / k + 1;\n  }\n  if (dn < qn) {\n    if (dn == 0) {\n      trap(7);\n    }\n    iVar1 = (qn + -1) / dn + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (qn + -1) / iVar1 + 1;\n  }\n  if (dn < qn * 3) {\n    return (qn + -1) / 2 + 1;\n  }\n  return qn;\n}\n\n" (function_definition "mp_size_t __gmpn_mu_div_qr_choose_in(mp_size_t qn,mp_size_t dn,int k)\n\n{\n  int iVar1;\n  \n  if (k != 0) {\n    if (dn < qn) {\n      qn = dn;\n    }\n    if (k == 0) {\n      trap(7);\n    }\n    return (qn + -1) / k + 1;\n  }\n  if (dn < qn) {\n    if (dn == 0) {\n      trap(7);\n    }\n    iVar1 = (qn + -1) / dn + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (qn + -1) / iVar1 + 1;\n  }\n  if (dn < qn * 3) {\n    return (qn + -1) / 2 + 1;\n  }\n  return qn;\n}" type_identifier (function_declarator "__gmpn_mu_div_qr_choose_in(mp_size_t qn,mp_size_t dn,int k)" identifier (parameter_list "(mp_size_t qn,mp_size_t dn,int k)" ( (parameter_declaration "mp_size_t qn" type_identifier identifier) , (parameter_declaration "mp_size_t dn" type_identifier identifier) , (parameter_declaration "int k" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  if (k != 0) {\n    if (dn < qn) {\n      qn = dn;\n    }\n    if (k == 0) {\n      trap(7);\n    }\n    return (qn + -1) / k + 1;\n  }\n  if (dn < qn) {\n    if (dn == 0) {\n      trap(7);\n    }\n    iVar1 = (qn + -1) / dn + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (qn + -1) / iVar1 + 1;\n  }\n  if (dn < qn * 3) {\n    return (qn + -1) / 2 + 1;\n  }\n  return qn;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (k != 0) {\n    if (dn < qn) {\n      qn = dn;\n    }\n    if (k == 0) {\n      trap(7);\n    }\n    return (qn + -1) / k + 1;\n  }" if (parenthesized_expression "(k != 0)" ( (binary_expression "k != 0" identifier != number_literal) )) (compound_statement "{\n    if (dn < qn) {\n      qn = dn;\n    }\n    if (k == 0) {\n      trap(7);\n    }\n    return (qn + -1) / k + 1;\n  }" { (if_statement "if (dn < qn) {\n      qn = dn;\n    }" if (parenthesized_expression "(dn < qn)" ( (binary_expression "dn < qn" identifier < identifier) )) (compound_statement "{\n      qn = dn;\n    }" { (expression_statement "qn = dn;" (assignment_expression "qn = dn" identifier = identifier) ;) })) (if_statement "if (k == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(k == 0)" ( (binary_expression "k == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (qn + -1) / k + 1;" return (binary_expression "(qn + -1) / k + 1" (binary_expression "(qn + -1) / k" (parenthesized_expression "(qn + -1)" ( (binary_expression "qn + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (dn < qn) {\n    if (dn == 0) {\n      trap(7);\n    }\n    iVar1 = (qn + -1) / dn + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (qn + -1) / iVar1 + 1;\n  }" if (parenthesized_expression "(dn < qn)" ( (binary_expression "dn < qn" identifier < identifier) )) (compound_statement "{\n    if (dn == 0) {\n      trap(7);\n    }\n    iVar1 = (qn + -1) / dn + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (qn + -1) / iVar1 + 1;\n  }" { (if_statement "if (dn == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(dn == 0)" ( (binary_expression "dn == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar1 = (qn + -1) / dn + 1;" (assignment_expression "iVar1 = (qn + -1) / dn + 1" identifier = (binary_expression "(qn + -1) / dn + 1" (binary_expression "(qn + -1) / dn" (parenthesized_expression "(qn + -1)" ( (binary_expression "qn + -1" identifier + number_literal) )) / identifier) + number_literal)) ;) (if_statement "if (iVar1 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (qn + -1) / iVar1 + 1;" return (binary_expression "(qn + -1) / iVar1 + 1" (binary_expression "(qn + -1) / iVar1" (parenthesized_expression "(qn + -1)" ( (binary_expression "qn + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (dn < qn * 3) {\n    return (qn + -1) / 2 + 1;\n  }" if (parenthesized_expression "(dn < qn * 3)" ( (binary_expression "dn < qn * 3" identifier < (binary_expression "qn * 3" identifier * number_literal)) )) (compound_statement "{\n    return (qn + -1) / 2 + 1;\n  }" { (return_statement "return (qn + -1) / 2 + 1;" return (binary_expression "(qn + -1) / 2 + 1" (binary_expression "(qn + -1) / 2" (parenthesized_expression "(qn + -1)" ( (binary_expression "qn + -1" identifier + number_literal) )) / number_literal) + number_literal) ;) })) (return_statement "return qn;" return identifier ;) })))
(translation_unit "int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}\n\n" (function_definition "int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" primitive_type (function_declarator "__gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" { (if_statement "if (param_2 < param_1) {\n      param_1 = param_2;\n    }" if (parenthesized_expression "(param_2 < param_1)" ( (binary_expression "param_2 < param_1" identifier < identifier) )) (compound_statement "{\n      param_1 = param_2;\n    }" { (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) })) (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (param_1 + -1) / param_3 + 1;" return (binary_expression "(param_1 + -1) / param_3 + 1" (binary_expression "(param_1 + -1) / param_3" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" if (parenthesized_expression "(param_2 < param_1)" ( (binary_expression "param_2 < param_1" identifier < identifier) )) (compound_statement "{\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" { (if_statement "if (param_2 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar1 = (param_1 + -1) / param_2 + 1;" (assignment_expression "iVar1 = (param_1 + -1) / param_2 + 1" identifier = (binary_expression "(param_1 + -1) / param_2 + 1" (binary_expression "(param_1 + -1) / param_2" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal)) ;) (if_statement "if (iVar1 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return (param_1 + -1) / iVar1 + 1;" return (binary_expression "(param_1 + -1) / iVar1 + 1" (binary_expression "(param_1 + -1) / iVar1" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / identifier) + number_literal) ;) })) (if_statement "if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }" if (parenthesized_expression "(param_2 < param_1 * 3)" ( (binary_expression "param_2 < param_1 * 3" identifier < (binary_expression "param_1 * 3" identifier * number_literal)) )) (compound_statement "{\n    return (param_1 + -1) / 2 + 1;\n  }" { (return_statement "return (param_1 + -1) / 2 + 1;" return (binary_expression "(param_1 + -1) / 2 + 1" (binary_expression "(param_1 + -1) / 2" (parenthesized_expression "(param_1 + -1)" ( (binary_expression "param_1 + -1" identifier + number_literal) )) / number_literal) + number_literal) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (return_statement return (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / IDENT) + LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (return_statement return (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / IDENT) + LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT * LIT)) )) (compound_statement { (return_statement return (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) + LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int __gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" (primitive_type "int") (function_declarator "__gmpn_mu_div_qr_choose_in(int param_1,int param_2,int param_3)" (identifier "__gmpn_mu_div_qr_choose_in") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }\n  if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }\n  if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }\n  return param_1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (if_statement "if (param_3 != 0) {\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_2 < param_1) {\n      param_1 = param_2;\n    }\n    if (param_3 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / param_3 + 1;\n  }" ({ "{") (if_statement "if (param_2 < param_1) {\n      param_1 = param_2;\n    }" (if "if") (parenthesized_expression "(param_2 < param_1)" (( "(") (binary_expression "param_2 < param_1" (identifier "param_2") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n      param_1 = param_2;\n    }" ({ "{") (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" (identifier "param_1") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (return_statement "return (param_1 + -1) / param_3 + 1;" (return "return") (binary_expression "(param_1 + -1) / param_3 + 1" (binary_expression "(param_1 + -1) / param_3" (parenthesized_expression "(param_1 + -1)" (( "(") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) () ")")) (/ "/") (identifier "param_3")) (+ "+") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (param_2 < param_1) {\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" (if "if") (parenthesized_expression "(param_2 < param_1)" (( "(") (binary_expression "param_2 < param_1" (identifier "param_2") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n    if (param_2 == 0) {\n      trap(7);\n    }\n    iVar1 = (param_1 + -1) / param_2 + 1;\n    if (iVar1 == 0) {\n      trap(7);\n    }\n    return (param_1 + -1) / iVar1 + 1;\n  }" ({ "{") (if_statement "if (param_2 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = (param_1 + -1) / param_2 + 1;" (assignment_expression "iVar1 = (param_1 + -1) / param_2 + 1" (identifier "iVar1") (= "=") (binary_expression "(param_1 + -1) / param_2 + 1" (binary_expression "(param_1 + -1) / param_2" (parenthesized_expression "(param_1 + -1)" (( "(") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) () ")")) (/ "/") (identifier "param_2")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar1 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (return_statement "return (param_1 + -1) / iVar1 + 1;" (return "return") (binary_expression "(param_1 + -1) / iVar1 + 1" (binary_expression "(param_1 + -1) / iVar1" (parenthesized_expression "(param_1 + -1)" (( "(") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) () ")")) (/ "/") (identifier "iVar1")) (+ "+") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (param_2 < param_1 * 3) {\n    return (param_1 + -1) / 2 + 1;\n  }" (if "if") (parenthesized_expression "(param_2 < param_1 * 3)" (( "(") (binary_expression "param_2 < param_1 * 3" (identifier "param_2") (< "<") (binary_expression "param_1 * 3" (identifier "param_1") (* "*") (number_literal "3"))) () ")")) (compound_statement "{\n    return (param_1 + -1) / 2 + 1;\n  }" ({ "{") (return_statement "return (param_1 + -1) / 2 + 1;" (return "return") (binary_expression "(param_1 + -1) / 2 + 1" (binary_expression "(param_1 + -1) / 2" (parenthesized_expression "(param_1 + -1)" (( "(") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1")) () ")")) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) (; ";")) (} "}"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

type_1 function_1(type_1 var_3,type_1 var_2,int var_1)

{
  int var_5;
  
  if (var_1 != 0) {
    if (var_2 < var_3) {
      var_3 = var_2;
    }
    if (var_1 == 0) {
      var_4(7);
    }
    return (var_3 + -1) / var_1 + 1;
  }
  if (var_2 < var_3) {
    if (var_2 == 0) {
      var_4(7);
    }
    var_5 = (var_3 + -1) / var_2 + 1;
    if (var_5 == 0) {
      var_4(7);
    }
    return (var_3 + -1) / var_5 + 1;
  }
  if (var_2 < var_3 * 3) {
    return (var_3 + -1) / 2 + 1;
  }
  return var_3;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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 (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))))) (return_statement (identifier)))))

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

{
  int iVar1;
  
  if (param_3 != 0) {
    if (param_2 < param_1) {
      param_1 = param_2;
    }
    if (param_3 == 0) {
      trap(7);
    }
    return (param_1 + -1) / param_3 + 1;
  }
  if (param_2 < param_1) {
    if (param_2 == 0) {
      trap(7);
    }
    iVar1 = (param_1 + -1) / param_2 + 1;
    if (iVar1 == 0) {
      trap(7);
    }
    return (param_1 + -1) / iVar1 + 1;
  }
  if (param_2 < param_1 * 3) {
    return (param_1 + -1) / 2 + 1;
  }
  return param_1;
}

