WheapWmiExecutePolicyManagementMethod

INT64 __stdcall WheapWmiExecutePolicyManagementMethod(
        UINT64 MethodId,
        UINT64 BufferSize,
        UINT8 *Buffer,
        UINT64 InputBufferSize,
        UINT64 *BytesUsed){
  int v6; 
  int v7; 
  int v8; 
  int v9; 
  unsigned int AllPolicyValues; 
  unsigned int v11; 
  UINT64 v12; 
  NTSTATUS PolicyValue; 
  int v14; 
  unsigned int AllPolicyBufferSize; 
  __int64 v16; 
  int v17; 
  unsigned int v18; 
  UINT64 Count[3]; 
  UINT64 Value; 
  LODWORD(Value) = 0;
  v6 = 0;
  LODWORD(Count[0]) = 0;
  v7 = MethodId - 1;
  if( !v7 )
  {
    AllPolicyBufferSize = WheapGetAllPolicyBufferSize();
    v6 = AllPolicyBufferSize + 12;
    if( v18 < AllPolicyBufferSize + 12 )
      goto LABEL_18;
    *(_DWORD *)v16 = v17;
    *(_DWORD *)(v16 + 8) = AllPolicyBufferSize;
    AllPolicyValues = WheapGetAllPolicyValues(Count, AllPolicyBufferSize, (UINT8 *)(v16 + 12));
    v14 = Count[0];
    goto LABEL_20;
  }
  v8 = v7 - 1;
  if( !v8 )
  {
    if( (unsigned int)InputBufferSize < 4 )
      goto LABEL_13;
    v6 = 8;
    if( (unsigned int)BufferSize < 8 )
      goto LABEL_18;
    PolicyValue = WheapGetPolicyValue(*(unsigned int *)Buffer, &Value);
    *(_DWORD *)Buffer = PolicyValue;
    AllPolicyValues = PolicyValue;
    if( PolicyValue )
      goto LABEL_21;
    v14 = Value;
LABEL_20:
    *((_DWORD *)Buffer + 1) = v14;
    goto LABEL_21;
  }
  v9 = v8 - 1;
  if( !v9 )
  {
    if( (unsigned int)InputBufferSize >= 8 )
    {
      v6 = 4;
      v12 = *(unsigned int *)Buffer;
      LODWORD(Value) = *((_DWORD *)Buffer + 1);
      if( (unsigned int)BufferSize >= 4 )
      {
        v11 = WheapSetPolicyValue(v12, &Value);
        goto LABEL_11;
      }
LABEL_18:
      AllPolicyValues = -1073741789;
      goto LABEL_21;
    }
LABEL_13:
    AllPolicyValues = -1073741811;
    goto LABEL_21;
  }
  if( v9 == 1 )
  {
    v6 = 4;
    if( (unsigned int)BufferSize >= 4 )
    {
      v11 = WheapCommitPolicy();
LABEL_11:
      AllPolicyValues = v11;
      *(_DWORD *)Buffer = v11;
      goto LABEL_21;
    }
    goto LABEL_18;
  }
  AllPolicyValues = -1073741161;
LABEL_21:
  *(_DWORD *)BytesUsed = v6;
  return AllPolicyValues;
}

Referenced by:

WheapWmiExecuteMethod