<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/07bfc250747b5156a97008ec189690aea450f73d">https://github.com/macports/macports-ports/commit/07bfc250747b5156a97008ec189690aea450f73d</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 07bfc250747 wine-devel, wine-staging: New ports
</span>07bfc250747 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 07bfc250747b5156a97008ec189690aea450f73d
</span>Author: Dean M Greer <38226388+Gcenx@users.noreply.github.com>
AuthorDate: Tue Jun 11 21:21:26 2024 -0400

<span style='display:block; white-space:pre;color:#404040;'>    wine-devel, wine-staging: New ports
</span>---
 emulators/{wine-stable => wine-devel}/Portfile     |  51 +-
 .../files/0001-winemac.drv-no-flicker-patch.diff   |  61 ++
 emulators/wine-devel/files/macos_hacks.diff        | 941 +++++++++++++++++++++
 emulators/wine-stable/Portfile                     |   2 +-
 x11/wine-devel/Portfile                            | 389 ---------
 x11/wine-devel/files/BOOL.patch                    | 126 ---
 x11/wine-devel/files/cups_headers.patch            |  10 -
 x11/wine-devel/files/fix-flicker.patch             | 102 ---
 x11/wine-devel/files/mach_machine.patch            |  12 -
 9 files changed, 1041 insertions(+), 653 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/Portfile b/emulators/wine-devel/Portfile
</span>similarity index 75%
copy from emulators/wine-stable/Portfile
copy to emulators/wine-devel/Portfile
<span style='display:block; white-space:pre;color:#808080;'>index e1c1ffbfed3..e19c8a1bb34 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -7,14 +7,14 @@ PortGroup                   muniversal 1.1
</span> 
 # Keep the wine-stable, wine-devel and wine-crossover portfiles as similar as possible.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup                wine-mirror wine 9.0 wine-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup                wine-mirror wine 9.10 wine-
</span> github.tarball_from         archive
<span style='display:block; white-space:pre;background:#ffe0e0;'>-name                        wine-stable
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-conflicts                   wine-devel wine-crossover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                        wine-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts                   wine-stable wine-staging wine-crossover
</span> set my_name                 wine
 revision                    0
 platforms                   {darwin >= 19}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set branch                  [lindex [split ${version} .] 0].0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set branch                  [lindex [split ${version} .] 0].x
