MiFindProcessImageHotPatchRecord

VOID __fastcall MiFindProcessImageHotPatchRecord(){
  unsigned int v0; 
  _EPROCESS *v1; 
  unsigned int v2; 
  _UNICODE_STRING *v3; 
  unsigned int v4; 
  unsigned int v5; 
  _EPROCESS *v6; 
  _UNICODE_STRING *StringOut; 
  _ETHREAD *CurrentThread; 
  struct _DMA_ADAPTER *v9; 
  _QWORD *UserSidHotPatchContext; 
  UINT8 result[80]; 
  INT64 a6; 
  v4 = v0;
  v5 = v2;
  v6 = v1;
  StringOut = v3;
  memset((INT64)result, 0i64);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v9 = 0i64;
  --*((_WORD *)CurrentThread + 243);
  ExAcquirePushLockSharedEx((UINT64)&MiHotPatchListLock, 0i64);
  if( !MiUserSidPatchLists
    || (v9 = (struct _DMA_ADAPTER *)PsReferencePrimaryToken((PEPROCESS)v6),
        SeQueryUserSidToken(v9, result, 0x44ui64, 0i64),
        (UserSidHotPatchContext = MiFindUserSidHotPatchContext(result)) == 0i64)
    || (unsigned int)MiFindHotPatchRecord((_QWORD **)UserSidHotPatchContext + 3, 1ui64, v4, v5, StringOut, a6) == -1073741275 )
  {
    MiFindHotPatchRecord((_QWORD **)&MiGlobalHotPatchList, 1ui64, v4, v5, StringOut, a6);
  }
  if( _InterlockedCompareExchange64((volatile signed __int64 *)&MiHotPatchListLock, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((INT64 *)&MiHotPatchListLock);
  KeAbPostRelease(&MiHotPatchListLock);
  KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
  if( v9 )
    HalPutDmaAdapter(v9);
}

Referenced by:

MiHotPatchImage