//go:build amd64 && !purego && (!gccgo || go1.18)
// +build amd64
// +build !purego
// +build !gccgo go1.18

// GENERATED BY C2GOASM
// EDITED BY RYUANERIN
// -- DO NOT EDIT

#include "textflag.h"

DATA LCDATA1<>+0x000(SB)/8, $0x0405060700010203
DATA LCDATA1<>+0x008(SB)/8, $0x0c0d0e0f08090a0b
GLOBL LCDATA1<>(SB), 8, $16

TEXT ·__process_SSSE3(SB), NOSPLIT, $40-32
	MOVQ dst+0(FP), DI
	MOVQ src+8(FP), SI
	MOVQ rk+16(FP), DX
	MOVQ round+24(FP), CX

	ADDQ $8, SP
	LEAQ LCDATA1<>(SB), BP

	WORD $0x8949; BYTE $0xc9       // mov    r9, rcx
	LONG $0x24148948               // mov    qword [rsp], rdx
	WORD $0x068b                   // mov    eax, dword [rsi]
	WORD $0x4e8b; BYTE $0x04       // mov    ecx, dword [rsi + 4]
	WORD $0xc80f                   // bswap    eax
	WORD $0xc90f                   // bswap    ecx
	LONG $0x08468b44               // mov    r8d, dword [rsi + 8]
	WORD $0x0f41; BYTE $0xc8       // bswap    r8d
	WORD $0x568b; BYTE $0x0c       // mov    edx, dword [rsi + 12]
	WORD $0xca0f                   // bswap    edx
	LONG $0x0df98349               // cmp    r9, 13
	LONG $0x247c8948; BYTE $0x10   // mov    qword [rsp + 16], rdi
	JB   LBB0_1
	LONG $0x24348b4c               // mov    r14, qword [rsp]
	WORD $0x3341; BYTE $0x06       // xor    eax, dword [r14]
	LONG $0x044e3341               // xor    ecx, dword [r14 + 4]
	WORD $0x8944; BYTE $0xc3       // mov    ebx, r8d
	LONG $0x085e3341               // xor    ebx, dword [r14 + 8]
	LONG $0x0c563341               // xor    edx, dword [r14 + 12]
	WORD $0xc689                   // mov    esi, eax
	LONG $0x244c894c; BYTE $0x08   // mov    qword [rsp + 8], r9
	WORD $0x8941; BYTE $0xc0       // mov    r8d, eax
	LONG $0x18e8c141               // shr    r8d, 24
	MOVD ·s1(SB), DI               // lea    rdi, [rip + _S1]
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xceb60f44               // movzx    r9d, sil
	MOVD ·s2(SB), SI               // lea    rsi, [rip + _S2]
	LONG $0x8e3c8b46               // mov    r15d, dword [rsi + 4*r9]
	WORD $0x8949; BYTE $0xf2       // mov    r10, rsi
	LONG $0x873c3346               // xor    r15d, dword [rdi + 4*r8]
	WORD $0x8949; BYTE $0xf8       // mov    r8, rdi
	WORD $0xb60f; BYTE $0xf4       // movzx    esi, ah
	MOVD ·x1(SB), DI               // lea    rdi, [rip + _X1]
	LONG $0xb73c3344               // xor    r15d, dword [rdi + 4*rsi]
	WORD $0x8949; BYTE $0xf9       // mov    r9, rdi
	WORD $0xb60f; BYTE $0xc0       // movzx    eax, al
	MOVD ·x2(SB), SI               // lea    rsi, [rip + _X2]
	LONG $0x863c3344               // xor    r15d, dword [rsi + 4*rax]
	WORD $0x8949; BYTE $0xf5       // mov    r13, rsi
	WORD $0xc889                   // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5       // movzx    esi, ch
	LONG $0xe1b60f44               // movzx    r12d, cl
	WORD $0xe9c1; BYTE $0x18       // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10       // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0       // movzx    eax, al
	LONG $0x82048b41               // mov    eax, dword [r10 + 4*rax]
	LONG $0x88043341               // xor    eax, dword [r8 + 4*rcx]
	WORD $0x0433; BYTE $0xb7       // xor    eax, dword [rdi + 4*rsi]
	LONG $0xa5443343; BYTE $0x00   // xor    eax, dword [r13 + 4*r12]
	WORD $0xd989                   // mov    ecx, ebx
	WORD $0xb60f; BYTE $0xf7       // movzx    esi, bh
	LONG $0xe3b60f44               // movzx    r12d, bl
	WORD $0xdf89                   // mov    edi, ebx
	WORD $0xefc1; BYTE $0x18       // shr    edi, 24
	WORD $0xe9c1; BYTE $0x10       // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9       // movzx    ecx, cl
	LONG $0x8a0c8b41               // mov    ecx, dword [r10 + 4*rcx]
	LONG $0xb80c3341               // xor    ecx, dword [r8 + 4*rdi]
	LONG $0xb10c3341               // xor    ecx, dword [r9 + 4*rsi]
	LONG $0xa54c3343; BYTE $0x00   // xor    ecx, dword [r13 + 4*r12]
	WORD $0xd789                   // mov    edi, edx
	WORD $0xb60f; BYTE $0xf6       // movzx    esi, dh
	WORD $0x8941; BYTE $0xd4       // mov    r12d, edx
	LONG $0x18ecc141               // shr    r12d, 24
	WORD $0xefc1; BYTE $0x10       // shr    edi, 16
	LONG $0xffb60f40               // movzx    edi, dil
	LONG $0xba3c8b41               // mov    edi, dword [r10 + 4*rdi]
	LONG $0xa03c3343               // xor    edi, dword [r8 + 4*r12]
	LONG $0xb13c3341               // xor    edi, dword [r9 + 4*rsi]
	WORD $0x894d; BYTE $0xcb       // mov    r11, r9
	WORD $0xb60f; BYTE $0xf2       // movzx    esi, dl
	LONG $0xb57c3341; BYTE $0x00   // xor    edi, dword [r13 + 4*rsi]
	WORD $0xc831                   // xor    eax, ecx
	WORD $0xf931                   // xor    ecx, edi
	WORD $0xc731                   // xor    edi, eax
	WORD $0x8941; BYTE $0xf9       // mov    r9d, edi
	WORD $0x3144; BYTE $0xf8       // xor    eax, r15d
	WORD $0xcb89                   // mov    ebx, ecx
	WORD $0x3144; BYTE $0xf9       // xor    ecx, r15d
	WORD $0xc90f                   // bswap    ecx
	WORD $0xc9c1; BYTE $0x10       // ror    ecx, 16
	WORD $0xc331                   // xor    ebx, eax
	WORD $0xc3c1; BYTE $0x10       // rol    ebx, 16
	WORD $0xd931                   // xor    ecx, ebx
	WORD $0x8941; BYTE $0xcf       // mov    r15d, ecx
	WORD $0x3141; BYTE $0xc7       // xor    r15d, eax
	LONG $0x10568b41               // mov    edx, dword [r14 + 16]
	WORD $0x3144; BYTE $0xfa       // xor    edx, r15d
	WORD $0xd689                   // mov    esi, edx
	WORD $0xb60f; BYTE $0xfe       // movzx    edi, dh
	LONG $0xe2b60f44               // movzx    r12d, dl
	WORD $0x8941; BYTE $0xd2       // mov    r10d, edx
	WORD $0x0f41; BYTE $0xc9       // bswap    r9d
	WORD $0x3144; BYTE $0xcb       // xor    ebx, r9d
	LONG $0x14463341               // xor    eax, dword [r14 + 20]
	WORD $0xd831                   // xor    eax, ebx
	LONG $0x185e3341               // xor    ebx, dword [r14 + 24]
	WORD $0x3144; BYTE $0xfb       // xor    ebx, r15d
	LONG $0x18eac141               // shr    r10d, 24
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	WORD $0x894c; BYTE $0xea       // mov    rdx, r13
	LONG $0xb57c8b45; BYTE $0x00   // mov    r15d, dword [r13 + 4*rsi]
	WORD $0x894d; BYTE $0xdd       // mov    r13, r11
	LONG $0x933c3347               // xor    r15d, dword [r11 + 4*r10]
	WORD $0x894d; BYTE $0xc3       // mov    r11, r8
	LONG $0xb83c3345               // xor    r15d, dword [r8 + 4*rdi]
	MOVD ·s2(SB), R8               // lea    r8, [rip + _S2]
	LONG $0xa03c3347               // xor    r15d, dword [r8 + 4*r12]
	WORD $0xc689                   // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc       // movzx    edi, ah
	LONG $0xd0b60f44               // movzx    r10d, al
	WORD $0xe8c1; BYTE $0x18       // shr    eax, 24
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	LONG $0xb2248b44               // mov    r12d, dword [rdx + 4*rsi]
	LONG $0x85643345; BYTE $0x00   // xor    r12d, dword [r13 + 4*rax]
	LONG $0xbb243345               // xor    r12d, dword [r11 + 4*rdi]
	LONG $0x90243347               // xor    r12d, dword [r8 + 4*r10]
	WORD $0xd889                   // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7       // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb       // movzx    edi, bl
	WORD $0x8941; BYTE $0xda       // mov    r10d, ebx
	LONG $0x18eac141               // shr    r10d, 24
	WORD $0xe8c1; BYTE $0x10       // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0       // movzx    eax, al
	WORD $0x8948; BYTE $0xd3       // mov    rbx, rdx
	WORD $0x048b; BYTE $0x82       // mov    eax, dword [rdx + 4*rax]
	LONG $0x95443343; BYTE $0x00   // xor    eax, dword [r13 + 4*r10]
	WORD $0x8944; BYTE $0xca       // mov    edx, r9d
	LONG $0x1c563341               // xor    edx, dword [r14 + 28]
	LONG $0xb3043341               // xor    eax, dword [r11 + 4*rsi]
	LONG $0xb8043341               // xor    eax, dword [r8 + 4*rdi]
	WORD $0xca31                   // xor    edx, ecx
	WORD $0xd189                   // mov    ecx, edx
	WORD $0xb60f; BYTE $0xf6       // movzx    esi, dh
	WORD $0xd789                   // mov    edi, edx
	WORD $0x8941; BYTE $0xd2       // mov    r10d, edx
	WORD $0xefc1; BYTE $0x18       // shr    edi, 24
	WORD $0xe9c1; BYTE $0x10       // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9       // movzx    ecx, cl
	WORD $0x148b; BYTE $0x8b       // mov    edx, dword [rbx + 4*rcx]
	LONG $0xbd543341; BYTE $0x00   // xor    edx, dword [r13 + 4*rdi]
	LONG $0xb3143341               // xor    edx, dword [r11 + 4*rsi]
	LONG $0xcab60f41               // movzx    ecx, r10b
	LONG $0x88143341               // xor    edx, dword [r8 + 4*rcx]
	WORD $0x3141; BYTE $0xc4       // xor    r12d, eax
	WORD $0xd031                   // xor    eax, edx
	WORD $0x3144; BYTE $0xe2       // xor    edx, r12d
	WORD $0x3145; BYTE $0xfc       // xor    r12d, r15d
	WORD $0xc189                   // mov    ecx, eax
	WORD $0x3144; BYTE $0xe1       // xor    ecx, r12d
	WORD $0xca0f                   // bswap    edx
	WORD $0xcac1; BYTE $0x10       // ror    edx, 16
	WORD $0x3144; BYTE $0xf8       // xor    eax, r15d
	LONG $0x10c4c141               // rol    r12d, 16
	WORD $0xc80f                   // bswap    eax
	WORD $0xc831                   // xor    eax, ecx
	WORD $0xd131                   // xor    ecx, edx
	WORD $0xc231                   // xor    edx, eax
	WORD $0x3144; BYTE $0xe0       // xor    eax, r12d
	WORD $0x8941; BYTE $0xce       // mov    r14d, ecx
	WORD $0x3141; BYTE $0xc6       // xor    r14d, eax
	WORD $0x3144; BYTE $0xe1       // xor    ecx, r12d
	LONG $0x247c8348; WORD $0x0f08 // cmp    qword [rsp + 8], 15
	JB   LBB0_3
	WORD $0x8949; BYTE $0xd9       // mov    r9, rbx
	WORD $0x894c; BYTE $0xeb       // mov    rbx, r13
	WORD $0x894d; BYTE $0xec       // mov    r12, r13
	LONG $0x24048b4c               // mov    r8, qword [rsp]
	LONG $0x20403341               // xor    eax, dword [r8 + 32]
	WORD $0xc689                   // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc       // movzx    edi, ah
	LONG $0xd0b60f44               // movzx    r10d, al
	LONG $0x24483341               // xor    ecx, dword [r8 + 36]
	LONG $0x28703345               // xor    r14d, dword [r8 + 40]
	LONG $0x2c503341               // xor    edx, dword [r8 + 44]
	WORD $0xe8c1; BYTE $0x18       // shr    eax, 24
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	MOVD ·s2(SB), R13              // lea    r13, [rip + _S2]
	LONG $0xb57c8b45; BYTE $0x00   // mov    r15d, dword [r13 + 4*rsi]
	WORD $0x894d; BYTE $0xeb       // mov    r11, r13
	MOVD ·s1(SB), R13              // lea    r13, [rip + _S1]
	LONG $0x857c3345; BYTE $0x00   // xor    r15d, dword [r13 + 4*rax]
	LONG $0xbb3c3344               // xor    r15d, dword [rbx + 4*rdi]
	LONG $0x913c3347               // xor    r15d, dword [r9 + 4*r10]
	WORD $0xc889                   // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5       // movzx    esi, ch
	WORD $0xb60f; BYTE $0xf9       // movzx    edi, cl
	WORD $0x8944; BYTE $0xf3       // mov    ebx, r14d
	WORD $0xe9c1; BYTE $0x18       // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10       // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0       // movzx    eax, al
	WORD $0x894d; BYTE $0xda       // mov    r10, r11
	LONG $0x83048b41               // mov    eax, dword [r11 + 4*rax]
	LONG $0x8d443341; BYTE $0x00   // xor    eax, dword [r13 + 4*rcx]
	LONG $0xb4043341               // xor    eax, dword [r12 + 4*rsi]
	LONG $0xb9043341               // xor    eax, dword [r9 + 4*rdi]
	WORD $0x8944; BYTE $0xf1       // mov    ecx, r14d
	WORD $0xb60f; BYTE $0xf7       // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb       // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18       // shr    ebx, 24
	WORD $0xe9c1; BYTE $0x10       // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9       // movzx    ecx, cl
	LONG $0x8b1c8b45               // mov    r11d, dword [r11 + 4*rcx]
	LONG $0x9d5c3345; BYTE $0x00   // xor    r11d, dword [r13 + 4*rbx]
	LONG $0xb41c3345               // xor    r11d, dword [r12 + 4*rsi]
	LONG $0xb91c3345               // xor    r11d, dword [r9 + 4*rdi]
	WORD $0xd189                   // mov    ecx, edx
	WORD $0xb60f; BYTE $0xfe       // movzx    edi, dh
	WORD $0xd689                   // mov    esi, edx
	WORD $0xeec1; BYTE $0x18       // shr    esi, 24
	WORD $0xe9c1; BYTE $0x10       // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9       // movzx    ecx, cl
	LONG $0x8a0c8b41               // mov    ecx, dword [r10 + 4*rcx]
	LONG $0xb54c3341; BYTE $0x00   // xor    ecx, dword [r13 + 4*rsi]
	LONG $0xbc0c3341               // xor    ecx, dword [r12 + 4*rdi]
	WORD $0x894d; BYTE $0xe6       // mov    r14, r12
	WORD $0xb60f; BYTE $0xd2       // movzx    edx, dl
	LONG $0x910c3341               // xor    ecx, dword [r9 + 4*rdx]
	WORD $0x3144; BYTE $0xd8       // xor    eax, r11d
	WORD $0x3141; BYTE $0xcb       // xor    r11d, ecx
	WORD $0xc131                   // xor    ecx, eax
	WORD $0x3144; BYTE $0xf8       // xor    eax, r15d
	WORD $0x8944; BYTE $0xda       // mov    edx, r11d
	WORD $0x3145; BYTE $0xfb       // xor    r11d, r15d
	WORD $0x0f41; BYTE $0xcb       // bswap    r11d
	LONG $0x10cbc141               // ror    r11d, 16
	WORD $0xc231                   // xor    edx, eax
	WORD $0xc2c1; BYTE $0x10       // rol    edx, 16
	WORD $0x3141; BYTE $0xd3       // xor    r11d, edx
	WORD $0x8945; BYTE $0xdc       // mov    r12d, r11d
	WORD $0x3141; BYTE $0xc4       // xor    r12d, eax
	LONG $0x30588b41               // mov    ebx, dword [r8 + 48]
	WORD $0x3144; BYTE $0xe3       // xor    ebx, r12d
	WORD $0xde89                   // mov    esi, ebx
	WORD $0xb60f; BYTE $0xff       // movzx    edi, bh
	LONG $0xd3b60f44               // movzx    r10d, bl
	WORD $0xc90f                   // bswap    ecx
	WORD $0xca31                   // xor    edx, ecx
	LONG $0x3c483341               // xor    ecx, dword [r8 + 60]
	WORD $0x3144; BYTE $0xd9       // xor    ecx, r11d
	LONG $0x34403341               // xor    eax, dword [r8 + 52]
	WORD $0xd031                   // xor    eax, edx
	WORD $0xebc1; BYTE $0x18       // shr    ebx, 24
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	LONG $0xb13c8b45               // mov    r15d, dword [r9 + 4*rsi]
	LONG $0x9e3c3345               // xor    r15d, dword [r14 + 4*rbx]
	LONG $0xbd7c3345; BYTE $0x00   // xor    r15d, dword [r13 + 4*rdi]
	MOVD ·s2(SB), BX               // lea    rbx, [rip + _S2]
	LONG $0x933c3346               // xor    r15d, dword [rbx + 4*r10]
	WORD $0xc689                   // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc       // movzx    edi, ah
	LONG $0xd0b60f44               // movzx    r10d, al
	WORD $0xe8c1; BYTE $0x18       // shr    eax, 24
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	LONG $0xb11c8b45               // mov    r11d, dword [r9 + 4*rsi]
	LONG $0x861c3345               // xor    r11d, dword [r14 + 4*rax]
	LONG $0x38503341               // xor    edx, dword [r8 + 56]
	LONG $0xbd5c3345; BYTE $0x00   // xor    r11d, dword [r13 + 4*rdi]
	WORD $0x3144; BYTE $0xe2       // xor    edx, r12d
	LONG $0x931c3346               // xor    r11d, dword [rbx + 4*r10]
	WORD $0x8949; BYTE $0xda       // mov    r10, rbx
	WORD $0xd089                   // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6       // movzx    esi, dh
	WORD $0xd789                   // mov    edi, edx
	WORD $0xefc1; BYTE $0x18       // shr    edi, 24
	WORD $0xe8c1; BYTE $0x10       // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0       // movzx    eax, al
	LONG $0x81048b41               // mov    eax, dword [r9 + 4*rax]
	LONG $0xbe043341               // xor    eax, dword [r14 + 4*rdi]
	WORD $0xb60f; BYTE $0xfa       // movzx    edi, dl
	LONG $0x40c08349               // add    r8, 64
	LONG $0x2404894c               // mov    qword [rsp], r8
	LONG $0xb5443341; BYTE $0x00   // xor    eax, dword [r13 + 4*rsi]
	WORD $0x0433; BYTE $0xbb       // xor    eax, dword [rbx + 4*rdi]
	WORD $0xce89                   // mov    esi, ecx
	WORD $0xeec1; BYTE $0x10       // shr    esi, 16
	LONG $0xf6b60f40               // movzx    esi, sil
	LONG $0xb11c8b41               // mov    ebx, dword [r9 + 4*rsi]
	WORD $0xb60f; BYTE $0xfd       // movzx    edi, ch
	WORD $0xb60f; BYTE $0xf1       // movzx    esi, cl
	WORD $0xe9c1; BYTE $0x18       // shr    ecx, 24
	LONG $0x8e1c3341               // xor    ebx, dword [r14 + 4*rcx]
	LONG $0xbd5c3341; BYTE $0x00   // xor    ebx, dword [r13 + 4*rdi]
	LONG $0xb21c3341               // xor    ebx, dword [r10 + 4*rsi]
	WORD $0x3141; BYTE $0xc3       // xor    r11d, eax
	WORD $0xd831                   // xor    eax, ebx
	WORD $0x3144; BYTE $0xdb       // xor    ebx, r11d
	WORD $0x3145; BYTE $0xfb       // xor    r11d, r15d
	WORD $0xc189                   // mov    ecx, eax
	WORD $0x3144; BYTE $0xd9       // xor    ecx, r11d
	WORD $0x3144; BYTE $0xf8       // xor    eax, r15d
	WORD $0xcb0f                   // bswap    ebx
	WORD $0xcbc1; BYTE $0x10       // ror    ebx, 16
	LONG $0x10c3c141               // rol    r11d, 16
	WORD $0xc80f                   // bswap    eax
	WORD $0xc831                   // xor    eax, ecx
	WORD $0xd931                   // xor    ecx, ebx
	WORD $0xc331                   // xor    ebx, eax
	WORD $0x3144; BYTE $0xd8       // xor    eax, r11d
	WORD $0x8941; BYTE $0xce       // mov    r14d, ecx
	WORD $0x3141; BYTE $0xc6       // xor    r14d, eax
	WORD $0x3144; BYTE $0xd9       // xor    ecx, r11d
	JMP  LBB0_5

