PopPepUnregisterDevice
VOID __stdcall PopPepUnregisterDevice(PVOID P){
unsigned int v2;
__int64 v3;
INT64 v4;
PLARGE_INTEGER Timeout;
DbgPrintEx(0x92u, 3u, "PopPep: unregister device(0x%p)\n", P);
v2 = 0;
PopPepProcessEvent((INT64)P, 0i64, 6i64, 5ui64, (INT64)Timeout, 0i64);
KeWaitForSingleObject((char *)P + 40, Executive, 0, 0, 0i64);
PopPepWaitForDeviceRelease((INT64)P);
PopPepRemoveDevice((INT64 *)P);
v3 = *((int *)P + 42);
v4 = 0i64;
if( (_DWORD)v3 != 4 )
v4 = *((unsigned int *)P + v3 + 35);
PopPepUpdateIdleStateRefCount(v4, 0i64, 0i64);
if( *((_DWORD *)P + 45) )
{
do
PopPepUpdateIdleStateRefCount(*(unsigned int *)(*((_QWORD *)P + 25 * v2++ + 47) + 16i64), 0i64, 0i64);
while( v2 < *((_DWORD *)P + 45) );
}
ExFreePoolWithTag(P, 0x54706550u);
}Referenced by:
PopFxUnregisterDevice