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