FsRtlPrivateInsertLock

VOID __fastcall FsRtlPrivateInsertLock(_LOCK_INFO *LockInfo, _FILE_OBJECT *FileObject, _FILE_LOCK_INFO *FileLockInfo){
  char *v6; 
  VOID *v7; 
  void *v8; 
  char v9; 
  char *v10; 

  if( FileLockInfo->ExclusiveLock )
  {
    v10 = (char *)ExAllocateFromNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2728));
    if( !v10 )
      return;
    v8 = v10 + 24;
    *(_OWORD *)(v10 + 24) = *(_OWORD *)&FileLockInfo->StartingByte.anonymous_0.LowPart;
    *(_OWORD *)(v10 + 40) = *(_OWORD *)&FileLockInfo->ExclusiveLock;
    *(_OWORD *)(v10 + 56) = *(_OWORD *)&FileLockInfo->ProcessId;
    FsRtlPrivateInsertExclusiveLock(LockInfo + 6, (PRTL_SPLAY_LINKS *)v10);
  }
  else
  {
    v6 = (char *)ExAllocateFromNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2600));
    v7 = v6;
    if( !v6 )
      return;
    v8 = v6 + 8;
    *(_OWORD *)(v6 + 8) = *(_OWORD *)&FileLockInfo->StartingByte.anonymous_0.LowPart;
    *(_OWORD *)(v6 + 24) = *(_OWORD *)&FileLockInfo->ExclusiveLock;
    *(_OWORD *)(v6 + 40) = *(_OWORD *)&FileLockInfo->ProcessId;
    FsRtlPrivateInsertSharedLock(LockInfo + 6, (_SH_LOCK *)v6);
    if( !v9 )
    {
      ExFreeToNPagedLookasideList((_NPAGED_LOOKASIDE_LIST *)((char *)&WheapErrorSourceTable + 2600), v7);
      return;
    }
  }
  FileObject->LastLock = v8;
  if( FileLockInfo->StartingByte.QuadPart < *(_QWORD *)LockInfo )
    *(_QWORD *)LockInfo = FileLockInfo->StartingByte.QuadPart;
}

Referenced by:

FsRtlPrivateCheckWaitingLocks
FsRtlPrivateLock