
mp_limb_t DO_mpn_sublsh_n(mp_ptr dst,mp_srcptr src,mp_size_t n,uint s,mp_ptr ws)

{
  long lVar1;
  long lVar2;
  undefined4 in_register_0000000c;
  
  lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s));
  lVar2 = __gmpn_sub_n(dst,dst,ws,n);
  return lVar2 + lVar1;
}



long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5)

{
  long lVar1;
  long lVar2;
  
  lVar1 = __gmpn_lshift(param_5);
  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);
  return lVar2 + lVar1;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,RDI
MOV R12,RDX
MOV RBP,R8
MOV RDI,R8
CALL 0x0010b320
MOV R13,RAX
MOV RCX,R12
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,RBX
CALL 0x0010b440
ADD RAX,R13
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}\n\n" (function_definition "long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = __gmpn_lshift(param_5);" (assignment_expression "lVar1 = __gmpn_lshift(param_5)" identifier = (call_expression "__gmpn_lshift(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);" (assignment_expression "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3)" identifier = (call_expression "__gmpn_sub_n(param_1,param_1,param_5,param_3)" identifier (argument_list "(param_1,param_1,param_5,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return lVar2 + lVar1;" return (binary_expression "lVar2 + lVar1" identifier + identifier) ;) })))
(translation_unit "mp_limb_t DO_mpn_sublsh_n(mp_ptr dst,mp_srcptr src,mp_size_t n,uint s,mp_ptr ws)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined4 in_register_0000000c;\n  \n  lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s));\n  lVar2 = __gmpn_sub_n(dst,dst,ws,n);\n  return lVar2 + lVar1;\n}\n\n" (function_definition "mp_limb_t DO_mpn_sublsh_n(mp_ptr dst,mp_srcptr src,mp_size_t n,uint s,mp_ptr ws)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined4 in_register_0000000c;\n  \n  lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s));\n  lVar2 = __gmpn_sub_n(dst,dst,ws,n);\n  return lVar2 + lVar1;\n}" type_identifier (function_declarator "DO_mpn_sublsh_n(mp_ptr dst,mp_srcptr src,mp_size_t n,uint s,mp_ptr ws)" identifier (parameter_list "(mp_ptr dst,mp_srcptr src,mp_size_t n,uint s,mp_ptr ws)" ( (parameter_declaration "mp_ptr dst" type_identifier identifier) , (parameter_declaration "mp_srcptr src" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "uint s" type_identifier identifier) , (parameter_declaration "mp_ptr ws" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined4 in_register_0000000c;\n  \n  lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s));\n  lVar2 = __gmpn_sub_n(dst,dst,ws,n);\n  return lVar2 + lVar1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 in_register_0000000c;" type_identifier identifier ;) (expression_statement "lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s));" (assignment_expression "lVar1 = __gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s))" identifier = (call_expression "__gmpn_lshift(ws,src,n,CONCAT44(in_register_0000000c,s))" identifier (argument_list "(ws,src,n,CONCAT44(in_register_0000000c,s))" ( identifier , identifier , identifier , (call_expression "CONCAT44(in_register_0000000c,s)" identifier (argument_list "(in_register_0000000c,s)" ( identifier , identifier ))) )))) ;) (expression_statement "lVar2 = __gmpn_sub_n(dst,dst,ws,n);" (assignment_expression "lVar2 = __gmpn_sub_n(dst,dst,ws,n)" identifier = (call_expression "__gmpn_sub_n(dst,dst,ws,n)" identifier (argument_list "(dst,dst,ws,n)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return lVar2 + lVar1;" return (binary_expression "lVar2 + lVar1" identifier + identifier) ;) })))
(translation_unit "long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}\n\n" (function_definition "long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar1 = __gmpn_lshift(param_5);" (assignment_expression "lVar1 = __gmpn_lshift(param_5)" identifier = (call_expression "__gmpn_lshift(param_5)" identifier (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);" (assignment_expression "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3)" identifier = (call_expression "__gmpn_sub_n(param_1,param_1,param_5,param_3)" identifier (argument_list "(param_1,param_1,param_5,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return lVar2 + lVar1;" return (binary_expression "lVar2 + lVar1" identifier + identifier) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (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) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })))
(function_definition "long FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)\n\n{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00147a73(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" (identifier "FUN_00147a73") (parameter_list "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  \n  lVar1 = __gmpn_lshift(param_5);\n  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);\n  return lVar2 + lVar1;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (expression_statement "lVar1 = __gmpn_lshift(param_5);" (assignment_expression "lVar1 = __gmpn_lshift(param_5)" (identifier "lVar1") (= "=") (call_expression "__gmpn_lshift(param_5)" (identifier "__gmpn_lshift") (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);" (assignment_expression "lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3)" (identifier "lVar2") (= "=") (call_expression "__gmpn_sub_n(param_1,param_1,param_5,param_3)" (identifier "__gmpn_sub_n") (argument_list "(param_1,param_1,param_5,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (identifier "param_5") (, ",") (identifier "param_3") () ")")))) (; ";")) (return_statement "return lVar2 + lVar1;" (return "return") (binary_expression "lVar2 + lVar1" (identifier "lVar2") (+ "+") (identifier "lVar1")) (; ";")) (} "}")))

type_1 function_1(type_2 dst,type_3 src,type_4 n,type_5 s,type_2 ws)

{
  long var_5;
  long var_4;
  type_6 in_register_0000000c;
  
  var_5 = var_1(ws,src,n,var_2(in_register_0000000c,s));
  var_4 = var_3(dst,dst,ws,n);
  return var_4 + var_5;
}


(translation_unit (function_definition type: (sized_type_specifier) 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)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (return_statement (binary_expression left: (identifier) right: (identifier))))))

long MASKED(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5)

{
  long lVar1;
  long lVar2;
  
  lVar1 = __gmpn_lshift(param_5);
  lVar2 = __gmpn_sub_n(param_1,param_1,param_5,param_3);
  return lVar2 + lVar1;
}

