HalpAllocateKInterrupt
CHAR *__stdcall HalpAllocateKInterrupt(INT64 a1, INT64 a2){
CHAR *v2;
int v3;
VOID **PoolWithTag;
unsigned __int64 v6;
v2 = (char *)&stru_140CF2E80 + 64;
v3 = a1;
PoolWithTag = (VOID **)((char *)&stru_140CF2E80 + 288 * dword_140C5079C + 64);
while( v2 < (CHAR *)PoolWithTag )
{
if( *((_DWORD *)v2 + 24) == (_DWORD)a1 && *((_DWORD *)v2 + 22) == (_DWORD)a2 )
return v2;
v2 += 288;
}
v6 = qword_140C507A8;
if( qword_140C507A8 )
{
while( v6 < qword_140C507A8 + 288 * (unsigned __int64)dword_140C507A0 )
{
if( *(_DWORD *)(v6 + 96) == v3 && *(_DWORD *)(v6 + 88) == (_DWORD)a2 )
return(CHAR *)v6;
v6 += 288i64;
}
}
if( dword_140C5079C < 0x10 )
{
++dword_140C5079C;
}
else if( dword_140C507A0 >= dword_140C507A4 )
{
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x120ui64, 543973704i64);
}
else
{
PoolWithTag = (VOID **)(qword_140C507A8 + 288i64 * dword_140C507A0++);
}
if( !PoolWithTag )
*(&CmpDummyThreadEvent + 1789) = 30;
return(CHAR *)PoolWithTag;
}Referenced by:
No references.