update main-with-bazel from master branch
diff --git a/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl b/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
index 82e46d4..eabaa1b 100644
--- a/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl
@@ -474,7 +474,7 @@
 if ($win64) {
 $code.=<<___
 	lea	-0xa8(%rsp),%rsp		# 8 extra bytes to align the stack
-.seh_allocstack	0xa8
+.seh_stackalloc	0xa8
 .seh_setframe	%rbp, 0xa8+5*8
 	# Load the last two parameters. These go into %rdi and %rsi, which are
 	# non-volatile on Windows, so stash them in the parameter stack area
@@ -487,25 +487,26 @@
 	mov	0x38(%rbp), $Htable
 	# Save non-volatile XMM registers.
 	movaps	%xmm6,-0xd0(%rbp)
-.seh_savexmm128	%xmm6, 0xa8+5*8-0xd0
+.seh_savexmm	%xmm6, 0xa8+5*8-0xd0
 	movaps	%xmm7,-0xc0(%rbp)
-.seh_savexmm128	%xmm7, 0xa8+5*8-0xc0
+.seh_savexmm	%xmm7, 0xa8+5*8-0xc0
 	movaps	%xmm8,-0xb0(%rbp)
-.seh_savexmm128	%xmm8, 0xa8+5*8-0xb0
+.seh_savexmm	%xmm8, 0xa8+5*8-0xb0
 	movaps	%xmm9,-0xa0(%rbp)
-.seh_savexmm128	%xmm9, 0xa8+5*8-0xa0
+.seh_savexmm	%xmm9, 0xa8+5*8-0xa0
 	movaps	%xmm10,-0x90(%rbp)
-.seh_savexmm128	%xmm10, 0xa8+5*8-0x90
+.seh_savexmm	%xmm10, 0xa8+5*8-0x90
 	movaps	%xmm11,-0x80(%rbp)
-.seh_savexmm128	%xmm11, 0xa8+5*8-0x80
+.seh_savexmm	%xmm11, 0xa8+5*8-0x80
 	movaps	%xmm12,-0x70(%rbp)
-.seh_savexmm128	%xmm12, 0xa8+5*8-0x70
+.seh_savexmm	%xmm12, 0xa8+5*8-0x70
 	movaps	%xmm13,-0x60(%rbp)
-.seh_savexmm128	%xmm13, 0xa8+5*8-0x60
+.seh_savexmm	%xmm13, 0xa8+5*8-0x60
 	movaps	%xmm14,-0x50(%rbp)
-.seh_savexmm128	%xmm14, 0xa8+5*8-0x50
+.seh_savexmm	%xmm14, 0xa8+5*8-0x50
 	movaps	%xmm15,-0x40(%rbp)
-.seh_savexmm128	%xmm15, 0xa8+5*8-0x40
+.seh_savexmm	%xmm15, 0xa8+5*8-0x40
+.seh_endprologue
 ___
 }
 $code.=<<___;
@@ -753,7 +754,7 @@
 if ($win64) {
 $code.=<<___
 	lea	-0xa8(%rsp),%rsp		# 8 extra bytes to align the stack
-.seh_allocstack	0xa8
+.seh_stackalloc	0xa8
 .seh_setframe	%rbp, 0xa8+5*8
 	# Load the last two parameters. These go into %rdi and %rsi, which are
 	# non-volatile on Windows, so stash them in the parameter stack area
@@ -766,25 +767,26 @@
 	mov	0x38(%rbp), $Htable
 	# Save non-volatile XMM registers.
 	movaps	%xmm6,-0xd0(%rbp)
-.seh_savexmm128	%xmm6, 0xa8+5*8-0xd0
+.seh_savexmm	%xmm6, 0xa8+5*8-0xd0
 	movaps	%xmm7,-0xc0(%rbp)
-.seh_savexmm128	%xmm7, 0xa8+5*8-0xc0
+.seh_savexmm	%xmm7, 0xa8+5*8-0xc0
 	movaps	%xmm8,-0xb0(%rbp)
-.seh_savexmm128	%xmm8, 0xa8+5*8-0xb0
+.seh_savexmm	%xmm8, 0xa8+5*8-0xb0
 	movaps	%xmm9,-0xa0(%rbp)
-.seh_savexmm128	%xmm9, 0xa8+5*8-0xa0
+.seh_savexmm	%xmm9, 0xa8+5*8-0xa0
 	movaps	%xmm10,-0x90(%rbp)
-.seh_savexmm128	%xmm10, 0xa8+5*8-0x90
+.seh_savexmm	%xmm10, 0xa8+5*8-0x90
 	movaps	%xmm11,-0x80(%rbp)
-.seh_savexmm128	%xmm11, 0xa8+5*8-0x80
+.seh_savexmm	%xmm11, 0xa8+5*8-0x80
 	movaps	%xmm12,-0x70(%rbp)
-.seh_savexmm128	%xmm12, 0xa8+5*8-0x70
+.seh_savexmm	%xmm12, 0xa8+5*8-0x70
 	movaps	%xmm13,-0x60(%rbp)
-.seh_savexmm128	%xmm13, 0xa8+5*8-0x60
+.seh_savexmm	%xmm13, 0xa8+5*8-0x60
 	movaps	%xmm14,-0x50(%rbp)
-.seh_savexmm128	%xmm14, 0xa8+5*8-0x50
+.seh_savexmm	%xmm14, 0xa8+5*8-0x50
 	movaps	%xmm15,-0x40(%rbp)
-.seh_savexmm128	%xmm15, 0xa8+5*8-0x40
+.seh_savexmm	%xmm15, 0xa8+5*8-0x40
+.seh_endprologue
 ___
 }
 $code.=<<___;
diff --git a/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl b/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
index 4a850f4..bdfbe04 100644
--- a/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/ghash-ssse3-x86_64.pl
@@ -108,11 +108,12 @@
 ____
 $code .= <<____ if ($win64);
 	subq	\$40, %rsp
-.seh_allocstack	40
+.seh_stackalloc	40
 	movdqa	%xmm6, (%rsp)
-.seh_savexmm128	%xmm6, 0
+.seh_savexmm	%xmm6, 0
 	movdqa	%xmm10, 16(%rsp)
-.seh_savexmm128	%xmm10, 16
+.seh_savexmm	%xmm10, 16
+.seh_endprologue
 ____
 $code .= <<____;
 	movdqu	($Xi), %xmm0
@@ -251,13 +252,14 @@
 ____
 $code .= <<____ if ($win64);
 	subq	\$56, %rsp
-.seh_allocstack	56
+.seh_stackalloc	56
 	movdqa	%xmm6, (%rsp)
-.seh_savexmm128	%xmm6, 0
+.seh_savexmm	%xmm6, 0
 	movdqa	%xmm10, 16(%rsp)
-.seh_savexmm128	%xmm10, 16
+.seh_savexmm	%xmm10, 16
 	movdqa	%xmm11, 32(%rsp)
-.seh_savexmm128	%xmm11, 32
+.seh_savexmm	%xmm11, 32
+.seh_endprologue
 ____
 $code .= <<____;
 	movdqu	($Xi), %xmm0
diff --git a/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl b/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
index 33ee1cb..c026d8f 100644
--- a/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
+++ b/src/crypto/fipsmodule/modes/asm/ghash-x86_64.pl
@@ -210,9 +210,10 @@
 ___
 $code.=<<___ if ($win64);
 	sub	\$0x18,%rsp
-.seh_allocstack	0x18
+.seh_stackalloc	0x18
 	movaps	%xmm6,(%rsp)
-.seh_savexmm128	%xmm6, 0
+.seh_savexmm	%xmm6, 0
+.seh_endprologue
 ___
 $code.=<<___;
 	movdqu		($Xip),$Hkey
@@ -347,27 +348,28 @@
 $code.=<<___ if ($win64);
 	lea	-0x88(%rsp),%rax
 	lea	-0x20(%rax),%rsp
-.seh_allocstack	0x20+0x88
+.seh_stackalloc	0x20+0x88
 	movaps	%xmm6,-0x20(%rax)
-.seh_savexmm128	%xmm6, 0x20-0x20
+.seh_savexmm	%xmm6, 0x20-0x20
 	movaps	%xmm7,-0x10(%rax)
-.seh_savexmm128	%xmm7, 0x20-0x10
+.seh_savexmm	%xmm7, 0x20-0x10
 	movaps	%xmm8,0(%rax)
-.seh_savexmm128	%xmm8, 0x20+0
+.seh_savexmm	%xmm8, 0x20+0
 	movaps	%xmm9,0x10(%rax)
-.seh_savexmm128	%xmm9, 0x20+0x10
+.seh_savexmm	%xmm9, 0x20+0x10
 	movaps	%xmm10,0x20(%rax)
