
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int ec_ed_alg_and_curve_by_bits(int bits,ec_curve **curve,ssh_signkey **alg)

{
  bool bVar1;
  
  if (bits != 0x100) {
    return 0;
  }
  bVar1 = initialised_4785 == '\0';
  *alg = &ssh_ecdsa_ed25519;
  if (bVar1) {
    DAT_000cd344 = 0;
    curve_4784 = 2;
    DAT_000cd34c = 0x100;
    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);
    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);
    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);
    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);
    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);
    DAT_000cd35c = &curve_4784;
    DAT_000cd36c = 0;
    DAT_000cd348 = "Ed25519";
    initialised_4785 = '\x01';
  }
  *curve = (ec_curve *)&curve_4784;
  return 1;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)

{
  bool bVar1;
  
  if (param_1 != 0x100) {
    return 0;
  }
  bVar1 = DAT_000cd374 == '\0';
  *param_3 = &PTR_FUN_000cc720;
  if (bVar1) {
    DAT_000cd344 = 0;
    DAT_000cd340 = 2;
    DAT_000cd34c = 0x100;
    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);
    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);
    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);
    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);
    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);
    DAT_000cd35c = &DAT_000cd340;
    DAT_000cd36c = 0;
    DAT_000cd348 = "Ed25519";
    DAT_000cd374 = '\x01';
  }
  *param_2 = &DAT_000cd340;
  return 1;
}


