SleepstudyHelperCreateBlockerData
VOID __stdcall SleepstudyHelperCreateBlockerData(CHAR a1, INT64 a2){
unsigned int v2;
__int64 v3;
unsigned int v4;
__int64 v5;
__int64 v7;
char *v8;
unsigned int v9;
_QWORD *v10;
unsigned int v11;
size_t v12;
char *v13;
__int128 v14;
__int64 v15;
_QWORD *v16;
_QWORD *v17;
v4 = v2;
v5 = v3;
v7 = a1;
v8 = 0i64;
if( a1 && v2 && v3 && v17 )
{
v9 = 0;
v10 = (_QWORD *)(v3 + 24);
while( *(v10 - 2) && *((_WORD *)v10 - 12) && *v10 )
{
++v9;
v10 += 4;
if( v9 >= v2 )
{
v11 = 32 * v2;
if( 32 * (unsigned __int64)v2 > 0xFFFFFFFF )
return;
if( v11 + 48 < v11 )
return;
v12 = v11 + 48;
LODWORD(v13) = SSHSupportAllocateNonPaged(v11 + 48, *(_DWORD *)(v7 + 24));
v8 = v13;
if( !v13 )
return;
memset(v13, 0i64, v12);
v14 = *(_OWORD *)a2;
*((_QWORD *)v8 + 2) = v7;
*(_OWORD *)(v8 + 24) = v14;
*((_QWORD *)v8 + 1) = v8;
*(_QWORD *)v8 = v8;
*((_DWORD *)v8 + 10) = 0;
if( !v4 )
{
LABEL_19:
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)(v7 + 16), 0i64);
v16 = *(_QWORD **)(v7 + 64);
if( *v16 != v7 + 56 )
__fastfail(3u);
*((_QWORD *)v8 + 1) = v16;
*(_QWORD *)v8 = v7 + 56;
*v16 = v8;
*(_QWORD *)(v7 + 64) = v8;
SSHSupportReleasePushLockExclusive(v7 + 16);
*v17 = v8;
return;
}
v15 = 0i64;
while( SshpCopyDataEntry(
*(_DWORD *)(v7 + 24),
(PCUNICODE_STRING)(32 * v15 + v5),
(PUNICODE_STRING)&v8[32 * v15 + 48]) >= 0 )
{
v15 = (unsigned int)(*((_DWORD *)v8 + 10) + 1);
*((_DWORD *)v8 + 10) = v15;
if( (unsigned int)v15 >= v4 )
goto LABEL_19;
}
goto LABEL_23;
}
}
}
else
{
LABEL_23:
if( v8 )
SshpFreeDataEntry(v8);
}
}Referenced by:
No references.