
Bignum crt_modpow(Bignum base,Bignum exp,Bignum mod,Bignum p,Bignum q,Bignum iqmp)

{
  Bignum_conflict bn;
  Bignum_conflict pBVar1;
  Bignum_conflict pBVar2;
  int iVar3;
  Bignum_conflict a;
  
  bn = copybn((Bignum_conflict)p);
  decbn(bn);
  pBVar1 = copybn((Bignum_conflict)q);
  decbn(pBVar1);
  pBVar2 = bigmod((Bignum_conflict)exp,bn);
  pBVar1 = bigmod((Bignum_conflict)exp,pBVar1);
  pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p);
  pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q);
  iVar3 = bignum_cmp(pBVar2,pBVar1);
  if (-1 < iVar3) {
    pBVar2 = bigsub(pBVar2,pBVar1);
    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);
    pBVar1 = bigmuladd(a,pBVar2,pBVar1);
    bigmod(pBVar1,(Bignum_conflict)mod);
                    /* WARNING: Subroutine does not return */
    freebn(bn);
  }
                    /* WARNING: Subroutine does not return */
  bigadd(pBVar2,(Bignum_conflict)p);
}



undefined4
crt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
          undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  
  uVar1 = copybn(param_4);
  decbn(uVar1);
  uVar2 = copybn(param_5);
  decbn(uVar2);
  uVar3 = bigmod(param_2,uVar1);
  uVar4 = bigmod(param_2,uVar2);
  uVar5 = modpow(param_1,uVar3,param_4);
  uVar6 = modpow(param_1,uVar4,param_5);
  iVar7 = bignum_cmp(uVar5,uVar6);
  uVar11 = uVar5;
  if (iVar7 < 0) {
    uVar11 = bigadd(uVar5,param_4);
    freebn(uVar5);
  }
  uVar5 = bigsub(uVar11,uVar6);
  uVar8 = bigmul(param_6,param_5);
  uVar9 = bigmuladd(uVar8,uVar5,uVar6);
  uVar10 = bigmod(uVar9,param_3);
  freebn(uVar1);
  freebn(uVar2);
  freebn(uVar3);
  freebn(uVar4);
  freebn(uVar11);
  freebn(uVar6);
  freebn(uVar5);
  freebn(uVar8);
  freebn(uVar9);
  return uVar10;
}


