
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

uchar * rsa_public_blob(RSAKey *key,int *len)

{
  size_t n;
  int iVar1;
  int iVar2;
  uchar *puVar3;
  
  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);
  iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent);
  n = iVar1 + 4 + iVar2;
  puVar3 = (uchar *)safemalloc(n,1);
  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);
  *puVar3 = (uchar)((uint)iVar1 >> 0x18);
  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);
  puVar3[1] = (uchar)((uint)iVar1 >> 0x10);
  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);
  puVar3[2] = (uchar)((uint)iVar1 >> 8);
  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);
  puVar3[3] = (uchar)iVar1;
  iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent);
  ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus);
  *len = n;
  return puVar3;
}



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

undefined1 * FUN_000554a0(int param_1,int *param_2)

{
  undefined1 uVar1;
  undefined1 extraout_AH;
  undefined1 extraout_var;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined1 extraout_var_00;
  
  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));
  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));
  iVar3 = iVar2 + 4 + iVar3;
  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  *puVar4 = extraout_var_00;
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[1] = extraout_var;
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[2] = extraout_AH;
  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[3] = uVar1;
  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));
  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));
  *param_2 = iVar3;
  return puVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015fa0
ADD EBX,0x4f8c7
SUB ESP,0x18
MOV ESI,dword ptr [ESP + 0x2c]
PUSH dword ptr [ESI + 0x8]
CALL 0x000418d0
MOV EDI,EAX
POP EAX
PUSH dword ptr [ESI + 0xc]
CALL 0x000418d0
POP EDX
POP ECX
PUSH 0x1
LEA EBP,[EDI + EAX*0x1 + 0x4]
PUSH EBP
CALL 0x0001c990
MOV EDI,EAX
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00041880
SAR EAX,0x18
MOV byte ptr [EDI],AL
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00041880
SAR EAX,0x10
MOV byte ptr [EDI + 0x1],AL
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00041880
MOV byte ptr [EDI + 0x2],AH
POP EAX
PUSH dword ptr [ESI + 0x8]
CALL 0x00041880
MOV byte ptr [EDI + 0x3],AL
POP EAX
LEA EAX,[EDI + 0x4]
POP EDX
PUSH dword ptr [ESI + 0xc]
PUSH EAX
CALL 0x00041ab0
POP ECX
POP EDX
PUSH dword ptr [ESI + 0x8]
LEA EAX,[EDI + EAX*0x1 + 0x4]
PUSH EAX
CALL 0x00041ab0
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [EAX],EBP
ADD ESP,0x1c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined1 * FUN_000554a0(int param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}\n\n" comment (function_definition "undefined1 * FUN_000554a0(int param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_000554a0(int param_1,int *param_2)" * (function_declarator "FUN_000554a0(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined1 extraout_AH;" type_identifier identifier ;) (declaration "undefined1 extraout_var;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 extraout_var_00;" type_identifier identifier ;) (expression_statement "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = iVar2 + 4 + iVar3;" (assignment_expression "iVar3 = iVar2 + 4 + iVar3" identifier = (binary_expression "iVar2 + 4 + iVar3" (binary_expression "iVar2 + 4" identifier + number_literal) + identifier)) ;) (expression_statement "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);" (assignment_expression "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1)" identifier = (cast_expression "(undefined1 *)FUN_0001c990(iVar3,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(iVar3,1)" identifier (argument_list "(iVar3,1)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*puVar4 = extraout_var_00;" (assignment_expression "*puVar4 = extraout_var_00" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4[1] = extraout_var;" (assignment_expression "puVar4[1] = extraout_var" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4[2] = extraout_AH;" (assignment_expression "puVar4[2] = extraout_AH" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));" (assignment_expression "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" ( (binary_expression "puVar4 + 4" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" ( (binary_expression "puVar4 + iVar2 + 4" (binary_expression "puVar4 + iVar2" identifier + identifier) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nuchar * rsa_public_blob(RSAKey *key,int *len)\n\n{\n  size_t n;\n  int iVar1;\n  int iVar2;\n  uchar *puVar3;\n  \n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  n = iVar1 + 4 + iVar2;\n  puVar3 = (uchar *)safemalloc(n,1);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  *puVar3 = (uchar)((uint)iVar1 >> 0x18);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[1] = (uchar)((uint)iVar1 >> 0x10);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[2] = (uchar)((uint)iVar1 >> 8);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[3] = (uchar)iVar1;\n  iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent);\n  ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus);\n  *len = n;\n  return puVar3;\n}\n\n" comment comment (function_definition "uchar * rsa_public_blob(RSAKey *key,int *len)\n\n{\n  size_t n;\n  int iVar1;\n  int iVar2;\n  uchar *puVar3;\n  \n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  n = iVar1 + 4 + iVar2;\n  puVar3 = (uchar *)safemalloc(n,1);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  *puVar3 = (uchar)((uint)iVar1 >> 0x18);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[1] = (uchar)((uint)iVar1 >> 0x10);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[2] = (uchar)((uint)iVar1 >> 8);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[3] = (uchar)iVar1;\n  iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent);\n  ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus);\n  *len = n;\n  return puVar3;\n}" type_identifier (pointer_declarator "* rsa_public_blob(RSAKey *key,int *len)" * (function_declarator "rsa_public_blob(RSAKey *key,int *len)" identifier (parameter_list "(RSAKey *key,int *len)" ( (parameter_declaration "RSAKey *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "int *len" primitive_type (pointer_declarator "*len" * identifier)) )))) (compound_statement "{\n  size_t n;\n  int iVar1;\n  int iVar2;\n  uchar *puVar3;\n  \n  iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);\n  iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent);\n  n = iVar1 + 4 + iVar2;\n  puVar3 = (uchar *)safemalloc(n,1);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  *puVar3 = (uchar)((uint)iVar1 >> 0x18);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[1] = (uchar)((uint)iVar1 >> 0x10);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[2] = (uchar)((uint)iVar1 >> 8);\n  iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);\n  puVar3[3] = (uchar)iVar1;\n  iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent);\n  ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus);\n  *len = n;\n  return puVar3;\n}" { (declaration "size_t n;" primitive_type identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (expression_statement "iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = ssh1_bignum_length((Bignum_conflict)key->modulus)" identifier = (call_expression "ssh1_bignum_length((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent);" (assignment_expression "iVar2 = ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier = (call_expression "ssh1_bignum_length((Bignum_conflict)key->exponent)" identifier (argument_list "((Bignum_conflict)key->exponent)" ( (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) )))) ;) (expression_statement "n = iVar1 + 4 + iVar2;" (assignment_expression "n = iVar1 + 4 + iVar2" identifier = (binary_expression "iVar1 + 4 + iVar2" (binary_expression "iVar1 + 4" identifier + number_literal) + identifier)) ;) (expression_statement "puVar3 = (uchar *)safemalloc(n,1);" (assignment_expression "puVar3 = (uchar *)safemalloc(n,1)" identifier = (cast_expression "(uchar *)safemalloc(n,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(n,1)" identifier (argument_list "(n,1)" ( identifier , number_literal ))))) ;) (expression_statement "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "*puVar3 = (uchar)((uint)iVar1 >> 0x18);" (assignment_expression "*puVar3 = (uchar)((uint)iVar1 >> 0x18)" (pointer_expression "*puVar3" * identifier) = (call_expression "(uchar)((uint)iVar1 >> 0x18)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar1 >> 0x18)" ( (binary_expression "(uint)iVar1 >> 0x18" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "puVar3[1] = (uchar)((uint)iVar1 >> 0x10);" (assignment_expression "puVar3[1] = (uchar)((uint)iVar1 >> 0x10)" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (call_expression "(uchar)((uint)iVar1 >> 0x10)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar1 >> 0x10)" ( (binary_expression "(uint)iVar1 >> 0x10" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "puVar3[2] = (uchar)((uint)iVar1 >> 8);" (assignment_expression "puVar3[2] = (uchar)((uint)iVar1 >> 8)" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = (call_expression "(uchar)((uint)iVar1 >> 8)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)iVar1 >> 8)" ( (binary_expression "(uint)iVar1 >> 8" (cast_expression "(uint)iVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus);" (assignment_expression "iVar1 = bignum_bitcount((Bignum_conflict)key->modulus)" identifier = (call_expression "bignum_bitcount((Bignum_conflict)key->modulus)" identifier (argument_list "((Bignum_conflict)key->modulus)" ( (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) )))) ;) (expression_statement "puVar3[3] = (uchar)iVar1;" (assignment_expression "puVar3[3] = (uchar)iVar1" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (cast_expression "(uchar)iVar1" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent);" (assignment_expression "iVar1 = ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent)" identifier = (call_expression "ssh1_write_bignum(puVar3 + 4,(Bignum_conflict)key->exponent)" identifier (argument_list "(puVar3 + 4,(Bignum_conflict)key->exponent)" ( (binary_expression "puVar3 + 4" identifier + number_literal) , (cast_expression "(Bignum_conflict)key->exponent" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->exponent" identifier -> field_identifier)) )))) ;) (expression_statement "ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus);" (call_expression "ssh1_write_bignum(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus)" identifier (argument_list "(puVar3 + iVar1 + 4,(Bignum_conflict)key->modulus)" ( (binary_expression "puVar3 + iVar1 + 4" (binary_expression "puVar3 + iVar1" identifier + identifier) + number_literal) , (cast_expression "(Bignum_conflict)key->modulus" ( (type_descriptor "Bignum_conflict" type_identifier) ) (field_expression "key->modulus" identifier -> field_identifier)) ))) ;) (expression_statement "*len = n;" (assignment_expression "*len = n" (pointer_expression "*len" * identifier) = identifier) ;) (return_statement "return puVar3;" return identifier ;) })))
(translation_unit "undefined1 * FUN_000554a0(int param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}\n\n" (function_definition "undefined1 * FUN_000554a0(int param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_000554a0(int param_1,int *param_2)" * (function_declarator "FUN_000554a0(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined1 extraout_AH;" type_identifier identifier ;) (declaration "undefined1 extraout_var;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 extraout_var_00;" type_identifier identifier ;) (expression_statement "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = iVar2 + 4 + iVar3;" (assignment_expression "iVar3 = iVar2 + 4 + iVar3" identifier = (binary_expression "iVar2 + 4 + iVar3" (binary_expression "iVar2 + 4" identifier + number_literal) + identifier)) ;) (expression_statement "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);" (assignment_expression "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1)" identifier = (cast_expression "(undefined1 *)FUN_0001c990(iVar3,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001c990(iVar3,1)" identifier (argument_list "(iVar3,1)" ( identifier , number_literal ))))) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*puVar4 = extraout_var_00;" (assignment_expression "*puVar4 = extraout_var_00" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4[1] = extraout_var;" (assignment_expression "puVar4[1] = extraout_var" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "puVar4[2] = extraout_AH;" (assignment_expression "puVar4[2] = extraout_AH" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));" (assignment_expression "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" identifier (argument_list "(*(undefined4 *)(param_1 + 8))" ( (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" ( (binary_expression "puVar4 + 4" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" ( (binary_expression "puVar4 + iVar2 + 4" (binary_expression "puVar4 + iVar2" identifier + identifier) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined1 * FUN_000554a0(int param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" (type_identifier "undefined1") (pointer_declarator "* FUN_000554a0(int param_1,int *param_2)" (* "*") (function_declarator "FUN_000554a0(int param_1,int *param_2)" (identifier "FUN_000554a0") (parameter_list "(int param_1,int *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined1 uVar1;\n  undefined1 extraout_AH;\n  undefined1 extraout_var;\n  int iVar2;\n  int iVar3;\n  undefined1 *puVar4;\n  undefined1 extraout_var_00;\n  \n  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));\n  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));\n  iVar3 = iVar2 + 4 + iVar3;\n  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  *puVar4 = extraout_var_00;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[1] = extraout_var;\n  FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[2] = extraout_AH;\n  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));\n  puVar4[3] = uVar1;\n  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));\n  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));\n  *param_2 = iVar3;\n  return puVar4;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined1 extraout_AH;" (type_identifier "undefined1") (identifier "extraout_AH") (; ";")) (declaration "undefined1 extraout_var;" (type_identifier "undefined1") (identifier "extraout_var") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 *puVar4;" (type_identifier "undefined1") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 extraout_var_00;" (type_identifier "undefined1") (identifier "extraout_var_00") (; ";")) (expression_statement "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8))" (identifier "iVar2") (= "=") (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 8))" (identifier "FUN_000418d0") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" (identifier "iVar3") (= "=") (call_expression "FUN_000418d0(*(undefined4 *)(param_1 + 0xc))" (identifier "FUN_000418d0") (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar3 = iVar2 + 4 + iVar3;" (assignment_expression "iVar3 = iVar2 + 4 + iVar3" (identifier "iVar3") (= "=") (binary_expression "iVar2 + 4 + iVar3" (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);" (assignment_expression "puVar4 = (undefined1 *)FUN_0001c990(iVar3,1)" (identifier "puVar4") (= "=") (cast_expression "(undefined1 *)FUN_0001c990(iVar3,1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001c990(iVar3,1)" (identifier "FUN_0001c990") (argument_list "(iVar3,1)" (( "(") (identifier "iVar3") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" (identifier "FUN_00041880") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "*puVar4 = extraout_var_00;" (assignment_expression "*puVar4 = extraout_var_00" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "extraout_var_00")) (; ";")) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" (identifier "FUN_00041880") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar4[1] = extraout_var;" (assignment_expression "puVar4[1] = extraout_var" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "extraout_var")) (; ";")) (expression_statement "FUN_00041880(*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" (identifier "FUN_00041880") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar4[2] = extraout_AH;" (assignment_expression "puVar4[2] = extraout_AH" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "extraout_AH")) (; ";")) (expression_statement "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));" (assignment_expression "uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8))" (identifier "uVar1") (= "=") (call_expression "FUN_00041880(*(undefined4 *)(param_1 + 8))" (identifier "FUN_00041880") (argument_list "(*(undefined4 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));" (assignment_expression "iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" (identifier "iVar2") (= "=") (call_expression "FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" (identifier "FUN_00041ab0") (argument_list "(puVar4 + 4,*(undefined4 *)(param_1 + 0xc))" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));" (call_expression "FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" (identifier "FUN_00041ab0") (argument_list "(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8))" (( "(") (binary_expression "puVar4 + iVar2 + 4" (binary_expression "puVar4 + iVar2" (identifier "puVar4") (+ "+") (identifier "iVar2")) (+ "+") (number_literal "4")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "*param_2 = iVar3;" (assignment_expression "*param_2 = iVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar3")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

type_1 * function_1(type_2 *key,int *len)

{
  size_t n;
  int var_2;
  int var_3;
  type_1 *var_7;
  
  var_2 = var_1((type_3)key->modulus);
  var_3 = var_1((type_3)key->exponent);
  n = var_2 + 4 + var_3;
  var_7 = (type_1 *)var_4(n,1);
  var_2 = var_5((type_3)key->modulus);
  *var_7 = (type_1)((type_4)var_2 >> 0x18);
  var_2 = var_5((type_3)key->modulus);
  var_7[1] = (type_1)((type_4)var_2 >> 0x10);
  var_2 = var_5((type_3)key->modulus);
  var_7[2] = (type_1)((type_4)var_2 >> 8);
  var_2 = var_5((type_3)key->modulus);
  var_7[3] = (type_1)var_2;
  var_2 = var_6(var_7 + 4,(type_3)key->exponent);
  var_6(var_7 + var_2 + 4,(type_3)key->modulus);
  *len = n;
  return var_7;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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 (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: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (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 (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) (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: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (identifier)))))

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

undefined1 * MASKED(int param_1,int *param_2)

{
  undefined1 uVar1;
  undefined1 extraout_AH;
  undefined1 extraout_var;
  int iVar2;
  int iVar3;
  undefined1 *puVar4;
  undefined1 extraout_var_00;
  
  iVar2 = FUN_000418d0(*(undefined4 *)(param_1 + 8));
  iVar3 = FUN_000418d0(*(undefined4 *)(param_1 + 0xc));
  iVar3 = iVar2 + 4 + iVar3;
  puVar4 = (undefined1 *)FUN_0001c990(iVar3,1);
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  *puVar4 = extraout_var_00;
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[1] = extraout_var;
  FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[2] = extraout_AH;
  uVar1 = FUN_00041880(*(undefined4 *)(param_1 + 8));
  puVar4[3] = uVar1;
  iVar2 = FUN_00041ab0(puVar4 + 4,*(undefined4 *)(param_1 + 0xc));
  FUN_00041ab0(puVar4 + iVar2 + 4,*(undefined4 *)(param_1 + 8));
  *param_2 = iVar3;
  return puVar4;
}

