PiCMCaptureProblemInputData

NTSTATUS __stdcall PiCMCaptureProblemInputData(
        VOID *IoctlInputBuffer,
        UINT64 IoctlInputBufferSize,
        _CMAPI_INPUT_PROBLEM_DATA *ProblemData){
  _OWORD *v3; 
  NTSTATUS v4; 
  __int64 v5; 
  char *v6; 
  _OWORD *v7; 

  v4 = 0;
  if( IoctlInputBuffer && (unsigned int)IoctlInputBufferSize >= 0x1A0 )
  {
    v5 = 3i64;
    if( ((unsigned __int8)IoctlInputBuffer & 3) != 0 )
      ExRaiseDatatypeMisalignment();
    v6 = (char *)IoctlInputBuffer + (unsigned int)IoctlInputBufferSize;
    if( (unsigned __int64)v6 > 0x7FFFFFFF0000i64 || v6 < IoctlInputBuffer )
      MEMORY[0x7FFFFFFF0000] = 0;
    v7 = v3;
    do
    {
      *v7 = *(_OWORD *)IoctlInputBuffer;
      v7[1] = *((_OWORD *)IoctlInputBuffer + 1);
      v7[2] = *((_OWORD *)IoctlInputBuffer + 2);
      v7[3] = *((_OWORD *)IoctlInputBuffer + 3);
      v7[4] = *((_OWORD *)IoctlInputBuffer + 4);
      v7[5] = *((_OWORD *)IoctlInputBuffer + 5);
      v7[6] = *((_OWORD *)IoctlInputBuffer + 6);
      v7 += 8;
      *(v7 - 1) = *((_OWORD *)IoctlInputBuffer + 7);
      IoctlInputBuffer = (char *)IoctlInputBuffer + 128;
      --v5;
    }
    while( v5 );
    *v7 = *(_OWORD *)IoctlInputBuffer;
    v7[1] = *((_OWORD *)IoctlInputBuffer + 1);
    if( *(_DWORD *)v3 == 416 )
      *((_WORD *)v3 + 203) = 0;
    else
      v4 = -1073741811;
  }
  else
  {
    v4 = -1073741811;
  }
  if( v4 < 0 )
    memset(v3, 0i64, 0x1A0u);
  return v4;
}

Referenced by:

PiCMSetDeviceProblem