MiCaptureSectionCreateExtendedParameters

NTSTATUS __stdcall MiCaptureSectionCreateExtendedParameters(PVOID Address, ULONGLONG ullMultiplicand){
  _OWORD *v2; 
  _OWORD *v3; 
  _QWORD *v4; 
  int v5; 
  __int64 v7; 
  char v8; 
  int v9; 
  unsigned __int64 v10; 
  int v11; 
  int v12; 
  int v13; 
  int v14; 
  ULONGLONG pullResult; 
  _QWORD *v16; 
  unsigned __int64 v17; 
  v3 = v2;
  v4 = Address;
  pullResult = 0i64;
  *v2 = 0i64;
  if( !(_DWORD)ullMultiplicand )
    return Address != 0i64 ? 0xC000000D : 0;
  if( !Address )
    return -1073741811;
  v7 = (unsigned int)ullMultiplicand;
  v5 = RtlULongLongMult((unsigned int)ullMultiplicand, 0x10ui64, &pullResult);
  if( v5 >= 0 )
  {
    v9 = 0;
    if( v8 )
      ProbeForWrite(v4, pullResult, 8ui64);
    v16 = v4;
    v10 = (unsigned __int64)&v4[2 * v7];
    v17 = v10;
    while( (unsigned __int64)v4 < v10 )
    {
      v11 = (unsigned __int8)*(_DWORD *)v4;
      if( (unsigned int)(v11 - 1) > 1 || *v4 >= 0x100ui64 )
        return -1073741811;
      v12 = 1 << v11;
      if( ((1 << v11) & 6) == 0 )
        return -1073741811;
      if( (v12 & v9) != 0 )
        return -1073741811;
      v9 |= v12;
      v13 = v11 - 1;
      if( v13 )
      {
        if( v13 != 1 )
          return -1073741811;
        if( v4[1] > 0xFFFFFFFFui64 )
          return -1073741811;
        v14 = *((_DWORD *)v4 + 2);
        *((_DWORD *)v3 + 2) = v14;
        if( v14 == -1 )
          return -1073741811;
        *((_DWORD *)v3 + 2) = v14 + 1;
      }
      else
      {
        if( (v4[1] & 0xFFFFFFFFFFFFFFFEui64) != 0 )
          return -1073741811;
        *(_BYTE *)v3 = 1;
        *((_DWORD *)v3 + 1) = *((_DWORD *)v4 + 2);
      }
      v4 += 2;
      v16 = v4;
    }
    *((_DWORD *)v3 + 3) = v9;
    return 0;
  }
  return v5;
}

Referenced by:

MiCreateSectionCommon