LBB0_1:
	WORD $0xd389             // mov    ebx, edx
	WORD $0x8945; BYTE $0xc6 // mov    r14d, r8d
	JMP  LBB0_5

LBB0_3:
	WORD $0xd389                 // mov    ebx, edx
	LONG $0x24048348; BYTE $0x20 // add    qword [rsp], 32

LBB0_5:
	LONG $0x241c8b4c                           // mov    r11, qword [rsp]
	WORD $0x3341; BYTE $0x03                   // xor    eax, dword [r11]
	WORD $0xc689                               // mov    esi, eax
	WORD $0xc789                               // mov    edi, eax
	WORD $0xb60f; BYTE $0xd4                   // movzx    edx, ah
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x044b3341                           // xor    ecx, dword [r11 + 4]
	LONG $0x08733345                           // xor    r14d, dword [r11 + 8]
	LONG $0x0c5b3341                           // xor    ebx, dword [r11 + 12]
	WORD $0xeec1; BYTE $0x18                   // shr    esi, 24
	MOVD ·s1(SB), R12                          // lea    r12, [rip + _S1]
	WORD $0xefc1; BYTE $0x10                   // shr    edi, 16
	LONG $0xffb60f40                           // movzx    edi, dil
	MOVD ·s2(SB), R9                           // lea    r9, [rip + _S2]
	LONG $0xb93c8b45                           // mov    r15d, dword [r9 + 4*rdi]
	LONG $0xb43c3345                           // xor    r15d, dword [r12 + 4*rsi]
	MOVD ·x1(SB), R8                           // lea    r8, [rip + _X1]
	LONG $0x903c3345                           // xor    r15d, dword [r8 + 4*rdx]
	MOVD ·x2(SB), SI                           // lea    rsi, [rip + _X2]
	LONG $0x863c3344                           // xor    r15d, dword [rsi + 4*rax]
	WORD $0x8949; BYTE $0xf5                   // mov    r13, rsi
	WORD $0xc889                               // mov    eax, ecx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xd1b60f44                           // movzx    r10d, cl
	WORD $0x8944; BYTE $0xf2                   // mov    edx, r14d
	WORD $0x894d; BYTE $0xce                   // mov    r14, r9
	LONG $0xb10c8b41                           // mov    ecx, dword [r9 + 4*rsi]
	LONG $0x840c3341                           // xor    ecx, dword [r12 + 4*rax]
	LONG $0xb80c3341                           // xor    ecx, dword [r8 + 4*rdi]
	LONG $0x954c3343; BYTE $0x00               // xor    ecx, dword [r13 + 4*r10]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xd689                               // mov    esi, edx
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb1148b45                           // mov    r10d, dword [r9 + 4*rsi]
	LONG $0x84143345                           // xor    r10d, dword [r12 + 4*rax]
	WORD $0xb60f; BYTE $0xc6                   // movzx    eax, dh
	LONG $0x80143345                           // xor    r10d, dword [r8 + 4*rax]
	WORD $0xb60f; BYTE $0xc2                   // movzx    eax, dl
	LONG $0x85543345; BYTE $0x00               // xor    r10d, dword [r13 + 4*rax]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xda89                               // mov    edx, ebx
	WORD $0xeac1; BYTE $0x10                   // shr    edx, 16
	WORD $0xb60f; BYTE $0xd2                   // movzx    edx, dl
	LONG $0x91148b41                           // mov    edx, dword [r9 + 4*rdx]
	LONG $0x84143341                           // xor    edx, dword [r12 + 4*rax]
	WORD $0xb60f; BYTE $0xc7                   // movzx    eax, bh
	LONG $0x80143341                           // xor    edx, dword [r8 + 4*rax]
	WORD $0xb60f; BYTE $0xc3                   // movzx    eax, bl
	LONG $0x85543341; BYTE $0x00               // xor    edx, dword [r13 + 4*rax]
	WORD $0x894d; BYTE $0xe9                   // mov    r9, r13
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0x3141; BYTE $0xd2                   // xor    r10d, edx
	WORD $0xca31                               // xor    edx, ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x8944; BYTE $0xd0                   // mov    eax, r10d
	WORD $0xc831                               // xor    eax, ecx
	WORD $0x3145; BYTE $0xfa                   // xor    r10d, r15d
	WORD $0x0f41; BYTE $0xca                   // bswap    r10d
	LONG $0x10cac141                           // ror    r10d, 16
	WORD $0xc0c1; BYTE $0x10                   // rol    eax, 16
	WORD $0x3141; BYTE $0xc2                   // xor    r10d, eax
	WORD $0x8945; BYTE $0xd7                   // mov    r15d, r10d
	WORD $0x3141; BYTE $0xcf                   // xor    r15d, ecx
	LONG $0x105b8b41                           // mov    ebx, dword [r11 + 16]
	WORD $0x3144; BYTE $0xfb                   // xor    ebx, r15d
	WORD $0xde89                               // mov    esi, ebx
	WORD $0xb60f; BYTE $0xff                   // movzx    edi, bh
	LONG $0xebb60f44                           // movzx    r13d, bl
	WORD $0xca0f                               // bswap    edx
	WORD $0xd031                               // xor    eax, edx
	LONG $0x144b3341                           // xor    ecx, dword [r11 + 20]
	WORD $0xc131                               // xor    ecx, eax
	LONG $0x18433341                           // xor    eax, dword [r11 + 24]
	LONG $0x1c533341                           // xor    edx, dword [r11 + 28]
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x3144; BYTE $0xf8                   // xor    eax, r15d
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb1148b45                           // mov    r10d, dword [r9 + 4*rsi]
	LONG $0x98143345                           // xor    r10d, dword [r8 + 4*rbx]
	LONG $0xbc143345                           // xor    r10d, dword [r12 + 4*rdi]
	LONG $0xae143347                           // xor    r10d, dword [r14 + 4*r13]
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xf9b60f44                           // movzx    r15d, cl
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb11c8b41                           // mov    ebx, dword [r9 + 4*rsi]
	LONG $0x881c3341                           // xor    ebx, dword [r8 + 4*rcx]
	LONG $0xbc1c3341                           // xor    ebx, dword [r12 + 4*rdi]
	LONG $0xbe1c3343                           // xor    ebx, dword [r14 + 4*r15]
	WORD $0xc189                               // mov    ecx, eax
	WORD $0xb60f; BYTE $0xf4                   // movzx    esi, ah
	WORD $0xb60f; BYTE $0xf8                   // movzx    edi, al
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x890c8b41                           // mov    ecx, dword [r9 + 4*rcx]
	LONG $0x800c3341                           // xor    ecx, dword [r8 + 4*rax]
	LONG $0xb40c3341                           // xor    ecx, dword [r12 + 4*rsi]
	LONG $0xbe0c3341                           // xor    ecx, dword [r14 + 4*rdi]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd7                   // mov    r15d, edx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x81148b41                           // mov    edx, dword [r9 + 4*rax]
	LONG $0xb8143343                           // xor    edx, dword [r8 + 4*r15]
	LONG $0xb4143341                           // xor    edx, dword [r12 + 4*rsi]
	LONG $0xbe143341                           // xor    edx, dword [r14 + 4*rdi]
	WORD $0xcb31                               // xor    ebx, ecx
	WORD $0xd131                               // xor    ecx, edx
	WORD $0xda31                               // xor    edx, ebx
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	WORD $0x3141; BYTE $0xdf                   // xor    r15d, ebx
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0xc3c1; BYTE $0x10                   // rol    ebx, 16
	WORD $0xc90f                               // bswap    ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x8941; BYTE $0xcd                   // mov    r13d, ecx
	WORD $0x3141; BYTE $0xdd                   // xor    r13d, ebx
	LONG $0x20438b41                           // mov    eax, dword [r11 + 32]
	WORD $0x3144; BYTE $0xe8                   // xor    eax, r13d
	WORD $0xc689                               // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc                   // movzx    edi, ah
	LONG $0xd0b60f44                           // movzx    r10d, al
	WORD $0xca0f                               // bswap    edx
	WORD $0xcac1; BYTE $0x10                   // ror    edx, 16
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	LONG $0x245b3341                           // xor    ebx, dword [r11 + 36]
	WORD $0x3144; BYTE $0xfb                   // xor    ebx, r15d
	LONG $0x286b3345                           // xor    r13d, dword [r11 + 40]
	LONG $0x2c4b3341                           // xor    ecx, dword [r11 + 44]
	WORD $0x3145; BYTE $0xfd                   // xor    r13d, r15d
	WORD $0xd131                               // xor    ecx, edx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xd6b60f40                           // movzx    edx, sil
	LONG $0x963c8b45                           // mov    r15d, dword [r14 + 4*rdx]
	LONG $0x843c3345                           // xor    r15d, dword [r12 + 4*rax]
	LONG $0xb83c3345                           // xor    r15d, dword [r8 + 4*rdi]
	LONG $0x913c3347                           // xor    r15d, dword [r9 + 4*r10]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0x8941; BYTE $0xda                   // mov    r10d, ebx
	LONG $0x18eac141                           // shr    r10d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x86148b41                           // mov    edx, dword [r14 + 4*rax]
	LONG $0x94143343                           // xor    edx, dword [r12 + 4*r10]
	LONG $0xb0143341                           // xor    edx, dword [r8 + 4*rsi]
	LONG $0xb9143341                           // xor    edx, dword [r9 + 4*rdi]
	WORD $0x8944; BYTE $0xeb                   // mov    ebx, r13d
	WORD $0x8944; BYTE $0xe8                   // mov    eax, r13d
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x86148b45                           // mov    r10d, dword [r14 + 4*rax]
	LONG $0x9c143345                           // xor    r10d, dword [r12 + 4*rbx]
	LONG $0xb0143345                           // xor    r10d, dword [r8 + 4*rsi]
	WORD $0x894d; BYTE $0xcd                   // mov    r13, r9
	LONG $0xb9143345                           // xor    r10d, dword [r9 + 4*rdi]
	WORD $0xc889                               // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	WORD $0xb60f; BYTE $0xf9                   // movzx    edi, cl
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x861c8b41                           // mov    ebx, dword [r14 + 4*rax]
	LONG $0x8c1c3341                           // xor    ebx, dword [r12 + 4*rcx]
	LONG $0xb01c3341                           // xor    ebx, dword [r8 + 4*rsi]
	WORD $0x894d; BYTE $0xc1                   // mov    r9, r8
	LONG $0xbd5c3341; BYTE $0x00               // xor    ebx, dword [r13 + 4*rdi]
	WORD $0x894d; BYTE $0xe8                   // mov    r8, r13
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x3141; BYTE $0xda                   // xor    r10d, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	WORD $0x8944; BYTE $0xd0                   // mov    eax, r10d
	WORD $0xd031                               // xor    eax, edx
	WORD $0x3145; BYTE $0xfa                   // xor    r10d, r15d
	WORD $0x0f41; BYTE $0xca                   // bswap    r10d
	LONG $0x10cac141                           // ror    r10d, 16
	WORD $0xc0c1; BYTE $0x10                   // rol    eax, 16
	WORD $0x3141; BYTE $0xc2                   // xor    r10d, eax
	WORD $0x8945; BYTE $0xd7                   // mov    r15d, r10d
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	LONG $0x304b8b41                           // mov    ecx, dword [r11 + 48]
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xe9b60f44                           // movzx    r13d, cl
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xd831                               // xor    eax, ebx
	LONG $0x34533341                           // xor    edx, dword [r11 + 52]
	WORD $0xc231                               // xor    edx, eax
	LONG $0x38433341                           // xor    eax, dword [r11 + 56]
	LONG $0x3c5b3341                           // xor    ebx, dword [r11 + 60]
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	WORD $0x3144; BYTE $0xf8                   // xor    eax, r15d
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb0148b45                           // mov    r10d, dword [r8 + 4*rsi]
	LONG $0x89143345                           // xor    r10d, dword [r9 + 4*rcx]
	LONG $0xbc143345                           // xor    r10d, dword [r12 + 4*rdi]
	LONG $0xae143347                           // xor    r10d, dword [r14 + 4*r13]
	WORD $0xd189                               // mov    ecx, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd7                   // mov    r15d, edx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x88148b41                           // mov    edx, dword [r8 + 4*rcx]
	LONG $0xb9143343                           // xor    edx, dword [r9 + 4*r15]
	LONG $0xb4143341                           // xor    edx, dword [r12 + 4*rsi]
	LONG $0xbe143341                           // xor    edx, dword [r14 + 4*rdi]
	WORD $0xc189                               // mov    ecx, eax
	WORD $0xb60f; BYTE $0xf4                   // movzx    esi, ah
	WORD $0xb60f; BYTE $0xf8                   // movzx    edi, al
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x880c8b41                           // mov    ecx, dword [r8 + 4*rcx]
	LONG $0x810c3341                           // xor    ecx, dword [r9 + 4*rax]
	LONG $0xb40c3341                           // xor    ecx, dword [r12 + 4*rsi]
	LONG $0xbe0c3341                           // xor    ecx, dword [r14 + 4*rdi]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0x8941; BYTE $0xdf                   // mov    r15d, ebx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x801c8b41                           // mov    ebx, dword [r8 + 4*rax]
	LONG $0xb91c3343                           // xor    ebx, dword [r9 + 4*r15]
	LONG $0xb41c3341                           // xor    ebx, dword [r12 + 4*rsi]
	LONG $0xbe1c3341                           // xor    ebx, dword [r14 + 4*rdi]
	WORD $0xca31                               // xor    edx, ecx
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0xc2c1; BYTE $0x10                   // rol    edx, 16
	WORD $0xc90f                               // bswap    ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x8941; BYTE $0xcd                   // mov    r13d, ecx
	WORD $0x3141; BYTE $0xd5                   // xor    r13d, edx
	LONG $0x40438b41                           // mov    eax, dword [r11 + 64]
	WORD $0x3144; BYTE $0xe8                   // xor    eax, r13d
	WORD $0xc689                               // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc                   // movzx    edi, ah
	LONG $0xd0b60f44                           // movzx    r10d, al
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xcbc1; BYTE $0x10                   // ror    ebx, 16
	WORD $0x3141; BYTE $0xdf                   // xor    r15d, ebx
	LONG $0x44533341                           // xor    edx, dword [r11 + 68]
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	LONG $0x486b3345                           // xor    r13d, dword [r11 + 72]
	LONG $0x4c4b3341                           // xor    ecx, dword [r11 + 76]
	WORD $0x3145; BYTE $0xfd                   // xor    r13d, r15d
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb63c8b45                           // mov    r15d, dword [r14 + 4*rsi]
	WORD $0x894d; BYTE $0xe0                   // mov    r8, r12
	LONG $0x843c3345                           // xor    r15d, dword [r12 + 4*rax]
	WORD $0x894c; BYTE $0xcb                   // mov    rbx, r9
	LONG $0xb93c3345                           // xor    r15d, dword [r9 + 4*rdi]
	MOVD ·x2(SB), R12                          // lea    r12, [rip + _X2]
	LONG $0x943c3347                           // xor    r15d, dword [r12 + 4*r10]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd2                   // mov    r10d, edx
	LONG $0x18eac141                           // shr    r10d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x86148b41                           // mov    edx, dword [r14 + 4*rax]
	LONG $0x90143343                           // xor    edx, dword [r8 + 4*r10]
	WORD $0x894d; BYTE $0xc1                   // mov    r9, r8
	WORD $0x1433; BYTE $0xb3                   // xor    edx, dword [rbx + 4*rsi]
	WORD $0x8949; BYTE $0xd8                   // mov    r8, rbx
	LONG $0xbc143341                           // xor    edx, dword [r12 + 4*rdi]
	WORD $0x8944; BYTE $0xeb                   // mov    ebx, r13d
	WORD $0x8944; BYTE $0xe8                   // mov    eax, r13d
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x86148b45                           // mov    r10d, dword [r14 + 4*rax]
	LONG $0x99143345                           // xor    r10d, dword [r9 + 4*rbx]
	LONG $0xb0143345                           // xor    r10d, dword [r8 + 4*rsi]
	WORD $0x894d; BYTE $0xe5                   // mov    r13, r12
	LONG $0xbc143345                           // xor    r10d, dword [r12 + 4*rdi]
	WORD $0xc889                               // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	WORD $0xb60f; BYTE $0xf9                   // movzx    edi, cl
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x861c8b41                           // mov    ebx, dword [r14 + 4*rax]
	LONG $0x891c3341                           // xor    ebx, dword [r9 + 4*rcx]
	LONG $0xb01c3341                           // xor    ebx, dword [r8 + 4*rsi]
	WORD $0x894d; BYTE $0xc4                   // mov    r12, r8
	LONG $0xbd5c3341; BYTE $0x00               // xor    ebx, dword [r13 + 4*rdi]
	WORD $0x894d; BYTE $0xee                   // mov    r14, r13
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x3141; BYTE $0xda                   // xor    r10d, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	WORD $0x8944; BYTE $0xd0                   // mov    eax, r10d
	WORD $0xd031                               // xor    eax, edx
	WORD $0x3145; BYTE $0xfa                   // xor    r10d, r15d
	WORD $0x0f41; BYTE $0xca                   // bswap    r10d
	LONG $0x10cac141                           // ror    r10d, 16
	WORD $0xc0c1; BYTE $0x10                   // rol    eax, 16
	WORD $0x3141; BYTE $0xc2                   // xor    r10d, eax
	WORD $0x8945; BYTE $0xd7                   // mov    r15d, r10d
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	LONG $0x504b8b41                           // mov    ecx, dword [r11 + 80]
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xe9b60f44                           // movzx    r13d, cl
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xd831                               // xor    eax, ebx
	LONG $0x54533341                           // xor    edx, dword [r11 + 84]
	WORD $0xc231                               // xor    edx, eax
	LONG $0x58433341                           // xor    eax, dword [r11 + 88]
	LONG $0x5c5b3341                           // xor    ebx, dword [r11 + 92]
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	WORD $0x3144; BYTE $0xf8                   // xor    eax, r15d
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb6148b45                           // mov    r10d, dword [r14 + 4*rsi]
	LONG $0x88143345                           // xor    r10d, dword [r8 + 4*rcx]
	WORD $0x894d; BYTE $0xc8                   // mov    r8, r9
	LONG $0xb9143345                           // xor    r10d, dword [r9 + 4*rdi]
	MOVD ·s2(SB), R9                           // lea    r9, [rip + _S2]
	LONG $0xa9143347                           // xor    r10d, dword [r9 + 4*r13]
	WORD $0xd189                               // mov    ecx, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd7                   // mov    r15d, edx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x8e148b41                           // mov    edx, dword [r14 + 4*rcx]
	LONG $0xbc143343                           // xor    edx, dword [r12 + 4*r15]
	LONG $0xb0143341                           // xor    edx, dword [r8 + 4*rsi]
	LONG $0xb9143341                           // xor    edx, dword [r9 + 4*rdi]
	WORD $0xc189                               // mov    ecx, eax
	WORD $0xb60f; BYTE $0xf4                   // movzx    esi, ah
	WORD $0xb60f; BYTE $0xf8                   // movzx    edi, al
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x8e0c8b41                           // mov    ecx, dword [r14 + 4*rcx]
	LONG $0x840c3341                           // xor    ecx, dword [r12 + 4*rax]
	LONG $0xb00c3341                           // xor    ecx, dword [r8 + 4*rsi]
	LONG $0xb90c3341                           // xor    ecx, dword [r9 + 4*rdi]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0x8941; BYTE $0xdf                   // mov    r15d, ebx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x861c8b41                           // mov    ebx, dword [r14 + 4*rax]
	LONG $0xbc1c3343                           // xor    ebx, dword [r12 + 4*r15]
	LONG $0xb01c3341                           // xor    ebx, dword [r8 + 4*rsi]
	LONG $0xb91c3341                           // xor    ebx, dword [r9 + 4*rdi]
	WORD $0xca31                               // xor    edx, ecx
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0xc2c1; BYTE $0x10                   // rol    edx, 16
	WORD $0xc90f                               // bswap    ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x8941; BYTE $0xcd                   // mov    r13d, ecx
	WORD $0x3141; BYTE $0xd5                   // xor    r13d, edx
	LONG $0x60438b41                           // mov    eax, dword [r11 + 96]
	WORD $0x3144; BYTE $0xe8                   // xor    eax, r13d
	WORD $0xc689                               // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc                   // movzx    edi, ah
	LONG $0xd0b60f44                           // movzx    r10d, al
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xcbc1; BYTE $0x10                   // ror    ebx, 16
	WORD $0x3141; BYTE $0xdf                   // xor    r15d, ebx
	LONG $0x64533341                           // xor    edx, dword [r11 + 100]
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	LONG $0x686b3345                           // xor    r13d, dword [r11 + 104]
	LONG $0x6c4b3341                           // xor    ecx, dword [r11 + 108]
	WORD $0x3145; BYTE $0xfd                   // xor    r13d, r15d
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb13c8b45                           // mov    r15d, dword [r9 + 4*rsi]
	WORD $0x894c; BYTE $0xc3                   // mov    rbx, r8
	LONG $0x803c3345                           // xor    r15d, dword [r8 + 4*rax]
	LONG $0xbc3c3345                           // xor    r15d, dword [r12 + 4*rdi]
	WORD $0x894d; BYTE $0xf0                   // mov    r8, r14
	LONG $0x963c3347                           // xor    r15d, dword [r14 + 4*r10]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd2                   // mov    r10d, edx
	LONG $0x18eac141                           // shr    r10d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x81148b41                           // mov    edx, dword [r9 + 4*rax]
	LONG $0x93143342                           // xor    edx, dword [rbx + 4*r10]
	WORD $0x8949; BYTE $0xde                   // mov    r14, rbx
	LONG $0xb4143341                           // xor    edx, dword [r12 + 4*rsi]
	LONG $0xb8143341                           // xor    edx, dword [r8 + 4*rdi]
	WORD $0x8944; BYTE $0xeb                   // mov    ebx, r13d
	WORD $0x8944; BYTE $0xe8                   // mov    eax, r13d
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x81148b45                           // mov    r10d, dword [r9 + 4*rax]
	LONG $0x9e143345                           // xor    r10d, dword [r14 + 4*rbx]
	LONG $0xb4143345                           // xor    r10d, dword [r12 + 4*rsi]
	LONG $0xb8143345                           // xor    r10d, dword [r8 + 4*rdi]
	WORD $0xc889                               // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	WORD $0xb60f; BYTE $0xf9                   // movzx    edi, cl
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x811c8b41                           // mov    ebx, dword [r9 + 4*rax]
	LONG $0x8e1c3341                           // xor    ebx, dword [r14 + 4*rcx]
	LONG $0xb41c3341                           // xor    ebx, dword [r12 + 4*rsi]
	WORD $0x894d; BYTE $0xe1                   // mov    r9, r12
	LONG $0xb81c3341                           // xor    ebx, dword [r8 + 4*rdi]
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x3141; BYTE $0xda                   // xor    r10d, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	WORD $0x8944; BYTE $0xd0                   // mov    eax, r10d
	WORD $0xd031                               // xor    eax, edx
	WORD $0x3145; BYTE $0xfa                   // xor    r10d, r15d
	WORD $0x0f41; BYTE $0xca                   // bswap    r10d
	LONG $0x10cac141                           // ror    r10d, 16
	WORD $0xc0c1; BYTE $0x10                   // rol    eax, 16
	WORD $0x3141; BYTE $0xc2                   // xor    r10d, eax
	WORD $0x8945; BYTE $0xd7                   // mov    r15d, r10d
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	LONG $0x704b8b41                           // mov    ecx, dword [r11 + 112]
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xe9b60f44                           // movzx    r13d, cl
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xd831                               // xor    eax, ebx
	LONG $0x74533341                           // xor    edx, dword [r11 + 116]
	WORD $0xc231                               // xor    edx, eax
	LONG $0x78433341                           // xor    eax, dword [r11 + 120]
	LONG $0x7c5b3341                           // xor    ebx, dword [r11 + 124]
	WORD $0x894d; BYTE $0xde                   // mov    r14, r11
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	WORD $0x3144; BYTE $0xf8                   // xor    eax, r15d
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb0148b45                           // mov    r10d, dword [r8 + 4*rsi]
	LONG $0x8c143345                           // xor    r10d, dword [r12 + 4*rcx]
	MOVD ·s1(SB), R12                          // lea    r12, [rip + _S1]
	LONG $0xbc143345                           // xor    r10d, dword [r12 + 4*rdi]
	MOVD ·s2(SB), R11                          // lea    r11, [rip + _S2]
	LONG $0xab143347                           // xor    r10d, dword [r11 + 4*r13]
	WORD $0xd189                               // mov    ecx, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd7                   // mov    r15d, edx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x88148b41                           // mov    edx, dword [r8 + 4*rcx]
	WORD $0x894d; BYTE $0xc5                   // mov    r13, r8
	LONG $0xb9143343                           // xor    edx, dword [r9 + 4*r15]
	WORD $0x894d; BYTE $0xc8                   // mov    r8, r9
	LONG $0xb4143341                           // xor    edx, dword [r12 + 4*rsi]
	WORD $0x894d; BYTE $0xd9                   // mov    r9, r11
	LONG $0xbb143341                           // xor    edx, dword [r11 + 4*rdi]
	WORD $0xc189                               // mov    ecx, eax
	WORD $0xb60f; BYTE $0xf4                   // movzx    esi, ah
	WORD $0xb60f; BYTE $0xf8                   // movzx    edi, al
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x8d4c8b41; BYTE $0x00               // mov    ecx, dword [r13 + 4*rcx]
	WORD $0x894d; BYTE $0xeb                   // mov    r11, r13
	LONG $0x800c3341                           // xor    ecx, dword [r8 + 4*rax]
	LONG $0xb40c3341                           // xor    ecx, dword [r12 + 4*rsi]
	LONG $0xb90c3341                           // xor    ecx, dword [r9 + 4*rdi]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0x8941; BYTE $0xdf                   // mov    r15d, ebx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x855c8b41; BYTE $0x00               // mov    ebx, dword [r13 + 4*rax]
	LONG $0xb81c3343                           // xor    ebx, dword [r8 + 4*r15]
	LONG $0xb41c3341                           // xor    ebx, dword [r12 + 4*rsi]
	LONG $0xb91c3341                           // xor    ebx, dword [r9 + 4*rdi]
	WORD $0xca31                               // xor    edx, ecx
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0xc2c1; BYTE $0x10                   // rol    edx, 16
	WORD $0xc90f                               // bswap    ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x8941; BYTE $0xcd                   // mov    r13d, ecx
	WORD $0x3141; BYTE $0xd5                   // xor    r13d, edx
	LONG $0x80868b41; WORD $0x0000; BYTE $0x00 // mov    eax, dword [r14 + 128]
	WORD $0x3144; BYTE $0xe8                   // xor    eax, r13d
	WORD $0xc689                               // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc                   // movzx    edi, ah
	LONG $0xd0b60f44                           // movzx    r10d, al
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xcbc1; BYTE $0x10                   // ror    ebx, 16
	WORD $0x3141; BYTE $0xdf                   // xor    r15d, ebx
	LONG $0x84963341; WORD $0x0000; BYTE $0x00 // xor    edx, dword [r14 + 132]
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	LONG $0x88ae3345; WORD $0x0000; BYTE $0x00 // xor    r13d, dword [r14 + 136]
	LONG $0x8c8e3341; WORD $0x0000; BYTE $0x00 // xor    ecx, dword [r14 + 140]
	WORD $0x3145; BYTE $0xfd                   // xor    r13d, r15d
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb13c8b45                           // mov    r15d, dword [r9 + 4*rsi]
	LONG $0x843c3345                           // xor    r15d, dword [r12 + 4*rax]
	LONG $0xb83c3345                           // xor    r15d, dword [r8 + 4*rdi]
	LONG $0x933c3347                           // xor    r15d, dword [r11 + 4*r10]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd2                   // mov    r10d, edx
	LONG $0x18eac141                           // shr    r10d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x81148b41                           // mov    edx, dword [r9 + 4*rax]
	LONG $0x94143343                           // xor    edx, dword [r12 + 4*r10]
	LONG $0xb0143341                           // xor    edx, dword [r8 + 4*rsi]
	LONG $0xbb143341                           // xor    edx, dword [r11 + 4*rdi]
	WORD $0x8944; BYTE $0xeb                   // mov    ebx, r13d
	WORD $0x8944; BYTE $0xe8                   // mov    eax, r13d
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x81148b45                           // mov    r10d, dword [r9 + 4*rax]
	LONG $0x9c143345                           // xor    r10d, dword [r12 + 4*rbx]
	LONG $0xb0143345                           // xor    r10d, dword [r8 + 4*rsi]
	LONG $0xbb143345                           // xor    r10d, dword [r11 + 4*rdi]
	WORD $0xc889                               // mov    eax, ecx
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	WORD $0xb60f; BYTE $0xf9                   // movzx    edi, cl
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x811c8b41                           // mov    ebx, dword [r9 + 4*rax]
	LONG $0x8c1c3341                           // xor    ebx, dword [r12 + 4*rcx]
	WORD $0x894d; BYTE $0xe1                   // mov    r9, r12
	LONG $0xb01c3341                           // xor    ebx, dword [r8 + 4*rsi]
	LONG $0xbb1c3341                           // xor    ebx, dword [r11 + 4*rdi]
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x3141; BYTE $0xda                   // xor    r10d, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	WORD $0x8944; BYTE $0xd0                   // mov    eax, r10d
	WORD $0xd031                               // xor    eax, edx
	WORD $0x3145; BYTE $0xfa                   // xor    r10d, r15d
	WORD $0x0f41; BYTE $0xca                   // bswap    r10d
	LONG $0x10cac141                           // ror    r10d, 16
	WORD $0xc0c1; BYTE $0x10                   // rol    eax, 16
	WORD $0x3141; BYTE $0xc2                   // xor    r10d, eax
	WORD $0x8945; BYTE $0xd7                   // mov    r15d, r10d
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	LONG $0x908e8b41; WORD $0x0000; BYTE $0x00 // mov    ecx, dword [r14 + 144]
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	LONG $0xe9b60f44                           // movzx    r13d, cl
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xd831                               // xor    eax, ebx
	WORD $0x894d; BYTE $0xf4                   // mov    r12, r14
	LONG $0x94963341; WORD $0x0000; BYTE $0x00 // xor    edx, dword [r14 + 148]
	WORD $0xc231                               // xor    edx, eax
	LONG $0x98863341; WORD $0x0000; BYTE $0x00 // xor    eax, dword [r14 + 152]
	LONG $0x9c9e3341; WORD $0x0000; BYTE $0x00 // xor    ebx, dword [r14 + 156]
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	WORD $0x3144; BYTE $0xf8                   // xor    eax, r15d
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	WORD $0x894d; BYTE $0xde                   // mov    r14, r11
	LONG $0xb3148b45                           // mov    r10d, dword [r11 + 4*rsi]
	LONG $0x88143345                           // xor    r10d, dword [r8 + 4*rcx]
	WORD $0x894d; BYTE $0xcb                   // mov    r11, r9
	LONG $0xb9143345                           // xor    r10d, dword [r9 + 4*rdi]
	MOVD ·s2(SB), R9                           // lea    r9, [rip + _S2]
	LONG $0xa9143347                           // xor    r10d, dword [r9 + 4*r13]
	WORD $0xd189                               // mov    ecx, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0x8941; BYTE $0xd7                   // mov    r15d, edx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x8e148b41                           // mov    edx, dword [r14 + 4*rcx]
	LONG $0xb8143343                           // xor    edx, dword [r8 + 4*r15]
	WORD $0x894d; BYTE $0xc7                   // mov    r15, r8
	LONG $0xb3143341                           // xor    edx, dword [r11 + 4*rsi]
	WORD $0x894d; BYTE $0xd8                   // mov    r8, r11
	WORD $0x894d; BYTE $0xcb                   // mov    r11, r9
	LONG $0xb9143341                           // xor    edx, dword [r9 + 4*rdi]
	WORD $0xc189                               // mov    ecx, eax
	WORD $0xb60f; BYTE $0xf4                   // movzx    esi, ah
	WORD $0xb60f; BYTE $0xf8                   // movzx    edi, al
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xe9c1; BYTE $0x10                   // shr    ecx, 16
	WORD $0xb60f; BYTE $0xc9                   // movzx    ecx, cl
	LONG $0x8e0c8b41                           // mov    ecx, dword [r14 + 4*rcx]
	LONG $0x870c3341                           // xor    ecx, dword [r15 + 4*rax]
	WORD $0x894d; BYTE $0xf9                   // mov    r9, r15
	LONG $0xb00c3341                           // xor    ecx, dword [r8 + 4*rsi]
	LONG $0xbb0c3341                           // xor    ecx, dword [r11 + 4*rdi]
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0x8941; BYTE $0xdf                   // mov    r15d, ebx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x861c8b41                           // mov    ebx, dword [r14 + 4*rax]
	LONG $0xb91c3343                           // xor    ebx, dword [r9 + 4*r15]
	LONG $0xb01c3341                           // xor    ebx, dword [r8 + 4*rsi]
	WORD $0x894d; BYTE $0xc1                   // mov    r9, r8
	LONG $0xbb1c3341                           // xor    ebx, dword [r11 + 4*rdi]
	WORD $0xca31                               // xor    edx, ecx
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	WORD $0x3141; BYTE $0xd7                   // xor    r15d, edx
	WORD $0x3144; BYTE $0xd1                   // xor    ecx, r10d
	WORD $0xc2c1; BYTE $0x10                   // rol    edx, 16
	WORD $0xc90f                               // bswap    ecx
	WORD $0x3144; BYTE $0xf9                   // xor    ecx, r15d
	WORD $0x894d; BYTE $0xe0                   // mov    r8, r12
	WORD $0x8941; BYTE $0xce                   // mov    r14d, ecx
	WORD $0x3141; BYTE $0xd6                   // xor    r14d, edx
	QUAD $0x000000a024848b41                   // mov    eax, dword [r12 + 160]
	WORD $0x3144; BYTE $0xf0                   // xor    eax, r14d
	WORD $0xc689                               // mov    esi, eax
	WORD $0xb60f; BYTE $0xfc                   // movzx    edi, ah
	LONG $0xe8b60f44                           // movzx    r13d, al
	WORD $0xcb0f                               // bswap    ebx
	WORD $0xcbc1; BYTE $0x10                   // ror    ebx, 16
	WORD $0x3141; BYTE $0xdf                   // xor    r15d, ebx
	QUAD $0x000000a424943341                   // xor    edx, dword [r12 + 164]
	WORD $0x3144; BYTE $0xfa                   // xor    edx, r15d
	QUAD $0x000000a824b43345                   // xor    r14d, dword [r12 + 168]
	QUAD $0x000000ac248c3341                   // xor    ecx, dword [r12 + 172]
	WORD $0x3145; BYTE $0xfe                   // xor    r14d, r15d
	WORD $0xd931                               // xor    ecx, ebx
	WORD $0xe8c1; BYTE $0x18                   // shr    eax, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xf6b60f40                           // movzx    esi, sil
	LONG $0xb3148b45                           // mov    r10d, dword [r11 + 4*rsi]
	LONG $0x81143345                           // xor    r10d, dword [r9 + 4*rax]
	MOVD ·x1(SB), R12                          // lea    r12, [rip + _X1]
	LONG $0xbc143345                           // xor    r10d, dword [r12 + 4*rdi]
	MOVD ·x2(SB), R15                          // lea    r15, [rip + _X2]
	LONG $0xaf143347                           // xor    r10d, dword [r15 + 4*r13]
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	WORD $0xd389                               // mov    ebx, edx
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x83148b41                           // mov    edx, dword [r11 + 4*rax]
	WORD $0x894d; BYTE $0xdd                   // mov    r13, r11
	LONG $0x99143341                           // xor    edx, dword [r9 + 4*rbx]
	LONG $0xb4143341                           // xor    edx, dword [r12 + 4*rsi]
	LONG $0xbf143341                           // xor    edx, dword [r15 + 4*rdi]
	WORD $0x894d; BYTE $0xfb                   // mov    r11, r15
	WORD $0x8944; BYTE $0xf3                   // mov    ebx, r14d
	WORD $0x8944; BYTE $0xf0                   // mov    eax, r14d
	WORD $0xb60f; BYTE $0xf7                   // movzx    esi, bh
	WORD $0xb60f; BYTE $0xfb                   // movzx    edi, bl
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x85448b41; BYTE $0x00               // mov    eax, dword [r13 + 4*rax]
	LONG $0x99043341                           // xor    eax, dword [r9 + 4*rbx]
	WORD $0x894d; BYTE $0xe6                   // mov    r14, r12
	LONG $0xb4043341                           // xor    eax, dword [r12 + 4*rsi]
	LONG $0xbf043341                           // xor    eax, dword [r15 + 4*rdi]
	WORD $0xce89                               // mov    esi, ecx
	WORD $0xb60f; BYTE $0xfd                   // movzx    edi, ch
	WORD $0xb60f; BYTE $0xd9                   // movzx    ebx, cl
	WORD $0x8941; BYTE $0xcf                   // mov    r15d, ecx
	LONG $0x18efc141                           // shr    r15d, 24
	WORD $0xeec1; BYTE $0x10                   // shr    esi, 16
	LONG $0xceb60f40                           // movzx    ecx, sil
	LONG $0x8d4c8b41; BYTE $0x00               // mov    ecx, dword [r13 + 4*rcx]
	LONG $0xb90c3343                           // xor    ecx, dword [r9 + 4*r15]
	WORD $0x894d; BYTE $0xcc                   // mov    r12, r9
	LONG $0xbe0c3341                           // xor    ecx, dword [r14 + 4*rdi]
	LONG $0x9b0c3341                           // xor    ecx, dword [r11 + 4*rbx]
	WORD $0xc231                               // xor    edx, eax
	WORD $0xc831                               // xor    eax, ecx
	WORD $0xd131                               // xor    ecx, edx
	WORD $0x8941; BYTE $0xc9                   // mov    r9d, ecx
	WORD $0x3144; BYTE $0xd2                   // xor    edx, r10d
	WORD $0xc389                               // mov    ebx, eax
	WORD $0xd331                               // xor    ebx, edx
	WORD $0x3144; BYTE $0xd0                   // xor    eax, r10d
	WORD $0xc80f                               // bswap    eax
	WORD $0xc8c1; BYTE $0x10                   // ror    eax, 16
	WORD $0xc3c1; BYTE $0x10                   // rol    ebx, 16
	WORD $0xd831                               // xor    eax, ebx
	WORD $0x8941; BYTE $0xc2                   // mov    r10d, eax
	WORD $0x3141; BYTE $0xd2                   // xor    r10d, edx
	LONG $0xb0a88b45; WORD $0x0000; BYTE $0x00 // mov    r13d, dword [r8 + 176]
	WORD $0x3145; BYTE $0xd5                   // xor    r13d, r10d
	WORD $0x8944; BYTE $0xef                   // mov    edi, r13d
	WORD $0x8944; BYTE $0xe9                   // mov    ecx, r13d
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	LONG $0xfdb60f45                           // movzx    r15d, r13b
	WORD $0x0f41; BYTE $0xc9                   // bswap    r9d
	WORD $0x3144; BYTE $0xcb                   // xor    ebx, r9d
	LONG $0xb4903341; WORD $0x0000; BYTE $0x00 // xor    edx, dword [r8 + 180]
	WORD $0xda31                               // xor    edx, ebx
	LONG $0xb8983341; WORD $0x0000; BYTE $0x00 // xor    ebx, dword [r8 + 184]
	LONG $0xbc883345; WORD $0x0000; BYTE $0x00 // xor    r9d, dword [r8 + 188]
	WORD $0x3141; BYTE $0xc1                   // xor    r9d, eax
	WORD $0x8944; BYTE $0xc9                   // mov    ecx, r9d
	WORD $0x3144; BYTE $0xd3                   // xor    ebx, r10d
	LONG $0x18edc141                           // shr    r13d, 24
	LONG $0x04b60f43; BYTE $0xae               // movzx    eax, byte [r14 + 4*r13]
	LONG $0x246c8b4c; BYTE $0x10               // mov    r13, qword [rsp + 16]
	LONG $0x00458841                           // mov    byte [r13], al
	WORD $0xefc1; BYTE $0x10                   // shr    edi, 16
	LONG $0xc7b60f40                           // movzx    eax, dil
	LONG $0x44b60f41; WORD $0x0183             // movzx    eax, byte [r11 + 4*rax + 1]
	LONG $0x01458841                           // mov    byte [r13 + 1], al
	WORD $0x894d; BYTE $0xe1                   // mov    r9, r12
	LONG $0x04b60f41; BYTE $0xb4               // movzx    eax, byte [r12 + 4*rsi]
	LONG $0x02458841                           // mov    byte [r13 + 2], al
	WORD $0xd089                               // mov    eax, edx
	WORD $0xb60f; BYTE $0xf6                   // movzx    esi, dh
	WORD $0xb60f; BYTE $0xfa                   // movzx    edi, dl
	MOVD ·s2(SB), R12                          // lea    r12, [rip + _S2]
	LONG $0x14b60f47; BYTE $0xbc               // movzx    r10d, byte [r12 + 4*r15]
	LONG $0x03558845                           // mov    byte [r13 + 3], r10b
	WORD $0xeac1; BYTE $0x18                   // shr    edx, 24
	LONG $0x14b60f41; BYTE $0x96               // movzx    edx, byte [r14 + 4*rdx]
	LONG $0x04558841                           // mov    byte [r13 + 4], dl
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x44b60f41; WORD $0x0183             // movzx    eax, byte [r11 + 4*rax + 1]
	LONG $0x05458841                           // mov    byte [r13 + 5], al
	WORD $0xd889                               // mov    eax, ebx
	WORD $0xb60f; BYTE $0xd7                   // movzx    edx, bh
	LONG $0xd3b60f44                           // movzx    r10d, bl
	LONG $0x34b60f41; BYTE $0xb1               // movzx    esi, byte [r9 + 4*rsi]
	LONG $0x06758841                           // mov    byte [r13 + 6], sil
	LONG $0x34b60f41; BYTE $0xbc               // movzx    esi, byte [r12 + 4*rdi]
	LONG $0x07758841                           // mov    byte [r13 + 7], sil
	WORD $0xebc1; BYTE $0x18                   // shr    ebx, 24
	LONG $0x34b60f41; BYTE $0x9e               // movzx    esi, byte [r14 + 4*rbx]
	LONG $0x08758841                           // mov    byte [r13 + 8], sil
	WORD $0xcf89                               // mov    edi, ecx
	WORD $0xb60f; BYTE $0xf5                   // movzx    esi, ch
	WORD $0xb60f; BYTE $0xd9                   // movzx    ebx, cl
	WORD $0xe8c1; BYTE $0x10                   // shr    eax, 16
	WORD $0xb60f; BYTE $0xc0                   // movzx    eax, al
	LONG $0x44b60f41; WORD $0x0183             // movzx    eax, byte [r11 + 4*rax + 1]
	LONG $0x09458841                           // mov    byte [r13 + 9], al
	LONG $0x04b60f41; BYTE $0x91               // movzx    eax, byte [r9 + 4*rdx]
	LONG $0x0a458841                           // mov    byte [r13 + 10], al
	LONG $0x04b60f43; BYTE $0x94               // movzx    eax, byte [r12 + 4*r10]
	LONG $0x0b458841                           // mov    byte [r13 + 11], al
	WORD $0xe9c1; BYTE $0x18                   // shr    ecx, 24
	LONG $0x04b60f41; BYTE $0x8e               // movzx    eax, byte [r14 + 4*rcx]
	LONG $0x0c458841                           // mov    byte [r13 + 12], al
	WORD $0xefc1; BYTE $0x10                   // shr    edi, 16
	LONG $0xc7b60f40                           // movzx    eax, dil
	LONG $0x44b60f41; WORD $0x0183             // movzx    eax, byte [r11 + 4*rax + 1]
	LONG $0x0d458841                           // mov    byte [r13 + 13], al
	LONG $0x04b60f41; BYTE $0xb1               // movzx    eax, byte [r9 + 4*rsi]
	LONG $0x0e458841                           // mov    byte [r13 + 14], al
	LONG $0x04b60f41; BYTE $0x9c               // movzx    eax, byte [r12 + 4*rbx]
	LONG $0x0f458841                           // mov    byte [r13 + 15], al
	LONG $0x6f0f41f3; WORD $0x0045             // movdqu    xmm0, oword [r13]
	QUAD $0x0000c0886f0f4166; BYTE $0x00       // movdqa    xmm1, oword [r8 + 192]
	LONG $0x00380f66; WORD $0x004d             // pshufb    xmm1, oword 0[rbp]
	LONG $0xc8ef0f66                           // pxor    xmm1, xmm0
	LONG $0x7f0f41f3; WORD $0x004d             // movdqu    oword [r13], xmm1
	SUBQ $8, SP
	RET
