
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

Bignum ecf_add(Bignum a,Bignum b,ec_curve *curve)

{
  Bignum_conflict a_00;
  Bignum_conflict b_00;
  
  a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p);
  b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p);
                    /* WARNING: Subroutine does not return */
  bigadd(a_00,b_00);
}



undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));
  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));
  uVar3 = bigadd(uVar1,uVar2);
  freebn(uVar1);
  freebn(uVar2);
  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));
  freebn(uVar3);
  return uVar1;
}


lui gp,0xb
addiu gp,gp,-0x1bbc
addu gp,gp,t9
addiu sp,sp,-0x30
sw ra,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
or s1,a1,zero
or s0,a2,zero
lw a1,0x10(a2)
lw t9,-0x7958(gp)
bal 0x00070708
_nop
lw gp,0x10(sp)
or s3,v0,zero
lw a1,0x10(s0)
or a0,s1,zero
lw t9,-0x7958(gp)
bal 0x00070708
_nop
lw gp,0x10(sp)
or s2,v0,zero
or a1,v0,zero
or a0,s3,zero
lw t9,-0x795c(gp)
bal 0x0006ffdc
_nop
lw gp,0x10(sp)
or s1,v0,zero
or a0,s3,zero
lw t9,-0x7a5c(gp)
bal 0x0006e7dc
_nop
lw gp,0x10(sp)
or a0,s2,zero
lw t9,-0x7a5c(gp)
bal 0x0006e7dc
_nop
lw gp,0x10(sp)
lw a1,0x10(s0)
or a0,s1,zero
lw t9,-0x7958(gp)
bal 0x00070708
_nop
lw gp,0x10(sp)
or s0,v0,zero
or a0,s1,zero
lw t9,-0x7a5c(gp)
bal 0x0006e7dc
_nop
lw gp,0x10(sp)
or v0,s0,zero
lw ra,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
(translation_unit "undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}\n\n" (function_definition "undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(param_1,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(param_2,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar3 = bigadd(uVar1,uVar2);" (assignment_expression "uVar3 = bigadd(uVar1,uVar2)" identifier = (call_expression "bigadd(uVar1,uVar2)" identifier (argument_list "(uVar1,uVar2)" ( 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 "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(uVar3,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nBignum ecf_add(Bignum a,Bignum b,ec_curve *curve)\n\n{\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  \n  a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p);\n  b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p);\n                    /* WARNING: Subroutine does not return */\n  bigadd(a_00,b_00);\n}\n\n" comment (function_definition "Bignum ecf_add(Bignum a,Bignum b,ec_curve *curve)\n\n{\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  \n  a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p);\n  b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p);\n                    /* WARNING: Subroutine does not return */\n  bigadd(a_00,b_00);\n}" type_identifier (function_declarator "ecf_add(Bignum a,Bignum b,ec_curve *curve)" identifier (parameter_list "(Bignum a,Bignum b,ec_curve *curve)" ( (parameter_declaration "Bignum a" type_identifier identifier) , (parameter_declaration "Bignum b" type_identifier identifier) , (parameter_declaration "ec_curve *curve" type_identifier (pointer_declarator "*curve" * identifier)) ))) (compound_statement "{\n  Bignum_conflict a_00;\n  Bignum_conflict b_00;\n  \n  a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p);\n  b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p);\n                    /* WARNING: Subroutine does not return */\n  bigadd(a_00,b_00);\n}" { (declaration "Bignum_conflict a_00;" type_identifier identifier ;) (declaration "Bignum_conflict b_00;" type_identifier identifier ;) (expression_statement "a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p);" (assignment_expression "a_00 = bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p)" identifier = (call_expression "bigmod((Bignum_conflict)a,(Bignum_conflict)curve->p)" identifier (argument_list "((Bignum_conflict)a,(Bignum_conflict)curve->p)" ( (cast_expression "(Bignum_conflict)a" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) (expression_statement "b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p);" (assignment_expression "b_00 = bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p)" identifier = (call_expression "bigmod((Bignum_conflict)b,(Bignum_conflict)curve->p)" identifier (argument_list "((Bignum_conflict)b,(Bignum_conflict)curve->p)" ( (cast_expression "(Bignum_conflict)b" ( (type_descriptor "Bignum_conflict" type_identifier) ) identifier) , (cast_expression "(Bignum_conflict)curve->p" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "curve->p" identifier -> field_identifier)) )))) ;) comment (expression_statement "bigadd(a_00,b_00);" (call_expression "bigadd(a_00,b_00)" identifier (argument_list "(a_00,b_00)" ( identifier , identifier ))) ;) })))
(translation_unit "undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}\n\n" (function_definition "undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}" type_identifier (function_declarator "FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(param_1,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(param_2,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "uVar3 = bigadd(uVar1,uVar2);" (assignment_expression "uVar3 = bigadd(uVar1,uVar2)" identifier = (call_expression "bigadd(uVar1,uVar2)" identifier (argument_list "(uVar1,uVar2)" ( 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 "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" identifier = (call_expression "bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" identifier (argument_list "(uVar3,*(undefined4 *)(param_3 + 0x10))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 0x10)" * (cast_expression "(undefined4 *)(param_3 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) )))) )))) ;) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (return_statement "return uVar1;" 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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0007ae6c(undefined4 param_1,undefined4 param_2,int param_3)" (identifier "FUN_0007ae6c") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  \n  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));\n  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));\n  uVar3 = bigadd(uVar1,uVar2);\n  freebn(uVar1);\n  freebn(uVar2);\n  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));\n  freebn(uVar3);\n  return uVar1;\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") (; ";")) (expression_statement "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" (identifier "uVar1") (= "=") (call_expression "bigmod(param_1,*(undefined4 *)(param_3 + 0x10))" (identifier "bigmod") (argument_list "(param_1,*(undefined4 *)(param_3 + 0x10))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" (identifier "uVar2") (= "=") (call_expression "bigmod(param_2,*(undefined4 *)(param_3 + 0x10))" (identifier "bigmod") (argument_list "(param_2,*(undefined4 *)(param_3 + 0x10))" (( "(") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar3 = bigadd(uVar1,uVar2);" (assignment_expression "uVar3 = bigadd(uVar1,uVar2)" (identifier "uVar3") (= "=") (call_expression "bigadd(uVar1,uVar2)" (identifier "bigadd") (argument_list "(uVar1,uVar2)" (( "(") (identifier "uVar1") (, ",") (identifier "uVar2") () ")")))) (; ";")) (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 "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));" (assignment_expression "uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" (identifier "uVar1") (= "=") (call_expression "bigmod(uVar3,*(undefined4 *)(param_3 + 0x10))" (identifier "bigmod") (argument_list "(uVar3,*(undefined4 *)(param_3 + 0x10))" (( "(") (identifier "uVar3") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "freebn(uVar3);" (call_expression "freebn(uVar3)" (identifier "freebn") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))
(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: (primitive_type) declarator: (identifier)))) body: (compound_statement (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) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (identifier)))))

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

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  uVar1 = bigmod(param_1,*(undefined4 *)(param_3 + 0x10));
  uVar2 = bigmod(param_2,*(undefined4 *)(param_3 + 0x10));
  uVar3 = bigadd(uVar1,uVar2);
  freebn(uVar1);
  freebn(uVar2);
  uVar1 = bigmod(uVar3,*(undefined4 *)(param_3 + 0x10));
  freebn(uVar3);
  return uVar1;
}

