RtlpMuiRegGetOrAddString

NTSTATUS __stdcall RtlpMuiRegGetOrAddString(
        _MUIREGISTRYINFO *RegInfo,
        const WCHAR *NewString,
        UINT8 CreateIfMissing,
        INT16 *ResultIndexRtrn){
  INT16 v4; 
  UINT8 v9; 
  INT64 v10; 
  NTSTATUS result; 
  _MUISTRINGPOOL *v12; 
  INT64 PoolSpaceNeededRtrn; 

  v4 = -1;
  LODWORD(PoolSpaceNeededRtrn) = 0;
  if( !RegInfo || !NewString || !*NewString )
    goto LABEL_12;
  if( !CreateIfMissing || (v9 = 1, (*RegInfo & 2) == 0) )
    v9 = 0;
  v4 = RtlpMuiRegGetOrAddStringToPool(*((_MUISTRINGPOOL **)RegInfo + 4), (WCHAR *)NewString, v9, &PoolSpaceNeededRtrn);
  if( v4 >= 0 )
    goto LABEL_7;
  if( CreateIfMissing )
  {
    v12 = RtlpMuiRegGrowStringPool(*((_MUISTRINGPOOL **)RegInfo + 4), v10, PoolSpaceNeededRtrn);
    if( v12 )
    {
      *RegInfo |= 2u;
      *((_QWORD *)RegInfo + 4) = v12;
      v4 = RtlpMuiRegGetOrAddStringToPool(v12, (WCHAR *)NewString, 1u, 0i64);
      if( v4 >= 0 )
      {
LABEL_7:
        result = 0;
        goto LABEL_8;
      }
    }
    result = -1073741801;
  }
  else
  {
LABEL_12:
    result = -1073741811;
  }
LABEL_8:
  if( ResultIndexRtrn )
    *ResultIndexRtrn = v4;
  return result;
}

Referenced by:

RtlMuiRegAddLIPParent
RtlpLoadPolicyLanguageSpec
RtlpMuiRegGetInstalledLanguageIndexByName
RtlpMuiRegGetLanguageSpec
RtlpMuiRegInitAnyLanguage
RtlpMuiRegValidateInstalled