PUSH ESI
XOR EAX,EAX
PUSH EBX
CALL 0x000149a0
ADD EBX,0x66147
SUB ESP,0x4
CMP dword ptr [ESP + 0x10],0x100
JZ 0x00066c48
ADD ESP,0x4
POP EBX
POP ESI
RET
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[EBX + 0xfffff9b0]
CMP byte ptr [EBX + 0x604],0x0
LEA ESI,[EBX + 0x5d0]
MOV dword ptr [EAX],EDX
JZ 0x00066c78
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX],ESI
ADD ESP,0x4
MOV EAX,0x1
POP EBX
POP ESI
RET
SUB ESP,0x8
LEA EAX,[EBX + 0xfffce770]
MOV dword ptr [EBX + 0x5d4],0x0
PUSH 0x20
PUSH EAX
MOV dword ptr [EBX + 0x5d0],0x2
MOV dword ptr [EBX + 0x5dc],0x100
CALL 0x00056330
MOV dword ptr [EBX + 0x5e0],EAX
POP EAX
LEA EAX,[EBX + 0xfffce750]
POP EDX
PUSH 0x20
PUSH EAX
CALL 0x00056330
POP ECX
MOV dword ptr [EBX + 0x5e4],EAX
POP EAX
LEA EAX,[EBX + 0xfffce730]
PUSH 0x20
PUSH EAX
CALL 0x00056330
MOV dword ptr [EBX + 0x5e8],EAX
POP EAX
LEA EAX,[EBX + 0xfffce710]
POP EDX
PUSH 0x20
PUSH EAX
CALL 0x00056330
POP ECX
MOV dword ptr [EBX + 0x5f0],EAX
POP EAX
LEA EAX,[EBX + 0xfffce6f0]
PUSH 0x20
PUSH EAX
CALL 0x00056330
MOV dword ptr [EBX + 0x5ec],ESI
ADD ESP,0x10
MOV dword ptr [EBX + 0x5f4],EAX
LEA EAX,[EBX + 0xfffce00b]
MOV byte ptr [EBX + 0x5fc],0x0
MOV dword ptr [EBX + 0x5d8],EAX
MOV byte ptr [EBX + 0x604],0x1
JMP 0x00066c63
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" type_identifier (function_declarator "FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (if_statement "if (param_1 != 0x100) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 != 0x100)" ( (binary_expression "param_1 != 0x100" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = DAT_000cd374 == '\0';" (assignment_expression "bVar1 = DAT_000cd374 == '\0'" identifier = (binary_expression "DAT_000cd374 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "*param_3 = &PTR_FUN_000cc720;" (assignment_expression "*param_3 = &PTR_FUN_000cc720" (pointer_expression "*param_3" * identifier) = (pointer_expression "&PTR_FUN_000cc720" & identifier)) ;) (if_statement "if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" { (expression_statement "DAT_000cd344 = 0;" (assignment_expression "DAT_000cd344 = 0" identifier = number_literal) ;) (expression_statement "DAT_000cd340 = 2;" (assignment_expression "DAT_000cd340 = 2" identifier = number_literal) ;) (expression_statement "DAT_000cd34c = 0x100;" (assignment_expression "DAT_000cd34c = 0x100" identifier = number_literal) ;) (expression_statement "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);" (assignment_expression "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4e0,0x20)" identifier (argument_list "(&DAT_0009b4e0,0x20)" ( (pointer_expression "&DAT_0009b4e0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);" (assignment_expression "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4c0,0x20)" identifier (argument_list "(&DAT_0009b4c0,0x20)" ( (pointer_expression "&DAT_0009b4c0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);" (assignment_expression "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4a0,0x20)" identifier (argument_list "(&DAT_0009b4a0,0x20)" ( (pointer_expression "&DAT_0009b4a0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);" (assignment_expression "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b480,0x20)" identifier (argument_list "(&DAT_0009b480,0x20)" ( (pointer_expression "&DAT_0009b480" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);" (assignment_expression "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b460,0x20)" identifier (argument_list "(&DAT_0009b460,0x20)" ( (pointer_expression "&DAT_0009b460" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd35c = &DAT_000cd340;" (assignment_expression "DAT_000cd35c = &DAT_000cd340" identifier = (pointer_expression "&DAT_000cd340" & identifier)) ;) (expression_statement "DAT_000cd36c = 0;" (assignment_expression "DAT_000cd36c = 0" identifier = number_literal) ;) (expression_statement "DAT_000cd348 = "Ed25519";" (assignment_expression "DAT_000cd348 = "Ed25519"" identifier = (string_literal ""Ed25519"" " string_content ")) ;) (expression_statement "DAT_000cd374 = '\x01';" (assignment_expression "DAT_000cd374 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "*param_2 = &DAT_000cd340;" (assignment_expression "*param_2 = &DAT_000cd340" (pointer_expression "*param_2" * identifier) = (pointer_expression "&DAT_000cd340" & identifier)) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nint ec_ed_alg_and_curve_by_bits(int bits,ec_curve **curve,ssh_signkey **alg)\n\n{\n  bool bVar1;\n  \n  if (bits != 0x100) {\n    return 0;\n  }\n  bVar1 = initialised_4785 == '\0';\n  *alg = &ssh_ecdsa_ed25519;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    curve_4784 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);\n    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);\n    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);\n    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);\n    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);\n    DAT_000cd35c = &curve_4784;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    initialised_4785 = '\x01';\n  }\n  *curve = (ec_curve *)&curve_4784;\n  return 1;\n}\n\n" comment comment comment (function_definition "int ec_ed_alg_and_curve_by_bits(int bits,ec_curve **curve,ssh_signkey **alg)\n\n{\n  bool bVar1;\n  \n  if (bits != 0x100) {\n    return 0;\n  }\n  bVar1 = initialised_4785 == '\0';\n  *alg = &ssh_ecdsa_ed25519;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    curve_4784 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);\n    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);\n    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);\n    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);\n    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);\n    DAT_000cd35c = &curve_4784;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    initialised_4785 = '\x01';\n  }\n  *curve = (ec_curve *)&curve_4784;\n  return 1;\n}" primitive_type (function_declarator "ec_ed_alg_and_curve_by_bits(int bits,ec_curve **curve,ssh_signkey **alg)" identifier (parameter_list "(int bits,ec_curve **curve,ssh_signkey **alg)" ( (parameter_declaration "int bits" primitive_type identifier) , (parameter_declaration "ec_curve **curve" type_identifier (pointer_declarator "**curve" * (pointer_declarator "*curve" * identifier))) , (parameter_declaration "ssh_signkey **alg" type_identifier (pointer_declarator "**alg" * (pointer_declarator "*alg" * identifier))) ))) (compound_statement "{\n  bool bVar1;\n  \n  if (bits != 0x100) {\n    return 0;\n  }\n  bVar1 = initialised_4785 == '\0';\n  *alg = &ssh_ecdsa_ed25519;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    curve_4784 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);\n    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);\n    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);\n    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);\n    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);\n    DAT_000cd35c = &curve_4784;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    initialised_4785 = '\x01';\n  }\n  *curve = (ec_curve *)&curve_4784;\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (if_statement "if (bits != 0x100) {\n    return 0;\n  }" if (parenthesized_expression "(bits != 0x100)" ( (binary_expression "bits != 0x100" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = initialised_4785 == '\0';" (assignment_expression "bVar1 = initialised_4785 == '\0'" identifier = (binary_expression "initialised_4785 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "*alg = &ssh_ecdsa_ed25519;" (assignment_expression "*alg = &ssh_ecdsa_ed25519" (pointer_expression "*alg" * identifier) = (pointer_expression "&ssh_ecdsa_ed25519" & identifier)) ;) (if_statement "if (bVar1) {\n    DAT_000cd344 = 0;\n    curve_4784 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);\n    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);\n    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);\n    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);\n    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);\n    DAT_000cd35c = &curve_4784;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    initialised_4785 = '\x01';\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    DAT_000cd344 = 0;\n    curve_4784 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = bignum_from_bytes(q_4786,0x20);\n    DAT_000cd354 = bignum_from_bytes(l_4787,0x20);\n    DAT_000cd358 = bignum_from_bytes(d_4788,0x20);\n    DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);\n    DAT_000cd364 = bignum_from_bytes(By_4790,0x20);\n    DAT_000cd35c = &curve_4784;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    initialised_4785 = '\x01';\n  }" { (expression_statement "DAT_000cd344 = 0;" (assignment_expression "DAT_000cd344 = 0" identifier = number_literal) ;) (expression_statement "curve_4784 = 2;" (assignment_expression "curve_4784 = 2" identifier = number_literal) ;) (expression_statement "DAT_000cd34c = 0x100;" (assignment_expression "DAT_000cd34c = 0x100" identifier = number_literal) ;) (expression_statement "DAT_000cd350 = bignum_from_bytes(q_4786,0x20);" (assignment_expression "DAT_000cd350 = bignum_from_bytes(q_4786,0x20)" identifier = (call_expression "bignum_from_bytes(q_4786,0x20)" identifier (argument_list "(q_4786,0x20)" ( identifier , number_literal )))) ;) (expression_statement "DAT_000cd354 = bignum_from_bytes(l_4787,0x20);" (assignment_expression "DAT_000cd354 = bignum_from_bytes(l_4787,0x20)" identifier = (call_expression "bignum_from_bytes(l_4787,0x20)" identifier (argument_list "(l_4787,0x20)" ( identifier , number_literal )))) ;) (expression_statement "DAT_000cd358 = bignum_from_bytes(d_4788,0x20);" (assignment_expression "DAT_000cd358 = bignum_from_bytes(d_4788,0x20)" identifier = (call_expression "bignum_from_bytes(d_4788,0x20)" identifier (argument_list "(d_4788,0x20)" ( identifier , number_literal )))) ;) (expression_statement "DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20);" (assignment_expression "DAT_000cd360 = bignum_from_bytes(Bx_4789,0x20)" identifier = (call_expression "bignum_from_bytes(Bx_4789,0x20)" identifier (argument_list "(Bx_4789,0x20)" ( identifier , number_literal )))) ;) (expression_statement "DAT_000cd364 = bignum_from_bytes(By_4790,0x20);" (assignment_expression "DAT_000cd364 = bignum_from_bytes(By_4790,0x20)" identifier = (call_expression "bignum_from_bytes(By_4790,0x20)" identifier (argument_list "(By_4790,0x20)" ( identifier , number_literal )))) ;) (expression_statement "DAT_000cd35c = &curve_4784;" (assignment_expression "DAT_000cd35c = &curve_4784" identifier = (pointer_expression "&curve_4784" & identifier)) ;) (expression_statement "DAT_000cd36c = 0;" (assignment_expression "DAT_000cd36c = 0" identifier = number_literal) ;) (expression_statement "DAT_000cd348 = "Ed25519";" (assignment_expression "DAT_000cd348 = "Ed25519"" identifier = (string_literal ""Ed25519"" " string_content ")) ;) (expression_statement "initialised_4785 = '\x01';" (assignment_expression "initialised_4785 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "*curve = (ec_curve *)&curve_4784;" (assignment_expression "*curve = (ec_curve *)&curve_4784" (pointer_expression "*curve" * identifier) = (cast_expression "(ec_curve *)&curve_4784" ( (type_descriptor "ec_curve *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&curve_4784" & identifier))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" type_identifier (function_declarator "FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (if_statement "if (param_1 != 0x100) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 != 0x100)" ( (binary_expression "param_1 != 0x100" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = DAT_000cd374 == '\0';" (assignment_expression "bVar1 = DAT_000cd374 == '\0'" identifier = (binary_expression "DAT_000cd374 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ;) (expression_statement "*param_3 = &PTR_FUN_000cc720;" (assignment_expression "*param_3 = &PTR_FUN_000cc720" (pointer_expression "*param_3" * identifier) = (pointer_expression "&PTR_FUN_000cc720" & identifier)) ;) (if_statement "if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" { (expression_statement "DAT_000cd344 = 0;" (assignment_expression "DAT_000cd344 = 0" identifier = number_literal) ;) (expression_statement "DAT_000cd340 = 2;" (assignment_expression "DAT_000cd340 = 2" identifier = number_literal) ;) (expression_statement "DAT_000cd34c = 0x100;" (assignment_expression "DAT_000cd34c = 0x100" identifier = number_literal) ;) (expression_statement "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);" (assignment_expression "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4e0,0x20)" identifier (argument_list "(&DAT_0009b4e0,0x20)" ( (pointer_expression "&DAT_0009b4e0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);" (assignment_expression "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4c0,0x20)" identifier (argument_list "(&DAT_0009b4c0,0x20)" ( (pointer_expression "&DAT_0009b4c0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);" (assignment_expression "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b4a0,0x20)" identifier (argument_list "(&DAT_0009b4a0,0x20)" ( (pointer_expression "&DAT_0009b4a0" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);" (assignment_expression "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b480,0x20)" identifier (argument_list "(&DAT_0009b480,0x20)" ( (pointer_expression "&DAT_0009b480" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);" (assignment_expression "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20)" identifier = (call_expression "FUN_00056330(&DAT_0009b460,0x20)" identifier (argument_list "(&DAT_0009b460,0x20)" ( (pointer_expression "&DAT_0009b460" & identifier) , number_literal )))) ;) (expression_statement "DAT_000cd35c = &DAT_000cd340;" (assignment_expression "DAT_000cd35c = &DAT_000cd340" identifier = (pointer_expression "&DAT_000cd340" & identifier)) ;) (expression_statement "DAT_000cd36c = 0;" (assignment_expression "DAT_000cd36c = 0" identifier = number_literal) ;) (expression_statement "DAT_000cd348 = "Ed25519";" (assignment_expression "DAT_000cd348 = "Ed25519"" identifier = (string_literal ""Ed25519"" " string_content ")) ;) (expression_statement "DAT_000cd374 = '\x01';" (assignment_expression "DAT_000cd374 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "*param_2 = &DAT_000cd340;" (assignment_expression "*param_2 = &DAT_000cd340" (pointer_expression "*param_2" * identifier) = (pointer_expression "&DAT_000cd340" & identifier)) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)\n\n{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00066c20(int param_1,undefined4 *param_2,undefined4 *param_3)" (identifier "FUN_00066c20") (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  \n  if (param_1 != 0x100) {\n    return 0;\n  }\n  bVar1 = DAT_000cd374 == '\0';\n  *param_3 = &PTR_FUN_000cc720;\n  if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }\n  *param_2 = &DAT_000cd340;\n  return 1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (if_statement "if (param_1 != 0x100) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_1 != 0x100)" (( "(") (binary_expression "param_1 != 0x100" (identifier "param_1") (!= "!=") (number_literal "0x100")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar1 = DAT_000cd374 == '\0';" (assignment_expression "bVar1 = DAT_000cd374 == '\0'" (identifier "bVar1") (= "=") (binary_expression "DAT_000cd374 == '\0'" (identifier "DAT_000cd374") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (expression_statement "*param_3 = &PTR_FUN_000cc720;" (assignment_expression "*param_3 = &PTR_FUN_000cc720" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (pointer_expression "&PTR_FUN_000cc720" (& "&") (identifier "PTR_FUN_000cc720"))) (; ";")) (if_statement "if (bVar1) {\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n    DAT_000cd344 = 0;\n    DAT_000cd340 = 2;\n    DAT_000cd34c = 0x100;\n    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);\n    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);\n    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);\n    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);\n    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);\n    DAT_000cd35c = &DAT_000cd340;\n    DAT_000cd36c = 0;\n    DAT_000cd348 = "Ed25519";\n    DAT_000cd374 = '\x01';\n  }" ({ "{") (expression_statement "DAT_000cd344 = 0;" (assignment_expression "DAT_000cd344 = 0" (identifier "DAT_000cd344") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_000cd340 = 2;" (assignment_expression "DAT_000cd340 = 2" (identifier "DAT_000cd340") (= "=") (number_literal "2")) (; ";")) (expression_statement "DAT_000cd34c = 0x100;" (assignment_expression "DAT_000cd34c = 0x100" (identifier "DAT_000cd34c") (= "=") (number_literal "0x100")) (; ";")) (expression_statement "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);" (assignment_expression "DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20)" (identifier "DAT_000cd350") (= "=") (call_expression "FUN_00056330(&DAT_0009b4e0,0x20)" (identifier "FUN_00056330") (argument_list "(&DAT_0009b4e0,0x20)" (( "(") (pointer_expression "&DAT_0009b4e0" (& "&") (identifier "DAT_0009b4e0")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);" (assignment_expression "DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20)" (identifier "DAT_000cd354") (= "=") (call_expression "FUN_00056330(&DAT_0009b4c0,0x20)" (identifier "FUN_00056330") (argument_list "(&DAT_0009b4c0,0x20)" (( "(") (pointer_expression "&DAT_0009b4c0" (& "&") (identifier "DAT_0009b4c0")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);" (assignment_expression "DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20)" (identifier "DAT_000cd358") (= "=") (call_expression "FUN_00056330(&DAT_0009b4a0,0x20)" (identifier "FUN_00056330") (argument_list "(&DAT_0009b4a0,0x20)" (( "(") (pointer_expression "&DAT_0009b4a0" (& "&") (identifier "DAT_0009b4a0")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);" (assignment_expression "DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20)" (identifier "DAT_000cd360") (= "=") (call_expression "FUN_00056330(&DAT_0009b480,0x20)" (identifier "FUN_00056330") (argument_list "(&DAT_0009b480,0x20)" (( "(") (pointer_expression "&DAT_0009b480" (& "&") (identifier "DAT_0009b480")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);" (assignment_expression "DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20)" (identifier "DAT_000cd364") (= "=") (call_expression "FUN_00056330(&DAT_0009b460,0x20)" (identifier "FUN_00056330") (argument_list "(&DAT_0009b460,0x20)" (( "(") (pointer_expression "&DAT_0009b460" (& "&") (identifier "DAT_0009b460")) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "DAT_000cd35c = &DAT_000cd340;" (assignment_expression "DAT_000cd35c = &DAT_000cd340" (identifier "DAT_000cd35c") (= "=") (pointer_expression "&DAT_000cd340" (& "&") (identifier "DAT_000cd340"))) (; ";")) (expression_statement "DAT_000cd36c = 0;" (assignment_expression "DAT_000cd36c = 0" (identifier "DAT_000cd36c") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_000cd348 = "Ed25519";" (assignment_expression "DAT_000cd348 = "Ed25519"" (identifier "DAT_000cd348") (= "=") (string_literal ""Ed25519"" (" """) (string_content "Ed25519") (" """))) (; ";")) (expression_statement "DAT_000cd374 = '\x01';" (assignment_expression "DAT_000cd374 = '\x01'" (identifier "DAT_000cd374") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (expression_statement "*param_2 = &DAT_000cd340;" (assignment_expression "*param_2 = &DAT_000cd340" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "&DAT_000cd340" (& "&") (identifier "DAT_000cd340"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

int function_1(int var_1,type_1 **curve,type_2 **alg)

{
  bool bVar1;
  
  if (var_1 != 0x100) {
    return 0;
  }
  bVar1 = var_2 == '\0';
  *alg = &ssh_ecdsa_ed25519;
  if (bVar1) {
    DAT_000cd344 = 0;
    curve_4784 = 2;
    DAT_000cd34c = 0x100;
    DAT_000cd350 = var_3(q_4786,0x20);
    DAT_000cd354 = var_3(l_4787,0x20);
    DAT_000cd358 = var_3(d_4788,0x20);
    DAT_000cd360 = var_3(Bx_4789,0x20);
    DAT_000cd364 = var_3(By_4790,0x20);
    DAT_000cd35c = &curve_4784;
    DAT_000cd36c = 0;
    DAT_000cd348 = "Ed25519";
    var_2 = '\x01';
  }
  *curve = (type_1 *)&curve_4784;
  return 1;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  bool bVar1;
  
  if (param_1 != 0x100) {
    return 0;
  }
  bVar1 = DAT_000cd374 == '\0';
  *param_3 = &PTR_FUN_000cc720;
  if (bVar1) {
    DAT_000cd344 = 0;
    DAT_000cd340 = 2;
    DAT_000cd34c = 0x100;
    DAT_000cd350 = FUN_00056330(&DAT_0009b4e0,0x20);
    DAT_000cd354 = FUN_00056330(&DAT_0009b4c0,0x20);
    DAT_000cd358 = FUN_00056330(&DAT_0009b4a0,0x20);
    DAT_000cd360 = FUN_00056330(&DAT_0009b480,0x20);
    DAT_000cd364 = FUN_00056330(&DAT_0009b460,0x20);
    DAT_000cd35c = &DAT_000cd340;
    DAT_000cd36c = 0;
    DAT_000cd348 = "Ed25519";
    DAT_000cd374 = '\x01';
  }
  *param_2 = &DAT_000cd340;
  return 1;
}

