SMKM_STORE_MGR::SmCompressCtxCreateThread

__int64 __fastcall SMKM_STORE_MGR::SmCompressCtxCreateThread(__int64 a1, __int64 a2, int a3){
  VOID **ThreadParams; 
  VOID **StartContext; 
  KSTART_ROUTINE *StartRoutine; 
  NTSTATUS v8; 
  __int16 Object; 
  char v11; 
  int v12; 
  __int64 v13[3]; 
  void *ThreadHandle; 

  ThreadHandle = 0i64;
  ThreadParams = SMKM_STORE_MGR::SmCompressCtxCreateThreadParams(a1, a3);
  StartContext = ThreadParams;
  if( ThreadParams )
  {
    ThreadParams[1] = (VOID *)a2;
    if( a3 )
    {
      Object = 0;
      v12 = 0;
      v13[1] = (__int64)v13;
      v13[0] = (__int64)v13;
      v11 = 6;
      ThreadParams[2] = &Object;
      StartRoutine = (KSTART_ROUTINE *)SMKM_STORE_MGR::SmCompressCtxWorkerThread;
    }
    else
    {
      StartRoutine = (KSTART_ROUTINE *)SMKM_STORE_MGR::SmCompressCtxBalancerThread;
    }
    v8 = PsCreateSystemThread(&ThreadHandle, 0x1FFFFFu, 0i64, *(_QWORD *)(a2 + 1856), 0i64, StartRoutine, StartContext);
    if( v8 >= 0 )
    {
      if( a3 )
        KeWaitForSingleObject((UINT64)&Object, 26, 0, 0, 0i64);
      StartContext = 0i64;
      v8 = 0;
    }
    if( StartContext )
      SMKM_STORE_MGR::SmCompressContextDeleteThreadParams(StartContext);
  }
  else
  {
    v8 = -1073741670;
  }
  if( ThreadHandle )
    ObCloseHandle(ThreadHandle, 0);
  return(unsigned int)v8;
}

Referenced by:

No references.