HalSetEnvironmentVariableEx

NTSTATUS __stdcall HalSetEnvironmentVariableEx(PWCHAR VariableName, GUID *VendorGuid, PVOID Value){
  int v3; 
  int v4; 
  char v7; 
  __int64 v8; 
  __int64 v9; 
  UINT64 v10; 
  unsigned __int64 v11; 
  __int64 v12; 
  signed __int64 v13; 
  void *v14; 
  void *v15; 
  unsigned int v16; 
  NTSTATUS v17; 
  wchar_t Dst[8]; 
  struct _GROUP_AFFINITY PreviousAffinity; 
  char v20; 
  v4 = v3;
  *(_OWORD *)Dst = 0i64;
  PreviousAffinity = 0i64;
  if( !HalFirmwareTypeEfi )
    return -1073741822;
  v7 = 1;
  if( (v20 & 1) == 0 )
    return -1073741811;
  v8 = -1i64;
  do
    ++v8;
  while( VariableName[v8] );
  v9 = (unsigned int)(v8 + 1);
  if( (unsigned int)v9 >= 0x100 )
    v9 = 256i64;
  v10 = (unsigned int)v9;
  v11 = 2 * v9;
  v12 = v11 + 15;
  if( v11 + 15 <= v11 )
    v12 = 0xFFFFFFFFFFFFFF0i64;
  v13 = v12 & 0xFFFFFFFFFFFFFFF0ui64;
  v14 = alloca(v13);
  v15 = alloca(v13);
  wcscpy_s(Dst, v10, VariableName);
  if( KeGetCurrentIrql() >= 2u )
  {
    v7 = 0;
  }
  else
  {
    v16 = KiProcessorIndexToNumberMappingTable[*((unsigned int *)KeGetPcr() + 105)];
    Dst[6] = 0;
    Dst[7] = 0;
    *(_DWORD *)&Dst[4] = (unsigned __int16)(v16 >> 6);
    *(_QWORD *)Dst = 1i64 << (v16 & 0x3F);
    KeSetSystemGroupAffinityThread((PGROUP_AFFINITY)Dst, &PreviousAffinity);
  }
  if( (v20 & 0x40) != 0 )
    v17 = -1073741811;
  else
    v17 = HalEfiSetEnvironmentVariable((__int64)Dst);
  if( v4 )
    v17 = HalEfiSetEnvironmentVariable((__int64)Dst);
  if( v7 )
    KeRevertToUserGroupAffinityThread(&PreviousAffinity);
  return v17;
}

Referenced by:

HaliAcpiSleep
IopSetEnvironmentVariableHal
PopCheckpointSystemSleepUnsafe
PopSetMemoryOverwriteRequestAction
WheapCheckForAndReportErrorsFromPreviousSession
WheapPersistPageForMemoryError