RtlQueryPackageClaims

NTSTATUS __stdcall RtlQueryPackageClaims(
        VOID *TokenObject,
        WCHAR *PackageFullName,
        UINT64 *PackageSize,
        WCHAR *AppId,
        UINT64 *AppIdSize,
        _GUID *DynamicId,
        PS_PKG_CLAIM *PkgClaim,
        UINT64 *AttributesPresent){
  VOID *v12; 
  NTSTATUS result; 
  NTSTATUS v14; 
  UINT64 *v15; 
  _PS_PKG_CLAIM v16; 
  UINT64 dwFlags; 
  WCHAR *ppszDestEnd; 
  WCHAR *v19; 
  UINT64 *v20; 
  UINT64 pcbRemaining; 
  _PS_PKG_CLAIM v22[102]; 

  v19 = 0i64;
  v20 = AppIdSize;
  memset(v22, 0i64, sizeof(v22));
  ppszDestEnd = 0i64;
  result = RtlpQueryPackageIdentityAttributes(TokenObject, v12, v22, PkgClaim, AttributesPresent);
  v14 = result;
  if( result < 0 )
    return result;
  if( PackageFullName )
  {
    if( PackageSize )
    {
      LODWORD(dwFlags) = 2048;
      result = RtlStringCbPrintfExW(
                 PackageFullName,
                 *PackageSize,
                 &ppszDestEnd,
                 &pcbRemaining,
                 dwFlags,
                 (WCHAR *)L"%wZ");
      v14 = result;
      if( result < 0 )
        return result;
      *PackageSize = (char *)ppszDestEnd - (char *)PackageFullName + 2;
      goto LABEL_7;
    }
    return -1073741811;
  }
  if( PackageSize )
    return -1073741811;
LABEL_7:
  if( AppId )
  {
    LODWORD(dwFlags) = 2048;
    v15 = v20;
    result = RtlStringCbPrintfExW(AppId, *v20, &v19, 0i64, dwFlags, (WCHAR *)L"%wZ");
    v14 = result;
    if( result < 0 )
      return result;
    *v15 = (char *)v19 - (char *)AppId + 2;
  }
  if( DynamicId )
  {
    v16 = v22[1];
    *DynamicId = 0i64;
    if( *(_DWORD *)(*(_QWORD *)&v16 + 24i64) > 3u )
      RtlGUIDFromString((_UNICODE_STRING *)(*(_QWORD *)(*(_QWORD *)&v16 + 32i64) + 48i64), DynamicId);
  }
  return v14;
}

Referenced by:

RtlQueryPackageIdentityEx
SepVerifyDesktopAppPolicyOverrideCaller