-.seh_savexmm128	%xmm10, 0x20+0x20
+.seh_savexmm	%xmm10, 0x20+0x20
 	movaps	%xmm11,0x30(%rax)
-.seh_savexmm128	%xmm11, 0x20+0x30
+.seh_savexmm	%xmm11, 0x20+0x30
 	movaps	%xmm12,0x40(%rax)
-.seh_savexmm128	%xmm12, 0x20+0x40
+.seh_savexmm	%xmm12, 0x20+0x40
 	movaps	%xmm13,0x50(%rax)
-.seh_savexmm128	%xmm13, 0x20+0x50
+.seh_savexmm	%xmm13, 0x20+0x50
 	movaps	%xmm14,0x60(%rax)
-.seh_savexmm128	%xmm14, 0x20+0x60
+.seh_savexmm	%xmm14, 0x20+0x60
 	movaps	%xmm15,0x70(%rax)
-.seh_savexmm128	%xmm15, 0x20+0x70
+.seh_savexmm	%xmm15, 0x20+0x70
+.seh_endprologue
 ___
 $code.=<<___;
 	movdqa		.Lbswap_mask(%rip),$T3
@@ -704,6 +706,7 @@
 .align	32
 gcm_init_avx:
 .cfi_startproc
+.seh_startproc
 	_CET_ENDBR
 ___
 if ($avx) {
@@ -711,11 +714,11 @@
 my $HK="%xmm6";
 
 $code.=<<___ if ($win64);
-.seh_startproc
 	sub	\$0x18,%rsp
-.seh_allocstack	0x18
+.seh_stackalloc	0x18
 	movaps	%xmm6,(%rsp)
-.seh_savexmm128	%xmm6, 0
+.seh_savexmm	%xmm6, 0
+.seh_endprologue
 ___
 $code.=<<___;
 	vzeroupper
@@ -862,6 +865,7 @@
 .align	32
 gcm_ghash_avx:
 .cfi_startproc
+.seh_startproc
 	_CET_ENDBR
 ___
 if ($avx) {
@@ -872,30 +876,30 @@
     $Xi,$Xo,$Tred,$bswap,$Ii,$Ij) = map("%xmm$_",(0..15));
 
 $code.=<<___ if ($win64);
-.seh_startproc
 	lea	-0x88(%rsp),%rax
 	lea	-0x20(%rax),%rsp
-.seh_allocstack	0x20+0x88
+.seh_stackalloc	0x20+0x88
 	movaps	%xmm6,-0x20(%rax)
-.seh_savexmm128	%xmm6, 0x20-0x20
+.seh_savexmm	%xmm6, 0x20-0x20
 	movaps	%xmm7,-0x10(%rax)
-.seh_savexmm128	%xmm7, 0x20-0x10
+.seh_savexmm	%xmm7, 0x20-0x10
 	movaps	%xmm8,0(%rax)
-.seh_savexmm128	%xmm8, 0x20+0
+.seh_savexmm	%xmm8, 0x20+0
 	movaps	%xmm9,0x10(%rax)
-.seh_savexmm128	%xmm9, 0x20+0x10
+.seh_savexmm	%xmm9, 0x20+0x10
 	movaps	%xmm10,0x20(%rax)
-.seh_savexmm128	%xmm10, 0x20+0x20
+.seh_savexmm	%xmm10, 0x20+0x20
 	movaps	%xmm11,0x30(%rax)
-.seh_savexmm128	%xmm11, 0x20+0x30
+.seh_savexmm	%xmm11, 0x20+0x30
 	movaps	%xmm12,0x40(%rax)
-.seh_savexmm128	%xmm12, 0x20+0x40
+.seh_savexmm	%xmm12, 0x20+0x40
 	movaps	%xmm13,0x50(%rax)
-.seh_savexmm128	%xmm13, 0x20+0x50
+.seh_savexmm	%xmm13, 0x20+0x50
 	movaps	%xmm14,0x60(%rax)
-.seh_savexmm128	%xmm14, 0x20+0x60
+.seh_savexmm	%xmm14, 0x20+0x60
 	movaps	%xmm15,0x70(%rax)
-.seh_savexmm128	%xmm15, 0x20+0x70
+.seh_savexmm	%xmm15, 0x20+0x70
+.seh_endprologue
 ___
 $code.=<<___;
 	vzeroupper
diff --git a/src/crypto/perlasm/x86_64-xlate.pl b/src/crypto/perlasm/x86_64-xlate.pl
index 9fb1de1..5b7705d 100755
--- a/src/crypto/perlasm/x86_64-xlate.pl
+++ b/src/crypto/perlasm/x86_64-xlate.pl
@@ -714,16 +714,21 @@
     }
 }
 { package seh_directive;
-    # This implements directives, like MASM's, for specifying Windows unwind
-    # codes. See https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170
-    # for details on the Windows unwind mechanism. Unlike MASM's directives, we
-    # have no .seh_endprolog directive. Instead, the last prolog directive is
-    # implicitly the end of the prolog.
+    # This implements directives, like MASM, gas, and clang-assembler for
+    # specifying Windows unwind codes. See
+    # https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170
+    # for details on the Windows unwind mechanism. As perlasm generally uses gas
+    # syntax, the syntax is patterned after the gas spelling, described in
+    # https://sourceware.org/legacy-ml/binutils/2009-08/msg00193.html
+    #
+    # TODO(https://crbug.com/boringssl/571): Translate to the MASM directives
+    # when using the MASM output. Emit as-is when using "mingw64" output, which
+    # is Windows with gas syntax.
     #
     # TODO(https://crbug.com/boringssl/259): For now, SEH directives are ignored
     # on non-Windows platforms. This means functions need to specify both CFI
     # and SEH directives, often redundantly. Ideally we'd abstract between the
-    # two. E.g., we can synthesize CFI from SEH prologs, but SEH does not
+    # two. E.g., we can synthesize CFI from SEH prologues, but SEH does not
     # annotate epilogs, so we'd need to combine parts from both. Or we can
     # restrict ourselves to a subset of CFI and synthesize SEH from CFI.
     #
@@ -732,7 +737,7 @@
     # complication is the current scheme modifies RDI and RSI (non-volatile on
     # Windows) at the start of the function, and saves them in the parameter
     # stack area. This can be expressed with .seh_savereg, but .seh_savereg is
-    # only usable late in the prolog. However, unwind information gives enough
+    # only usable late in the prologue. However, unwind information gives enough
     # information to locate the parameter stack area at any point in the
     # function, so we can defer conversion or implement other schemes.
 
@@ -777,6 +782,11 @@
 	die "Missing .seh_startproc directive" unless %info;
     }
 
+    sub _check_in_prologue {
+	_check_in_proc();
+	die "Invalid SEH directive after .seh_endprologue" if defined($info{endprologue});
+    }
+
     sub _check_not_in_proc {
 	die "Missing .seh_endproc directive" if %info;
     }
@@ -794,8 +804,8 @@
 	    info_label => $info_label,
 	    # start_label is the start of the function.
 	    start_label => $start_label,
-	    # endprolog is the label of the last unwind code in the function.
-	    endprolog => $start_label,
+	    # endprologue is the label of the end of the prologue.
+	    endprologue => undef,
 	    # unwind_codes contains the textual representation of the
 	    # unwind codes in the function so far.
 	    unwind_codes => "",
