WbFreeWarbirdProcess
NTSTATUS __stdcall WbFreeWarbirdProcess(PVOID P){
unsigned int v1;
unsigned int i;
unsigned int j;
char *v5;
__int64 v6;
__int64 v7;
unsigned int k;
v1 = 0;
if( P )
{
for( i = 0; i < *((_DWORD *)P + 23); ++i )
sub_14065E6C8((_EX_PUSH_LOCK *)P, *(_QWORD *)(*((_DWORD *)P + 22) * i + *((_QWORD *)P + 13)));
sub_14064F544((__int64)P + 88);
for( j = 0; j < *((_DWORD *)P + 3); ++j )
sub_14065EF2C((_EX_PUSH_LOCK *)P, *(_QWORD *)(j * *((_DWORD *)P + 2) + *((_QWORD *)P + 3)));
sub_14064F544((__int64)P + 8);
v5 = (char *)P + 64;
while( 1 )
{
v6 = *(_QWORD *)v5;
if( *(char **)(*(_QWORD *)v5 + 8i64) != v5 || (v7 = *(_QWORD *)v6, *(_QWORD *)(*(_QWORD *)v6 + 8i64) != v6) )
__fastfail(3u);
*(_QWORD *)v5 = v7;
*(_QWORD *)(v7 + 8) = v5;
if( (char *)v6 == v5 )
break;
sub_14065EF2C((_EX_PUSH_LOCK *)P, v6);
}
for( k = 0; k < *((_DWORD *)P + 35); ++k )
WbFreeWarbirdEncryptionSegment(*(PVOID *)(k * *((_DWORD *)P + 34) + *((_QWORD *)P + 19)));
sub_14064F544((__int64)P + 136);
if( *((_DWORD *)P + 47) )
{
do
WbFreeMemoryBlock(*(PVOID **)(*((_DWORD *)P + 46) * v1++ + *((_QWORD *)P + 25)));
while( v1 < *((_DWORD *)P + 47) );
}
sub_14064F544((__int64)P + 184);
ExFreePoolWithTag(P, 0x42524157u);
}
return 0;
}Referenced by:
sub_14065E8E4