ST_STORE::StDeviceWorkItemCleanup

VOID *__fastcall ST_STORE::StDeviceWorkItemCleanup(_DWORD *a1, __int64 a2){
  int v4; 
  int v5; 
  VOID *result; 

  ST_STORE::StRegionReadDereference((__int64)a1, *(_DWORD *)(a2 + 24) >> a1[203]);
  v4 = a1[450];
  if( (v4 & 1) != 0 && (*(_QWORD *)(a2 + 16) | 1i64) == *((_QWORD *)a1 + 225) )
    a1[450] = v4 & 0xFFFFFFFE;
  else
    ExFreePoolWithTag(*(PVOID *)(a2 + 16), 0);
  v5 = a1[452];
  if( (v5 & 1) == 0 )
    return ExFreePoolWithTag((PVOID)a2, 0);
  result = (VOID *)(a2 | 1);
  if( (a2 | 1) != *((_QWORD *)a1 + 226) )
    return ExFreePoolWithTag((PVOID)a2, 0);
  a1[452] = v5 & 0xFFFFFFFE;
  return result;
}

Referenced by:

No references.