@@ -821,14 +831,14 @@
 
     sub _add_unwind_code {
 	my ($op, $value, @extra) = @_;
-	_check_in_proc();
+	_check_in_prologue();
 	if ($op != $UWOP_PUSH_NONVOL) {
 	    $info{has_nonpushreg} = 1;
 	} elsif ($info{has_nonpushreg}) {
-	    die ".seh_pushreg directives must appear first in the prolog";
+	    die ".seh_pushreg directives must appear first in the prologue";
 	}
 
-	my $label = _new_unwind_label("prolog");
+	my $label = _new_unwind_label("prologue");
 	# Encode an UNWIND_CODE structure. See
 	# https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170#struct-unwind_code
 	my $encoded = $op | ($value << 4);
@@ -844,17 +854,13 @@
 	$info{num_codes} += 1 + scalar(@extra);
 	# Unwind codes are listed in reverse order.
 	$info{unwind_codes} = $codes . $info{unwind_codes};
-	# Track the label of the last unwind code. It implicitly is the end of
-	# the prolog. MASM has an endprolog directive, but it seems to be
-	# unnecessary.
-	$info{endprolog} = $label;
 	return $label;
     }
 
     sub _updating_fixed_allocation {
-	_check_in_proc();
+	_check_in_prologue();
 	if ($info{frame_reg} != 0) {
-	    # Windows documentation does not explicitly forbid .seh_allocstack
+	    # Windows documentation does not explicitly forbid .seh_stackalloc
 	    # after .seh_setframe, but it appears to have no effect. Offsets are
 	    # still relative to the fixed allocation when the frame register was
 	    # established.
@@ -862,7 +868,7 @@
 	}
 	if ($info{has_offset}) {
 	    # Windows documentation does not explicitly forbid .seh_savereg
-	    # before .seh_allocstack, but it does not work very well. Offsets
+	    # before .seh_stackalloc, but it does not work very well. Offsets
 	    # are relative to the top of the final fixed allocation, not where
 	    # RSP currently is.
 	    die "directives with an offset must come after the fixed allocation is established.";
@@ -871,11 +877,8 @@
 
     sub _endproc {
 	_check_in_proc();
-	if ($info{num_codes} == 0) {
-	    # If a Windows function has no directives (i.e. it doesn't touch the
-	    # stack), it is a leaf function and is not expected to appear in
-	    # .pdata or .xdata.
-	    die ".seh_endproc found with no unwind codes";
+	if (!defined($info{endprologue})) {
+	    die "Missing .seh_endprologue";
 	}
 
 	my $end_label = _new_unwind_label("end");
@@ -894,7 +897,7 @@
 	$xdata .= <<____;
 $info{info_label}:
 	.byte	1	# version 1, no flags
-	.byte	$info{endprolog}-$info{start_label}
+	.byte	$info{endprologue}-$info{start_label}
 	.byte	$info{num_codes}
 	.byte	$frame_encoded
 $info{unwind_codes}
@@ -916,7 +919,7 @@
 	    my $label;
 	    SWITCH: for ($dir) {
 		/^startproc$/ && do {
-		    $label = _startproc();
+		    $label = _startproc($1);
 		    last;
 		};
 		/^pushreg$/ && do {
@@ -926,7 +929,7 @@
 		    $label = _add_unwind_code($UWOP_PUSH_NONVOL, $reg_num);
 		    last;
 		};
-		/^allocstack$/ && do {
+		/^stackalloc$/ && do {
 		    my $num = eval($$line);
 		    if ($num <= 0 || $num % 8 != 0) {
 			die "invalid stack allocation: $num";
@@ -976,7 +979,7 @@
 		    $info{has_offset} = 1;
 		    last;
 		};
-		/^savexmm128$/ && do {
+		/^savexmm$/ && do {
 		    $$line =~ /%xmm(\d+)\s*,\s*(.+)/ or die "could not parse .seh_$dir";
 		    my $reg_num = $1;
 		    my $offset = eval($2);
@@ -991,6 +994,19 @@
 		    $info{has_offset} = 1;
 		    last;
 		};
+		/^endprologue$/ && do {
+		    _check_in_prologue();
+		    if ($info{num_codes} == 0) {
+			# If a Windows function has no directives (i.e. it
+			# doesn't touch the stack), it is a leaf function and is
+			# not expected to appear in .pdata or .xdata.
+			die ".seh_endprologue found with no unwind codes";
+		    }
+
+		    $label = _new_unwind_label("endprologue");
+		    $info{endprologue} = $label;
+		    last;
+		};
 		/^endproc$/ && do {
 		    $label = _endproc();
 		    last;
diff --git a/src/crypto/test/asm/trampoline-x86_64.pl b/src/crypto/test/asm/trampoline-x86_64.pl
index 53b4bcd..d8d2be2 100755
--- a/src/crypto/test/asm/trampoline-x86_64.pl
+++ b/src/crypto/test/asm/trampoline-x86_64.pl
@@ -179,7 +179,7 @@
 $code .= <<____;
 	subq	\$$stack_alloc_size, %rsp
 .cfi_adjust_cfa_offset	$stack_alloc_size
-.seh_allocstack	$stack_alloc_size
+.seh_stackalloc	$stack_alloc_size
 ____
 $code .= <<____ if (!$win64);
 	movq	$unwind, $unwind_offset(%rsp)
@@ -195,12 +195,13 @@
   # pointer just before the call.
   my $cfi_off = $off - $stack_alloc_size - 8;
   my $seh_dir = ".seh_savereg";
-  $seh_dir = ".seh_savexmm128" if ($reg =~ /^xmm/);
+  $seh_dir = ".seh_savexmm" if ($reg =~ /^xmm/);
   return <<____;
 .cfi_offset	$reg, $cfi_off
 $seh_dir	\%$reg, $off
 ____
 });
+$code .= ".seh_endprologue\n";
 
 $code .= load_caller_state(0, $state);
 $code .= <<____;
@@ -342,6 +343,7 @@
 	pushq	%r12
 .cfi_push	%r13	# This should be %r13
 .seh_pushreg	%r13	# This should be %r13
+.seh_endprologue
 	# Windows evaluates epilogs directly in the unwinder, rather than using
 	# unwind codes. Add a nop so there is one non-epilog point (immediately
 	# before the nop) where the unwinder can observe the mistake.
@@ -366,6 +368,7 @@
 	pushq	%r12
 .cfi_push	%r12
 .seh_pushreg	%r12
+.seh_endprologue
 
 	movq	%r12, %rax
 	inc	%rax
@@ -422,6 +425,7 @@
 .seh_startproc
 	pushq	%r12
 .seh_pushreg	%r12
+.seh_endprologue
 
 	nop
 
diff --git a/src/gen/bcm/aesni-gcm-x86_64-win.asm b/src/gen/bcm/aesni-gcm-x86_64-win.asm
index d7a2665..7564a1c 100644
--- a/src/gen/bcm/aesni-gcm-x86_64-win.asm
+++ b/src/gen/bcm/aesni-gcm-x86_64-win.asm
@@ -363,57 +363,58 @@
 
 	push	rbp
 
-$L$SEH_prolog_aesni_gcm_decrypt_2:
+$L$SEH_prologue_aesni_gcm_decrypt_2:
 	mov	rbp,rsp
 
 	push	rbx
 
-$L$SEH_prolog_aesni_gcm_decrypt_3:
+$L$SEH_prologue_aesni_gcm_decrypt_3:
 	push	r12
 
-$L$SEH_prolog_aesni_gcm_decrypt_4:
+$L$SEH_prologue_aesni_gcm_decrypt_4:
 	push	r13
 
-$L$SEH_prolog_aesni_gcm_decrypt_5:
+$L$SEH_prologue_aesni_gcm_decrypt_5:
 	push	r14
 
-$L$SEH_prolog_aesni_gcm_decrypt_6:
+$L$SEH_prologue_aesni_gcm_decrypt_6:
 	push	r15
 
-$L$SEH_prolog_aesni_gcm_decrypt_7:
+$L$SEH_prologue_aesni_gcm_decrypt_7:
 	lea	rsp,[((-168))+rsp]
-$L$SEH_prolog_aesni_gcm_decrypt_8:
-$L$SEH_prolog_aesni_gcm_decrypt_9:
+$L$SEH_prologue_aesni_gcm_decrypt_8:
+$L$SEH_prologue_aesni_gcm_decrypt_9:
 
 
 
 	mov	QWORD[16+rbp],rdi
-$L$SEH_prolog_aesni_gcm_decrypt_10:
+$L$SEH_prologue_aesni_gcm_decrypt_10:
 	mov	QWORD[24+rbp],rsi
-$L$SEH_prolog_aesni_gcm_decrypt_11:
+$L$SEH_prologue_aesni_gcm_decrypt_11:
 	mov	rdi,QWORD[48+rbp]
 	mov	rsi,QWORD[56+rbp]
 
 	movaps	XMMWORD[(-208)+rbp],xmm6
-$L$SEH_prolog_aesni_gcm_decrypt_12:
+$L$SEH_prologue_aesni_gcm_decrypt_12:
 	movaps	XMMWORD[(-192)+rbp],xmm7
-$L$SEH_prolog_aesni_gcm_decrypt_13:
+$L$SEH_prologue_aesni_gcm_decrypt_13:
 	movaps	XMMWORD[(-176)+rbp],xmm8
-$L$SEH_prolog_aesni_gcm_decrypt_14:
+$L$SEH_prologue_aesni_gcm_decrypt_14:
 	movaps	XMMWORD[(-160)+rbp],xmm9
-$L$SEH_prolog_aesni_gcm_decrypt_15:
+$L$SEH_prologue_aesni_gcm_decrypt_15:
 	movaps	XMMWORD[(-144)+rbp],xmm10
-$L$SEH_prolog_aesni_gcm_decrypt_16:
+$L$SEH_prologue_aesni_gcm_decrypt_16:
 	movaps	XMMWORD[(-128)+rbp],xmm11
-$L$SEH_prolog_aesni_gcm_decrypt_17:
+$L$SEH_prologue_aesni_gcm_decrypt_17:
 	movaps	XMMWORD[(-112)+rbp],xmm12
-$L$SEH_prolog_aesni_gcm_decrypt_18:
+$L$SEH_prologue_aesni_gcm_decrypt_18:
 	movaps	XMMWORD[(-96)+rbp],xmm13
-$L$SEH_prolog_aesni_gcm_decrypt_19:
+$L$SEH_prologue_aesni_gcm_decrypt_19:
 	movaps	XMMWORD[(-80)+rbp],xmm14
-$L$SEH_prolog_aesni_gcm_decrypt_20:
+$L$SEH_prologue_aesni_gcm_decrypt_20:
 	movaps	XMMWORD[(-64)+rbp],xmm15
-$L$SEH_prolog_aesni_gcm_decrypt_21:
+$L$SEH_prologue_aesni_gcm_decrypt_21:
+$L$SEH_endprologue_aesni_gcm_decrypt_22:
 	vzeroupper
 
 	mov	r12,QWORD[64+rbp]
@@ -512,7 +513,7 @@
 
 $L$gcm_dec_abort:
 	ret
-$L$SEH_end_aesni_gcm_decrypt_22:
+$L$SEH_end_aesni_gcm_decrypt_23:
 
 
 
@@ -629,57 +630,58 @@
 
 	push	rbp
 
-$L$SEH_prolog_aesni_gcm_encrypt_2:
+$L$SEH_prologue_aesni_gcm_encrypt_2:
 	mov	rbp,rsp
 
 	push	rbx
 
-$L$SEH_prolog_aesni_gcm_encrypt_3:
+$L$SEH_prologue_aesni_gcm_encrypt_3:
 	push	r12
 
-$L$SEH_prolog_aesni_gcm_encrypt_4:
+$L$SEH_prologue_aesni_gcm_encrypt_4:
 	push	r13
 
-$L$SEH_prolog_aesni_gcm_encrypt_5:
+$L$SEH_prologue_aesni_gcm_encrypt_5:
 	push	r14
 
-$L$SEH_prolog_aesni_gcm_encrypt_6:
+$L$SEH_prologue_aesni_gcm_encrypt_6:
 	push	r15
 
-$L$SEH_prolog_aesni_gcm_encrypt_7:
+$L$SEH_prologue_aesni_gcm_encrypt_7:
 	lea	rsp,[((-168))+rsp]
-$L$SEH_prolog_aesni_gcm_encrypt_8:
-$L$SEH_prolog_aesni_gcm_encrypt_9:
+$L$SEH_prologue_aesni_gcm_encrypt_8:
+$L$SEH_prologue_aesni_gcm_encrypt_9:
 
 
 
 	mov	QWORD[16+rbp],rdi
-$L$SEH_prolog_aesni_gcm_encrypt_10:
+$L$SEH_prologue_aesni_gcm_encrypt_10:
 	mov	QWORD[24+rbp],rsi
-$L$SEH_prolog_aesni_gcm_encrypt_11:
+$L$SEH_prologue_aesni_gcm_encrypt_11:
 	mov	rdi,QWORD[48+rbp]
 	mov	rsi,QWORD[56+rbp]
 
 	movaps	XMMWORD[(-208)+rbp],xmm6
-$L$SEH_prolog_aesni_gcm_encrypt_12:
+$L$SEH_prologue_aesni_gcm_encrypt_12:
 	movaps	XMMWORD[(-192)+rbp],xmm7
-$L$SEH_prolog_aesni_gcm_encrypt_13:
+$L$SEH_prologue_aesni_gcm_encrypt_13:
 	movaps	XMMWORD[(-176)+rbp],xmm8
-$L$SEH_prolog_aesni_gcm_encrypt_14:
+$L$SEH_prologue_aesni_gcm_encrypt_14:
 	movaps	XMMWORD[(-160)+rbp],xmm9
-$L$SEH_prolog_aesni_gcm_encrypt_15:
+$L$SEH_prologue_aesni_gcm_encrypt_15:
 	movaps	XMMWORD[(-144)+rbp],xmm10
-$L$SEH_prolog_aesni_gcm_encrypt_16:
+$L$SEH_prologue_aesni_gcm_encrypt_16:
 	movaps	XMMWORD[(-128)+rbp],xmm11
-$L$SEH_prolog_aesni_gcm_encrypt_17:
+$L$SEH_prologue_aesni_gcm_encrypt_17:
 	movaps	XMMWORD[(-112)+rbp],xmm12
-$L$SEH_prolog_aesni_gcm_encrypt_18:
+$L$SEH_prologue_aesni_gcm_encrypt_18:
 	movaps	XMMWORD[(-96)+rbp],xmm13
-$L$SEH_prolog_aesni_gcm_encrypt_19:
+$L$SEH_prologue_aesni_gcm_encrypt_19:
 	movaps	XMMWORD[(-80)+rbp],xmm14
-$L$SEH_prolog_aesni_gcm_encrypt_20:
+$L$SEH_prologue_aesni_gcm_encrypt_20:
 	movaps	XMMWORD[(-64)+rbp],xmm15
-$L$SEH_prolog_aesni_gcm_encrypt_21:
+$L$SEH_prologue_aesni_gcm_encrypt_21:
+$L$SEH_endprologue_aesni_gcm_encrypt_22:
 	vzeroupper
 
 	vmovdqu	xmm1,XMMWORD[rdi]
@@ -943,7 +945,7 @@
 
 $L$gcm_enc_abort:
 	ret
-$L$SEH_end_aesni_gcm_encrypt_22:
+$L$SEH_end_aesni_gcm_encrypt_23:
 
 
 section	.rdata rdata align=8
@@ -968,11 +970,11 @@
 section	.pdata rdata align=4
 ALIGN	4
 	DD	$L$SEH_begin_aesni_gcm_decrypt_1 wrt ..imagebase
-	DD	$L$SEH_end_aesni_gcm_decrypt_22 wrt ..imagebase
+	DD	$L$SEH_end_aesni_gcm_decrypt_23 wrt ..imagebase
 	DD	$L$SEH_info_aesni_gcm_decrypt_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_aesni_gcm_encrypt_1 wrt ..imagebase
-	DD	$L$SEH_end_aesni_gcm_encrypt_22 wrt ..imagebase
+	DD	$L$SEH_end_aesni_gcm_encrypt_23 wrt ..imagebase
 	DD	$L$SEH_info_aesni_gcm_encrypt_0 wrt ..imagebase
 
 
@@ -980,120 +982,120 @@
 ALIGN	4
 $L$SEH_info_aesni_gcm_decrypt_0:
 	DB	1
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_endprologue_aesni_gcm_decrypt_22-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	33
 	DB	213
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_21-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	248
 	DW	9
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_20-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_20-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	232
 	DW	8
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_19-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_19-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	216
 	DW	7
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_18-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_18-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	200
 	DW	6
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_17-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_17-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	184
 	DW	5
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_16-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_16-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	168
 	DW	4
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_15-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_15-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	152
 	DW	3
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_14-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_14-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	136
 	DW	2
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_13-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_13-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	120
 	DW	1
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_12-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_12-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_11-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_11-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	100
 	DW	29
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_10-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_10-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	116
 	DW	28
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_9-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_9-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	3
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_8-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_8-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	1
 	DW	21
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_7-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_7-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	240
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_6-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_6-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	224
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_5-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_5-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	208
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_4-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_4-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	192
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_3-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_3-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	48
-	DB	$L$SEH_prolog_aesni_gcm_decrypt_2-$L$SEH_begin_aesni_gcm_decrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_decrypt_2-$L$SEH_begin_aesni_gcm_decrypt_1
 	DB	80
 
 $L$SEH_info_aesni_gcm_encrypt_0:
 	DB	1
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_endprologue_aesni_gcm_encrypt_22-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	33
 	DB	213
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_21-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	248
 	DW	9
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_20-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_20-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	232
 	DW	8
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_19-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_19-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	216
 	DW	7
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_18-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_18-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	200
 	DW	6
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_17-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_17-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	184
 	DW	5
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_16-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_16-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	168
 	DW	4
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_15-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_15-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	152
 	DW	3
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_14-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_14-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	136
 	DW	2
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_13-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_13-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	120
 	DW	1
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_12-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_12-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_11-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_11-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	100
 	DW	29
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_10-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_10-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	116
 	DW	28
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_9-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_9-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	3
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_8-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_8-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	1
 	DW	21
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_7-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_7-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	240
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_6-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_6-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	224
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_5-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_5-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	208
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_4-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_4-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	192
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_3-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_3-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	48
-	DB	$L$SEH_prolog_aesni_gcm_encrypt_2-$L$SEH_begin_aesni_gcm_encrypt_1
+	DB	$L$SEH_prologue_aesni_gcm_encrypt_2-$L$SEH_begin_aesni_gcm_encrypt_1
 	DB	80
 %else
 ; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
diff --git a/src/gen/bcm/ghash-ssse3-x86_64-win.asm b/src/gen/bcm/ghash-ssse3-x86_64-win.asm
index 84c5d40..a8be60e 100644
--- a/src/gen/bcm/ghash-ssse3-x86_64-win.asm
+++ b/src/gen/bcm/ghash-ssse3-x86_64-win.asm
@@ -26,11 +26,12 @@
 $L$SEH_begin_gcm_gmult_ssse3_1:
 _CET_ENDBR
 	sub	rsp,40
-$L$SEH_prolog_gcm_gmult_ssse3_2:
+$L$SEH_prologue_gcm_gmult_ssse3_2:
 	movdqa	XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_gmult_ssse3_3:
+$L$SEH_prologue_gcm_gmult_ssse3_3:
 	movdqa	XMMWORD[16+rsp],xmm10
-$L$SEH_prolog_gcm_gmult_ssse3_4:
+$L$SEH_prologue_gcm_gmult_ssse3_4:
+$L$SEH_endprologue_gcm_gmult_ssse3_5:
 	movdqu	xmm0,XMMWORD[rcx]
 	movdqa	xmm10,XMMWORD[$L$reverse_bytes]
 	movdqa	xmm2,XMMWORD[$L$low4_mask]
@@ -210,7 +211,7 @@
 	add	rsp,40
 	ret
 
-$L$SEH_end_gcm_gmult_ssse3_5:
+$L$SEH_end_gcm_gmult_ssse3_6:
 
 
 
@@ -225,13 +226,14 @@
 $L$SEH_begin_gcm_ghash_ssse3_1:
 _CET_ENDBR
 	sub	rsp,56
-$L$SEH_prolog_gcm_ghash_ssse3_2:
+$L$SEH_prologue_gcm_ghash_ssse3_2:
 	movdqa	XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_ghash_ssse3_3:
+$L$SEH_prologue_gcm_ghash_ssse3_3:
 	movdqa	XMMWORD[16+rsp],xmm10
-$L$SEH_prolog_gcm_ghash_ssse3_4:
+$L$SEH_prologue_gcm_ghash_ssse3_4:
 	movdqa	XMMWORD[32+rsp],xmm11
-$L$SEH_prolog_gcm_ghash_ssse3_5:
+$L$SEH_prologue_gcm_ghash_ssse3_5:
+$L$SEH_endprologue_gcm_ghash_ssse3_6:
 	movdqu	xmm0,XMMWORD[rcx]
 	movdqa	xmm10,XMMWORD[$L$reverse_bytes]
 	movdqa	xmm11,XMMWORD[$L$low4_mask]
@@ -434,7 +436,7 @@
 	add	rsp,56
 	ret
 
-$L$SEH_end_gcm_ghash_ssse3_6:
+$L$SEH_end_gcm_ghash_ssse3_7:
 
 
 section	.rdata rdata align=8
@@ -451,11 +453,11 @@
 section	.pdata rdata align=4
 ALIGN	4
 	DD	$L$SEH_begin_gcm_gmult_ssse3_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_gmult_ssse3_5 wrt ..imagebase
+	DD	$L$SEH_end_gcm_gmult_ssse3_6 wrt ..imagebase
 	DD	$L$SEH_info_gcm_gmult_ssse3_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_gcm_ghash_ssse3_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_ghash_ssse3_6 wrt ..imagebase
+	DD	$L$SEH_end_gcm_ghash_ssse3_7 wrt ..imagebase
 	DD	$L$SEH_info_gcm_ghash_ssse3_0 wrt ..imagebase
 
 
@@ -463,33 +465,33 @@
 ALIGN	4
 $L$SEH_info_gcm_gmult_ssse3_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
+	DB	$L$SEH_endprologue_gcm_gmult_ssse3_5-$L$SEH_begin_gcm_gmult_ssse3_1
 	DB	5
 	DB	0
-	DB	$L$SEH_prolog_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
+	DB	$L$SEH_prologue_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
 	DB	168
 	DW	1
-	DB	$L$SEH_prolog_gcm_gmult_ssse3_3-$L$SEH_begin_gcm_gmult_ssse3_1
+	DB	$L$SEH_prologue_gcm_gmult_ssse3_3-$L$SEH_begin_gcm_gmult_ssse3_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_gmult_ssse3_2-$L$SEH_begin_gcm_gmult_ssse3_1
+	DB	$L$SEH_prologue_gcm_gmult_ssse3_2-$L$SEH_begin_gcm_gmult_ssse3_1
 	DB	66
 
 $L$SEH_info_gcm_ghash_ssse3_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
+	DB	$L$SEH_endprologue_gcm_ghash_ssse3_6-$L$SEH_begin_gcm_ghash_ssse3_1
 	DB	7
 	DB	0
-	DB	$L$SEH_prolog_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
+	DB	$L$SEH_prologue_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
 	DB	184
 	DW	2
-	DB	$L$SEH_prolog_gcm_ghash_ssse3_4-$L$SEH_begin_gcm_ghash_ssse3_1
+	DB	$L$SEH_prologue_gcm_ghash_ssse3_4-$L$SEH_begin_gcm_ghash_ssse3_1
 	DB	168
 	DW	1
-	DB	$L$SEH_prolog_gcm_ghash_ssse3_3-$L$SEH_begin_gcm_ghash_ssse3_1
+	DB	$L$SEH_prologue_gcm_ghash_ssse3_3-$L$SEH_begin_gcm_ghash_ssse3_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_ghash_ssse3_2-$L$SEH_begin_gcm_ghash_ssse3_1
+	DB	$L$SEH_prologue_gcm_ghash_ssse3_2-$L$SEH_begin_gcm_ghash_ssse3_1
 	DB	98
 %else
 ; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
diff --git a/src/gen/bcm/ghash-x86_64-apple.S b/src/gen/bcm/ghash-x86_64-apple.S
index 909d659..4961298 100644
--- a/src/gen/bcm/ghash-x86_64-apple.S
+++ b/src/gen/bcm/ghash-x86_64-apple.S
@@ -612,6 +612,7 @@
 .p2align	5
 _gcm_init_avx:
 
+
 _CET_ENDBR
 	vzeroupper
 
@@ -734,6 +735,7 @@
 .p2align	5
 _gcm_ghash_avx:
 
+
 _CET_ENDBR
 	vzeroupper
 
diff --git a/src/gen/bcm/ghash-x86_64-linux.S b/src/gen/bcm/ghash-x86_64-linux.S
index 22429a6..e00bb9f 100644
--- a/src/gen/bcm/ghash-x86_64-linux.S
+++ b/src/gen/bcm/ghash-x86_64-linux.S
@@ -612,6 +612,7 @@
 .align	32
 gcm_init_avx:
 .cfi_startproc	
+
 _CET_ENDBR
 	vzeroupper
 
@@ -734,6 +735,7 @@
 .align	32
 gcm_ghash_avx:
 .cfi_startproc	
+
 _CET_ENDBR
 	vzeroupper
 
diff --git a/src/gen/bcm/ghash-x86_64-win.asm b/src/gen/bcm/ghash-x86_64-win.asm
index 41b189a..bd4d691 100644
--- a/src/gen/bcm/ghash-x86_64-win.asm
+++ b/src/gen/bcm/ghash-x86_64-win.asm
@@ -22,9 +22,10 @@
 _CET_ENDBR
 $L$_init_clmul:
 	sub	rsp,0x18
-$L$SEH_prolog_gcm_init_clmul_2:
+$L$SEH_prologue_gcm_init_clmul_2:
 	movaps	XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_init_clmul_3:
+$L$SEH_prologue_gcm_init_clmul_3:
+$L$SEH_endprologue_gcm_init_clmul_4:
 	movdqu	xmm2,XMMWORD[rdx]
 	pshufd	xmm2,xmm2,78
 
@@ -178,7 +179,7 @@
 	lea	rsp,[24+rsp]
 	ret
 
-$L$SEH_end_gcm_init_clmul_4:
+$L$SEH_end_gcm_init_clmul_5:
 
 global	gcm_gmult_clmul
 
@@ -244,27 +245,28 @@
 $L$_ghash_clmul:
 	lea	rax,[((-136))+rsp]
 	lea	rsp,[((-32))+rax]
-$L$SEH_prolog_gcm_ghash_clmul_2:
+$L$SEH_prologue_gcm_ghash_clmul_2:
 	movaps	XMMWORD[(-32)+rax],xmm6
-$L$SEH_prolog_gcm_ghash_clmul_3:
+$L$SEH_prologue_gcm_ghash_clmul_3:
 	movaps	XMMWORD[(-16)+rax],xmm7
-$L$SEH_prolog_gcm_ghash_clmul_4:
+$L$SEH_prologue_gcm_ghash_clmul_4:
 	movaps	XMMWORD[rax],xmm8
-$L$SEH_prolog_gcm_ghash_clmul_5:
+$L$SEH_prologue_gcm_ghash_clmul_5:
 	movaps	XMMWORD[16+rax],xmm9
-$L$SEH_prolog_gcm_ghash_clmul_6:
+$L$SEH_prologue_gcm_ghash_clmul_6:
 	movaps	XMMWORD[32+rax],xmm10
-$L$SEH_prolog_gcm_ghash_clmul_7:
+$L$SEH_prologue_gcm_ghash_clmul_7:
 	movaps	XMMWORD[48+rax],xmm11
-$L$SEH_prolog_gcm_ghash_clmul_8:
+$L$SEH_prologue_gcm_ghash_clmul_8:
 	movaps	XMMWORD[64+rax],xmm12
-$L$SEH_prolog_gcm_ghash_clmul_9:
+$L$SEH_prologue_gcm_ghash_clmul_9:
 	movaps	XMMWORD[80+rax],xmm13
-$L$SEH_prolog_gcm_ghash_clmul_10:
+$L$SEH_prologue_gcm_ghash_clmul_10:
 	movaps	XMMWORD[96+rax],xmm14
-$L$SEH_prolog_gcm_ghash_clmul_11:
+$L$SEH_prologue_gcm_ghash_clmul_11:
 	movaps	XMMWORD[112+rax],xmm15
-$L$SEH_prolog_gcm_ghash_clmul_12:
+$L$SEH_prologue_gcm_ghash_clmul_12:
+$L$SEH_endprologue_gcm_ghash_clmul_13:
 	movdqa	xmm10,XMMWORD[$L$bswap_mask]
 
 	movdqu	xmm0,XMMWORD[rcx]
@@ -649,19 +651,20 @@
 	lea	rsp,[168+rsp]
 	ret
 
-$L$SEH_end_gcm_ghash_clmul_13:
+$L$SEH_end_gcm_ghash_clmul_14:
 
 global	gcm_init_avx
 
 ALIGN	32
 gcm_init_avx:
 
-_CET_ENDBR
 $L$SEH_begin_gcm_init_avx_1:
+_CET_ENDBR
 	sub	rsp,0x18
-$L$SEH_prolog_gcm_init_avx_2:
+$L$SEH_prologue_gcm_init_avx_2:
 	movaps	XMMWORD[rsp],xmm6
-$L$SEH_prolog_gcm_init_avx_3:
+$L$SEH_prologue_gcm_init_avx_3:
+$L$SEH_endprologue_gcm_init_avx_4:
 	vzeroupper
 
 	vmovdqu	xmm2,XMMWORD[rdx]
@@ -766,7 +769,7 @@
 	movaps	xmm6,XMMWORD[rsp]
 	lea	rsp,[24+rsp]
 	ret
-$L$SEH_end_gcm_init_avx_4:
+$L$SEH_end_gcm_init_avx_5:
 
 
 global	gcm_gmult_avx
@@ -783,31 +786,32 @@
 ALIGN	32
 gcm_ghash_avx:
 
-_CET_ENDBR
 $L$SEH_begin_gcm_ghash_avx_1:
+_CET_ENDBR
 	lea	rax,[((-136))+rsp]
 	lea	rsp,[((-32))+rax]
-$L$SEH_prolog_gcm_ghash_avx_2:
+$L$SEH_prologue_gcm_ghash_avx_2:
 	movaps	XMMWORD[(-32)+rax],xmm6
-$L$SEH_prolog_gcm_ghash_avx_3:
+$L$SEH_prologue_gcm_ghash_avx_3:
 	movaps	XMMWORD[(-16)+rax],xmm7
-$L$SEH_prolog_gcm_ghash_avx_4:
+$L$SEH_prologue_gcm_ghash_avx_4:
 	movaps	XMMWORD[rax],xmm8
-$L$SEH_prolog_gcm_ghash_avx_5:
+$L$SEH_prologue_gcm_ghash_avx_5:
 	movaps	XMMWORD[16+rax],xmm9
-$L$SEH_prolog_gcm_ghash_avx_6:
+$L$SEH_prologue_gcm_ghash_avx_6:
 	movaps	XMMWORD[32+rax],xmm10
-$L$SEH_prolog_gcm_ghash_avx_7:
+$L$SEH_prologue_gcm_ghash_avx_7:
 	movaps	XMMWORD[48+rax],xmm11
-$L$SEH_prolog_gcm_ghash_avx_8:
+$L$SEH_prologue_gcm_ghash_avx_8:
 	movaps	XMMWORD[64+rax],xmm12
-$L$SEH_prolog_gcm_ghash_avx_9:
+$L$SEH_prologue_gcm_ghash_avx_9:
 	movaps	XMMWORD[80+rax],xmm13
-$L$SEH_prolog_gcm_ghash_avx_10:
+$L$SEH_prologue_gcm_ghash_avx_10:
 	movaps	XMMWORD[96+rax],xmm14
-$L$SEH_prolog_gcm_ghash_avx_11:
+$L$SEH_prologue_gcm_ghash_avx_11:
 	movaps	XMMWORD[112+rax],xmm15
-$L$SEH_prolog_gcm_ghash_avx_12:
+$L$SEH_prologue_gcm_ghash_avx_12:
+$L$SEH_endprologue_gcm_ghash_avx_13:
 	vzeroupper
 
 	vmovdqu	xmm10,XMMWORD[rcx]
@@ -1191,7 +1195,7 @@
 	lea	rsp,[168+rsp]
 	ret
 
-$L$SEH_end_gcm_ghash_avx_13:
+$L$SEH_end_gcm_ghash_avx_14:
 
 section	.rdata rdata align=8
 ALIGN	64
@@ -1213,19 +1217,19 @@
 section	.pdata rdata align=4
 ALIGN	4
 	DD	$L$SEH_begin_gcm_init_clmul_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_init_clmul_4 wrt ..imagebase
+	DD	$L$SEH_end_gcm_init_clmul_5 wrt ..imagebase
 	DD	$L$SEH_info_gcm_init_clmul_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_gcm_ghash_clmul_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_ghash_clmul_13 wrt ..imagebase
+	DD	$L$SEH_end_gcm_ghash_clmul_14 wrt ..imagebase
 	DD	$L$SEH_info_gcm_ghash_clmul_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_gcm_init_avx_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_init_avx_4 wrt ..imagebase
+	DD	$L$SEH_end_gcm_init_avx_5 wrt ..imagebase
 	DD	$L$SEH_info_gcm_init_avx_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_gcm_ghash_avx_1 wrt ..imagebase
-	DD	$L$SEH_end_gcm_ghash_avx_13 wrt ..imagebase
+	DD	$L$SEH_end_gcm_ghash_avx_14 wrt ..imagebase
 	DD	$L$SEH_info_gcm_ghash_avx_0 wrt ..imagebase
 
 
@@ -1233,101 +1237,101 @@
 ALIGN	4
 $L$SEH_info_gcm_init_clmul_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
+	DB	$L$SEH_endprologue_gcm_init_clmul_4-$L$SEH_begin_gcm_init_clmul_1
 	DB	3
 	DB	0
-	DB	$L$SEH_prolog_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
+	DB	$L$SEH_prologue_gcm_init_clmul_3-$L$SEH_begin_gcm_init_clmul_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_init_clmul_2-$L$SEH_begin_gcm_init_clmul_1
+	DB	$L$SEH_prologue_gcm_init_clmul_2-$L$SEH_begin_gcm_init_clmul_1
 	DB	34
 
 $L$SEH_info_gcm_ghash_clmul_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_endprologue_gcm_ghash_clmul_13-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	22
 	DB	0
-	DB	$L$SEH_prolog_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_12-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	248
 	DW	9
-	DB	$L$SEH_prolog_gcm_ghash_clmul_11-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_11-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	232
 	DW	8
-	DB	$L$SEH_prolog_gcm_ghash_clmul_10-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_10-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	216
 	DW	7
-	DB	$L$SEH_prolog_gcm_ghash_clmul_9-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_9-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	200
 	DW	6
-	DB	$L$SEH_prolog_gcm_ghash_clmul_8-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_8-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	184
 	DW	5
-	DB	$L$SEH_prolog_gcm_ghash_clmul_7-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_7-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	168
 	DW	4
-	DB	$L$SEH_prolog_gcm_ghash_clmul_6-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_6-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	152
 	DW	3
-	DB	$L$SEH_prolog_gcm_ghash_clmul_5-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_5-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	136
 	DW	2
-	DB	$L$SEH_prolog_gcm_ghash_clmul_4-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_4-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	120
 	DW	1
-	DB	$L$SEH_prolog_gcm_ghash_clmul_3-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_3-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_ghash_clmul_2-$L$SEH_begin_gcm_ghash_clmul_1
+	DB	$L$SEH_prologue_gcm_ghash_clmul_2-$L$SEH_begin_gcm_ghash_clmul_1
 	DB	1
 	DW	21
 
 $L$SEH_info_gcm_init_avx_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
+	DB	$L$SEH_endprologue_gcm_init_avx_4-$L$SEH_begin_gcm_init_avx_1
 	DB	3
 	DB	0
-	DB	$L$SEH_prolog_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
+	DB	$L$SEH_prologue_gcm_init_avx_3-$L$SEH_begin_gcm_init_avx_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_init_avx_2-$L$SEH_begin_gcm_init_avx_1
+	DB	$L$SEH_prologue_gcm_init_avx_2-$L$SEH_begin_gcm_init_avx_1
 	DB	34
 
 $L$SEH_info_gcm_ghash_avx_0:
 	DB	1
-	DB	$L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_endprologue_gcm_ghash_avx_13-$L$SEH_begin_gcm_ghash_avx_1
 	DB	22
 	DB	0
-	DB	$L$SEH_prolog_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_12-$L$SEH_begin_gcm_ghash_avx_1
 	DB	248
 	DW	9
-	DB	$L$SEH_prolog_gcm_ghash_avx_11-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_11-$L$SEH_begin_gcm_ghash_avx_1
 	DB	232
 	DW	8
-	DB	$L$SEH_prolog_gcm_ghash_avx_10-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_10-$L$SEH_begin_gcm_ghash_avx_1
 	DB	216
 	DW	7
-	DB	$L$SEH_prolog_gcm_ghash_avx_9-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_9-$L$SEH_begin_gcm_ghash_avx_1
 	DB	200
 	DW	6
-	DB	$L$SEH_prolog_gcm_ghash_avx_8-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_8-$L$SEH_begin_gcm_ghash_avx_1
 	DB	184
 	DW	5
-	DB	$L$SEH_prolog_gcm_ghash_avx_7-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_7-$L$SEH_begin_gcm_ghash_avx_1
 	DB	168
 	DW	4
-	DB	$L$SEH_prolog_gcm_ghash_avx_6-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_6-$L$SEH_begin_gcm_ghash_avx_1
 	DB	152
 	DW	3
-	DB	$L$SEH_prolog_gcm_ghash_avx_5-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_5-$L$SEH_begin_gcm_ghash_avx_1
 	DB	136
 	DW	2
-	DB	$L$SEH_prolog_gcm_ghash_avx_4-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_4-$L$SEH_begin_gcm_ghash_avx_1
 	DB	120
 	DW	1
-	DB	$L$SEH_prolog_gcm_ghash_avx_3-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_3-$L$SEH_begin_gcm_ghash_avx_1
 	DB	104
 	DW	0
-	DB	$L$SEH_prolog_gcm_ghash_avx_2-$L$SEH_begin_gcm_ghash_avx_1
+	DB	$L$SEH_prologue_gcm_ghash_avx_2-$L$SEH_begin_gcm_ghash_avx_1
 	DB	1
 	DW	21
 %else
diff --git a/src/gen/test_support/trampoline-x86_64-apple.S b/src/gen/test_support/trampoline-x86_64-apple.S
index 7c76d2d..f618dac 100644
--- a/src/gen/test_support/trampoline-x86_64-apple.S
+++ b/src/gen/test_support/trampoline-x86_64-apple.S
@@ -52,6 +52,7 @@
 	movq	%r15,104(%rsp)
 
 
+
 	movq	0(%rsi),%rbx
 	movq	8(%rsi),%rbp
 	movq	16(%rsi),%r12
@@ -473,6 +474,7 @@
 
 
 
+
 	nop
 	popq	%r12
 
@@ -496,6 +498,7 @@
 
 
 
+
 	movq	%r12,%rax
 	incq	%rax
 	movq	%rax,(%rsp)
diff --git a/src/gen/test_support/trampoline-x86_64-linux.S b/src/gen/test_support/trampoline-x86_64-linux.S
index 93af8b9..8557e9e 100644
--- a/src/gen/test_support/trampoline-x86_64-linux.S
+++ b/src/gen/test_support/trampoline-x86_64-linux.S
@@ -52,6 +52,7 @@
 	movq	%r15,104(%rsp)
 .cfi_offset	r15, -24
 
+
 	movq	0(%rsi),%rbx
 	movq	8(%rsi),%rbp
 	movq	16(%rsi),%r12
@@ -474,6 +475,7 @@
 
 
 
+
 	nop
 	popq	%r12
 .cfi_adjust_cfa_offset	-8
@@ -499,6 +501,7 @@
 .cfi_offset	%r12,-16
 
 
+
 	movq	%r12,%rax
 	incq	%rax
 	movq	%rax,(%rsp)
diff --git a/src/gen/test_support/trampoline-x86_64-win.asm b/src/gen/test_support/trampoline-x86_64-win.asm
index ae04cbe..dca3957 100644
--- a/src/gen/test_support/trampoline-x86_64-win.asm
+++ b/src/gen/test_support/trampoline-x86_64-win.asm
@@ -39,61 +39,62 @@
 
 	sub	rsp,344
 
-$L$SEH_prolog_abi_test_trampoline_2:
+$L$SEH_prologue_abi_test_trampoline_2:
 	mov	QWORD[112+rsp],rbx
 
-$L$SEH_prolog_abi_test_trampoline_3:
+$L$SEH_prologue_abi_test_trampoline_3:
 	mov	QWORD[120+rsp],rbp
 
-$L$SEH_prolog_abi_test_trampoline_4:
+$L$SEH_prologue_abi_test_trampoline_4:
 	mov	QWORD[128+rsp],rdi
 
-$L$SEH_prolog_abi_test_trampoline_5:
+$L$SEH_prologue_abi_test_trampoline_5:
 	mov	QWORD[136+rsp],rsi
 
-$L$SEH_prolog_abi_test_trampoline_6:
+$L$SEH_prologue_abi_test_trampoline_6:
 	mov	QWORD[144+rsp],r12
 
-$L$SEH_prolog_abi_test_trampoline_7:
+$L$SEH_prologue_abi_test_trampoline_7:
 	mov	QWORD[152+rsp],r13
 
-$L$SEH_prolog_abi_test_trampoline_8:
+$L$SEH_prologue_abi_test_trampoline_8:
 	mov	QWORD[160+rsp],r14
 
-$L$SEH_prolog_abi_test_trampoline_9:
+$L$SEH_prologue_abi_test_trampoline_9:
 	mov	QWORD[168+rsp],r15
 
-$L$SEH_prolog_abi_test_trampoline_10:
+$L$SEH_prologue_abi_test_trampoline_10:
 	movdqa	XMMWORD[176+rsp],xmm6
 
-$L$SEH_prolog_abi_test_trampoline_11:
+$L$SEH_prologue_abi_test_trampoline_11:
 	movdqa	XMMWORD[192+rsp],xmm7
 
-$L$SEH_prolog_abi_test_trampoline_12:
+$L$SEH_prologue_abi_test_trampoline_12:
 	movdqa	XMMWORD[208+rsp],xmm8
 
-$L$SEH_prolog_abi_test_trampoline_13:
+$L$SEH_prologue_abi_test_trampoline_13:
 	movdqa	XMMWORD[224+rsp],xmm9
 
-$L$SEH_prolog_abi_test_trampoline_14:
+$L$SEH_prologue_abi_test_trampoline_14:
 	movdqa	XMMWORD[240+rsp],xmm10
 
-$L$SEH_prolog_abi_test_trampoline_15:
+$L$SEH_prologue_abi_test_trampoline_15:
 	movdqa	XMMWORD[256+rsp],xmm11
 
-$L$SEH_prolog_abi_test_trampoline_16:
+$L$SEH_prologue_abi_test_trampoline_16:
 	movdqa	XMMWORD[272+rsp],xmm12
 
-$L$SEH_prolog_abi_test_trampoline_17:
+$L$SEH_prologue_abi_test_trampoline_17:
 	movdqa	XMMWORD[288+rsp],xmm13
 
-$L$SEH_prolog_abi_test_trampoline_18:
+$L$SEH_prologue_abi_test_trampoline_18:
 	movdqa	XMMWORD[304+rsp],xmm14
 
-$L$SEH_prolog_abi_test_trampoline_19:
+$L$SEH_prologue_abi_test_trampoline_19:
 	movdqa	XMMWORD[320+rsp],xmm15
 
-$L$SEH_prolog_abi_test_trampoline_20:
+$L$SEH_prologue_abi_test_trampoline_20:
+$L$SEH_endprologue_abi_test_trampoline_21:
 	mov	rbx,QWORD[rdx]
 	mov	rbp,QWORD[8+rdx]
 	mov	rdi,QWORD[16+rdx]
@@ -254,7 +255,7 @@
 
 	ret
 
-$L$SEH_end_abi_test_trampoline_21:
+$L$SEH_end_abi_test_trampoline_22:
 
 
 global	abi_test_clobber_rax
@@ -516,7 +517,8 @@
 _CET_ENDBR
 	push	r12
 
-$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2:
+$L$SEH_prologue_abi_test_bad_unwind_wrong_register_2:
+$L$SEH_endprologue_abi_test_bad_unwind_wrong_register_3:
 
 
 
@@ -524,7 +526,7 @@
 	pop	r12
 
 	ret
-$L$SEH_end_abi_test_bad_unwind_wrong_register_3:
+$L$SEH_end_abi_test_bad_unwind_wrong_register_4:
 
 
 
@@ -540,7 +542,8 @@
 _CET_ENDBR
 	push	r12
 
-$L$SEH_prolog_abi_test_bad_unwind_temporary_2:
+$L$SEH_prologue_abi_test_bad_unwind_temporary_2:
+$L$SEH_endprologue_abi_test_bad_unwind_temporary_3:
 
 	mov	rax,r12
 	inc	rax
@@ -555,7 +558,7 @@
 
 	ret
 
-$L$SEH_end_abi_test_bad_unwind_temporary_3:
+$L$SEH_end_abi_test_bad_unwind_temporary_4:
 
 
 
@@ -592,7 +595,8 @@
 abi_test_bad_unwind_epilog:
 $L$SEH_begin_abi_test_bad_unwind_epilog_1:
 	push	r12
-$L$SEH_prolog_abi_test_bad_unwind_epilog_2:
+$L$SEH_prologue_abi_test_bad_unwind_epilog_2:
+$L$SEH_endprologue_abi_test_bad_unwind_epilog_3:
 
 	nop
 
@@ -600,24 +604,24 @@
 	pop	r12
 	nop
 	ret
-$L$SEH_end_abi_test_bad_unwind_epilog_3:
+$L$SEH_end_abi_test_bad_unwind_epilog_4:
 
 section	.pdata rdata align=4
 ALIGN	4
 	DD	$L$SEH_begin_abi_test_trampoline_1 wrt ..imagebase
-	DD	$L$SEH_end_abi_test_trampoline_21 wrt ..imagebase
+	DD	$L$SEH_end_abi_test_trampoline_22 wrt ..imagebase
 	DD	$L$SEH_info_abi_test_trampoline_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_abi_test_bad_unwind_wrong_register_1 wrt ..imagebase
-	DD	$L$SEH_end_abi_test_bad_unwind_wrong_register_3 wrt ..imagebase
+	DD	$L$SEH_end_abi_test_bad_unwind_wrong_register_4 wrt ..imagebase
 	DD	$L$SEH_info_abi_test_bad_unwind_wrong_register_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_abi_test_bad_unwind_temporary_1 wrt ..imagebase
-	DD	$L$SEH_end_abi_test_bad_unwind_temporary_3 wrt ..imagebase
+	DD	$L$SEH_end_abi_test_bad_unwind_temporary_4 wrt ..imagebase
 	DD	$L$SEH_info_abi_test_bad_unwind_temporary_0 wrt ..imagebase
 
 	DD	$L$SEH_begin_abi_test_bad_unwind_epilog_1 wrt ..imagebase
-	DD	$L$SEH_end_abi_test_bad_unwind_epilog_3 wrt ..imagebase
+	DD	$L$SEH_end_abi_test_bad_unwind_epilog_4 wrt ..imagebase
 	DD	$L$SEH_info_abi_test_bad_unwind_epilog_0 wrt ..imagebase
 
 
@@ -625,89 +629,89 @@
 ALIGN	4
 $L$SEH_info_abi_test_trampoline_0:
 	DB	1
-	DB	$L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_endprologue_abi_test_trampoline_21-$L$SEH_begin_abi_test_trampoline_1
 	DB	38
 	DB	0
-	DB	$L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
 	DB	248
 	DW	20
-	DB	$L$SEH_prolog_abi_test_trampoline_19-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_19-$L$SEH_begin_abi_test_trampoline_1
 	DB	232
 	DW	19
-	DB	$L$SEH_prolog_abi_test_trampoline_18-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_18-$L$SEH_begin_abi_test_trampoline_1
 	DB	216
 	DW	18
-	DB	$L$SEH_prolog_abi_test_trampoline_17-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_17-$L$SEH_begin_abi_test_trampoline_1
 	DB	200
 	DW	17
-	DB	$L$SEH_prolog_abi_test_trampoline_16-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_16-$L$SEH_begin_abi_test_trampoline_1
 	DB	184
 	DW	16
-	DB	$L$SEH_prolog_abi_test_trampoline_15-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_15-$L$SEH_begin_abi_test_trampoline_1
 	DB	168
 	DW	15
-	DB	$L$SEH_prolog_abi_test_trampoline_14-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_14-$L$SEH_begin_abi_test_trampoline_1
 	DB	152
 	DW	14
-	DB	$L$SEH_prolog_abi_test_trampoline_13-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_13-$L$SEH_begin_abi_test_trampoline_1
 	DB	136
 	DW	13
-	DB	$L$SEH_prolog_abi_test_trampoline_12-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_12-$L$SEH_begin_abi_test_trampoline_1
 	DB	120
 	DW	12
-	DB	$L$SEH_prolog_abi_test_trampoline_11-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_11-$L$SEH_begin_abi_test_trampoline_1
 	DB	104
 	DW	11
-	DB	$L$SEH_prolog_abi_test_trampoline_10-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_10-$L$SEH_begin_abi_test_trampoline_1
 	DB	244
 	DW	21
-	DB	$L$SEH_prolog_abi_test_trampoline_9-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_9-$L$SEH_begin_abi_test_trampoline_1
 	DB	228
 	DW	20
-	DB	$L$SEH_prolog_abi_test_trampoline_8-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_8-$L$SEH_begin_abi_test_trampoline_1
 	DB	212
 	DW	19
-	DB	$L$SEH_prolog_abi_test_trampoline_7-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_7-$L$SEH_begin_abi_test_trampoline_1
 	DB	196
 	DW	18
-	DB	$L$SEH_prolog_abi_test_trampoline_6-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_6-$L$SEH_begin_abi_test_trampoline_1
 	DB	100
 	DW	17
-	DB	$L$SEH_prolog_abi_test_trampoline_5-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_5-$L$SEH_begin_abi_test_trampoline_1
 	DB	116
 	DW	16
-	DB	$L$SEH_prolog_abi_test_trampoline_4-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_4-$L$SEH_begin_abi_test_trampoline_1
 	DB	84
 	DW	15
-	DB	$L$SEH_prolog_abi_test_trampoline_3-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_3-$L$SEH_begin_abi_test_trampoline_1
 	DB	52
 	DW	14
-	DB	$L$SEH_prolog_abi_test_trampoline_2-$L$SEH_begin_abi_test_trampoline_1
+	DB	$L$SEH_prologue_abi_test_trampoline_2-$L$SEH_begin_abi_test_trampoline_1
 	DB	1
 	DW	43
 
 $L$SEH_info_abi_test_bad_unwind_wrong_register_0:
 	DB	1
-	DB	$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
+	DB	$L$SEH_endprologue_abi_test_bad_unwind_wrong_register_3-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
 	DB	1
 	DB	0
-	DB	$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
+	DB	$L$SEH_prologue_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
 	DB	208
 
 $L$SEH_info_abi_test_bad_unwind_temporary_0:
 	DB	1
-	DB	$L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
+	DB	$L$SEH_endprologue_abi_test_bad_unwind_temporary_3-$L$SEH_begin_abi_test_bad_unwind_temporary_1
 	DB	1
 	DB	0
-	DB	$L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
+	DB	$L$SEH_prologue_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
 	DB	192
 
 $L$SEH_info_abi_test_bad_unwind_epilog_0:
 	DB	1
-	DB	$L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
+	DB	$L$SEH_endprologue_abi_test_bad_unwind_epilog_3-$L$SEH_begin_abi_test_bad_unwind_epilog_1
 	DB	1
 	DB	0
-	DB	$L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
+	DB	$L$SEH_prologue_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
 	DB	192
 %else
 ; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738