1116680a4aac90f2aa7413d9095a592090648e557Ben MurdochOPTION	DOTNAME
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).text$	SEGMENT ALIGN(256) 'CODE'
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
20116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_encrypt_core	PROC PRIVATE
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,16
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+rdx]
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[$L$k_ipt]
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm5,XMMWORD PTR[r9]
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
31116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,208
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[(($L$k_ipt+16))]
33116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm5
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,16
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$k_mc_backward]
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$enc_entry
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_loop::
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm13
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm12
45116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
46116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,195
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm5
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm15
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[((-64))+r10*1+r11]
51116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,234
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[r10*1+r11]
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm14
54116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,211
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm0
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm5
57116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,16
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
60116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,220
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,16
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm0
63116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r11,030h
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,1
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm3
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_entry::
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm11
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
75116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,232
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
78116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm10
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm5
81116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,224
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm10
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm5
84116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,211
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
87116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,220
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm5,XMMWORD PTR[r9]
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$enc_loop
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[((-96))+r10]
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[((-80))+r10]
95116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm5
97116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,195
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[64+r10*1+r11]
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
100116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_encrypt_core	ENDP
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
110116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_decrypt_core	PROC PRIVATE
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[240+rdx]
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[$L$k_dipt]
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rax
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm5,XMMWORD PTR[r9]
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	r11,4
121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
122116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,208
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[(($L$k_dipt+16))]
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	r11,030h
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$k_dsbd]
126116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r11,030h
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm5
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,XMMWORD PTR[(($L$k_mc_forward+48))]
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,16
132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,r10
133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$dec_entry
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
135116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_loop::
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[((-32))+r10]
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[((-16))+r10]
142116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
143116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,203
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[r10]
146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[16+r10]
148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
149116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
150116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,197
151116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,203
152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[32+r10]
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[48+r10]
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
157116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
158116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,197
159116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,203
160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[64+r10]
162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[80+r10]
164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
165116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
166116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,197
167116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,203
168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,16
170116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,58,15,237,12
171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,1
173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_entry::
175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm11
179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
181116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,208
182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
184116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm10
186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
187116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,224
188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm2
189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm10
190116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,211
191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
193116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,220
194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[r9]
195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$dec_loop
197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,XMMWORD PTR[96+r10]
200116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm0
202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[112+r10]
203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[((-352))+r11]
204116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,195
205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
206116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,194
207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_decrypt_core	ENDP
209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
216116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_core	PROC PRIVATE
218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_preheat
224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm8,XMMWORD PTR[$L$k_rcon]
225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdi]
226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm0
229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$k_ipt]
230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_transform
231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm0
232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$k_sr]
234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	test	rcx,rcx
235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$schedule_am_decrypting
236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdx],xmm0
239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$schedule_go
240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_am_decrypting::
242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
244116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdx],xmm3
246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	r8,030h
247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_go::
249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	esi,192
250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	ja	$L$schedule_256
251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$schedule_192
252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_128::
263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	esi,10
264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_128::
266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_round
267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	rsi
268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$schedule_mangle_last
269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$oop_schedule_128
271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
287116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_192::
289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[8+rdi]
290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_transform
291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,xmm0
292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm4
293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movhlps	xmm6,xmm4
294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	esi,4
295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_192::
297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_round
298116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,58,15,198,8
299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_192_smear
301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_round
303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	rsi
304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$schedule_mangle_last
305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_192_smear
307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$oop_schedule_192
308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
319116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_256::
321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[16+rdi]
322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_transform
323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	esi,7
324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_256::
326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,xmm0
328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_round
331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	rsi
332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jz	$L$schedule_mangle_last
333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_mangle
334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm0,xmm0,0FFh
337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,xmm7
338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm6
339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_low_round
340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm5
341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$oop_schedule_256
343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
355116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_last::
357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$k_deskew]
359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	test	rcx,rcx
360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$schedule_mangle_last_dec
361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
364116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$k_opt]
366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdx,32
367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_last_dec::
369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdx,-16
370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,XMMWORD PTR[$L$k_s63]
371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_transform
372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdx],xmm0
373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm0
376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm1
377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm2
378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm3
379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm4
380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm5,xmm5
381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm6
382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm7
383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_core	ENDP
385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
401116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_192_smear	PROC PRIVATE
403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm1,xmm6,080h
404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm0,xmm7,0FEh
405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm1
406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm1
407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm6,xmm0
408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm6
409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movhlps	xmm6,xmm1
410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_192_smear	ENDP
412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
432116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_round	PROC PRIVATE
434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm1,xmm1
436116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,65,15,58,15,200,15
437116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,69,15,58,15,192,15
438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm1
439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pshufd	xmm0,xmm0,0FFh
442116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,58,15,192,1
443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_low_round::
448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm7
450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pslldq	xmm7,4
451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm1
452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm7
453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pslldq	xmm7,8
454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,xmm1
455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm7,XMMWORD PTR[$L$k_s63]
456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm11
463116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,208
464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm1
465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
466116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm10
469116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,224
470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm2
471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,xmm10
472116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,211
473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm0
474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm10
475116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,220
476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm1
477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm13
478116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,226
479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,xmm12
480116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,195
481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm4
482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm7
485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm0
486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_round	ENDP
488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
499116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_transform	PROC PRIVATE
501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm0
503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm0,xmm9
505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[r11]
506116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,208
507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm0,XMMWORD PTR[16+r11]
508116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,193
509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm2
510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_transform	ENDP
512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
537116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_mangle	PROC PRIVATE
539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm4,xmm0
540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm5,XMMWORD PTR[$L$k_mc_forward]
541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	test	rcx,rcx
542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	$L$schedule_mangle_dec
543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdx,16
546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,XMMWORD PTR[$L$k_s63]
547116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,229
548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,xmm4
549116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,229
550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
551116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,229
552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm4
553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$schedule_mangle_both
555116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_dec::
557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[$L$k_dksd]
559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,xmm9
560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pandn	xmm1,xmm4
561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	psrld	xmm1,4
562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pand	xmm4,xmm9
563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[r11]
565116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,212
566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,XMMWORD PTR[16+r11]
567116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
569116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,221
570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[32+r11]
572116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,212
573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,XMMWORD PTR[48+r11]
575116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
577116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,221
578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[64+r11]
580116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,212
581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,XMMWORD PTR[80+r11]
583116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
585116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,221
586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm2,XMMWORD PTR[96+r11]
588116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,212
589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm2,xmm3
590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm3,XMMWORD PTR[112+r11]
591116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm3,xmm2
593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdx,-16
595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_both::
597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm1,XMMWORD PTR[r10*1+r8]
598116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	102,15,56,0,217
599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,-16
600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r8,030h
601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdx],xmm3
602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_mangle	ENDP
604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
608116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	vpaes_set_encrypt_key
609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
610116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
611116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_encrypt_key	PROC PUBLIC
612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_set_encrypt_key::
616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-184))+rsp]
622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[16+rsp],xmm6
623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[32+rsp],xmm7
624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[48+rsp],xmm8
625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm9
626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm10
627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm11
628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm12
629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm13
630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm14
631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm15
632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_key_body::
633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,esi
634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	eax,5
635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	eax,5
636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	DWORD PTR[240+rdx],eax
637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,0
639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8d,030h
640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_core
641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[16+rsp]
642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[32+rsp]
643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[48+rsp]
644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[64+rsp]
645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[80+rsp]
646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[96+rsp]
647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[112+rsp]
648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[128+rsp]
649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[144+rsp]
650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[160+rsp]
651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[184+rsp]
652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_key_epilogue::
653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	eax,eax
654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_set_encrypt_key::
658116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_encrypt_key	ENDP
659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
660116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	vpaes_set_decrypt_key
661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
662116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
663116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_decrypt_key	PROC PUBLIC
664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_set_decrypt_key::
668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-184))+rsp]
674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[16+rsp],xmm6
675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[32+rsp],xmm7
676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[48+rsp],xmm8
677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm9
678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm10
679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm11
680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm12
681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm13
682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm14
683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm15
684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_key_body::
685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,esi
686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	eax,5
687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	eax,5
688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	DWORD PTR[240+rdx],eax
689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	eax,4
690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[16+rax*1+rdx]
691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,1
693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8d,esi
694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	r8d,1
695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	r8d,32
696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	r8d,32
697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_schedule_core
698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[16+rsp]
699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[32+rsp]
700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[48+rsp]
701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[64+rsp]
702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[80+rsp]
703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[96+rsp]
704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[112+rsp]
705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[128+rsp]
706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[144+rsp]
707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[160+rsp]
708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[184+rsp]
709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_key_epilogue::
710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	eax,eax
711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_set_decrypt_key::
715116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_decrypt_key	ENDP
716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
717116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	vpaes_encrypt
718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
719116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
720116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_encrypt	PROC PUBLIC
721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_encrypt::
725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-184))+rsp]
731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[16+rsp],xmm6
732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[32+rsp],xmm7
733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[48+rsp],xmm8
734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm9
735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm10
736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm11
737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm12
738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm13
739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm14
740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm15
741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_body::
742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdi]
743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_preheat
744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_encrypt_core
745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rsi],xmm0
746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[16+rsp]
747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[32+rsp]
748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[48+rsp]
749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[64+rsp]
750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[80+rsp]
751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[96+rsp]
752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[112+rsp]
753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[128+rsp]
754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[144+rsp]
755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[160+rsp]
756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[184+rsp]
757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_epilogue::
758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_encrypt::
762116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_encrypt	ENDP
763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
764116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	vpaes_decrypt
765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
766116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
767116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_decrypt	PROC PUBLIC
768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_decrypt::
772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-184))+rsp]
778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[16+rsp],xmm6
779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[32+rsp],xmm7
780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[48+rsp],xmm8
781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm9
782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm10
783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm11
784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm12
785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm13
786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm14
787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm15
788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_body::
789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdi]
790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_preheat
791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_decrypt_core
792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rsi],xmm0
793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[16+rsp]
794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[32+rsp]
795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[48+rsp]
796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[64+rsp]
797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[80+rsp]
798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[96+rsp]
799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[112+rsp]
800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[128+rsp]
801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[144+rsp]
802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[160+rsp]
803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[184+rsp]
804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_epilogue::
805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_decrypt::
809116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_decrypt	ENDP
810116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	vpaes_cbc_encrypt
811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
812116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
813116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_cbc_encrypt	PROC PUBLIC
814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_cbc_encrypt::
818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r9
822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[40+rsp]
823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[48+rsp]
824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xchg	rdx,rcx
827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rcx,16
828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jc	$L$cbc_abort
829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[((-184))+rsp]
830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[16+rsp],xmm6
831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[32+rsp],xmm7
832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[48+rsp],xmm8
833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[64+rsp],xmm9
834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[80+rsp],xmm10
835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[96+rsp],xmm11
836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[112+rsp],xmm12
837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[128+rsp],xmm13
838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[144+rsp],xmm14
839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	XMMWORD PTR[160+rsp],xmm15
840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_body::
841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm6,XMMWORD PTR[r8]
842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsi,rdi
843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_preheat
844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	r9d,0
845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	je	$L$cbc_dec_loop
846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_enc_loop
847116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_enc_loop::
849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdi]
850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_encrypt_core
852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,xmm0
853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdi*1+rsi],xmm0
854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[16+rdi]
855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rcx,16
856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnc	$L$cbc_enc_loop
857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	$L$cbc_done
858116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_loop::
860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdi]
861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm7,xmm0
862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	_vpaes_decrypt_core
863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm0,xmm6
864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm6,xmm7
865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[rdi*1+rsi],xmm0
866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[16+rdi]
867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rcx,16
868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnc	$L$cbc_dec_loop
869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_done::
870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	XMMWORD PTR[r8],xmm6
871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm6,XMMWORD PTR[16+rsp]
872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm7,XMMWORD PTR[32+rsp]
873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm8,XMMWORD PTR[48+rsp]
874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm9,XMMWORD PTR[64+rsp]
875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm10,XMMWORD PTR[80+rsp]
876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm11,XMMWORD PTR[96+rsp]
877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm12,XMMWORD PTR[112+rsp]
878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm13,XMMWORD PTR[128+rsp]
879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm14,XMMWORD PTR[144+rsp]
880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movaps	xmm15,XMMWORD PTR[160+rsp]
881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[184+rsp]
882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_epilogue::
883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_abort::
884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_cbc_encrypt::
888116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_cbc_encrypt	ENDP
889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
896116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_preheat	PROC PRIVATE
898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$k_s0F]
899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm10,XMMWORD PTR[((-32))+r10]
900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm11,XMMWORD PTR[((-16))+r10]
901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm9,XMMWORD PTR[r10]
902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm13,XMMWORD PTR[48+r10]
903116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm12,XMMWORD PTR[64+r10]
904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm15,XMMWORD PTR[80+r10]
905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	xmm14,XMMWORD PTR[96+r10]
906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_preheat	ENDP
908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
914116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_consts::
916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_inv::
917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00E05060F0D080180h,0040703090A0B0C02h
918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	001040A060F0B0780h,0030D0E0C02050809h
919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_s0F::
921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00F0F0F0F0F0F0F0Fh,00F0F0F0F0F0F0F0Fh
922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_ipt::
924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0C2B2E8985A2A7000h,0CABAE09052227808h
925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	04C01307D317C4D00h,0CD80B1FCB0FDCC81h
926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sb1::
928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0B19BE18FCB503E00h,0A5DF7A6E142AF544h
929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	03618D415FAE22300h,03BF7CCC10D2ED9EFh
930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sb2::
931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0E27A93C60B712400h,05EB7E955BC982FCDh
932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	069EB88400AE12900h,0C2A163C8AB82234Ah
933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sbo::
934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0D0D26D176FBDC700h,015AABF7AC502A878h
935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0CFE474A55FBB6A00h,08E1E90D1412B35FAh
936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_mc_forward::
938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00407060500030201h,00C0F0E0D080B0A09h
939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0080B0A0904070605h,0000302010C0F0E0Dh
940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00C0F0E0D080B0A09h,00407060500030201h
941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0000302010C0F0E0Dh,0080B0A0904070605h
942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_mc_backward::
944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00605040702010003h,00E0D0C0F0A09080Bh
945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0020100030E0D0C0Fh,00A09080B06050407h
946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00E0D0C0F0A09080Bh,00605040702010003h
947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00A09080B06050407h,0020100030E0D0C0Fh
948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sr::
950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00706050403020100h,00F0E0D0C0B0A0908h
951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0030E09040F0A0500h,00B06010C07020D08h
952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00F060D040B020900h,0070E050C030A0108h
953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00B0E0104070A0D00h,00306090C0F020508h
954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_rcon::
956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	01F8391B9AF9DEEB6h,0702A98084D7C7D81h
957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_s63::
959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	05B5B5B5B5B5B5B5Bh,05B5B5B5B5B5B5B5Bh
960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_opt::
962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0FF9F4929D6B66000h,0F7974121DEBE6808h
963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	001EDBD5150BCEC00h,0E10D5DB1B05C0CE0h
964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_deskew::
966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	007E4A34047A4E300h,01DFEB95A5DBEF91Ah
967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	05F36B5DC83EA6900h,02841C2ABF49D1E77h
968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dksd::
974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0FEB91A5DA3E44700h,00740E3A45A1DBEF9h
975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	041C277F4B5368300h,05FDC69EAAB289D1Eh
976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dksb::
977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	09A4FCA1F8550D500h,003D653861CC94C99h
978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0115BEDA7B6FC4A00h,0D993256F7E3482C8h
979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dkse::
980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0D5031CCA1FC9D600h,053859A4C994F5086h
981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0A23196054FDC7BE8h,0CD5EF96A20B31487h
982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dks9::
983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0B6116FC87ED9A700h,04AED933482255BFCh
984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	04576516227143300h,08BB89FACE9DAFDCEh
985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dipt::
991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00F505B040B545F00h,0154A411E114E451Ah
992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	086E383E660056500h,012771772F491F194h
993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsb9::
995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0851C03539A86D600h,0CAD51F504F994CC9h
996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0C03B1789ECD74900h,0725E2C9EB2FBA565h
997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbd::
998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	07D57CCDFE6B1A200h,0F56E9B13882A4439h
999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	03CE2FAF724C6CB00h,02931180D15DEEFD3h
1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbb::
1001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0D022649296B44200h,0602646F6B0F2D404h
1002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	0C19498A6CD596700h,0F3FF0C3E3255AA6Bh
1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbe::
1004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	046F2929626D4D000h,02242600464B4F6B0h
1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	00C55A6CDFFAAC100h,09467F36B98593E32h
1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbo::
1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	01387EA537EF94000h,0C7AA6DB9D4943E2Dh
1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DQ	012D7560F93441D00h,0CA4B8159D8C58E9Ch
1009116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
1010116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54
1011116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97
1012116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
1013116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	85,110,105,118,101,114,115,105,116,121,41,0
1014116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	64
1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1016116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	__imp_RtlVirtualUnwind:NEAR
1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1018116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler	PROC PRIVATE
1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rsi
1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rdi
1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pushfq
1029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,64
1030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[120+r8]
1032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[248+r8]
1033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[8+r9]
1035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[56+r9]
1036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,DWORD PTR[r11]
1038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[r10*1+rsi]
1039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
1040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$in_prologue
1041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1042116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[152+r8]
1043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1044116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10d,DWORD PTR[4+r11]
1045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[r10*1+rsi]
1046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
1047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jae	$L$in_prologue
1048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[16+rax]
1050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[512+r8]
1051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,20
1052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	0a548f3fch
1053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[184+rax]
1054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$in_prologue::
1056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rax]
1057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rax]
1058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[152+r8],rax
1059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[168+r8],rsi
1060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[176+r8],rdi
1061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[40+r9]
1063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r8
1064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,154
1065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	0a548f3fch
1066116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1067116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r9
1068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rcx,rcx
1069116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[8+rsi]
1070116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rsi]
1071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[16+rsi]
1072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[40+rsi]
1073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[56+rsi]
1074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[24+rsi]
1075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsp],r10
1076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsp],r11
1077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsp],r12
1078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rsp],rcx
1079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	QWORD PTR[__imp_RtlVirtualUnwind]
1080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,1
1082116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsp,64
1083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	popfq
1084116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r15
1085116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r14
1086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r13
1087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r12
1088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbp
1089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbx
1090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rdi
1091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rsi
1092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1093116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler	ENDP
1094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text$	ENDS
1096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	SEGMENT READONLY ALIGN(4)
1097116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	4
1098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_vpaes_set_encrypt_key
1099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_vpaes_set_encrypt_key
1100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_vpaes_set_encrypt_key
1101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_vpaes_set_decrypt_key
1103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_vpaes_set_decrypt_key
1104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_vpaes_set_decrypt_key
1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_vpaes_encrypt
1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_vpaes_encrypt
1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_vpaes_encrypt
1109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_vpaes_decrypt
1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_vpaes_decrypt
1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_vpaes_decrypt
1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_vpaes_cbc_encrypt
1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_vpaes_cbc_encrypt
1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_vpaes_cbc_encrypt
1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	ENDS
1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	SEGMENT READONLY ALIGN(8)
1120116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	8
1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_set_encrypt_key::
1122116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$enc_key_body,imagerel $L$enc_key_epilogue
1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_set_decrypt_key::
1126116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$dec_key_body,imagerel $L$dec_key_epilogue
1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_encrypt::
1130116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$enc_body,imagerel $L$enc_epilogue
1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_decrypt::
1134116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$dec_body,imagerel $L$dec_epilogue
1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_cbc_encrypt::
1138116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel se_handler
1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$cbc_body,imagerel $L$cbc_epilogue
1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	ENDS
1143116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEND
1144