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

ec_curve * ec_p256(void)

{
  if (ec_p256::initialised != '\0') {
    return &ec_p256::curve;
  }
  initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,
                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,
                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy);
  ec_p256::curve.name = "nistp256";
  ec_p256::curve.textname = "nistp256";
  ec_p256::initialised = '\x01';
  return &ec_p256::curve;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined * FUN_0013f08a(void)

{
  if (DAT_001835a8 != '\0') {
    return &DAT_00183540;
  }
  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,
               &DAT_0016ac40,&DAT_0016ac20);
  _DAT_00183548 = "nistp256";
  _DAT_00183550 = "nistp256";
  DAT_001835a8 = 1;
  return &DAT_00183540;
}


CMP byte ptr [0x001835a8],0x0
JZ 0x0013f09b
LEA RAX,[0x183540]
RET
SUB RSP,0x8
LEA RAX,[0x16ac20]
PUSH RAX
LEA RAX,[0x16ac40]
PUSH RAX
LEA R9,[0x16ac60]
LEA R8,[0x16ac80]
LEA RCX,[0x16aca0]
LEA RDX,[0x16acc0]
MOV ESI,0x100
LEA RDI,[0x183540]
CALL 0x0013efee
LEA RAX,[0x16a73e]
MOV qword ptr [0x00183548],RAX
MOV qword ptr [0x00183550],RAX
MOV byte ptr [0x001835a8],0x1
LEA RAX,[0x183540]
ADD RSP,0x18
RET
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined * FUN_0013f08a(void)\n\n{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}\n\n" comment (function_definition "undefined * FUN_0013f08a(void)\n\n{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" type_identifier (pointer_declarator "* FUN_0013f08a(void)" * (function_declarator "FUN_0013f08a(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" { (if_statement "if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }" if (parenthesized_expression "(DAT_001835a8 != '\0')" ( (binary_expression "DAT_001835a8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return &DAT_00183540;\n  }" { (return_statement "return &DAT_00183540;" return (pointer_expression "&DAT_00183540" & identifier) ;) })) (expression_statement "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);" (call_expression "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" identifier (argument_list "(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" ( (pointer_expression "&DAT_00183540" & identifier) , number_literal , (pointer_expression "&DAT_0016acc0" & identifier) , (pointer_expression "&DAT_0016aca0" & identifier) , (pointer_expression "&DAT_0016ac80" & identifier) , (pointer_expression "&DAT_0016ac60" & identifier) , (pointer_expression "&DAT_0016ac40" & identifier) , (pointer_expression "&DAT_0016ac20" & identifier) ))) ;) (expression_statement "_DAT_00183548 = "nistp256";" (assignment_expression "_DAT_00183548 = "nistp256"" identifier = (string_literal ""nistp256"" " string_content ")) ;) (expression_statement "_DAT_00183550 = "nistp256";" (assignment_expression "_DAT_00183550 = "nistp256"" identifier = (string_literal ""nistp256"" " string_content ")) ;) (expression_statement "DAT_001835a8 = 1;" (assignment_expression "DAT_001835a8 = 1" identifier = number_literal) ;) (return_statement "return &DAT_00183540;" return (pointer_expression "&DAT_00183540" & identifier) ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nec_curve * ec_p256(void)\n\n{\n  if (ec_p256::initialised != '\0') {\n    return &ec_p256::curve;\n  }\n  initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy);\n  ec_p256::curve.name = "nistp256";\n  ec_p256::curve.textname = "nistp256";\n  ec_p256::initialised = '\x01';\n  return &ec_p256::curve;\n}\n\n" comment comment (function_definition "ec_curve * ec_p256(void)\n\n{\n  if (ec_p256::initialised != '\0') {\n    return &ec_p256::curve;\n  }\n  initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy);\n  ec_p256::curve.name = "nistp256";\n  ec_p256::curve.textname = "nistp256";\n  ec_p256::initialised = '\x01';\n  return &ec_p256::curve;\n}" type_identifier (pointer_declarator "* ec_p256(void)" * (function_declarator "ec_p256(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  if (ec_p256::initialised != '\0') {\n    return &ec_p256::curve;\n  }\n  initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy);\n  ec_p256::curve.name = "nistp256";\n  ec_p256::curve.textname = "nistp256";\n  ec_p256::initialised = '\x01';\n  return &ec_p256::curve;\n}" { (if_statement "if (ec_p256::initialised != '\0') {\n    return &ec_p256::curve;\n  }" if (parenthesized_expression "(ec_p256::initialised != '\0')" ( (ERROR "ec_p256::" identifier : :) (binary_expression "initialised != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return &ec_p256::curve;\n  }" { (return_statement "return &ec_p256::curve;" return (pointer_expression "&ec_p256" & identifier) (ERROR "::curve" : : identifier) ;) })) (expression_statement "initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy);" (call_expression "initialise_wcurve(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy)" identifier (argument_list "(&ec_p256::curve,0x100,ec_p256::lexical_block_2::p,ec_p256::lexical_block_2::a,\n                    ec_p256::lexical_block_2::b,ec_p256::lexical_block_2::n,\n                    ec_p256::lexical_block_2::Gx,ec_p256::lexical_block_2::Gy)" ( (pointer_expression "&ec_p256" & identifier) (ERROR "::curve" : : identifier) , number_literal , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier , (ERROR "ec_p256::lexical_block_2::" identifier : : identifier : :) identifier ))) ;) (labeled_statement "ec_p256::curve.name = "nistp256";" statement_identifier : (ERROR ":" :) (expression_statement "curve.name = "nistp256";" (assignment_expression "curve.name = "nistp256"" (field_expression "curve.name" identifier . field_identifier) = (string_literal ""nistp256"" " string_content ")) ;)) (labeled_statement "ec_p256::curve.textname = "nistp256";" statement_identifier : (ERROR ":" :) (expression_statement "curve.textname = "nistp256";" (assignment_expression "curve.textname = "nistp256"" (field_expression "curve.textname" identifier . field_identifier) = (string_literal ""nistp256"" " string_content ")) ;)) (labeled_statement "ec_p256::initialised = '\x01';" statement_identifier : (ERROR ":" :) (expression_statement "initialised = '\x01';" (assignment_expression "initialised = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;)) (return_statement "return &ec_p256::curve;" return (pointer_expression "&ec_p256" & identifier) (ERROR "::curve" : : identifier) ;) })))
(translation_unit "undefined * FUN_0013f08a(void)\n\n{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}\n\n" (function_definition "undefined * FUN_0013f08a(void)\n\n{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" type_identifier (pointer_declarator "* FUN_0013f08a(void)" * (function_declarator "FUN_0013f08a(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" { (if_statement "if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }" if (parenthesized_expression "(DAT_001835a8 != '\0')" ( (binary_expression "DAT_001835a8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return &DAT_00183540;\n  }" { (return_statement "return &DAT_00183540;" return (pointer_expression "&DAT_00183540" & identifier) ;) })) (expression_statement "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);" (call_expression "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" identifier (argument_list "(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" ( (pointer_expression "&DAT_00183540" & identifier) , number_literal , (pointer_expression "&DAT_0016acc0" & identifier) , (pointer_expression "&DAT_0016aca0" & identifier) , (pointer_expression "&DAT_0016ac80" & identifier) , (pointer_expression "&DAT_0016ac60" & identifier) , (pointer_expression "&DAT_0016ac40" & identifier) , (pointer_expression "&DAT_0016ac20" & identifier) ))) ;) (expression_statement "_DAT_00183548 = "nistp256";" (assignment_expression "_DAT_00183548 = "nistp256"" identifier = (string_literal ""nistp256"" " string_content ")) ;) (expression_statement "_DAT_00183550 = "nistp256";" (assignment_expression "_DAT_00183550 = "nistp256"" identifier = (string_literal ""nistp256"" " string_content ")) ;) (expression_statement "DAT_001835a8 = 1;" (assignment_expression "DAT_001835a8 = 1" identifier = number_literal) ;) (return_statement "return &DAT_00183540;" return (pointer_expression "&DAT_00183540" & identifier) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (pointer_expression & IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (return_statement return (pointer_expression & IDENT) ;) })))
(function_definition "undefined * FUN_0013f08a(void)\n\n{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" (type_identifier "undefined") (pointer_declarator "* FUN_0013f08a(void)" (* "*") (function_declarator "FUN_0013f08a(void)" (identifier "FUN_0013f08a") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }\n  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);\n  _DAT_00183548 = "nistp256";\n  _DAT_00183550 = "nistp256";\n  DAT_001835a8 = 1;\n  return &DAT_00183540;\n}" ({ "{") (if_statement "if (DAT_001835a8 != '\0') {\n    return &DAT_00183540;\n  }" (if "if") (parenthesized_expression "(DAT_001835a8 != '\0')" (( "(") (binary_expression "DAT_001835a8 != '\0'" (identifier "DAT_001835a8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return &DAT_00183540;\n  }" ({ "{") (return_statement "return &DAT_00183540;" (return "return") (pointer_expression "&DAT_00183540" (& "&") (identifier "DAT_00183540")) (; ";")) (} "}"))) (expression_statement "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20);" (call_expression "FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" (identifier "FUN_0013efee") (argument_list "(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,\n               &DAT_0016ac40,&DAT_0016ac20)" (( "(") (pointer_expression "&DAT_00183540" (& "&") (identifier "DAT_00183540")) (, ",") (number_literal "0x100") (, ",") (pointer_expression "&DAT_0016acc0" (& "&") (identifier "DAT_0016acc0")) (, ",") (pointer_expression "&DAT_0016aca0" (& "&") (identifier "DAT_0016aca0")) (, ",") (pointer_expression "&DAT_0016ac80" (& "&") (identifier "DAT_0016ac80")) (, ",") (pointer_expression "&DAT_0016ac60" (& "&") (identifier "DAT_0016ac60")) (, ",") (pointer_expression "&DAT_0016ac40" (& "&") (identifier "DAT_0016ac40")) (, ",") (pointer_expression "&DAT_0016ac20" (& "&") (identifier "DAT_0016ac20")) () ")"))) (; ";")) (expression_statement "_DAT_00183548 = "nistp256";" (assignment_expression "_DAT_00183548 = "nistp256"" (identifier "_DAT_00183548") (= "=") (string_literal ""nistp256"" (" """) (string_content "nistp256") (" """))) (; ";")) (expression_statement "_DAT_00183550 = "nistp256";" (assignment_expression "_DAT_00183550 = "nistp256"" (identifier "_DAT_00183550") (= "=") (string_literal ""nistp256"" (" """) (string_content "nistp256") (" """))) (; ";")) (expression_statement "DAT_001835a8 = 1;" (assignment_expression "DAT_001835a8 = 1" (identifier "DAT_001835a8") (= "=") (number_literal "1")) (; ";")) (return_statement "return &DAT_00183540;" (return "return") (pointer_expression "&DAT_00183540" (& "&") (identifier "DAT_00183540")) (; ";")) (} "}")))

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

type_1 * function_1(void)

{
  if (function_1::var_1 != '\0') {
    return &function_1::curve;
  }
  var_2(&function_1::curve,0x100,function_1::lexical_block_2::p,function_1::lexical_block_2::a,
                    function_1::lexical_block_2::b,function_1::lexical_block_2::n,
                    function_1::lexical_block_2::Gx,function_1::lexical_block_2::Gy);
  ec_p256::curve.name = "nistp256";
  ec_p256::curve.textname = "nistp256";
  ec_p256::var_1 = '\x01';
  return &function_1::curve;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (return_statement (pointer_expression argument: (identifier))))))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined * MASKED(void)

{
  if (DAT_001835a8 != '\0') {
    return &DAT_00183540;
  }
  FUN_0013efee(&DAT_00183540,0x100,&DAT_0016acc0,&DAT_0016aca0,&DAT_0016ac80,&DAT_0016ac60,
               &DAT_0016ac40,&DAT_0016ac20);
  _DAT_00183548 = "nistp256";
  _DAT_00183550 = "nistp256";
  DAT_001835a8 = 1;
  return &DAT_00183540;
}

