rendered paste body//----- (004EB960) --------------------------------------------------------
unsigned int __cdecl sub_4EB960(void *a1, signed int a2, int a3, signed int a4, int a5)
{
unsigned int result; // eax@2
const void *v6; // esi@4
int v7; // eax@5
signed int i; // ecx@5
signed int v9; // edx@10
char v10; // dl@6
if ( a4 >= 10 )
{
if ( a5 != a4 + 1 || (v6 = (const void *)(a3 + 1), *(_BYTE *)a3 != 2) )
{
sub_4CEC20(4u, 114, 107, (int)".\\crypto\\rsa\\rsa_ssl.c", 119);
result = -1;
}
else
{
v7 = a4 - 1;
for ( i = 0; i < v7; ++i )
{
v10 = *(_BYTE *)v6;
v6 = (char *)v6 + 1;
if ( !v10 )
break;
}
if ( i == v7 || i < 8 )
{
sub_4CEC20(4u, 114, 113, (int)".\\crypto\\rsa\\rsa_ssl.c", 130);
result = -1;
}
else
{
v9 = -8;
do
{
if ( *((_BYTE *)v6 + v9) != 3 )
break;
++v9;
}
while ( v9 < 0 );
if ( v9 == -1 )
{
sub_4CEC20(4u, 114, 115, (int)".\\crypto\\rsa\\rsa_ssl.c", 139);
result = -1;
}
else
{
result = -1 - i + v7;
if ( (signed int)result <= a2 )
{
memcpy(a1, v6, result);
}
else
{
sub_4CEC20(4u, 114, 109, (int)".\\crypto\\rsa\\rsa_ssl.c", 147);
result = -1;
}
}
}
}
}
else
{
sub_4CEC20(4u, 114, 111, (int)".\\crypto\\rsa\\rsa_ssl.c", 114);
result = -1;
}
return result;
}