</span> license                     LGPL-2.1+
 categories                  emulators
 supported_archs             x86_64
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,9 +36,10 @@ long_description \
</span>     integrate Windows applications into your desktop.
 
 checksums \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    rmd160  8a74032d3612e613ef5b97e9d2908ac612fa8d93 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    sha256  90cd86d1203a7b1d304ae15461bbe0cbf1fd24feb407b551d011cc6d2967eb3f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    size    48912704
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ${distname}${extract.suffix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    rmd160  1c78a5448e9f5b67f2596ddad047924d26d75e7e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    sha256  21888fe11fad645934a5a03c9a4c515821d293af2341321e129e1f779945a24f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    size    49438484
</span> 
 depends_build \
     port:bison \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -57,14 +58,12 @@ depends_lib \
</span> 
 depends_run \
     port:mingw-w64-wine-gecko-2.47.4 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    port:mingw-w64-wine-mono-8.1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    port:mingw-w64-wine-mono-9.1.0
</span> 
 patch.pre_args-replace -p0 -p1
 
 patchfiles-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    0001-winemac.drv-no-flicker.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    0002-ntdll-workarond-sendmsg-bug-on-macos.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    0003-winemac.drv-fix_use-after-free_in_macdrv_copy_pasteboard_types.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    0001-winemac.drv-no-flicker-patch.diff
</span> 
 # Some required hacks to make wine work better on macOS & Rosetta2
 patchfiles-append \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -99,6 +98,7 @@ configure.args \
</span>     --without-krb5 \
     --with-mingw \
     --without-netapi \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    --without-odbc \
</span>     --with-opencl \
     --with-opengl \
     --without-oss \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -125,6 +125,31 @@ configure.ldflags-append    -Wl,-rpath,${compiler.library_path}
</span> # FSF GCC cannot compile code using Apple's "blocks" language extensions
 compiler.blacklist-append   {*gcc*} {clang < 800} {macports-clang-3.*}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+subport wine-staging {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    conflicts               wine-stable wine-devel wine-crossover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set staging_version     ${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set wine_staging_distfile v${staging_version}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    distfiles-append        ${wine_staging_distfile}:stagingsource
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    master_sites-append     https://github.com/wine-staging/wine-staging/archive/:stagingsource
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    worksrcdir              wine-${distname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    extract.rename          no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    checksums-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${wine_staging_distfile} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        rmd160  b3418e632fb9163a9242f9b3bc44f08c4eed5b8b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        sha256  79af9a7f18cc975a38ec831903bd62cf509e9445600600aac5d5ed8569bb75d5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        size    9436968
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_extract-append port:autoconf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Running "patchinstall.py" before 'patchfiles' get inherited from wine-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # "winemac.drv-no-flicker-patch" gets inherited from wine-devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "${workpath}/wine-staging-${staging_version}/staging/patchinstall.py --all -W winemac.drv-no-flicker-patch"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # Makes destroot take significantly longer
 variant dev description "Install ${subport} development environment" {
     build.target            all
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -159,7 +184,7 @@ muniversal.arch_flag        no
</span> muniversal.arch_compiler    yes
 configure.ldflags-delete    -L${compiler.library_path}
 configure.optflags          -g -O2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.env-append        "CROSSCFLAGS=${configure.optflags}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append        "CROSSCFLAGS=${configure.optflags} -Wno-incompatible-pointer-types"
</span> 
 # Were only installing wine not the development files
 destroot.target             install-lib
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -185,4 +210,4 @@ pre-activate {
</span> 
 livecheck.url               ${homepage}
 livecheck.type              regex
<span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex             {"/announce/([0-9]+\.0(\.[0-9]+)*)"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex             {"/announce/([^"]+)"}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/0001-winemac.drv-no-flicker-patch.diff b/emulators/wine-devel/files/0001-winemac.drv-no-flicker-patch.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..afb64dcb2eb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/0001-winemac.drv-no-flicker-patch.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,61 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ad91a015d40c8bea7dcb603ead7897e593ea173a Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Ken Thomases <ken@codeweavers.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 22 Jun 2021 07:56:43 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] winemac.drv: No Flicker patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/winemac.drv/macdrv.h      | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/winemac.drv/macdrv_main.c | 4 ++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dlls/winemac.drv/opengl.c      | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 6 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 19efc4dc7d4..2468d4219f6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/winemac.drv/macdrv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/winemac.drv/macdrv.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -44,6 +44,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern BOOL allow_set_gamma;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern BOOL allow_software_rendering;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern BOOL disable_window_decorations;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern BOOL force_backing_store;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern const char* debugstr_cf(CFTypeRef t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 21b148ff558..3034fe2f780 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/winemac.drv/macdrv_main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/winemac.drv/macdrv_main.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -60,6 +60,7 @@ int use_precise_scrolling = TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int gl_surface_mode = GL_SURFACE_IN_FRONT_OPAQUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int retina_enabled = FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int enable_app_nap = FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++BOOL force_backing_store = FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CFDictionaryRef localized_strings;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -378,6 +379,9 @@ static void setup_options(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!get_config_key(hkey, appkey, "EnableAppNap", buffer, sizeof(buffer)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         enable_app_nap = IS_OPTION_TRUE(buffer[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!get_config_key(hkey, appkey, "ForceOpenGLBackingStore", buffer, sizeof(buffer)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        force_backing_store = IS_OPTION_TRUE(buffer[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Don't use appkey.  The DPI and monitor sizes should be consistent for all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        processes in the prefix. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!get_config_key(hkey, NULL, "RetinaMode", buffer, sizeof(buffer)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1c0b87d694a..b0a3e25fd73 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/winemac.drv/opengl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/winemac.drv/opengl.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1451,7 +1451,7 @@ static BOOL create_context(struct wgl_context *context, CGLContextObj share, uns
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         attribs[n++] = pf->samples;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (pf->backing_store)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (force_backing_store || pf->backing_store)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         attribs[n++] = kCGLPFABackingStore;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (core)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.43.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-devel/files/macos_hacks.diff b/emulators/wine-devel/files/macos_hacks.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..267b46526b4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-devel/files/macos_hacks.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,941 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 775512e7f0d..049d8224789 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/kernelbase/process.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -502,6 +502,46 @@ done:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static const WCHAR *hack_append_command_line( const WCHAR *cmd, const WCHAR *cmd_line )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* CROSSOVER HACK: bug 13322 (winehq bug 39403)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Insert --no-sandbox in command line of Steam's web helper process to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * work around rendering problems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * CROSSOVER HACK: bug 17315
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Insert --in-process-gpu in command line of Steam's web helper process to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * work around page rendering problems.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * CROSSOVER HACK: bug 21883
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Insert --disable-gpu as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const WCHAR *exe_name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const WCHAR *append;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const WCHAR *required_args;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const WCHAR *forbidden_args;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    options[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {L"steamwebhelper.exe", L" --no-sandbox --in-process-gpu --disable-gpu", NULL, L"--type=crashpad-handler"},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!cmd) return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (i = 0; i < ARRAY_SIZE(options); ++i)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (wcsstr( cmd, options[i].exe_name )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            && (!options[i].required_args || wcsstr(cmd_line, options[i].required_args))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            && (!options[i].forbidden_args || !wcsstr(cmd_line, options[i].forbidden_args)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FIXME( "HACK: appending %s to command line.\n", debugstr_w(options[i].append) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return options[i].append;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *           CreateProcessInternalW   (kernelbase.@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -518,6 +558,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     RTL_USER_PROCESS_PARAMETERS *params = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     RTL_USER_PROCESS_INFORMATION rtl_info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     HANDLE parent = 0, debug = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const WCHAR *append;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ULONG nt_flags = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     USHORT machine = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     NTSTATUS status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -543,6 +584,20 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         app_name = name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* CROSSOVER HACK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if ((append = hack_append_command_line( app_name, tidy_cmdline )))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        WCHAR *new_cmdline = RtlAllocateHeap( GetProcessHeap(), 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                              sizeof(WCHAR) * (lstrlenW(cmd_line) + lstrlenW(append) + 1) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        lstrcpyW(new_cmdline, tidy_cmdline);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        lstrcatW(new_cmdline, append);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (tidy_cmdline != cmd_line) RtlFreeHeap( GetProcessHeap(), 0, tidy_cmdline );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        tidy_cmdline = new_cmdline;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* end CROSSOVER HACK */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    TRACE( "app %s cmdline %s after all hacks\n", debugstr_w(app_name), debugstr_w(tidy_cmdline) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Warn if unsupported features are used */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (flags & (IDLE_PRIORITY_CLASS | HIGH_PRIORITY_CLASS | REALTIME_PRIORITY_CLASS |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5c59d102dd9..08df8328080 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2712,6 +2712,331 @@ static WINE_MODREF *find_existing_module( HMODULE module )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __x86_64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* CW HACK 19487: Patch out %gs:8h accesses in various versions of libcef.dll */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void patch_libcef( const WCHAR* libname, WINE_MODREF** pwm )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_85_3_9_0[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,                               /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xc0, 0xf8                                /* add rax, 0xfffffffffffffff8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_85_3_9_0[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x30, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x30] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x40, 0x08,                               /* mov rax, qword [rax+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,                               /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xe8, 0xe7, 0xff, 0xff, 0xff,                         /* call 0xfffffffffffffffe */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xc0, 0xf8                                /* add rax,0xfffffffffffffff8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_85_3_9_0) == sizeof(after_85_3_9_0) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* The first patch needed for 85.3.11 is the same as 85_3_9_0, just at a different offset. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_85_3_11_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x44, 0x24, 0x28,  /* mov rax, qword ptr [rsp + 0x28] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x34, 0x25, 0x08, 0x00, 0x00, 0x00,  /* mov rsi, qword ptr gs:[0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x85, 0xf6,              /* test rsi, rsi */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x74, 0x2e                     /* jz 0x028c525b */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_85_3_11_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* Taking a cue from after_72_0_3626_121_2 - overwriting the test and jump to make room. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x44, 0x24, 0x28,  /* mov rax, qword ptr [rsp + 0x28] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x34, 0x25, 0x30, 0x00, 0x00, 0x00,  /* mov rsi, qword ptr gs:[0x30] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x76, 0x08,        /* mov rsi, qword ptr [rsi+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                          /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_85_3_11_1) == sizeof(after_85_3_11_1) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_72_0_3626_121_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,                               /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xc0, 0xf8,                               /* add rax, 0xfffffffffffffff8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_72_0_3626_121_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xe8, 0xb7, 0x00, 0x00, 0x00, /* call 0xbc */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                         /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,       /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xe8, 0xa9, 0x00, 0x00, 0x00, /* call 0xae */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                         /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xc0, 0xf8,       /* add rax, 0xfffffffffffffff8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_72_0_3626_121_1) == sizeof(after_72_0_3626_121_1) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_72_0_3626_121_2[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x46, 0x08,                                 /* mov rax, qword [rsi+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x34, 0x25, 0x08, 0x00, 0x00, 0x00,   /* mov rsi, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x85, 0xf6,                                       /* test rsi, rsi */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x74, 0x2e,                                             /* je 0x30 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_72_0_3626_121_2[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x46, 0x08,                                 /* mov rax, qword [rsi+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x34, 0x25, 0x30, 0x00, 0x00, 0x00,   /* mov rsi, qword [gs:0x30] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x76, 0x08,                                 /* mov rsi, qword [rsi+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                   /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_72_0_3626_121_2) == sizeof(after_72_0_3626_121_2) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_72_0_3626_121_3[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,       /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x0f, 0x0b, /* ud2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x6a, 0x1c, /* push 0x1c */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x0f, 0x0b, /* ud2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,       /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x0f, 0x0b, /* ud2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x6a, 0x1d, /* push 0x1d */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x0f, 0x0b  /* ud2 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_72_0_3626_121_3[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x30, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x30] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x40, 0x08,                               /* mov rax, qword [rax+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_72_0_3626_121_3) == sizeof(after_72_0_3626_121_3) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_qt_5_15_2_0_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,                               /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xe8, 0x08                                /* sub rax, 0x8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_qt_5_15_2_0_1[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x30, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x30] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x40, 0x08,                               /* mov rax, qword [rax+8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xc3,                                                 /* ret */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xcc,                                                 /* int3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xec, 0x28,                               /* sub rsp, 0x28 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xe8, 0xe7, 0xff, 0xff, 0xff,                         /* call 0xfffffffffffffffe */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                                                 /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x83, 0xe8, 0x08                                /* sub rax,0x8 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_qt_5_15_2_0_1) == sizeof(after_qt_5_15_2_0_1) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char before_qt_5_15_2_0_2[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xff, 0x15, 0xd5, 0xb4, 0x6e, 0x02,                   /* call [KERNEL32.DLL::VirtualQuery] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x65, 0x48, 0x8b, 0x04, 0x25, 0x08, 0x00, 0x00, 0x00, /* mov rax, qword [gs:0x8] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x4c, 0x24, 0x28                          /* mov rcx, qword [rsp+0x28] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char after_qt_5_15_2_0_2[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xff, 0x15, 0xd5, 0xb4, 0x6e, 0x02, /* call [KERNEL32.DLL::VirtualQuery] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0xe8, 0x78, 0xff, 0xff, 0xff,       /* call 0xfffffffffffffffe */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                               /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                               /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                               /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x90,                               /* nop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        0x48, 0x8b, 0x4c, 0x24, 0x28        /* mov rcx, qword [rsp+0x28] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    C_ASSERT( sizeof(before_qt_5_15_2_0_2) == sizeof(after_qt_5_15_2_0_2) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const WCHAR *libname;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const char *name;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const void *before, *after;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        size_t size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ULONG_PTR offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        BOOL stop_patching_after_success;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } static const patches[] =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 22584L
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * libcef.dll 85.3.11, for an updated Rockstar Games Social Club/Launcher.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "85.3.11-0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* This patch is identical to the one for 85.3.9, just at a different offset. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_85_3_9_0, after_85_3_9_0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_85_3_9_0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x28c5190,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "85.3.11-1",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_85_3_11_1, after_85_3_11_1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_85_3_11_1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x28c521a,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 18582:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * libcef.dll 85.3.9.0 used by the Rockstar Games Social Club/Launcher
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * (and downloadable from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * https://cef-builds.spotifycdn.com/index.html#windows64).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "85.3.9.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_85_3_9_0, after_85_3_9_0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_85_3_9_0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x28c4b30,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 19114:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * libcef.dll 72.0.3626.121 used by the game beamNG.drive.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Patch also works for version downloadable from CEF builds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.121",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_1, after_72_0_3626_121_1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb2ad,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.121",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_2, after_72_0_3626_121_2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb329,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.121",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_3, after_72_0_3626_121_3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb369,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 16900:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * libcef.dll 72.0.3626.96 used by the game Wizard101.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Patch also works for version 3.3626.1886.g162fdec downloadable from CEF builds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.96",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* This patch is identical to the one for 72.0.3626.121, just at a different offset. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_1, after_72_0_3626_121_1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb82d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.96",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_2, after_72_0_3626_121_2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb8a9,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"libcef.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "72.0.3626.96",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_72_0_3626_121_3, after_72_0_3626_121_3,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_72_0_3626_121_3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x23bb8e9,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 21548:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Qt5WebEngineCore.dll 5.15.2.0 used by the EA Launcher.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         * Based on CEF 83.0.4103.122, but has different offsets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"Qt5WebEngineCore.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "5.15.2.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_qt_5_15_2_0_1, after_qt_5_15_2_0_1,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_qt_5_15_2_0_1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x2810f10,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            FALSE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        },
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            L"Qt5WebEngineCore.dll",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            "5.15.2.0",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            before_qt_5_15_2_0_2, after_qt_5_15_2_0_2,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sizeof(before_qt_5_15_2_0_2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            0x2810f8d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    SIZE_T pagesize = page_size;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (i = 0; i < ARRAY_SIZE(patches); i++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        DWORD old_prot;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        void *dllbase = (*pwm)->ldr.DllBase;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        void *target = (void *)((ULONG_PTR)dllbase + patches[i].offset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        void *target_page = (void *)((ULONG_PTR)target & ~(page_size-1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (wcscmp( libname, patches[i].libname ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if ((*pwm)->ldr.SizeOfImage < patches[i].offset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRACE( "%s too small to be %s\n", debugstr_w(libname), patches[i].name );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (memcmp( target, patches[i].before, patches[i].size ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRACE( "%s doesn't match %s\n", debugstr_w(libname), patches[i].name );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        TRACE( "Found %s %s, patching out gs:0x8 accesses\n", debugstr_w(libname), patches[i].name );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NtProtectVirtualMemory( NtCurrentProcess(), &target_page, &pagesize, PAGE_EXECUTE_READWRITE, &old_prot );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        memcpy( target, patches[i].after, patches[i].size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NtProtectVirtualMemory( NtCurrentProcess(), &target_page, &pagesize, old_prot, &old_prot );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (patches[i].stop_patching_after_success)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /******************************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *        load_native_dll  (internal)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3293,6 +3618,10 @@ static NTSTATUS load_dll( const WCHAR *load_path, const WCHAR *libname, DWORD fl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case STATUS_SUCCESS:  /* valid PE file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         nts = load_native_dll( load_path, &nt_name, mapping, &image_info, &id, flags, system, pwm );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __x86_64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (nts == STATUS_SUCCESS && (!wcscmp( libname, L"libcef.dll" ) || !wcscmp( libname, L"Qt5WebEngineCore.dll" )))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            patch_libcef( libname, pwm );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4282,6 +4611,18 @@ static void release_address_space(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __x86_64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern void CDECL wine_get_host_version( const char **sysname, const char **release );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static BOOL is_macos(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *sysname;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    wine_get_host_version( &sysname, NULL );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return !strcmp( sysname, "Darwin" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /******************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *                loader_init
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4357,6 +4698,24 @@ void loader_init( CONTEXT *context, void **entry )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __x86_64__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (is_macos() && !NtCurrentTeb()->WowTebOffset)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* CW HACK 18756 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* Preallocate TlsExpansionSlots.  Otherwise, kernelbase will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               allocate it on demand, but won't be able to do the Mac-specific poking to the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               %gs-relative address. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (!NtCurrentTeb()->TlsExpansionSlots)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                NtCurrentTeb()->TlsExpansionSlots = RtlAllocateHeap( GetProcessHeap(), HEAP_ZERO_MEMORY, 8 * sizeof(NtCurrentTeb()->Peb->TlsExpansionBitmapBits) * sizeof(void*) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            __asm__ volatile ("movq %0,%%gs:%c1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              : "r" (NtCurrentTeb()->TlsExpansionSlots), "n" (FIELD_OFFSET(TEB, TlsExpansionSlots)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (!attach_done) /* only the first time */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                while (RtlFindClearBitsAndSet(NtCurrentTeb()->Peb->TlsBitmap, 1, 1) != ~0U);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef _WIN64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9d866fa70f5..992db125965 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/loader.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1809,6 +1809,48 @@ static ULONG_PTR get_image_address(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static __thread struct tm localtime_tls;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct tm *my_localtime(const time_t *timep)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return localtime_r(timep, &localtime_tls);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void hook(void *to_hook, const void *replace)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    size_t offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct hooked_function
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        char jmp[8];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        const void *dst;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } *hooked_function = to_hook;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ULONG_PTR intval = (UINT_PTR)to_hook;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    intval -= (intval % 4096);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mprotect((void *)intval, 0x2000, PROT_EXEC | PROT_READ | PROT_WRITE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* The offset is from the end of the jmp instruction (6 bytes) to the start of the destination. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    offset = offsetof(struct hooked_function, dst) - offsetof(struct hooked_function, jmp) - 0x6;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* jmp *(rip + offset) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[0] = 0xff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[1] = 0x25;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[2] = offset;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[3] = 0x00;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[4] = 0x00;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[5] = 0x00;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* Filler */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[6] = 0xcc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->jmp[7] = 0xcc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* Dest address absolute */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hooked_function->dst = replace;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //size = sizeof(*hooked_function);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //NtProtectVirtualMemory(proc, (void **)hooked_function, &size, old_protect, &old_protect);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *           start_main_thread
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1831,6 +1873,13 @@ static void start_main_thread(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     load_ntdll();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     load_wow64_ntdll( main_image_info.Machine );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     load_apiset_dll();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* This is necessary because we poke PEB into pthread TLS at offset 0x60. It is normally in use by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * localtime(), which is called a lot by system libraries. Make localtime() go away. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    hook(localtime, my_localtime);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     server_init_process_done();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a163d5d0b33..73995693b57 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/signal_x86_64.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1003,7 +1003,11 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ret = set_thread_context( handle, context, &self, IMAGE_FILE_MACHINE_AMD64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ((flags & CONTEXT_DEBUG_REGISTERS) && (ret == STATUS_UNSUCCESSFUL))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            WARN_(seh)( "Setting debug registers is not supported under Rosetta\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* CW HACK 22131 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            WARN_(seh)( "Setting debug registers is not supported under Rosetta, faking success\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ret = STATUS_SUCCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (ret || !self) return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (flags & CONTEXT_DEBUG_REGISTERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1216,6 +1220,14 @@ NTSTATUS set_thread_wow64_context( HANDLE handle, const void *ctx, ULONG size )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         NTSTATUS ret = set_thread_context( handle, context, &self, IMAGE_FILE_MACHINE_I386 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if ((flags & CONTEXT_DEBUG_REGISTERS) && (ret == STATUS_UNSUCCESSFUL))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* CW HACK 22131 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            WARN_(seh)( "Setting debug registers is not supported under Rosetta, faking success\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ret = STATUS_SUCCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (ret || !self) return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (flags & CONTEXT_I386_DEBUG_REGISTERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1711,6 +1723,135 @@ NTSTATUS WINAPI NtCallbackReturn( void *ret_ptr, ULONG ret_len, NTSTATUS status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     user_mode_callback_return( ret_ptr, ret_len, status, NtCurrentTeb() );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *           handle_cet_nop
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Check if the fault location is an Intel CET instruction that should be treated as a NOP.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Rosetta on Big Sur throws an exception for this, but is fixed in Monterey.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * CW HACK 20186
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline BOOL handle_cet_nop( ucontext_t *sigcontext, CONTEXT *context )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE instr[16];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int i, prefix_count = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int len = virtual_uninterrupted_read_memory( (BYTE *)context->Rip, instr, sizeof(instr) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (i = 0; i < len; i++) switch (instr[i])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* instruction prefixes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x2e:  /* %cs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x36:  /* %ss: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x3e:  /* %ds: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x26:  /* %es: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x40:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x41:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x42:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x43:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x44:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x45:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x46:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x47:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x48:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x49:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4a:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4b:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4c:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4d:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4e:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4f:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x64:  /* %fs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x65:  /* %gs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x66:  /* opcode size */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x67:  /* addr size */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf0:  /* lock */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf2:  /* repne */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf3:  /* repe */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (++prefix_count >= 15) return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x0f: /* extended instruction */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (i == len - 1) return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        switch (instr[i + 1])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        case 0x1E:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* RDSSPD/RDSSPQ: (prefixes) 0F 1E (modrm) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            RIP_sig(sigcontext) += prefix_count + 3;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRACE_(seh)( "skipped RDSSPD/RDSSPQ instruction\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *           handle_fndisi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * Check if the fault location is an x87 FNDISI instruction that should be treated as a NOP.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static inline BOOL handle_fndisi( ucontext_t *sigcontext, CONTEXT *context )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE instr[16];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int i, prefix_count = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    unsigned int len = virtual_uninterrupted_read_memory( (BYTE *)context->Rip, instr, sizeof(instr) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    for (i = 0; i < len; i++) switch (instr[i])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* instruction prefixes */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x2e:  /* %cs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x36:  /* %ss: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x3e:  /* %ds: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x26:  /* %es: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x40:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x41:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x42:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x43:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x44:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x45:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x46:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x47:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x48:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x49:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4a:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4b:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4c:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4d:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4e:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x4f:  /* rex */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x64:  /* %fs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x65:  /* %gs: */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x66:  /* opcode size */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0x67:  /* addr size */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf0:  /* lock */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf2:  /* repne */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xf3:  /* repe */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (++prefix_count >= 15) return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    case 0xdb:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (i == len - 1) return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        switch (instr[i + 1])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        case 0xe1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            /* RDSSPD/RDSSPQ: (prefixes) DB E1 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            RIP_sig(sigcontext) += prefix_count + 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            TRACE_(seh)( "skipped FNDISI instruction\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *           is_privileged_instr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1952,7 +2093,14 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         rec.ExceptionCode = EXCEPTION_ARRAY_BOUNDS_EXCEEDED;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case TRAP_x86_PRIVINFLT:   /* Invalid opcode exception */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* CW HACK 20186 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (handle_cet_nop( ucontext, &context.c )) return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         rec.ExceptionCode = EXCEPTION_ILLEGAL_INSTRUCTION;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (handle_fndisi( ucontext, &context.c )) return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case TRAP_x86_STKFLT:  /* Stack fault */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         rec.ExceptionCode = EXCEPTION_STACK_OVERFLOW;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2530,6 +2678,8 @@ void call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->Tib.Self), "n" (FIELD_OFFSET(TEB, Tib.Self)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->ThreadLocalStoragePointer), "n" (FIELD_OFFSET(TEB, ThreadLocalStoragePointer)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thread_data->pthread_teb = mac_thread_gsbase();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __asm__ volatile (".byte 0x65\n\tmovq %0,%c1" :: "r" (teb->Peb), "n" (FIELD_OFFSET(TEB, Peb)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    amd64_thread_data()->pthread_teb = mac_thread_gsbase();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* alloc_tls_slot() needs to poke a value to an address relative to each
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        thread's gsbase.  Have each thread record its gsbase pointer into its
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        TEB so alloc_tls_slot() can find it. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3d151e7b2b8..03d1516fc03 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/thread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/thread.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1096,6 +1096,16 @@ static DECLSPEC_NORETURN void pthread_exit_wrapper( int status )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     close( ntdll_get_thread_data()->wait_fd[1] );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     close( ntdll_get_thread_data()->reply_fd );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     close( ntdll_get_thread_data()->request_fd );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && defined(__x86_64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* Remove the PEB from the localtime field in %gs, or MacOS might try
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * to free() the pointer and crash. That happens for processes that are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * using the alt loader for dock integration. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __asm__ volatile (".byte 0x65\n\tmovq %q0,%c1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                      :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                      : "r" (NULL), "n" (FIELD_OFFSET(TEB, Peb)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     pthread_exit( UIntToPtr(status) );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4b23d9954df..9e59ee46785 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/ntdll/unix/virtual.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/ntdll/unix/virtual.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5924,6 +5924,56 @@ NTSTATUS WINAPI NtReadVirtualMemory( HANDLE process, const void *addr, void *buf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static int is_apple_silicon(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static int apple_silicon_status, did_check = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!did_check)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        /* returns 0 for native process or on error, 1 for translated */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        int ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        size_t size = sizeof(ret);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (sysctlbyname( "sysctl.proc_translated", &ret, &size, NULL, 0 ) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            apple_silicon_status = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            apple_silicon_status = ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        did_check = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return apple_silicon_status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* CW HACK 18947
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * If mach_vm_write() is used to modify code cross-process (which is how we implement
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * NtWriteVirtualMemory), Rosetta won't notice the change and will execute the "old" code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * To work around this, after the write completes,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * toggle the executable bit (from inside the target process) on/off for any executable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ * pages that were modified, to force Rosetta to re-translate it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static void toggle_executable_pages_for_rosetta( HANDLE process, void *addr, SIZE_T size )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MEMORY_BASIC_INFORMATION info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    NTSTATUS status;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    SIZE_T ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!is_apple_silicon())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    status = NtQueryVirtualMemory( process, addr, MemoryBasicInformation, &info, sizeof(info), &ret );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!status && (info.AllocationProtect & 0xf0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        DWORD origprot, noexec;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        noexec = info.AllocationProtect & ~0xf0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (!noexec) noexec = PAGE_NOACCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NtProtectVirtualMemory( process, &addr, &size, noexec, &origprot );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        NtProtectVirtualMemory( process, &addr, &size, origprot, &noexec );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /***********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  *             NtWriteVirtualMemory   (NTDLL.@)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5944,6 +5994,10 @@ NTSTATUS WINAPI NtWriteVirtualMemory( HANDLE process, void *addr, const void *bu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if ((status = wine_server_call( req ))) size = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         SERVER_END_REQ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        toggle_executable_pages_for_rosetta( process, addr, size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/dlls/wow64cpu/cpu.c b/dlls/wow64cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c574315ec7d..a13df489733 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/dlls/wow64cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/dlls/wow64cpu/cpu.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,6 +39,15 @@ struct thunk_32to64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     DWORD op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     DWORD addr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     WORD  cs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE add;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE add_modrm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE add_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE jmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    BYTE jmp_modrm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    DWORD jmp_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ULONG64 jmp_addr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct thunk_opcodes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -211,7 +220,18 @@ __ASM_GLOBAL_FUNC( syscall_32to64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movl %edx,4(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movl 0xc4(%r13),%r14d\n\t"  /* context->Esp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "xchgq %r14,%rsp\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                   "ljmp *(%r14)\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   /* CW HACK 20760:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    * Use lretq rather than ljmp to work around a Rosetta SIGUSR1 race condition.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "subq $0x10,%rsp\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movl 4(%r14),%ebx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movq %rbx,0x8(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movl 0(%r14),%ebx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movq %rbx,(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movl 0xa4(%r13),%ebx\n\t"   /* context->Ebx */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "lretq\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ".Lsyscall_32to64_return:\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movq %rsp,%r14\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movl 0xa8(%r13),%edx\n\t"   /* context->Edx */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -268,7 +288,16 @@ __ASM_GLOBAL_FUNC( unix_call_32to64,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movl %edx,4(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "movl 0xc4(%r13),%r14d\n\t"  /* context->Esp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "xchgq %r14,%rsp\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                   "ljmp *(%r14)" )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   /* CW HACK 20760:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    * Use lretq rather than ljmp to work around a Rosetta SIGUSR1 race condition.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "subq $0x10,%rsp\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movl 4(%r14),%edx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movq %rdx,0x8(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movl 0(%r14),%edx\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "movq %rdx,(%rsp)\n\t"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   "lretq" )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**********************************************************************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -322,22 +351,53 @@ NTSTATUS WINAPI BTCpuProcessInit(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ds64_sel = context.SegDs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fs32_sel = context.SegFs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->syscall_thunk.ljmp  = 0xff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->syscall_thunk.modrm = 0x2d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* CW HACK 20760:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Use lcall rather than ljmp to work around a Rosetta SIGUSR1 race condition.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.ljmp  = 0xff;      /* call far, absolute indirect */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.modrm = 0x1d;      /* address=disp32, opcode=3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->syscall_thunk.op    = PtrToUlong( &thunk->syscall_thunk.addr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->syscall_thunk.addr  = PtrToUlong( syscall_32to64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.addr  = PtrToUlong( &thunk->syscall_thunk.add );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->syscall_thunk.cs    = cs64_sel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* We are now in 64-bit. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* add $0x08,%esp to remove the addr/segment pushed on the stack by the lcall */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.add = 0x83;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.add_modrm = 0xc4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.add_op = 0x08;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* jmp to syscall_32to64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.jmp = 0xff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.jmp_modrm = 0x25;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.jmp_op = 0x00;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->syscall_thunk.jmp_addr = PtrToUlong( syscall_32to64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* CW HACK 20760:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Use lcall rather than ljmp to work around a Rosetta SIGUSR1 race condition.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.pushl   = 0x68;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.dispatcher_high = (ULONG_PTR)*p__wine_unix_call_dispatcher >> 32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.pushl2  = 0x68;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.dispatcher_low = (ULONG_PTR)*p__wine_unix_call_dispatcher;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->unix_thunk.t.ljmp  = 0xff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->unix_thunk.t.modrm = 0x2d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.ljmp  = 0xff;       /* call far, absolute indirect */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.modrm = 0x1d;       /* address=disp32, opcode=3 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.t.op    = PtrToUlong( &thunk->unix_thunk.t.addr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    thunk->unix_thunk.t.addr  = PtrToUlong( unix_call_32to64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.addr  = PtrToUlong( &thunk->unix_thunk.t.add );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     thunk->unix_thunk.t.cs    = cs64_sel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* We are now in 64-bit. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* add $0x08,%esp to remove the addr/segment pushed on the stack by the lcall */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.add = 0x83;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.add_modrm = 0xc4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.add_op = 0x08;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    /* jmp to unix_call_32to64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.jmp = 0xff;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.jmp_modrm = 0x25;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.jmp_op = 0x00;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    thunk->unix_thunk.t.jmp_addr = PtrToUlong( unix_call_32to64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     NtProtectVirtualMemory( GetCurrentProcess(), (void **)&thunk, &size, PAGE_EXECUTE_READ, &old_prot );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return STATUS_SUCCESS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/emulators/wine-stable/Portfile b/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e1c1ffbfed3..35c087575e5 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/emulators/wine-stable/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,7 +10,7 @@ PortGroup                   muniversal 1.1
</span> github.setup                wine-mirror wine 9.0 wine-
 github.tarball_from         archive
 name                        wine-stable
<span style='display:block; white-space:pre;background:#ffe0e0;'>-conflicts                   wine-devel wine-crossover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts                   wine-devel wine-staging wine-crossover
</span> set my_name                 wine
 revision                    0
 platforms                   {darwin >= 19}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/wine-devel/Portfile b/x11/wine-devel/Portfile
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 858c5340797..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/x11/wine-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,389 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortSystem                  1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup                   muniversal 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-PortGroup                   compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Please keep the wine, wine-devel and wine-crossover ports as similar as possible.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name                        wine-devel
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-conflicts                   wine wine-crossover
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set my_name                 wine
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version                     4.9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                    1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set branch                  [lindex [split ${version} .] 0].x
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-license                     LGPL-2.1+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-categories                  x11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers                 {ryandesign @ryandesign} openmaintainer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage                    https://www.winehq.org
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms                   darwin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use_xz                      yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname                    ${my_name}-${version}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-dist_subdir                 ${my_name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_distfile           ${distname}${extract.suffix}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_gecko_version      2.47
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_gecko_distfile     wine_gecko-${wine_gecko_version}-x86.msi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_gecko64_distfile   wine_gecko-${wine_gecko_version}-x86_64.msi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_mono_version       4.8.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set wine_mono_distfile      wine-mono-${wine_mono_version}.msi
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use_parallel_build          yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-description                 A Windows API implementation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description            Wine is a compatibility layer capable of running \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            Windows applications. \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            Instead of simulating internal Windows logic like \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            a virtual machine or emulator, Wine translates \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            Windows API calls into POSIX calls on-the-fly, \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            eliminating the performance and memory penalties \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            of other methods and allowing you to cleanly \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            integrate Windows applications into your desktop.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites                http://mirrors.ibiblio.org/wine/source/${branch}/:winesource \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            http://dl.winehq.org/wine/source/${branch}/:winesource \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sourceforge:project/wine/Source/:winesource \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            http://dl.winehq.org/wine/wine-gecko/${wine_gecko_version}/:winegecko \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sourceforge:project/wine/Wine%20Gecko/${wine_gecko_version}/:winegecko \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            http://dl.winehq.org/wine/wine-mono/${wine_mono_version}/:winemono \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sourceforge:project/wine/Wine%20Mono/${wine_mono_version}/:winemono
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extract.only                ${wine_distfile}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distfiles                   ${wine_distfile}:winesource \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_gecko_distfile}:winegecko \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_gecko64_distfile}:winegecko \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_mono_distfile}:winemono
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums                   ${wine_distfile} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            rmd160  bdad0bc09d02352c6ea54a02b40b5fba7bbe0649 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sha256  91848e22fff3cb17db7fe7d727d714d21c5d4229dd460b5d1506753021fc799b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            size    22077528 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_gecko_distfile} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            rmd160  abf7cc78b49dd0623bc8fe87ae0e32bb8694e13d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sha256  3b8a361f5d63952d21caafd74e849a774994822fb96c5922b01d554f1677643a \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            size    49266176 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_gecko64_distfile} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            rmd160  254da21cb2503f20d065167b385b3e83ea3ab327 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sha256  c565ea25e50ea953937d4ab01299e4306da4a556946327d253ea9b28357e4a7d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            size    50806272 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            ${wine_mono_distfile} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            rmd160  e42fa8c06fcd727d5c2cd635ee1bbe0bbe40ebfb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sha256  d6fa1f019bfa3c572438e4a2473ce25af1e937ed4cdcbe46554164ce25db0a76 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            size    116183552
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Note: Most of the X11 libs are dlopen()'d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib                 port:fontconfig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:freetype \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:gstreamer1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:gstreamer1-gst-plugins-base \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            path:include/turbojpeg.h:libjpeg-turbo \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:lcms2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libiconv \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libpcap \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libpng \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libxml2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:libxslt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:ncurses \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            path:lib/pkgconfig/gnutls.pc:gnutls \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:openal-soft \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:tiff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build               port:bison \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:flex \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:pkgconfig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set fp [open ${worksrcpath}/dlls/appwiz.cpl/addons.c r]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set file_contents [read ${fp}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    close ${fp}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set ok yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach addon {gecko mono} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set addon_version_var wine_${addon}_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set addon_version_in_port [set ${addon_version_var}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[regexp -lineanchor "^#define [string toupper $addon]_VERSION \"(\[^\"\]+)\"$" ${file_contents} -> addon_version_in_file] == 1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {${addon_version_in_port} ne ${addon_version_in_file}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ui_error "${addon_version_var} should be ${addon_version_in_file} not ${addon_version_in_port}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set ok no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_error "Could not determine what ${addon_version_var} should be"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {!${ok}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return -code error
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles                  BOOL.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            cups_headers.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            fix-flicker.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            mach_machine.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-pre-configure {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[variant_exists universal] && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach arch ${universal_archs_to_use} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            file mkdir ${worksrcpath}-${arch}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.cmd ${worksrcpath}/configure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Wine requires the program specified in INSTALL to create intermediate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# directories; /usr/bin/install doesn't.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# http://bugs.winehq.org/show_bug.cgi?id=35310
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.install           ${worksrcpath}/tools/install-sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args              --without-alsa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-capi \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-cms \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-coreaudio \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-cups \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-curses \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-dbus \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-fontconfig \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-freetype \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-gettext \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-gettextpo \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-gphoto \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-glu \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-gnutls \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-gsm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-gstreamer \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-hal \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-jpeg \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-ldap \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-mpg123 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-netapi \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-openal \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-opencl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-opengl \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-osmesa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-oss \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-pcap \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-png \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-pthread \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-pulse \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-sane \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-tiff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-udev \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-v4l \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xcomposite \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xcursor \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xinerama \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xinput \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xinput2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-xml \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xrandr \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xrender \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xshape \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xshm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-xslt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-xxf86vm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --with-zlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            --without-x
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Wine has a native macOS driver since 1.5.26 so X11 is optional
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant x11 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append          port:libGLU \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:mesa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libX11 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXcomposite \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXcursor \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXext \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXi \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXinerama \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXrandr \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libXxf86vm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-libsm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xorg-xorgproto \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                port:xrender
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-delete       --without-osmesa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xcomposite \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xcursor \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xinerama \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xinput \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xrandr \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xrender \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xshape \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-xxf86vm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --without-x
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append       --with-osmesa \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xcomposite \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xcursor \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xinerama \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xinput \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xrandr \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xrender \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xshape \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-xxf86vm \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --with-x \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --x-include=${prefix}/include \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                --x-lib=${prefix}/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} ne "darwin" || (${os.major} >= 9 && ${os.major} <= 17)} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    default_variants        +x11
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.universal_args
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set merger_build_args(x86_64)     "dlldir=\\\\\${libdir}/wine64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set merger_destroot_args(x86_64)  "dlldir=\\\\\${libdir}/wine64"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set merger_configure_args(x86_64) "--enable-win64 --libdir=${prefix}/lib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set merger_configure_args(i386)   --with-wine64=${workpath}/${worksrcdir}-x86_64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${build_arch} eq "x86_64" && ${os.major} < 18} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    default_variants            +universal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${universal_possible} && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    supported_archs         i386 x86_64
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    supported_archs         i386
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# error: Xcode 3.x cannot build 16-bit code correctly
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append   {gcc-4.2 < 5600}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# llvm-gcc-4.2 doesn't respect force_align_arg_pointer; wine builds but fails to run
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# http://bugs.winehq.org/show_bug.cgi?id=28030
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append   *llvm-gcc-4.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# clang < 3.1 fails to build wine with "error: invalid operand for instruction lretw"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# http://bugs.winehq.org/show_bug.cgi?id=32872
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# clang < 3.2 have code generation problems:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# http://llvm.org/bugs/show_bug.cgi?id=9707
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append   {clang < 500}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# FSF GCC cannot compile code using Apple's "blocks" language extensions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.blacklist-append   macports-gcc-*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${universal_possible} && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # wine for 64-bit requires clang >= 3.8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.blacklist-append   {clang < 800} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                gcc-4.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                gcc-4.2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                apple-gcc-4.2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                macports-clang-3.3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                macports-clang-3.4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                macports-clang-3.7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    compiler.fallback-append    macports-clang-5.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # On macOS, Core Text is used instead of fontconfig since Wine 1.5.10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-delete          port:fontconfig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-delete       --with-fontconfig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append       --without-fontconfig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Wine uses the native Security framework on macOS since Wine 1.3.16
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-delete          path:lib/pkgconfig/gnutls.pc:gnutls
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-delete       --with-gnutls
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append       --without-gnutls
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Vulkan is supported on macOS through MoltenVK since Wine 3.13, but because
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # it uses Metal it only works on 64-bit, and because it only builds with
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Xcode 9 or later it requires Sierra or later.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} >= 16 && ${universal_possible} && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib-append                      port:MoltenVK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_skip_archcheck-append           MoltenVK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        lappend merger_configure_args(x86_64)   --with-vulkan
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        lappend merger_configure_args(i386)     --without-vulkan
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.args-append   --without-vulkan
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} < 10} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        configure.args-delete   --with-opencl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    notes {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        When using the Mac Driver, it might be useful to enable RetinaMode\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        when you're using a high DPI monitor. To do that, open up Wine's\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        Registry Editor:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-          wine regedit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        and then navigate to:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-          [HKEY_CURRENT_USER\Software\Wine\Mac Driver]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        and then set "RetinaMode" to "y". You may also want to adjust your\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        DPI under the Graphics tab in winecfg.}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} < 9} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        known_fail yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        archive_sites
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        distfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_error "${name} @${version} requires Mac OS X 10.5 or later."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            return -code error "incompatible Mac OS X version"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } elseif {${os.major} > 17} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        known_fail yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        archive_sites
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        distfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_error "${name} cannot be built on macOS 10.14 or later."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            return -code error "incompatible macOS version"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.endian} eq "big"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    known_fail yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    archive_sites
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    distfiles
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_error "${name} can only be used on an Intel Mac or other computer with a little-endian processor."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return -code error "incompatible processor"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${destroot}${prefix}/share/wine/gecko
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -m 0644 -W ${distpath} ${wine_gecko_distfile} ${wine_gecko64_distfile} ${destroot}${prefix}/share/wine/gecko
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${destroot}${prefix}/share/wine/mono
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -m 0644 ${distpath}/${wine_mono_distfile} ${destroot}${prefix}/share/wine/mono
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set docdir ${prefix}/share/doc/${my_name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -d ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    xinstall -m 0644 -W ${worksrcpath} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ANNOUNCE \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        AUTHORS \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        COPYING.LIB \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        LICENSE \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        README \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${universal_possible} && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    notes-append "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        \n
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        Wine supports both 32-bit and 64-bit now. It is compatible with your\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        existing 32-bit wine prefix, but it will now default to 64-bit when you\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        create a new wine prefix. The architecture can be selected using the\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        WINEARCH environment variable which can be set to either \"win32\" or\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        \"win64\".
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        To create a new pure 32-bit prefix, you can run:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            \$ WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        See the Wine FAQ for details: https://wiki.winehq.org/FAQ#Wineprefixes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.type              regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex             {"/announce/([^"]+)"}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/wine-devel/files/BOOL.patch b/x11/wine-devel/files/BOOL.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8fa1b42113e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/x11/wine-devel/files/BOOL.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,126 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/gdi32/freetype.c.orig     2012-02-12 23:04:21.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/gdi32/freetype.c  2012-02-12 23:04:58.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,6 +40,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <assert.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef HAVE_CARBON_CARBON_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource __carbon_LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CompareString __carbon_CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread __carbon_GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -57,6 +58,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ResizePalette __carbon_ResizePalette
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define SetRectRgn __carbon_SetRectRgn
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <Carbon/Carbon.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/windowscodecs/icnsformat.c.orig   2012-02-12 23:54:58.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/windowscodecs/icnsformat.c        2012-02-12 23:55:20.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -22,6 +22,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdarg.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL BOOL_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentProcess GetCurrentProcess_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread GetCurrentThread_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource LoadResource_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -49,6 +50,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ShowCursor ShowCursor_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define UnionRect UnionRect_Mac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <ApplicationServices/ApplicationServices.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentProcess
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/wineqtdecoder/qtdatahandler.c.orig        2012-02-13 00:04:58.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/wineqtdecoder/qtdatahandler.c     2012-02-13 00:05:24.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,6 +23,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ULONG CoreFoundation_ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define HRESULT CoreFoundation_HRESULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource __carbon_LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CompareString __carbon_CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread __carbon_GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,6 +63,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QuickTime/QuickTimeComponents.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/wineqtdecoder/qtsplitter.c.orig   2012-02-13 00:19:05.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/wineqtdecoder/qtsplitter.c        2012-02-13 00:19:26.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,6 +23,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ULONG CoreFoundation_ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define HRESULT CoreFoundation_HRESULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource __carbon_LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CompareString __carbon_CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread __carbon_GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -63,6 +64,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QuickTime/Movies.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QuickTime/QuickTimeComponents.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/wineqtdecoder/qtutils.c.orig      2012-02-13 00:31:37.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/wineqtdecoder/qtutils.c   2012-02-13 00:32:14.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,6 +23,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ULONG CoreFoundation_ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define HRESULT CoreFoundation_HRESULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource __carbon_LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CompareString __carbon_CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread __carbon_GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -62,6 +63,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <CoreVideo/CVPixelBuffer.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/wineqtdecoder/qtvdecoder.c.orig   2012-02-13 00:31:42.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/wineqtdecoder/qtvdecoder.c        2012-02-13 00:32:30.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,6 +23,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ULONG CoreFoundation_ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define HRESULT CoreFoundation_HRESULT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LoadResource __carbon_LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CompareString __carbon_CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define GetCurrentThread __carbon_GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -63,6 +64,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QuickTime/ImageCompression.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <CoreVideo/CVPixelBuffer.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef LoadResource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef CompareString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef GetCurrentThread
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/dinput/joystick_osx.c.orig        2013-05-25 11:13:00.000000000 +0300
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/dinput/joystick_osx.c     2013-05-25 11:13:00.000000000 +0300
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -29,6 +29,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LONG SInt32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define LPLONG SInt32*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define E_PENDING __carbon_E_PENDING
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define BOOL __carbon_BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define ULONG __carbon_ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define E_INVALIDARG __carbon_E_INVALIDARG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define E_OUTOFMEMORY __carbon_E_OUTOFMEMORY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -52,6 +53,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <IOKit/IOKitLib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <IOKit/hid/IOHIDLib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <ForceFeedback/ForceFeedback.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef BOOL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef ULONG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef E_INVALIDARG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #undef E_OUTOFMEMORY
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/wine-devel/files/cups_headers.patch b/x11/wine-devel/files/cups_headers.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 56ec901cda4..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/x11/wine-devel/files/cups_headers.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,10 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/winspool.drv/info.c.orig  2017-08-03 12:38:53.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/winspool.drv/info.c       2017-08-05 02:53:44.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -43,6 +43,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <signal.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef HAVE_CUPS_CUPS_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <cups/cups.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# include <cups/ppd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef HAVE_CUPS_PPD_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <cups/ppd.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/wine-devel/files/fix-flicker.patch b/x11/wine-devel/files/fix-flicker.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c1df2213e5a..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/x11/wine-devel/files/fix-flicker.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,102 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Patch to fix flickering in full screen. Patch updated from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://raw.githubusercontent.com/Homebrew/formula-patches/74c2566/wine/2.14.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# See: https://bugs.winehq.org/show_bug.cgi?id=34166
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- dlls/wined3d/context.c.orig    2019-05-10 10:43:42.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ dlls/wined3d/context.c 2020-04-25 02:38:49.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1674,7 +1674,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /* This function takes care of wined3d pixel format selection. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static int context_choose_pixel_format(const struct wined3d_device *device, HDC hdc,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static int context_choose_pixel_format(const struct wined3d_device *device, const struct wined3d_swapchain *swapchain, HDC hdc,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         const struct wined3d_format *color_format, const struct wined3d_format *ds_format,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         BOOL auxBuffers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1682,12 +1682,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     unsigned int current_value;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     PIXELFORMATDESCRIPTOR pfd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     int iPixelFormat = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    BOOL double_buffer = TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     unsigned int i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     TRACE("device %p, dc %p, color_format %s, ds_format %s, aux_buffers %#x.\n",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             device, hdc, debug_d3dformat(color_format->id), debug_d3dformat(ds_format->id),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             auxBuffers);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO && !swapchain->desc.backbuffer_count)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        double_buffer = FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     current_value = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for (i = 0; i < cfg_count; ++i)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1699,7 +1703,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (cfg->iPixelType != WGL_TYPE_RGBA_ARB)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         /* In window mode we need a window drawable format and double buffering. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (!(cfg->windowDrawable && cfg->doubleBuffer))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (!cfg->windowDrawable || (double_buffer && !cfg->doubleBuffer))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (cfg->redSize < color_format->red_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1722,17 +1726,19 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-          * depth it is no problem to emulate 16-bit using e.g. 24-bit, so accept that. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (cfg->depthSize == ds_format->depth_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             value += 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (cfg->stencilSize == ds_format->stencil_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (!cfg->doubleBuffer == !double_buffer)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             value += 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (cfg->alphaSize == color_format->alpha_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (cfg->stencilSize == ds_format->stencil_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             value += 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (cfg->alphaSize == color_format->alpha_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            value += 8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         /* We like to have aux buffers in backbuffer mode */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (auxBuffers && cfg->auxBuffers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            value += 8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            value += 16;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (cfg->redSize == color_format->red_size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 && cfg->greenSize == color_format->green_size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 && cfg->blueSize == color_format->blue_size)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            value += 16;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            value += 32;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (value > current_value)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1748,7 +1754,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         memset(&pfd, 0, sizeof(pfd));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         pfd.nSize      = sizeof(pfd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         pfd.nVersion   = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        pfd.dwFlags    = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW;/*PFD_GENERIC_ACCELERATED*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        pfd.dwFlags    = PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW;/*PFD_GENERIC_ACCELERATED*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (double_buffer)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            pfd.dwFlags |= PFD_DOUBLEBUFFER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         pfd.iPixelType = PFD_TYPE_RGBA;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         pfd.cAlphaBits = color_format->alpha_size;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         pfd.cColorBits = color_format->red_size + color_format->green_size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2070,7 +2078,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             for (i = 0; i < ARRAY_SIZE(ds_formats); ++i)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 ds_format = wined3d_get_format(device->adapter, ds_formats[i], WINED3D_BIND_DEPTH_STENCIL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                if ((context->pixel_format = context_choose_pixel_format(device,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                if ((context->pixel_format = context_choose_pixel_format(device, swapchain,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                         context->hdc, color_format, ds_format, TRUE)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     swapchain->ds_format = ds_format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2083,7 +2091,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            context->pixel_format = context_choose_pixel_format(device,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            context->pixel_format = context_choose_pixel_format(device, swapchain,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     context->hdc, color_format, swapchain->ds_format, TRUE);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2099,7 +2107,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-          * conflicting pixel formats. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         color_format = wined3d_get_format(device->adapter, WINED3DFMT_B8G8R8A8_UNORM, target_bind_flags);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         ds_format = wined3d_get_format(device->adapter, WINED3DFMT_UNKNOWN, WINED3D_BIND_DEPTH_STENCIL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        context->pixel_format = context_choose_pixel_format(device,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        context->pixel_format = context_choose_pixel_format(device, swapchain,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 context->hdc, color_format, ds_format, FALSE);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/x11/wine-devel/files/mach_machine.patch b/x11/wine-devel/files/mach_machine.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 49f4a0e8dff..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/x11/wine-devel/files/mach_machine.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./dlls/ntdll/nt.c.orig 2012-04-21 23:03:51.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./dlls/ntdll/nt.c      2012-04-21 23:04:14.000000000 -0700
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -34,7 +34,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <machine/cpu.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef HAVE_MACH_MACHINE_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# define cpu_type_t mach_cpu_type_t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <mach/machine.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef cpu_type_t
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <ctype.h>
</span></pre><pre style='margin:0'>

</pre>