SepAdtCopyToLsaSharedMemory

INT64 __stdcall SepAdtCopyToLsaSharedMemory(
        VOID *LsaProcessHandle,
        VOID *Buffer,
        UINT64 BufferLength,
        VOID **LsaBufferAddress){
  __int64 v5; 
  int v7; 
  PSIZE_T NumberOfBytesWritten; 
  UINT64 v10; 
  PVOID BaseAddress; 
  ULONG_PTR RegionSize; 
  __int64 v13[2]; 
  BaseAddress = 0i64;
  v13[0] = 0i64;
  v5 = (unsigned int)BufferLength;
  LODWORD(v10) = 4;
  RegionSize = (unsigned int)BufferLength;
  LODWORD(NumberOfBytesWritten) = 4096;
  v7 = ZwAllocateVirtualMemory(LsaProcessHandle, &BaseAddress, 0i64, &RegionSize, (UINT64)NumberOfBytesWritten, v10);
  if( v7 >= 0 )
  {
    v7 = ZwWriteVirtualMemory((KEVENT *)LsaProcessHandle);
    if( v7 >= 0 )
    {
      if( v5 == v13[0] )
      {
        *LsaBufferAddress = BaseAddress;
        return(unsigned int)v7;
      }
      v7 = -1073741823;
    }
    RegionSize = 0i64;
    ZwFreeVirtualMemory(LsaProcessHandle, &BaseAddress, &RegionSize, 0x8000ui64);
  }
  return(unsigned int)v7;
}

Referenced by:

SepRmDispatchDataToLsa