lui gp,0x5
addiu gp,gp,-0x5f64
addu gp,gp,t9
addiu sp,sp,-0x48
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
sw gp,0x10(sp)
or s0,a0,zero
or s1,a1,zero
sw a2,0x50(sp)
or s4,a3,zero
or a0,a3,zero
lw t9,-0x7938(gp)
bal 0x0005d834
_nop
lw gp,0x10(sp)
or s3,v0,zero
or a0,v0,zero
lw t9,-0x7808(gp)
bal 0x0005ddf4
_nop
lw gp,0x10(sp)
lw a0,0x58(sp)
lw t9,-0x7938(gp)
bal 0x0005d834
_nop
lw gp,0x10(sp)
or s2,v0,zero
or a0,v0,zero
lw t9,-0x7808(gp)
bal 0x0005ddf4
_nop
lw gp,0x10(sp)
or a1,s3,zero
or a0,s1,zero
lw t9,-0x7920(gp)
bal 0x0005f7e8
_nop
lw gp,0x10(sp)
or s8,v0,zero
or a1,s2,zero
or a0,s1,zero
lw t9,-0x7920(gp)
bal 0x0005f7e8
_nop
lw gp,0x10(sp)
or s7,v0,zero
or a2,s4,zero
or a1,s8,zero
or a0,s0,zero
lw t9,-0x78f0(gp)
bal 0x0006071c
_nop
lw gp,0x10(sp)
or s1,v0,zero
lw a2,0x58(sp)
or a1,s7,zero
or a0,s0,zero
lw t9,-0x78f0(gp)
bal 0x0006071c
_nop
lw gp,0x10(sp)
or s0,v0,zero
or a1,v0,zero
or a0,s1,zero
lw t9,-0x7940(gp)
bal 0x0005e6f8
_nop
lw gp,0x10(sp)
bltz v0,0x0007a34c
_or a1,s4,zero
or a1,s0,zero
or a0,s1,zero
lw t9,-0x791c(gp)
bal 0x0005f1cc
_nop
lw gp,0x10(sp)
or s6,v0,zero
lw a1,0x58(sp)
lw a0,0x5c(sp)
lw t9,-0x792c(gp)
bal 0x0005f084
_nop
lw gp,0x10(sp)
or s5,v0,zero
or a2,s0,zero
or a1,s6,zero
or a0,v0,zero
lw t9,-0x793c(gp)
bal 0x0005ed7c
_nop
lw gp,0x10(sp)
or s4,v0,zero
lw a1,0x50(sp)
or a0,v0,zero
lw t9,-0x7920(gp)
bal 0x0005f7e8
_nop
lw gp,0x10(sp)
sw v0,0x1c(sp)
or a0,s3,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s2,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s8,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s7,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s1,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s0,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s6,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s5,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
or a0,s4,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
lw v0,0x1c(sp)
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
or a0,s1,zero
lw t9,-0x7924(gp)
bal 0x0005f0bc
_nop
lw gp,0x10(sp)
or s4,v0,zero
or a0,s1,zero
lw t9,-0x7a20(gp)
bal 0x0005d8bc
_nop
lw gp,0x10(sp)
b 0x0007a1f0
_or s1,s4,zero
(translation_unit "undefined4\ncrt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}\n\n" (function_definition "undefined4\ncrt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" type_identifier (function_declarator "crt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (expression_statement "uVar1 = copybn(param_4);" (assignment_expression "uVar1 = copybn(param_4)" identifier = (call_expression "copybn(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "decbn(uVar1);" (call_expression "decbn(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "uVar2 = copybn(param_5);" (assignment_expression "uVar2 = copybn(param_5)" identifier = (call_expression "copybn(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = bigmod(param_2,uVar1);" (assignment_expression "uVar3 = bigmod(param_2,uVar1)" identifier = (call_expression "bigmod(param_2,uVar1)" identifier (argument_list "(param_2,uVar1)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = bigmod(param_2,uVar2);" (assignment_expression "uVar4 = bigmod(param_2,uVar2)" identifier = (call_expression "bigmod(param_2,uVar2)" identifier (argument_list "(param_2,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar5 = modpow(param_1,uVar3,param_4);" (assignment_expression "uVar5 = modpow(param_1,uVar3,param_4)" identifier = (call_expression "modpow(param_1,uVar3,param_4)" identifier (argument_list "(param_1,uVar3,param_4)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = modpow(param_1,uVar4,param_5);" (assignment_expression "uVar6 = modpow(param_1,uVar4,param_5)" identifier = (call_expression "modpow(param_1,uVar4,param_5)" identifier (argument_list "(param_1,uVar4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,uVar6);" (assignment_expression "iVar7 = bignum_cmp(uVar5,uVar6)" identifier = (call_expression "bignum_cmp(uVar5,uVar6)" identifier (argument_list "(uVar5,uVar6)" ( identifier , identifier )))) ;) (expression_statement "uVar11 = uVar5;" (assignment_expression "uVar11 = uVar5" identifier = identifier) ;) (if_statement "if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" { (expression_statement "uVar11 = bigadd(uVar5,param_4);" (assignment_expression "uVar11 = bigadd(uVar5,param_4)" identifier = (call_expression "bigadd(uVar5,param_4)" identifier (argument_list "(uVar5,param_4)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) })) (expression_statement "uVar5 = bigsub(uVar11,uVar6);" (assignment_expression "uVar5 = bigsub(uVar11,uVar6)" identifier = (call_expression "bigsub(uVar11,uVar6)" identifier (argument_list "(uVar11,uVar6)" ( identifier , identifier )))) ;) (expression_statement "uVar8 = bigmul(param_6,param_5);" (assignment_expression "uVar8 = bigmul(param_6,param_5)" identifier = (call_expression "bigmul(param_6,param_5)" identifier (argument_list "(param_6,param_5)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = bigmuladd(uVar8,uVar5,uVar6);" (assignment_expression "uVar9 = bigmuladd(uVar8,uVar5,uVar6)" identifier = (call_expression "bigmuladd(uVar8,uVar5,uVar6)" identifier (argument_list "(uVar8,uVar5,uVar6)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = bigmod(uVar9,param_3);" (assignment_expression "uVar10 = bigmod(uVar9,param_3)" identifier = (call_expression "bigmod(uVar9,param_3)" identifier (argument_list "(uVar9,param_3)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar1);" (call_expression "freebn(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "freebn(uVar4);" (call_expression "freebn(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "freebn(uVar11);" (call_expression "freebn(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "freebn(uVar8);" (call_expression "freebn(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "freebn(uVar9);" (call_expression "freebn(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (return_statement "return uVar10;" return identifier ;) })))
(translation_unit "Bignum crt_modpow(Bignum base,Bignum exp,Bignum mod,Bignum p,Bignum q,Bignum iqmp)\n\n{\n  Bignum_conflict bn;\n  Bignum_conflict pBVar1;\n  Bignum_conflict pBVar2;\n  int iVar3;\n  Bignum_conflict a;\n  \n  bn = copybn((Bignum_conflict)p);\n  decbn(bn);\n  pBVar1 = copybn((Bignum_conflict)q);\n  decbn(pBVar1);\n  pBVar2 = bigmod((Bignum_conflict)exp,bn);\n  pBVar1 = bigmod((Bignum_conflict)exp,pBVar1);\n  pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p);\n  pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q);\n  iVar3 = bignum_cmp(pBVar2,pBVar1);\n  if (-1 < iVar3) {\n    pBVar2 = bigsub(pBVar2,pBVar1);\n    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);\n    pBVar1 = bigmuladd(a,pBVar2,pBVar1);\n    bigmod(pBVar1,(Bignum_conflict)mod);\n                    /* WARNING: Subroutine does not return */\n    freebn(bn);\n  }\n                    /* WARNING: Subroutine does not return */\n  bigadd(pBVar2,(Bignum_conflict)p);\n}\n\n" (function_definition "Bignum crt_modpow(Bignum base,Bignum exp,Bignum mod,Bignum p,Bignum q,Bignum iqmp)\n\n{\n  Bignum_conflict bn;\n  Bignum_conflict pBVar1;\n  Bignum_conflict pBVar2;\n  int iVar3;\n  Bignum_conflict a;\n  \n  bn = copybn((Bignum_conflict)p);\n  decbn(bn);\n  pBVar1 = copybn((Bignum_conflict)q);\n  decbn(pBVar1);\n  pBVar2 = bigmod((Bignum_conflict)exp,bn);\n  pBVar1 = bigmod((Bignum_conflict)exp,pBVar1);\n  pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p);\n  pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q);\n  iVar3 = bignum_cmp(pBVar2,pBVar1);\n  if (-1 < iVar3) {\n    pBVar2 = bigsub(pBVar2,pBVar1);\n    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);\n    pBVar1 = bigmuladd(a,pBVar2,pBVar1);\n    bigmod(pBVar1,(Bignum_conflict)mod);\n                    /* WARNING: Subroutine does not return */\n    freebn(bn);\n  }\n                    /* WARNING: Subroutine does not return */\n  bigadd(pBVar2,(Bignum_conflict)p);\n}" type_identifier (function_declarator "crt_modpow(Bignum base,Bignum exp,Bignum mod,Bignum p,Bignum q,Bignum iqmp)" identifier (parameter_list "(Bignum base,Bignum exp,Bignum mod,Bignum p,Bignum q,Bignum iqmp)" ( (parameter_declaration "Bignum base" type_identifier identifier) , (parameter_declaration "Bignum exp" type_identifier identifier) , (parameter_declaration "Bignum mod" type_identifier identifier) , (parameter_declaration "Bignum p" type_identifier identifier) , (parameter_declaration "Bignum q" type_identifier identifier) , (parameter_declaration "Bignum iqmp" type_identifier identifier) ))) (compound_statement "{\n  Bignum_conflict bn;\n  Bignum_conflict pBVar1;\n  Bignum_conflict pBVar2;\n  int iVar3;\n  Bignum_conflict a;\n  \n  bn = copybn((Bignum_conflict)p);\n  decbn(bn);\n  pBVar1 = copybn((Bignum_conflict)q);\n  decbn(pBVar1);\n  pBVar2 = bigmod((Bignum_conflict)exp,bn);\n  pBVar1 = bigmod((Bignum_conflict)exp,pBVar1);\n  pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p);\n  pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q);\n  iVar3 = bignum_cmp(pBVar2,pBVar1);\n  if (-1 < iVar3) {\n    pBVar2 = bigsub(pBVar2,pBVar1);\n    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);\n    pBVar1 = bigmuladd(a,pBVar2,pBVar1);\n    bigmod(pBVar1,(Bignum_conflict)mod);\n                    /* WARNING: Subroutine does not return */\n    freebn(bn);\n  }\n                    /* WARNING: Subroutine does not return */\n  bigadd(pBVar2,(Bignum_conflict)p);\n}" { (declaration "Bignum_conflict bn;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar1;" type_identifier identifier ;) (declaration "Bignum_conflict pBVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Bignum_conflict a;" type_identifier identifier ;) (expression_statement "bn = copybn((Bignum_conflict)p);" (assignment_expression "bn = copybn((Bignum_conflict)p)" identifier = (call_expression "copybn((Bignum_conflict)p)" identifier (argument_list "((Bignum_conflict)p)" ( (cast_expression "(Bignum_conflict)p" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "decbn(bn);" (call_expression "decbn(bn)" identifier (argument_list "(bn)" ( identifier ))) ;) (expression_statement "pBVar1 = copybn((Bignum_conflict)q);" (assignment_expression "pBVar1 = copybn((Bignum_conflict)q)" identifier = (call_expression "copybn((Bignum_conflict)q)" identifier (argument_list "((Bignum_conflict)q)" ( (cast_expression "(Bignum_conflict)q" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "decbn(pBVar1);" (call_expression "decbn(pBVar1)" identifier (argument_list "(pBVar1)" ( identifier ))) ;) (expression_statement "pBVar2 = bigmod((Bignum_conflict)exp,bn);" (assignment_expression "pBVar2 = bigmod((Bignum_conflict)exp,bn)" identifier = (call_expression "bigmod((Bignum_conflict)exp,bn)" identifier (argument_list "((Bignum_conflict)exp,bn)" ( (cast_expression "(Bignum_conflict)exp" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , identifier )))) ;) (expression_statement "pBVar1 = bigmod((Bignum_conflict)exp,pBVar1);" (assignment_expression "pBVar1 = bigmod((Bignum_conflict)exp,pBVar1)" identifier = (call_expression "bigmod((Bignum_conflict)exp,pBVar1)" identifier (argument_list "((Bignum_conflict)exp,pBVar1)" ( (cast_expression "(Bignum_conflict)exp" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , identifier )))) ;) (expression_statement "pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p);" (assignment_expression "pBVar2 = modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p)" identifier = (call_expression "modpow((Bignum_conflict)base,pBVar2,(Bignum_conflict)p)" identifier (argument_list "((Bignum_conflict)base,pBVar2,(Bignum_conflict)p)" ( (cast_expression "(Bignum_conflict)base" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , identifier , (cast_expression "(Bignum_conflict)p" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q);" (assignment_expression "pBVar1 = modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q)" identifier = (call_expression "modpow((Bignum_conflict)base,pBVar1,(Bignum_conflict)q)" identifier (argument_list "((Bignum_conflict)base,pBVar1,(Bignum_conflict)q)" ( (cast_expression "(Bignum_conflict)base" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , identifier , (cast_expression "(Bignum_conflict)q" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "iVar3 = bignum_cmp(pBVar2,pBVar1);" (assignment_expression "iVar3 = bignum_cmp(pBVar2,pBVar1)" identifier = (call_expression "bignum_cmp(pBVar2,pBVar1)" identifier (argument_list "(pBVar2,pBVar1)" ( identifier , identifier )))) ;) (if_statement "if (-1 < iVar3) {\n    pBVar2 = bigsub(pBVar2,pBVar1);\n    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);\n    pBVar1 = bigmuladd(a,pBVar2,pBVar1);\n    bigmod(pBVar1,(Bignum_conflict)mod);\n                    /* WARNING: Subroutine does not return */\n    freebn(bn);\n  }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n    pBVar2 = bigsub(pBVar2,pBVar1);\n    a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);\n    pBVar1 = bigmuladd(a,pBVar2,pBVar1);\n    bigmod(pBVar1,(Bignum_conflict)mod);\n                    /* WARNING: Subroutine does not return */\n    freebn(bn);\n  }" { (expression_statement "pBVar2 = bigsub(pBVar2,pBVar1);" (assignment_expression "pBVar2 = bigsub(pBVar2,pBVar1)" identifier = (call_expression "bigsub(pBVar2,pBVar1)" identifier (argument_list "(pBVar2,pBVar1)" ( identifier , identifier )))) ;) (expression_statement "a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q);" (assignment_expression "a = bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q)" identifier = (call_expression "bigmul((Bignum_conflict)iqmp,(Bignum_conflict)q)" identifier (argument_list "((Bignum_conflict)iqmp,(Bignum_conflict)q)" ( (cast_expression "(Bignum_conflict)iqmp" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , (cast_expression "(Bignum_conflict)q" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) )))) ;) (expression_statement "pBVar1 = bigmuladd(a,pBVar2,pBVar1);" (assignment_expression "pBVar1 = bigmuladd(a,pBVar2,pBVar1)" identifier = (call_expression "bigmuladd(a,pBVar2,pBVar1)" identifier (argument_list "(a,pBVar2,pBVar1)" ( identifier , identifier , identifier )))) ;) (expression_statement "bigmod(pBVar1,(Bignum_conflict)mod);" (call_expression "bigmod(pBVar1,(Bignum_conflict)mod)" identifier (argument_list "(pBVar1,(Bignum_conflict)mod)" ( identifier , (cast_expression "(Bignum_conflict)mod" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) ))) ;) comment (expression_statement "freebn(bn);" (call_expression "freebn(bn)" identifier (argument_list "(bn)" ( identifier ))) ;) })) comment (expression_statement "bigadd(pBVar2,(Bignum_conflict)p);" (call_expression "bigadd(pBVar2,(Bignum_conflict)p)" identifier (argument_list "(pBVar2,(Bignum_conflict)p)" ( identifier , (cast_expression "(Bignum_conflict)p" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) ))) ;) })))
(translation_unit "undefined4\ncrt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}\n\n" (function_definition "undefined4\ncrt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" type_identifier (function_declarator "crt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (expression_statement "uVar1 = copybn(param_4);" (assignment_expression "uVar1 = copybn(param_4)" identifier = (call_expression "copybn(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "decbn(uVar1);" (call_expression "decbn(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "uVar2 = copybn(param_5);" (assignment_expression "uVar2 = copybn(param_5)" identifier = (call_expression "copybn(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar3 = bigmod(param_2,uVar1);" (assignment_expression "uVar3 = bigmod(param_2,uVar1)" identifier = (call_expression "bigmod(param_2,uVar1)" identifier (argument_list "(param_2,uVar1)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = bigmod(param_2,uVar2);" (assignment_expression "uVar4 = bigmod(param_2,uVar2)" identifier = (call_expression "bigmod(param_2,uVar2)" identifier (argument_list "(param_2,uVar2)" ( identifier , identifier )))) ;) (expression_statement "uVar5 = modpow(param_1,uVar3,param_4);" (assignment_expression "uVar5 = modpow(param_1,uVar3,param_4)" identifier = (call_expression "modpow(param_1,uVar3,param_4)" identifier (argument_list "(param_1,uVar3,param_4)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = modpow(param_1,uVar4,param_5);" (assignment_expression "uVar6 = modpow(param_1,uVar4,param_5)" identifier = (call_expression "modpow(param_1,uVar4,param_5)" identifier (argument_list "(param_1,uVar4,param_5)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar7 = bignum_cmp(uVar5,uVar6);" (assignment_expression "iVar7 = bignum_cmp(uVar5,uVar6)" identifier = (call_expression "bignum_cmp(uVar5,uVar6)" identifier (argument_list "(uVar5,uVar6)" ( identifier , identifier )))) ;) (expression_statement "uVar11 = uVar5;" (assignment_expression "uVar11 = uVar5" identifier = identifier) ;) (if_statement "if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" { (expression_statement "uVar11 = bigadd(uVar5,param_4);" (assignment_expression "uVar11 = bigadd(uVar5,param_4)" identifier = (call_expression "bigadd(uVar5,param_4)" identifier (argument_list "(uVar5,param_4)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) })) (expression_statement "uVar5 = bigsub(uVar11,uVar6);" (assignment_expression "uVar5 = bigsub(uVar11,uVar6)" identifier = (call_expression "bigsub(uVar11,uVar6)" identifier (argument_list "(uVar11,uVar6)" ( identifier , identifier )))) ;) (expression_statement "uVar8 = bigmul(param_6,param_5);" (assignment_expression "uVar8 = bigmul(param_6,param_5)" identifier = (call_expression "bigmul(param_6,param_5)" identifier (argument_list "(param_6,param_5)" ( identifier , identifier )))) ;) (expression_statement "uVar9 = bigmuladd(uVar8,uVar5,uVar6);" (assignment_expression "uVar9 = bigmuladd(uVar8,uVar5,uVar6)" identifier = (call_expression "bigmuladd(uVar8,uVar5,uVar6)" identifier (argument_list "(uVar8,uVar5,uVar6)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar10 = bigmod(uVar9,param_3);" (assignment_expression "uVar10 = bigmod(uVar9,param_3)" identifier = (call_expression "bigmod(uVar9,param_3)" identifier (argument_list "(uVar9,param_3)" ( identifier , identifier )))) ;) (expression_statement "freebn(uVar1);" (call_expression "freebn(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "freebn(uVar4);" (call_expression "freebn(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "freebn(uVar11);" (call_expression "freebn(uVar11)" identifier (argument_list "(uVar11)" ( identifier ))) ;) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))) ;) (expression_statement "freebn(uVar8);" (call_expression "freebn(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (expression_statement "freebn(uVar9);" (call_expression "freebn(uVar9)" identifier (argument_list "(uVar9)" ( identifier ))) ;) (return_statement "return uVar10;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4\ncrt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" (type_identifier "undefined4") (function_declarator "crt_modpow(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" (identifier "crt_modpow") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n          undefined4 param_5,undefined4 param_6)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  \n  uVar1 = copybn(param_4);\n  decbn(uVar1);\n  uVar2 = copybn(param_5);\n  decbn(uVar2);\n  uVar3 = bigmod(param_2,uVar1);\n  uVar4 = bigmod(param_2,uVar2);\n  uVar5 = modpow(param_1,uVar3,param_4);\n  uVar6 = modpow(param_1,uVar4,param_5);\n  iVar7 = bignum_cmp(uVar5,uVar6);\n  uVar11 = uVar5;\n  if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }\n  uVar5 = bigsub(uVar11,uVar6);\n  uVar8 = bigmul(param_6,param_5);\n  uVar9 = bigmuladd(uVar8,uVar5,uVar6);\n  uVar10 = bigmod(uVar9,param_3);\n  freebn(uVar1);\n  freebn(uVar2);\n  freebn(uVar3);\n  freebn(uVar4);\n  freebn(uVar11);\n  freebn(uVar6);\n  freebn(uVar5);\n  freebn(uVar8);\n  freebn(uVar9);\n  return uVar10;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (expression_statement "uVar1 = copybn(param_4);" (assignment_expression "uVar1 = copybn(param_4)" (identifier "uVar1") (= "=") (call_expression "copybn(param_4)" (identifier "copybn") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "decbn(uVar1);" (call_expression "decbn(uVar1)" (identifier "decbn") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "uVar2 = copybn(param_5);" (assignment_expression "uVar2 = copybn(param_5)" (identifier "uVar2") (= "=") (call_expression "copybn(param_5)" (identifier "copybn") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "decbn(uVar2);" (call_expression "decbn(uVar2)" (identifier "decbn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar3 = bigmod(param_2,uVar1);" (assignment_expression "uVar3 = bigmod(param_2,uVar1)" (identifier "uVar3") (= "=") (call_expression "bigmod(param_2,uVar1)" (identifier "bigmod") (argument_list "(param_2,uVar1)" (( "(") (identifier "param_2") (, ",") (identifier "uVar1") () ")")))) (; ";")) (expression_statement "uVar4 = bigmod(param_2,uVar2);" (assignment_expression "uVar4 = bigmod(param_2,uVar2)" (identifier "uVar4") (= "=") (call_expression "bigmod(param_2,uVar2)" (identifier "bigmod") (argument_list "(param_2,uVar2)" (( "(") (identifier "param_2") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "uVar5 = modpow(param_1,uVar3,param_4);" (assignment_expression "uVar5 = modpow(param_1,uVar3,param_4)" (identifier "uVar5") (= "=") (call_expression "modpow(param_1,uVar3,param_4)" (identifier "modpow") (argument_list "(param_1,uVar3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar6 = modpow(param_1,uVar4,param_5);" (assignment_expression "uVar6 = modpow(param_1,uVar4,param_5)" (identifier "uVar6") (= "=") (call_expression "modpow(param_1,uVar4,param_5)" (identifier "modpow") (argument_list "(param_1,uVar4,param_5)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "iVar7 = bignum_cmp(uVar5,uVar6);" (assignment_expression "iVar7 = bignum_cmp(uVar5,uVar6)" (identifier "iVar7") (= "=") (call_expression "bignum_cmp(uVar5,uVar6)" (identifier "bignum_cmp") (argument_list "(uVar5,uVar6)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "uVar11 = uVar5;" (assignment_expression "uVar11 = uVar5" (identifier "uVar11") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (iVar7 < 0) {\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = bigadd(uVar5,param_4);\n    freebn(uVar5);\n  }" ({ "{") (expression_statement "uVar11 = bigadd(uVar5,param_4);" (assignment_expression "uVar11 = bigadd(uVar5,param_4)" (identifier "uVar11") (= "=") (call_expression "bigadd(uVar5,param_4)" (identifier "bigadd") (argument_list "(uVar5,param_4)" (( "(") (identifier "uVar5") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = bigsub(uVar11,uVar6);" (assignment_expression "uVar5 = bigsub(uVar11,uVar6)" (identifier "uVar5") (= "=") (call_expression "bigsub(uVar11,uVar6)" (identifier "bigsub") (argument_list "(uVar11,uVar6)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "uVar8 = bigmul(param_6,param_5);" (assignment_expression "uVar8 = bigmul(param_6,param_5)" (identifier "uVar8") (= "=") (call_expression "bigmul(param_6,param_5)" (identifier "bigmul") (argument_list "(param_6,param_5)" (( "(") (identifier "param_6") (, ",") (identifier "param_5") () ")")))) (; ";")) (expression_statement "uVar9 = bigmuladd(uVar8,uVar5,uVar6);" (assignment_expression "uVar9 = bigmuladd(uVar8,uVar5,uVar6)" (identifier "uVar9") (= "=") (call_expression "bigmuladd(uVar8,uVar5,uVar6)" (identifier "bigmuladd") (argument_list "(uVar8,uVar5,uVar6)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar5") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "uVar10 = bigmod(uVar9,param_3);" (assignment_expression "uVar10 = bigmod(uVar9,param_3)" (identifier "uVar10") (= "=") (call_expression "bigmod(uVar9,param_3)" (identifier "bigmod") (argument_list "(uVar9,param_3)" (( "(") (identifier "uVar9") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "freebn(uVar1);" (call_expression "freebn(uVar1)" (identifier "freebn") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "freebn(uVar2);" (call_expression "freebn(uVar2)" (identifier "freebn") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "freebn(uVar4);" (call_expression "freebn(uVar4)" (identifier "freebn") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "freebn(uVar11);" (call_expression "freebn(uVar11)" (identifier "freebn") (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "freebn(uVar6);" (call_expression "freebn(uVar6)" (identifier "freebn") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "freebn(uVar5);" (call_expression "freebn(uVar5)" (identifier "freebn") (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "freebn(uVar8);" (call_expression "freebn(uVar8)" (identifier "freebn") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "freebn(uVar9);" (call_expression "freebn(uVar9)" (identifier "freebn") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")"))) (; ";")) (return_statement "return uVar10;" (return "return") (identifier "uVar10") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (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: (primitive_type) 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: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (identifier)))))

undefined4
MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
          undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  
  uVar1 = copybn(param_4);
  decbn(uVar1);
  uVar2 = copybn(param_5);
  decbn(uVar2);
  uVar3 = bigmod(param_2,uVar1);
  uVar4 = bigmod(param_2,uVar2);
  uVar5 = modpow(param_1,uVar3,param_4);
  uVar6 = modpow(param_1,uVar4,param_5);
  iVar7 = bignum_cmp(uVar5,uVar6);
  uVar11 = uVar5;
  if (iVar7 < 0) {
    uVar11 = bigadd(uVar5,param_4);
    freebn(uVar5);
  }
  uVar5 = bigsub(uVar11,uVar6);
  uVar8 = bigmul(param_6,param_5);
  uVar9 = bigmuladd(uVar8,uVar5,uVar6);
  uVar10 = bigmod(uVar9,param_3);
  freebn(uVar1);
  freebn(uVar2);
  freebn(uVar3);
  freebn(uVar4);
  freebn(uVar11);
  freebn(uVar6);
  freebn(uVar5);
  freebn(uVar8);
  freebn(uVar9);
  return uVar10;
}

