1116680a4aac90f2aa7413d9095a592090648e557Ben MurdochOPTION	DOTNAME
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).text$	SEGMENT ALIGN(256) 'CODE'
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
4116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	asm_AES_encrypt:NEAR
5116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	asm_AES_decrypt:NEAR
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_encrypt8	PROC PRIVATE
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$BS0]
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[rax]
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[16+rax]
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[80+r11]
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm8
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm8
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm8
19116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
20116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,199
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm8
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm8
23116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,207
24116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,215
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm8
27116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,223
28116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,231
29116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,239
30116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,247
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_encrypt8_bitslice::
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[r11]
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[16+r11]
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm5
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm5,1
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm3
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,1
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm6
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm7
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm7
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm5
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm5,1
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm3
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,1
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm1
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,1
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,1
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm2
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm1
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,1
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm15
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,1
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[32+r11]
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm4
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm4,2
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm3
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,2
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm6
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm5
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm4,xmm8
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm8
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm4
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm4,2
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm3
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,2
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm9
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,2
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,2
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm1
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm8
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,2
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm15
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,2
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm2
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,4
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm1
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,4
95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm5
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm7
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm2
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,4
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm1
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,4
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm9
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,4
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,4
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm3
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm7
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm0
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,4
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm15
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,4
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$enc_sbox
121116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_loop::
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rax]
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rax]
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[32+rax]
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[48+rax]
127116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
128116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,199
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[64+rax]
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,XMMWORD PTR[80+rax]
131116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,207
132116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,215
133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[96+rax]
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[112+rax]
135116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,223
136116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,231
137116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,239
138116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,247
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rax]
140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_sbox::
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm5
142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm0
143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm15
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm1
145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm15
146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm2
148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm4
150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm6
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm6
157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,xmm4
159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm1
160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm5
161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm3
163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm1
164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm2
165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm10
166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm3
167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm9
168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm15
169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm10
170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm9,xmm8
172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm10,xmm11
173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm7
174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm11
175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm8
176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm8
177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm14,xmm11
178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm2
179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm15
180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm11
181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm12
182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm6
184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm4
185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm0
186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm5
187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,xmm12
188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm11
189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm8,xmm11
190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm12
191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm14
192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm13
193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm14
194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm1
195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm13
196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm3
197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm13
198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm0
199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm2
200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm6
201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm15
202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm4
203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm14,xmm5
204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm11
205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm13
207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm14
208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm10
214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm8
215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm9
216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm7
218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm11
219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm10
220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm14,xmm13
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm8
223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm9
224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm7
225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm9
227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm10
229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm13
231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm7
232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm12
235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm7
237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm9
239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm9
240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm14
242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm11
244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm5
245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm4
246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm14
247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm13
248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm5
249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm4
250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm4,xmm14
251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm13
252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm4
253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm9
254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm15
255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm2
256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm12
257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm8
258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm12
260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm8
262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm11
263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm15
264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm7
265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm2
266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm14
267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm12
268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm13
269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm2
272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm10
273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm9
274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm11
275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm11
276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm7
277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm7
278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm6
280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm0
281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm3
282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm1
283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm12
285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm8
287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm11
288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm3
289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm7
290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm14
292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm12
293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm13
294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm8
295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm10
298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm12
300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm8
301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm6
304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm0
305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm14
306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm6,xmm13
307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm0
308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm10
309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm11
310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm7
313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm15
314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm5
315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm6
316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm15
317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm1
321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm2
322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm4
323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm2
326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jl	$L$enc_done
328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm7,xmm15,093h
329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm8,xmm0,093h
330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm9,xmm3,093h
332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm10,xmm5,093h
334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm11,xmm2,093h
336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm10
337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm12,xmm6,093h
338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm11
339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm1,093h
340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm12
341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm14,xmm4,093h
342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm13
343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm14
344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm15
346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm4
347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm4
348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm15,xmm15,04Eh
349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm0
350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm0,xmm0,04Eh
351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm2
352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm6
354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm5
356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm7,xmm2,04Eh
357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm1
358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm8,xmm6,04Eh
359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm3
360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm2,xmm5,04Eh
361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm4
362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm6,xmm4,04Eh
363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm4
364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm5,xmm1,04Eh
365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm1,xmm3,04Eh
367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm12
368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm14
370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm13
371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm7
372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm8
374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[48+r11]
375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$enc_loop
376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[64+r11]
377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$enc_loop
378116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_done::
380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[r11]
381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[16+r11]
382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm1
383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,1
384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm2
385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,1
386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm4
387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm7
390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm1
391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,1
392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm2
393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,1
394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm3
397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,1
398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,1
400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm5
401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm7
403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm3
405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,1
406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm15
407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,1
408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[32+r11]
411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm6
412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm6,2
413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm2
414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,2
415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm4
416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm1
417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm6,xmm8
418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm8
419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm6
420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm6,2
421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm2
422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,2
423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm9
424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,2
427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,2
429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm5
430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm3
431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm8
432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm0
434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,2
435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm15
436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,2
437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm5
440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm5,4
441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm3
442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,4
443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm4
444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm7
446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm7
447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm5
448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm5,4
449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm3
450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,4
451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,4
455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,4
457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm2
459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm7
460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm0
462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,4
463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm15
464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,4
465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[rax]
468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm7
469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm7
470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm7
471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm7
472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm7
473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm7
474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_encrypt8	ENDP
478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
480116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_decrypt8	PROC PRIVATE
482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$BS0]
483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[rax]
485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[16+rax]
486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[((-48))+r11]
487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm8
488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm8
490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm8
491116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
492116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,199
493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm8
494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm8
495116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,207
496116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,215
497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm8
499116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,223
500116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,231
501116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,239
502116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,247
503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[r11]
504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[16+r11]
505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm5
506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm5,1
507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm3
508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,1
509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm6
510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm7
512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm7
513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm5
514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm5,1
515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm3
516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,1
517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm1
520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,1
521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,1
523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm2
524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm1
528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,1
529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm15
530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,1
531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[32+r11]
534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm4
535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm4,2
536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm3
537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,2
538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm6
539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm5
540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm4,xmm8
541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm8
542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm4
543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm4,2
544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm3
545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,2
546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm9
547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,2
550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,2
552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm1
554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm8
555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,2
558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm15
559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,2
560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm2
563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,4
564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm1
565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,4
566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm5
568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm7
569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm2
571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,4
572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm1
573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,4
574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm9
575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,4
578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,4
580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm3
582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm7
583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm0
585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,4
586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm15
587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,4
588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$dec_sbox
592116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_loop::
594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rax]
595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rax]
596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[32+rax]
597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[48+rax]
598116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
599116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,199
600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[64+rax]
601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,XMMWORD PTR[80+rax]
602116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,207
603116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,215
604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[96+rax]
605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[112+rax]
606116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,223
607116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,231
608116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,239
609116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,247
610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rax]
611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_sbox::
612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm6
615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm6
616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm3
617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm5
618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm4
622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm15
623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm15
624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm2
626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm6
627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,xmm0
628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm3
629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm4
630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm15
632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm3
633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm5
634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm10
635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm15
636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm9
637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm1
638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm10
639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm9,xmm8
641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm10,xmm11
642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm7
643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm11
644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm8
645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm8
646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm14,xmm11
647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm5
648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm1
649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm11
650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm12
651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm2
653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm0
654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm6
655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm4
656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,xmm12
657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm11
658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm8,xmm11
659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm12
660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm14
661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm13
662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm14
663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm3
664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm13
665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm15
666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm13
667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm6
668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm5
669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm2
670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm1
671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm0
672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	por	xmm14,xmm4
673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm11
674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm13
676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm14
677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm10
683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm8
684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm9
685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm7
687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm11
688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm10
689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm14,xmm13
690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm8
692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm9
693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm7
694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm9
696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm10
698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm13
700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm7
701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm12
703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm12
704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm7
706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm9
708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm9
709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm14
711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm11
713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm4
714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm0
715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm14
716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm13
717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm4
718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm0
719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm14
720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm4,xmm13
721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm0
722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm1
724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm5
725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm12
726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm8
727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm12
729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm8
731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm11
732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm1
733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm7
734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm5
735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm14
736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm12
737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm13
738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm8
739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm5
741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm10
742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm11
744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm11
745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm7
747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm2
749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm6
750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm15
751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm3
752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm12
754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm8
756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm11
757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm15
758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm7
759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm3
760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm7,xmm14
761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm12
762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm13
763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm3
766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm10
767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm12
769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm8
770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm14
771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm13
772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm2
773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm6,xmm14
775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm13
776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm6
777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm10
778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm11
779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm11
780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm7
781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm7
782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm4
784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm0
786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm6
787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm6
788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm15
790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm5
792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm0
793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm15
796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm2
797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jl	$L$dec_done
799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm7,xmm15,04Eh
801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm2,04Eh
802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm15
803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm14,xmm4,04Eh
804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm2
805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm8,xmm0,04Eh
806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm4
807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm9,xmm5,04Eh
808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm0
809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm10,xmm3,04Eh
810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm5
811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm13
812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm13
813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm11,xmm1,04Eh
814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm3
815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm7
816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm8
817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm12,xmm6,04Eh
818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm1
819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm14
820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm6
822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm14
824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm13
825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm13
826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm10
827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm11
828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm14
829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm14
830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm7,xmm15,093h
832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm8,xmm0,093h
833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm9,xmm5,093h
835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm10,xmm3,093h
837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm11,xmm1,093h
839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm10
840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm12,xmm6,093h
841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm11
842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm2,093h
843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm12
844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm14,xmm4,093h
845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm13
846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm14
847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm15
849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm4
850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm4
851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm15,xmm15,04Eh
852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm0
853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm0,xmm0,04Eh
854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm12,xmm1
855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm6
857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm3
859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm7,xmm1,04Eh
860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm2
861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm8,xmm6,04Eh
862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm5
863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm1,xmm3,04Eh
864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm4
865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm6,xmm4,04Eh
866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm11,xmm4
867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm3,xmm2,04Eh
868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm11
869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm2,xmm5,04Eh
870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm12
871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm10,xmm1
872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm14
873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm3
874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm7
875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm9
876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm13
877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm8
878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm2
879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm10
880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[((-16))+r11]
881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$dec_loop
882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[((-32))+r11]
883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$dec_loop
884116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_done::
886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[r11]
887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[16+r11]
888116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm2
889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,1
890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm1
891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,1
892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm4
893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm6
894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm2,xmm7
895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm7
896116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm2
897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,1
898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm1
899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,1
900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm9
901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm5
903116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm5,1
904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,1
906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm3
907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm0
908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm7
909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm5
911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm5,1
912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm15
913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,1
914116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm9
915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[32+r11]
917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm6
918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm6,2
919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm1
920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,2
921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm4
922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm2
923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm6,xmm8
924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm1,xmm8
925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm6
926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm6,2
927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm1
928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,2
929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm9
930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,2
933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,2
935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm3
936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm5
937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm8
938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm8
939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm0
940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,2
941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm15
942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,2
943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm3
946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,4
947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm5
948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm5,4
949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm2
951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm3,xmm7
952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm5,xmm7
953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm3
954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,4
955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm5
956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm5,4
957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm10
959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm0
960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,4
961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm15
962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm15,4
963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm1
965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm7
966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm7
967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm0
968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,4
969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm15
970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm15,4
971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm9
972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm10
973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[rax]
974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm7
975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm7
976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm7
977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm7
978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm7
979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm7
980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_decrypt8	ENDP
984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
985116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_key_convert	PROC PRIVATE
987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$masks]
988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[rcx]
989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[16+rcx]
990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[r11]
991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[16+r11]
992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[32+r11]
993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,XMMWORD PTR[48+r11]
994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[64+r11]
995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqd	xmm5,xmm5
996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm6,XMMWORD PTR[rcx]
998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm7
999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[16+rax]
1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
1001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$key_loop
1002116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$key_loop::
1004116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,244
1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,xmm0
1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,xmm1
1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm8,xmm6
1010116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm9,xmm6
1011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,xmm2
1012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm8,xmm0
1013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm0,4
1014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,xmm3
1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm9,xmm1
1016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm1,4
1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm10,xmm6
1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm11,xmm6
1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,xmm0
1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm10,xmm2
1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm2,4
1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,xmm1
1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm11,xmm3
1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psllq	xmm3,4
1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm2
1028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,xmm3
1029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm8,xmm5
1030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm9,xmm5
1031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm12,xmm6
1033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm6
1034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm8
1035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm12,xmm0
1036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm0,4
1037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rax],xmm9
1038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm13,xmm1
1039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm1,4
1040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[16+rcx]
1041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1042116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm14,xmm6
1043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm15,xmm6
1044116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rax],xmm10
1045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm14,xmm2
1046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm2,4
1047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[48+rax],xmm11
1048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpeqb	xmm15,xmm3
1049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrlq	xmm3,4
1050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm6,XMMWORD PTR[rcx]
1051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm13,xmm5
1053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm5
1054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rax],xmm12
1055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rax],xmm13
1056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rax],xmm14
1057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rax],xmm15
1058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rax]
1059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r10d
1060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$key_loop
1061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[80+r11]
1063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_key_convert	ENDP
1066116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	asm_AES_cbc_encrypt:NEAR
1067116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	bsaes_cbc_encrypt
1068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1069116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1070116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_cbc_encrypt	PROC PUBLIC
1071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11d,DWORD PTR[48+rsp]
1072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r11d,0
1073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jne	asm_AES_cbc_encrypt
1074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r8,128
1075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	asm_AES_cbc_encrypt
1076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_prologue::
1079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1082116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1084116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1085116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-72))+rsp]
1086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[160+rsp]
1087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-160))+rsp]
1088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm6
1089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm7
1090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm8
1091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm9
1092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm10
1093116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm11
1094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm12
1095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[176+rsp],xmm13
1096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[192+rsp],xmm14
1097116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[208+rsp],xmm15
1098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_body::
1099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rsp
1100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+r9]
1101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rcx
1102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
1103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,r8
1104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,r9
1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,r10
1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	r14,4
1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	edx,eax
1109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,7
1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,96
1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,rax
1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r15
1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_key_convert
1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,XMMWORD PTR[rsp]
1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm6
1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm7
1120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[rbx]
1122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,8
1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_loop::
1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm15,XMMWORD PTR[r12]
1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[16+r12]
1126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm1,XMMWORD PTR[32+r12]
1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm2,XMMWORD PTR[48+r12]
1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm3,XMMWORD PTR[64+r12]
1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm4,XMMWORD PTR[80+r12]
1130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm5,XMMWORD PTR[96+r12]
1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm6,XMMWORD PTR[112+r12]
1134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
1148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm11
1150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
1151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm12
1152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[112+r12]
1153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm13
1154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[128+r12]
1156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
1159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
1160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm2
1162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[112+r13],xmm4
1163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[128+r13]
1164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,8
1165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnc	$L$cbc_dec_loop
1166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,8
1168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$cbc_dec_done
1169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm15,XMMWORD PTR[r12]
1171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,2
1174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$cbc_dec_one
1175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[16+r12]
1176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$cbc_dec_two
1177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm1,XMMWORD PTR[32+r12]
1178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,4
1179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$cbc_dec_three
1180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm2,XMMWORD PTR[48+r12]
1181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$cbc_dec_four
1182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm3,XMMWORD PTR[64+r12]
1183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,6
1184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$cbc_dec_five
1185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm4,XMMWORD PTR[80+r12]
1186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$cbc_dec_six
1187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm5,XMMWORD PTR[96+r12]
1188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
1200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm11
1202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[96+r12]
1203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm12
1204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
1208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
1209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm2
1211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1212116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_six::
1214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
1226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[80+r12]
1227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm11
1228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
1232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
1233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1235116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_five::
1237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[64+r12]
1248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm10
1249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
1253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
1254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1255116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_four::
1257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[48+r12]
1266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
1271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1272116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_three::
1274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[32+r12]
1281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
1285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1286116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_two::
1288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm14
1289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
1290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[16+r12]
1293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
1294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_dec_done
1297116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_one::
1299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[r12]
1300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
1301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
1302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_decrypt
1303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,XMMWORD PTR[32+rbp]
1304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm14
1305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,xmm15
1306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_done::
1308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rbx],xmm14
1309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[rsp]
1310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm0
1311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_bzero::
1312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm0
1313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rax],xmm0
1314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[32+rax]
1315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbp,rax
1316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	ja	$L$cbc_dec_bzero
1317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[rbp]
1319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[64+rbp]
1320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[80+rbp]
1321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[96+rbp]
1322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[112+rbp]
1323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[128+rbp]
1324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[144+rbp]
1325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[160+rbp]
1326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[176+rbp]
1327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[192+rbp]
1328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[208+rbp]
1329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[160+rbp]
1330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[72+rsp]
1331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[80+rsp]
1332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[88+rsp]
1333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[96+rsp]
1334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[104+rsp]
1335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[112+rsp]
1336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[120+rsp]
1337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rax
1338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_epilogue::
1339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1340116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_cbc_encrypt	ENDP
1341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1342116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	bsaes_ctr32_encrypt_blocks
1343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1344116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1345116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_ctr32_encrypt_blocks	PROC PUBLIC
1346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_prologue::
1348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-72))+rsp]
1355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[160+rsp]
1356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-160))+rsp]
1357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm6
1358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm7
1359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm8
1360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm9
1361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm10
1362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm11
1363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm12
1364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[176+rsp],xmm13
1365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[192+rsp],xmm14
1366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[208+rsp],xmm15
1367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_body::
1368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rsp
1369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[r10]
1370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+r9]
1371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rcx
1372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
1373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,r8
1374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,r9
1375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm0
1376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r8,8
1377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$ctr_enc_short
1378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ebx,eax
1380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,7
1381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,96
1382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,rax
1383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r15
1386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,ebx
1387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_key_convert
1388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm6
1389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm7
1390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[rsp]
1392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$ADD1]
1393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,XMMWORD PTR[32+rbp]
1394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[((-32))+r11]
1395116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,199
1396116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
1397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm8
1398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$ctr_enc_loop
1399116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_loop::
1401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm15
1402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm15
1403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm15
1404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm0,XMMWORD PTR[r11]
1405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm15
1406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm1,XMMWORD PTR[16+r11]
1407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm15
1408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm2,XMMWORD PTR[32+r11]
1409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm15
1410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm3,XMMWORD PTR[48+r11]
1411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm15
1412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm4,XMMWORD PTR[64+r11]
1413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,xmm15
1414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm5,XMMWORD PTR[80+r11]
1415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm6,XMMWORD PTR[96+r11]
1416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[rsp]
1420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[16+rsp]
1421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,XMMWORD PTR[((-16))+r11]
1422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm8
1423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm8
1425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm8
1426116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,68,15,56,0,255
1427116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,199
1428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm8
1429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm8
1430116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,207
1431116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,215
1432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm8
1433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm8
1434116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,223
1435116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,231
1436116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,239
1437116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,247
1438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$BS0]
1439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,ebx
1440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8_bitslice
1442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,8
1444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jc	$L$ctr_enc_loop_done
1445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
1453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[112+r12]
1454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[128+r12]
1455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm15
1456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,XMMWORD PTR[32+rbp]
1457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm7
1459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm10
1462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm11
1464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm12
1466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm13
1468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm14
1470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm1
1471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$ADD1]
1472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[112+r13],xmm4
1473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[128+r13]
1474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddd	xmm15,XMMWORD PTR[112+r11]
1475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$ctr_enc_loop
1476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$ctr_enc_done
1478116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_loop_done::
1480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,8
1481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
1483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,2
1485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$ctr_enc_done
1486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$ctr_enc_done
1490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm9
1492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,4
1494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$ctr_enc_done
1495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm10
1497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$ctr_enc_done
1499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm11
1501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,6
1503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$ctr_enc_done
1504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm12
1506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$ctr_enc_done
1508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
1509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm13
1510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm1
1511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$ctr_enc_done
1512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1513116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_short::
1515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
1516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[48+rbp]
1517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
1518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_encrypt
1519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[r12]
1520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[16+r12]
1521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[44+rbp]
1522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	bswap	eax
1523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[48+rbp]
1524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	inc	eax
1525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm0
1526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	bswap	eax
1527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[16+r13]
1528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	DWORD PTR[44+rsp],eax
1529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	r14
1530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$ctr_enc_short
1531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_done::
1533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[rsp]
1534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm0
1535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_bzero::
1536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm0
1537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rax],xmm0
1538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[32+rax]
1539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbp,rax
1540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	ja	$L$ctr_enc_bzero
1541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[rbp]
1543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[64+rbp]
1544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[80+rbp]
1545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[96+rbp]
1546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[112+rbp]
1547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[128+rbp]
1548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[144+rbp]
1549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[160+rbp]
1550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[176+rbp]
1551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[192+rbp]
1552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[208+rbp]
1553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[160+rbp]
1554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[72+rsp]
1555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[80+rsp]
1556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[88+rsp]
1557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[96+rsp]
1558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[104+rsp]
1559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[112+rsp]
1560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[120+rsp]
1561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rax
1562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_epilogue::
1563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1564116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_ctr32_encrypt_blocks	ENDP
1565116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	bsaes_xts_encrypt
1566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1567116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1568116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_xts_encrypt	PROC PUBLIC
1569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_prologue::
1571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-72))+rsp]
1578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[160+rsp]
1579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[168+rsp]
1580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-160))+rsp]
1581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm6
1582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm7
1583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm8
1584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm9
1585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm10
1586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm11
1587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm12
1588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[176+rsp],xmm13
1589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[192+rsp],xmm14
1590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[208+rsp],xmm15
1591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_body::
1592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rsp
1593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rcx
1594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
1595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,r8
1596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,r9
1597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[r11]
1599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
1600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r10]
1601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_encrypt
1602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+r15]
1604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,r14
1605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	edx,eax
1607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,7
1608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,96
1609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,rax
1610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r15
1613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_key_convert
1615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm6
1616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm7
1617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r14,-16
1619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,080h
1620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[32+rbp]
1621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
1624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,080h
1627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jc	$L$xts_enc_short
1628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_loop
1629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1630116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_loop::
1632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,xmm6
1635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm6
1636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm6
1643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rsp],xmm6
1644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm6
1652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rsp],xmm6
1653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
1659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm6
1662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[48+rsp],xmm6
1663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm6
1672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rsp],xmm6
1673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
1679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm6
1682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rsp],xmm6
1683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
1689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm6
1692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rsp],xmm6
1693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
1699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
1700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
1701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[112+r12]
1702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[128+r12]
1703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rsp],xmm6
1704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm13
1705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm14
1707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[48+rsp]
1717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[64+rsp]
1719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
1721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[96+rsp]
1723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,XMMWORD PTR[112+rsp]
1725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm1
1726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[112+r13],xmm4
1727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[128+r13]
1728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[112+rsp]
1730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
1732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,080h
1741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnc	$L$xts_enc_loop
1742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_short::
1744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,080h
1745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$xts_enc_done
1746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,xmm6
1749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm6
1750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm6
1757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rsp],xmm6
1758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
1763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,16
1764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_1
1765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm6
1768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rsp],xmm6
1769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
1774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,32
1775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_2
1776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
1777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm6
1780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[48+rsp],xmm6
1781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
1786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,48
1787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_3
1788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm6
1792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rsp],xmm6
1793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
1798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,64
1799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_4
1800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
1801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm6
1804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rsp],xmm6
1805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
1810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,80
1811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_5
1812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
1813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
1814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
1815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm6
1816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rsp],xmm6
1817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
1818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
1819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
1820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
1821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
1822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,96
1823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_enc_6
1824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
1825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
1826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
1827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rsp],xmm6
1828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[112+r12]
1829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm13
1830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[48+rsp]
1841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[64+rsp]
1843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
1845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[96+rsp]
1847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm1
1849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[112+r13]
1850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[112+rsp]
1852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1853116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_6::
1855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
1856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[96+r12]
1857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
1858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[48+rsp]
1869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[64+rsp]
1871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
1873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
1875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[96+r13]
1876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[96+rsp]
1878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1879116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_5::
1881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
1882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[80+r12]
1883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
1884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1888116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[48+rsp]
1895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1896116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[64+rsp]
1897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm2
1899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[80+r13]
1900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[80+rsp]
1902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1903116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_4::
1905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
1906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[64+r12]
1907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
1908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1914116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[48+rsp]
1919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm5
1921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[64+r13]
1922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[64+rsp]
1924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1925116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_3::
1927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[48+r12]
1929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
1930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[32+rsp]
1939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm3
1941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[48+r13]
1942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[48+rsp]
1944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1945116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_2::
1947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
1948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[32+r12]
1949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
1950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
1951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
1952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_encrypt8
1954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
1956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
1957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
1959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[32+r13]
1960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[32+rsp]
1962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_enc_done
1963116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_1::
1965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm15
1966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[16+r12]
1967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm7
1968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
1969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
1970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
1971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_encrypt
1972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
1973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
1979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[16+r13]
1980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[16+rsp]
1982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_done::
1984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	ebx,15
1985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$xts_enc_ret
1986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r13
1987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_steal::
1989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	eax,BYTE PTR[r12]
1990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	ecx,BYTE PTR[((-16))+rdx]
1991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[1+r12]
1992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	BYTE PTR[((-16))+rdx],al
1993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	BYTE PTR[rdx],cl
1994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[1+rdx]
1995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	ebx,1
1996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$xts_enc_steal
1997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm15,XMMWORD PTR[((-16))+r13]
1999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
2000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm6
2001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
2002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm15
2003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
2004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_encrypt
2005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[32+rbp]
2006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[(-16)+r13],xmm6
2007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_ret::
2009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[rsp]
2010116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm0
2011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_bzero::
2012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm0
2013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rax],xmm0
2014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[32+rax]
2015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbp,rax
2016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	ja	$L$xts_enc_bzero
2017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[rbp]
2019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[64+rbp]
2020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[80+rbp]
2021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[96+rbp]
2022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[112+rbp]
2023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[128+rbp]
2024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[144+rbp]
2025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[160+rbp]
2026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[176+rbp]
2027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[192+rbp]
2028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[208+rbp]
2029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[160+rbp]
2030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[72+rsp]
2031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[80+rsp]
2032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[88+rsp]
2033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[96+rsp]
2034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[104+rsp]
2035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[112+rsp]
2036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[120+rsp]
2037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rax
2038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_epilogue::
2039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
2040116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_xts_encrypt	ENDP
2041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2042116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	bsaes_xts_decrypt
2043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2044116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2045116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_xts_decrypt	PROC PUBLIC
2046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
2047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_prologue::
2048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
2049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
2050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
2051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
2052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
2053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
2054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-72))+rsp]
2055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[160+rsp]
2056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[168+rsp]
2057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-160))+rsp]
2058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm6
2059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm7
2060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm8
2061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm9
2062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm10
2063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm11
2064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm12
2065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[176+rsp],xmm13
2066116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[192+rsp],xmm14
2067116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[208+rsp],xmm15
2068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_body::
2069116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rsp
2070116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rcx
2071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
2072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,r8
2073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,r9
2074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[r11]
2076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
2077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r10]
2078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_encrypt
2079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+r15]
2081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,r14
2082116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	edx,eax
2084116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,7
2085116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,96
2086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,rax
2087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
2089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r15
2090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_key_convert
2092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,XMMWORD PTR[rsp]
2093116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm6
2094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm7
2095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	eax,eax
2097116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r14,-16
2098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	test	ebx,15
2099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	setnz	al
2100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,4
2101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,rax
2102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,080h
2104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[32+rbp]
2105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
2108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,080h
2111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jc	$L$xts_dec_short
2112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_loop
2113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2114116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_loop::
2116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,xmm6
2119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm6
2120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm6
2127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rsp],xmm6
2128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
2133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm6
2136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rsp],xmm6
2137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
2142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
2143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm6
2146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[48+rsp],xmm6
2147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
2152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
2153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm6
2156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rsp],xmm6
2157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
2162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
2163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm6
2166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rsp],xmm6
2167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
2172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
2173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm6
2176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rsp],xmm6
2177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
2182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
2183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
2184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
2185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm14,XMMWORD PTR[112+r12]
2186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[128+r12]
2187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rsp],xmm6
2188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm13
2189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm14
2191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[48+rsp]
2201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[64+rsp]
2203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
2204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
2205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
2206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[96+rsp]
2207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
2208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,XMMWORD PTR[112+rsp]
2209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm2
2210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[112+r13],xmm4
2211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[128+r13]
2212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[112+rsp]
2214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
2216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r14,080h
2225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnc	$L$xts_dec_loop
2226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_short::
2228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,080h
2229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$xts_dec_done
2230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,xmm6
2233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rsp],xmm6
2234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm6
2241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rsp],xmm6
2242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm7,XMMWORD PTR[r12]
2247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,16
2248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_1
2249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm6
2252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rsp],xmm6
2253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm8,XMMWORD PTR[16+r12]
2258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,32
2259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_2
2260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
2261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm6
2264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[48+rsp],xmm6
2265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm9,XMMWORD PTR[32+r12]
2270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,48
2271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_3
2272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
2273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm6
2276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rsp],xmm6
2277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm10,XMMWORD PTR[48+r12]
2282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,64
2283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_4
2284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
2285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm6
2288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rsp],xmm6
2289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm11,XMMWORD PTR[64+r12]
2294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,80
2295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_5
2296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
2297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm6
2300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rsp],xmm6
2301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm12,XMMWORD PTR[80+r12]
2306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r14,96
2307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$xts_dec_6
2308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
2309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm13,XMMWORD PTR[96+r12]
2310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
2311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rsp],xmm6
2312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[112+r12]
2313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm13
2314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[48+rsp]
2325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[64+rsp]
2327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
2328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
2329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
2330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,XMMWORD PTR[96+rsp]
2331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
2332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[96+r13],xmm2
2333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[112+r13]
2334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[112+rsp]
2336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2337116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_6::
2339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
2340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[96+r12]
2341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm12
2342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[48+rsp]
2353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[64+rsp]
2355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
2356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[80+rsp]
2357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
2358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[80+r13],xmm6
2359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[96+r13]
2360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[96+rsp]
2362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2363116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_5::
2365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
2366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[80+r12]
2367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm11
2368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[48+rsp]
2379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,XMMWORD PTR[64+rsp]
2381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
2382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[64+r13],xmm1
2383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[80+r13]
2384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[80+rsp]
2386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2387116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_4::
2389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
2390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[64+r12]
2391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm10
2392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,XMMWORD PTR[48+rsp]
2403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[48+r13],xmm3
2405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[64+r13]
2406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[64+rsp]
2408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2409116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_3::
2411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
2412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[48+r12]
2413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm9
2414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rsp]
2423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[32+r13],xmm5
2425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[48+r13]
2426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[48+rsp]
2428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2429116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_2::
2431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm7
2432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[32+r12]
2433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm8
2434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[128+rsp]
2435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,edx
2436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_bsaes_decrypt8
2438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[rsp]
2440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[16+rsp]
2441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[16+r13],xmm0
2443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[32+r13]
2444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[32+rsp]
2446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$xts_dec_done
2447116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_1::
2449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm15
2450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[16+r12]
2451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm7
2452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
2453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
2454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
2455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_decrypt
2456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,XMMWORD PTR[32+rbp]
2457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm15
2463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r13,QWORD PTR[16+r13]
2464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,XMMWORD PTR[16+rsp]
2466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_done::
2468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	ebx,15
2469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$xts_dec_ret
2470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm14,xmm14
2472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[$L$xts_magic]
2473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pcmpgtd	xmm14,xmm6
2474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm13,xmm14,013h
2475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm6
2476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	paddq	xmm6,xmm6
2477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm13,xmm12
2478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm15,XMMWORD PTR[r12]
2479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm13
2480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
2482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm6
2483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
2484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm15
2485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
2486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_decrypt
2487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,XMMWORD PTR[32+rbp]
2488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r13
2489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm6
2490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_steal::
2492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	eax,BYTE PTR[16+r12]
2493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	ecx,BYTE PTR[rdx]
2494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[1+r12]
2495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	BYTE PTR[rdx],al
2496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	BYTE PTR[16+rdx],cl
2497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[1+rdx]
2498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	ebx,1
2499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$xts_dec_steal
2500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm15,XMMWORD PTR[r13]
2502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[32+rbp]
2503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm15,xmm5
2504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[32+rbp]
2505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[32+rbp],xmm15
2506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r8,QWORD PTR[r15]
2507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	asm_AES_decrypt
2508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,XMMWORD PTR[32+rbp]
2509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r13],xmm5
2510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_ret::
2512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[rsp]
2513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm0
2514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_bzero::
2515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[rax],xmm0
2516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[16+rax],xmm0
2517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[32+rax]
2518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbp,rax
2519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	ja	$L$xts_dec_bzero
2520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[rbp]
2522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[64+rbp]
2523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[80+rbp]
2524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[96+rbp]
2525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[112+rbp]
2526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[128+rbp]
2527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[144+rbp]
2528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[160+rbp]
2529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[176+rbp]
2530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[192+rbp]
2531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[208+rbp]
2532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[160+rbp]
2533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[72+rsp]
2534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[80+rsp]
2535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[88+rsp]
2536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[96+rsp]
2537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[104+rsp]
2538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[112+rsp]
2539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[120+rsp]
2540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rax
2541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_epilogue::
2542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
2543116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbsaes_xts_decrypt	ENDP
2544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2545116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
2546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_bsaes_const::
2547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$M0ISR::
2548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00a0e0206070b0f03h,00004080c0d010509h
2549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ISRM0::
2550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	001040b0e0205080fh,00306090c00070a0dh
2551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ISR::
2552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00504070602010003h,00f0e0d0c080b0a09h
2553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$BS0::
2554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	05555555555555555h,05555555555555555h
2555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$BS1::
2556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	03333333333333333h,03333333333333333h
2557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$BS2::
2558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00f0f0f0f0f0f0f0fh,00f0f0f0f0f0f0f0fh
2559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SR::
2560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00504070600030201h,00f0e0d0c0a09080bh
2561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SRM0::
2562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00304090e00050a0fh,001060b0c0207080dh
2563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$M0SR::
2564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00a0e02060f03070bh,00004080c05090d01h
2565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SWPUP::
2566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00706050403020100h,00c0d0e0f0b0a0908h
2567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SWPUPM0SR::
2568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00a0d02060c03070bh,00004080f05090e01h
2569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD1::
2570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000100000000h
2571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD2::
2572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000200000000h
2573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD3::
2574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000300000000h
2575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD4::
2576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000400000000h
2577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD5::
2578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000500000000h
2579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD6::
2580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000600000000h
2581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD7::
2582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000700000000h
2583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ADD8::
2584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00000000000000000h,00000000800000000h
2585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_magic::
2586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	087h,0,1,0
2587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$masks::
2588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00101010101010101h,00101010101010101h
2589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00202020202020202h,00202020202020202h
2590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00404040404040404h,00404040404040404h
2591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00808080808080808h,00808080808080808h
2592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$M0::
2593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	002060a0e03070b0fh,00004080c0105090dh
2594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$63::
2595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	06363636363636363h,06363636363636363h
2596116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102
2597116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44
2598116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44
2599116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32
2600116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	65,110,100,121,32,80,111,108,121,97,107,111,118,0
2601116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
2602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2603116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	__imp_RtlVirtualUnwind:NEAR
2604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2605116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
2606116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler	PROC PRIVATE
2607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rsi
2608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rdi
2609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
2610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
2611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
2612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
2613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
2614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
2615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pushfq
2616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,64
2617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[120+r8]
2619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[248+r8]
2620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[8+r9]
2622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[56+r9]
2623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,DWORD PTR[r11]
2625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[r10*1+rsi]
2626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
2627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$in_prologue
2628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[152+r8]
2630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,DWORD PTR[4+r11]
2632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[r10*1+rsi]
2633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
2634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jae	$L$in_prologue
2635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[160+r8]
2637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[64+rax]
2639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[512+r8]
2640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,20
2641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	0a548f3fch
2642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[160+rax]
2643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[112+rax]
2645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[104+rax]
2646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[96+rax]
2647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[88+rax]
2648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[80+rax]
2649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[72+rax]
2650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[120+rax]
2651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[144+r8],rbx
2652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[160+r8],rbp
2653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[216+r8],r12
2654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[224+r8],r13
2655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[232+r8],r14
2656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[240+r8],r15
2657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$in_prologue::
2659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[152+r8],rax
2660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[40+r9]
2662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r8
2663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,154
2664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	0a548f3fch
2665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r9
2667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rcx,rcx
2668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[8+rsi]
2669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rsi]
2670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[16+rsi]
2671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[40+rsi]
2672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[56+rsi]
2673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[24+rsi]
2674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsp],r10
2675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsp],r11
2676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsp],r12
2677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rsp],rcx
2678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	QWORD PTR[__imp_RtlVirtualUnwind]
2679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,1
2681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsp,64
2682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	popfq
2683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r15
2684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r14
2685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r13
2686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r12
2687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbp
2688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbx
2689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rdi
2690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rsi
2691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
2692116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler	ENDP
2693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text$	ENDS
2695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	SEGMENT READONLY ALIGN(4)
2696116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	4
2697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$cbc_dec_prologue
2698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$cbc_dec_epilogue
2699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$cbc_dec_info
2700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$ctr_enc_prologue
2702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$ctr_enc_epilogue
2703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$ctr_enc_info
2704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_enc_prologue
2706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_enc_epilogue
2707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_enc_info
2708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_dec_prologue
2710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_dec_epilogue
2711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_dec_info
2712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	ENDS
2714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	SEGMENT READONLY ALIGN(8)
2715116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	8
2716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_info::
2717116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
2718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
2719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$cbc_dec_body,imagerel $L$cbc_dec_epilogue
2720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$ctr_enc_info::
2721116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
2722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
2723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$ctr_enc_body,imagerel $L$ctr_enc_epilogue
2724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_enc_info::
2725116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
2726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
2727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue
2728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$xts_dec_info::
2729116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
2730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
2731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue
2732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	ENDS
2734116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEND
2735