rendered paste body//----- (004CCA60) --------------------------------------------------------
signed int __cdecl sub_4CCA60(int a1, int a2, int a3)
{
int v3; // ebx@1
int v4; // esi@1
int v6; // eax@4
unsigned int v7; // edi@4
__int16 v8; // ST10_2@6
int v9; // ST14_4@6
int v10; // ST18_4@6
int v11; // ebp@11
int v12; // ST18_4@1
int v13; // [sp+10h] [bp-8h]@1
int v14; // [sp+14h] [bp-4h]@5
v4 = a3;
v3 = 0;
v12 = *(_DWORD *)(a3 + 8);
v13 = -1;
if ( sub_4CCCB0(v12) > 10000 )
{
sub_4CEC20(5u, 102, 103, (int)".\\crypto\\dh\\dh_key.c", 184);
return -1;
}
v6 = sub_4D0D10();
v7 = v6;
if ( !v6 )
return -1;
sub_4D0DE0(v6);
v14 = sub_4D0F30(v7);
if ( !*(_DWORD *)(v4 + 24) )
{
v10 = 195;
v9 = (int)".\\crypto\\dh\\dh_key.c";
v8 = 100;
LABEL_17:
sub_4CEC20(5u, 102, v8, v9, v10);
goto LABEL_18;
}
if ( *(_BYTE *)(v4 + 28) & 1 )
{
v3 = sub_4D1A50(v4 + 32, 26, *(_DWORD *)(v4 + 8), v7);
if ( !(*(_BYTE *)(v4 + 28) & 2) )
*(_DWORD *)(*(_DWORD *)(v4 + 24) + 16) |= 4u;
if ( !v3 )
goto LABEL_18;
}
v11 = a2;
if ( !sub_4D1BB0(v4, a2, (int)&a3) || a3 )
{
v10 = 214;
v9 = (int)".\\crypto\\dh\\dh_key.c";
v8 = 102;
goto LABEL_17;
}
if ( !(*(int (__cdecl **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)(v4 + 68) + 12))(
v4,
v14,
v11,
*(_DWORD *)(v4 + 24),
*(_DWORD *)(v4 + 8),
v7,
v3) )
{
v10 = 220;
v9 = (int)".\\crypto\\dh\\dh_key.c";
v8 = 3;
goto LABEL_17;
}
v13 = sub_4CD330(v14, a1);
LABEL_18:
sub_4D0EC0(v7);
sub_4D0D70((void *)v7);
return v13;
}