CmpCleanupPathInfo
PSLIST_ENTRY __fastcall CmpCleanupPathInfo(__int64 a1){
struct _SLIST_ENTRY *v1;
struct _KPRCB *CurrentPrcb;
__int64 v3;
PSLIST_ENTRY result;
v1 = *(struct _SLIST_ENTRY **)(a1 + 160);
if( v1 )
{
CurrentPrcb = KeGetCurrentPrcb();
v3 = *((_QWORD *)CurrentPrcb + 272);
++*(_DWORD *)(v3 + 28);
if( *(_WORD *)v3 < *(_WORD *)(v3 + 16) )
return RtlpInterlockedPushEntrySList((PSLIST_HEADER)v3, v1);
++*(_DWORD *)(v3 + 32);
v3 = *((_QWORD *)CurrentPrcb + 273);
++*(_DWORD *)(v3 + 28);
if( *(_WORD *)v3 < *(_WORD *)(v3 + 16) )
{
return RtlpInterlockedPushEntrySList((PSLIST_HEADER)v3, v1);
}
else
{
++*(_DWORD *)(v3 + 32);
return(PSLIST_ENTRY)(*(__int64(__fastcall **)(struct _SLIST_ENTRY *))(v3 + 56))(v1);
}
}
return result;
}Referenced by:
CmpDoParseKey
CmpGetSymbolicLinkTarget