source: git/src-cryptopp/x64dll.asm

Last change on this file was e230cb0, checked in by David Stainton <dstainton415@…>, at 2016-10-12T13:27:29Z

Add cryptopp from tag CRYPTOPP_5_6_5

  • Property mode set to 100644
File size: 46.2 KB
Line 
1include ksamd64.inc
2EXTERNDEF ?Te@rdtable@CryptoPP@@3PA_KA:FAR
3EXTERNDEF ?g_cacheLineSize@CryptoPP@@3IA:FAR
4EXTERNDEF ?SHA256_K@CryptoPP@@3QBIB:FAR
5.CODE
6
7    ALIGN   8
8Baseline_Add    PROC
9        lea             rdx, [rdx+8*rcx]
10        lea             r8, [r8+8*rcx]
11        lea             r9, [r9+8*rcx]
12        neg             rcx                                     ; rcx is negative index
13        jz              $1@Baseline_Add
14        mov             rax,[r8+8*rcx]
15        add             rax,[r9+8*rcx]
16        mov             [rdx+8*rcx],rax
17$0@Baseline_Add:
18        mov             rax,[r8+8*rcx+8]
19        adc             rax,[r9+8*rcx+8]
20        mov             [rdx+8*rcx+8],rax
21        lea             rcx,[rcx+2]                     ; advance index, avoid inc which causes slowdown on Intel Core 2
22        jrcxz   $1@Baseline_Add         ; loop until rcx overflows and becomes zero
23        mov             rax,[r8+8*rcx]
24        adc             rax,[r9+8*rcx]
25        mov             [rdx+8*rcx],rax
26        jmp             $0@Baseline_Add
27$1@Baseline_Add:
28        mov             rax, 0
29        adc             rax, rax                        ; store carry into rax (return result register)
30        ret
31Baseline_Add ENDP
32
33    ALIGN   8
34Baseline_Sub    PROC
35        lea             rdx, [rdx+8*rcx]
36        lea             r8, [r8+8*rcx]
37        lea             r9, [r9+8*rcx]
38        neg             rcx                                     ; rcx is negative index
39        jz              $1@Baseline_Sub
40        mov             rax,[r8+8*rcx]
41        sub             rax,[r9+8*rcx]
42        mov             [rdx+8*rcx],rax
43$0@Baseline_Sub:
44        mov             rax,[r8+8*rcx+8]
45        sbb             rax,[r9+8*rcx+8]
46        mov             [rdx+8*rcx+8],rax
47        lea             rcx,[rcx+2]                     ; advance index, avoid inc which causes slowdown on Intel Core 2
48        jrcxz   $1@Baseline_Sub         ; loop until rcx overflows and becomes zero
49        mov             rax,[r8+8*rcx]
50        sbb             rax,[r9+8*rcx]
51        mov             [rdx+8*rcx],rax
52        jmp             $0@Baseline_Sub
53$1@Baseline_Sub:
54        mov             rax, 0
55        adc             rax, rax                        ; store carry into rax (return result register)
56
57        ret
58Baseline_Sub ENDP
59
60ALIGN   8
61Rijndael_Enc_AdvancedProcessBlocks      PROC FRAME
62rex_push_reg rsi
63push_reg rdi
64push_reg rbx
65push_reg r12
66.endprolog
67mov r8, rcx
68mov r11, ?Te@rdtable@CryptoPP@@3PA_KA
69mov edi, DWORD PTR [?g_cacheLineSize@CryptoPP@@3IA]
70mov rsi, [(r8+16*19)]
71mov rax, 16
72and rax, rsi
73movdqa xmm3, XMMWORD PTR [rdx+16+rax]
74movdqa [(r8+16*12)], xmm3
75lea rax, [rdx+rax+2*16]
76sub rax, rsi
77label0:
78movdqa xmm0, [rax+rsi]
79movdqa XMMWORD PTR [(r8+0)+rsi], xmm0
80add rsi, 16
81cmp rsi, 16*12
82jl label0
83movdqa xmm4, [rax+rsi]
84movdqa xmm1, [rdx]
85mov r12d, [rdx+4*4]
86mov ebx, [rdx+5*4]
87mov ecx, [rdx+6*4]
88mov edx, [rdx+7*4]
89xor rax, rax
90label9:
91mov esi, [r11+rax]
92add rax, rdi
93mov esi, [r11+rax]
94add rax, rdi
95mov esi, [r11+rax]
96add rax, rdi
97mov esi, [r11+rax]
98add rax, rdi
99cmp rax, 2048
100jl label9
101lfence
102test DWORD PTR [(r8+16*18+8)], 1
103jz label8
104mov rsi, [(r8+16*14)]
105movdqu xmm2, [rsi]
106pxor xmm2, xmm1
107psrldq xmm1, 14
108movd eax, xmm1
109mov al, BYTE PTR [rsi+15]
110mov r10d, eax
111movd eax, xmm2
112psrldq xmm2, 4
113movd edi, xmm2
114psrldq xmm2, 4
115movzx esi, al
116xor r12d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
117movzx esi, ah
118xor edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
119shr eax, 16
120movzx esi, al
121xor ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
122movzx esi, ah
123xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
124mov eax, edi
125movd edi, xmm2
126psrldq xmm2, 4
127movzx esi, al
128xor ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
129movzx esi, ah
130xor r12d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
131shr eax, 16
132movzx esi, al
133xor edx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
134movzx esi, ah
135xor ecx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
136mov eax, edi
137movd edi, xmm2
138movzx esi, al
139xor ecx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
140movzx esi, ah
141xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
142shr eax, 16
143movzx esi, al
144xor r12d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
145movzx esi, ah
146xor edx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
147mov eax, edi
148movzx esi, al
149xor edx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
150movzx esi, ah
151xor ecx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
152shr eax, 16
153movzx esi, al
154xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
155psrldq xmm2, 3
156mov eax, [(r8+16*12)+0*4]
157mov edi, [(r8+16*12)+2*4]
158mov r9d, [(r8+16*12)+3*4]
159movzx esi, cl
160xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
161movzx esi, bl
162xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
163movzx esi, bh
164xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
165shr ebx, 16
166movzx esi, bl
167xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
168movzx esi, bh
169mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
170xor ebx, [(r8+16*12)+1*4]
171movzx esi, ch
172xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
173shr ecx, 16
174movzx esi, dl
175xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
176movzx esi, dh
177xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
178shr edx, 16
179movzx esi, ch
180xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
181movzx esi, cl
182xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
183movzx esi, dl
184xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
185movzx esi, dh
186xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
187movd ecx, xmm2
188mov edx, r12d
189mov [(r8+0)+3*4], r9d
190mov [(r8+0)+0*4], eax
191mov [(r8+0)+1*4], ebx
192mov [(r8+0)+2*4], edi
193jmp label5
194label3:
195mov r12d, [(r8+16*12)+0*4]
196mov ebx, [(r8+16*12)+1*4]
197mov ecx, [(r8+16*12)+2*4]
198mov edx, [(r8+16*12)+3*4]
199label8:
200mov rax, [(r8+16*14)]
201movdqu xmm2, [rax]
202mov rsi, [(r8+16*14)+8]
203movdqu xmm5, [rsi]
204pxor xmm2, xmm1
205pxor xmm2, xmm5
206movd eax, xmm2
207psrldq xmm2, 4
208movd edi, xmm2
209psrldq xmm2, 4
210movzx esi, al
211xor r12d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
212movzx esi, ah
213xor edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
214shr eax, 16
215movzx esi, al
216xor ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
217movzx esi, ah
218xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
219mov eax, edi
220movd edi, xmm2
221psrldq xmm2, 4
222movzx esi, al
223xor ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
224movzx esi, ah
225xor r12d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
226shr eax, 16
227movzx esi, al
228xor edx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
229movzx esi, ah
230xor ecx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
231mov eax, edi
232movd edi, xmm2
233movzx esi, al
234xor ecx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
235movzx esi, ah
236xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
237shr eax, 16
238movzx esi, al
239xor r12d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
240movzx esi, ah
241xor edx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
242mov eax, edi
243movzx esi, al
244xor edx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
245movzx esi, ah
246xor ecx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
247shr eax, 16
248movzx esi, al
249xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
250movzx esi, ah
251xor r12d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
252mov eax, r12d
253add r8, [(r8+16*19)]
254add r8, 4*16
255jmp label2
256label1:
257mov ecx, r10d
258mov edx, r12d
259mov eax, [(r8+0)+0*4]
260mov ebx, [(r8+0)+1*4]
261xor cl, ch
262and rcx, 255
263label5:
264add r10d, 1
265xor edx, DWORD PTR [r11+rcx*8+3]
266movzx esi, dl
267xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
268movzx esi, dh
269mov ecx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
270shr edx, 16
271xor ecx, [(r8+0)+2*4]
272movzx esi, dh
273xor eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
274movzx esi, dl
275mov edx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
276xor edx, [(r8+0)+3*4]
277add r8, [(r8+16*19)]
278add r8, 3*16
279jmp label4
280label2:
281mov r9d, [(r8+0)-4*16+3*4]
282mov edi, [(r8+0)-4*16+2*4]
283movzx esi, cl
284xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
285mov cl, al
286movzx esi, ah
287xor edi, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
288shr eax, 16
289movzx esi, bl
290xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
291movzx esi, bh
292xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
293shr ebx, 16
294movzx esi, al
295xor r9d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
296movzx esi, ah
297mov eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
298movzx esi, bl
299xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
300movzx esi, bh
301mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
302movzx esi, ch
303xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
304movzx esi, cl
305xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
306shr ecx, 16
307movzx esi, dl
308xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
309movzx esi, dh
310xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
311shr edx, 16
312movzx esi, ch
313xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
314movzx esi, cl
315xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
316movzx esi, dl
317xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
318movzx esi, dh
319xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
320mov ecx, edi
321xor eax, [(r8+0)-4*16+0*4]
322xor ebx, [(r8+0)-4*16+1*4]
323mov edx, r9d
324label4:
325mov r9d, [(r8+0)-4*16+7*4]
326mov edi, [(r8+0)-4*16+6*4]
327movzx esi, cl
328xor r9d, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
329mov cl, al
330movzx esi, ah
331xor edi, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
332shr eax, 16
333movzx esi, bl
334xor edi, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
335movzx esi, bh
336xor r9d, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
337shr ebx, 16
338movzx esi, al
339xor r9d, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
340movzx esi, ah
341mov eax, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
342movzx esi, bl
343xor eax, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
344movzx esi, bh
345mov ebx, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
346movzx esi, ch
347xor eax, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
348movzx esi, cl
349xor ebx, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
350shr ecx, 16
351movzx esi, dl
352xor eax, DWORD PTR [r11+8*rsi+(((3+3) MOD (4))+1)]
353movzx esi, dh
354xor ebx, DWORD PTR [r11+8*rsi+(((2+3) MOD (4))+1)]
355shr edx, 16
356movzx esi, ch
357xor edi, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
358movzx esi, cl
359xor ebx, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
360movzx esi, dl
361xor edi, DWORD PTR [r11+8*rsi+(((1+3) MOD (4))+1)]
362movzx esi, dh
363xor r9d, DWORD PTR [r11+8*rsi+(((0+3) MOD (4))+1)]
364mov ecx, edi
365xor eax, [(r8+0)-4*16+4*4]
366xor ebx, [(r8+0)-4*16+5*4]
367mov edx, r9d
368add r8, 32
369test r8, 255
370jnz label2
371sub r8, 16*16
372movzx esi, ch
373movzx edi, BYTE PTR [r11+rsi*8+1]
374movzx esi, dl
375xor edi, DWORD PTR [r11+rsi*8+0]
376mov WORD PTR [(r8+16*13)+2], di
377movzx esi, dh
378movzx edi, BYTE PTR [r11+rsi*8+1]
379movzx esi, al
380xor edi, DWORD PTR [r11+rsi*8+0]
381mov WORD PTR [(r8+16*13)+6], di
382shr edx, 16
383movzx esi, ah
384movzx edi, BYTE PTR [r11+rsi*8+1]
385movzx esi, bl
386xor edi, DWORD PTR [r11+rsi*8+0]
387mov WORD PTR [(r8+16*13)+10], di
388shr eax, 16
389movzx esi, bh
390movzx edi, BYTE PTR [r11+rsi*8+1]
391movzx esi, cl
392xor edi, DWORD PTR [r11+rsi*8+0]
393mov WORD PTR [(r8+16*13)+14], di
394shr ebx, 16
395movzx esi, dh
396movzx edi, BYTE PTR [r11+rsi*8+1]
397movzx esi, al
398xor edi, DWORD PTR [r11+rsi*8+0]
399mov WORD PTR [(r8+16*13)+12], di
400shr ecx, 16
401movzx esi, ah
402movzx edi, BYTE PTR [r11+rsi*8+1]
403movzx esi, bl
404xor edi, DWORD PTR [r11+rsi*8+0]
405mov WORD PTR [(r8+16*13)+0], di
406movzx esi, bh
407movzx edi, BYTE PTR [r11+rsi*8+1]
408movzx esi, cl
409xor edi, DWORD PTR [r11+rsi*8+0]
410mov WORD PTR [(r8+16*13)+4], di
411movzx esi, ch
412movzx edi, BYTE PTR [r11+rsi*8+1]
413movzx esi, dl
414xor edi, DWORD PTR [r11+rsi*8+0]
415mov WORD PTR [(r8+16*13)+8], di
416mov rax, [(r8+16*14)+16]
417mov rbx, [(r8+16*14)+24]
418mov rcx, [(r8+16*18+8)]
419sub rcx, 16
420movdqu xmm2, [rax]
421pxor xmm2, xmm4
422movdqa xmm0, [(r8+16*16)+16]
423paddq xmm0, [(r8+16*14)+16]
424movdqa [(r8+16*14)+16], xmm0
425pxor xmm2, [(r8+16*13)]
426movdqu [rbx], xmm2
427jle label7
428mov [(r8+16*18+8)], rcx
429test rcx, 1
430jnz label1
431movdqa xmm0, [(r8+16*16)]
432paddq xmm0, [(r8+16*14)]
433movdqa [(r8+16*14)], xmm0
434jmp label3
435label7:
436xorps xmm0, xmm0
437lea rax, [(r8+0)+7*16]
438movaps [rax-7*16], xmm0
439movaps [rax-6*16], xmm0
440movaps [rax-5*16], xmm0
441movaps [rax-4*16], xmm0
442movaps [rax-3*16], xmm0
443movaps [rax-2*16], xmm0
444movaps [rax-1*16], xmm0
445movaps [rax+0*16], xmm0
446movaps [rax+1*16], xmm0
447movaps [rax+2*16], xmm0
448movaps [rax+3*16], xmm0
449movaps [rax+4*16], xmm0
450movaps [rax+5*16], xmm0
451movaps [rax+6*16], xmm0
452pop r12
453pop rbx
454pop rdi
455pop rsi
456ret
457Rijndael_Enc_AdvancedProcessBlocks ENDP
458
459ALIGN   8
460GCM_AuthenticateBlocks_2K       PROC FRAME
461rex_push_reg rsi
462push_reg rdi
463push_reg rbx
464.endprolog
465mov rsi, r8
466mov r11, r9
467movdqa xmm0, [rsi]
468label0:
469movdqu xmm4, [rcx]
470pxor xmm0, xmm4
471movd ebx, xmm0
472mov eax, 0f0f0f0f0h
473and eax, ebx
474shl ebx, 4
475and ebx, 0f0f0f0f0h
476movzx edi, ah
477movdqa xmm5, XMMWORD PTR [rsi + 32 + 1024 + rdi]
478movzx edi, al
479movdqa xmm4, XMMWORD PTR [rsi + 32 + 1024 + rdi]
480shr eax, 16
481movzx edi, ah
482movdqa xmm3, XMMWORD PTR [rsi + 32 + 1024 + rdi]
483movzx edi, al
484movdqa xmm2, XMMWORD PTR [rsi + 32 + 1024 + rdi]
485psrldq xmm0, 4
486movd eax, xmm0
487and eax, 0f0f0f0f0h
488movzx edi, bh
489pxor xmm5, XMMWORD PTR [rsi + 32 + (1-1)*256 + rdi]
490movzx edi, bl
491pxor xmm4, XMMWORD PTR [rsi + 32 + (1-1)*256 + rdi]
492shr ebx, 16
493movzx edi, bh
494pxor xmm3, XMMWORD PTR [rsi + 32 + (1-1)*256 + rdi]
495movzx edi, bl
496pxor xmm2, XMMWORD PTR [rsi + 32 + (1-1)*256 + rdi]
497movd ebx, xmm0
498shl ebx, 4
499and ebx, 0f0f0f0f0h
500movzx edi, ah
501pxor xmm5, XMMWORD PTR [rsi + 32 + 1024 + 1*256 + rdi]
502movzx edi, al
503pxor xmm4, XMMWORD PTR [rsi + 32 + 1024 + 1*256 + rdi]
504shr eax, 16
505movzx edi, ah
506pxor xmm3, XMMWORD PTR [rsi + 32 + 1024 + 1*256 + rdi]
507movzx edi, al
508pxor xmm2, XMMWORD PTR [rsi + 32 + 1024 + 1*256 + rdi]
509psrldq xmm0, 4
510movd eax, xmm0
511and eax, 0f0f0f0f0h
512movzx edi, bh
513pxor xmm5, XMMWORD PTR [rsi + 32 + (2-1)*256 + rdi]
514movzx edi, bl
515pxor xmm4, XMMWORD PTR [rsi + 32 + (2-1)*256 + rdi]
516shr ebx, 16
517movzx edi, bh
518pxor xmm3, XMMWORD PTR [rsi + 32 + (2-1)*256 + rdi]
519movzx edi, bl
520pxor xmm2, XMMWORD PTR [rsi + 32 + (2-1)*256 + rdi]
521movd ebx, xmm0
522shl ebx, 4
523and ebx, 0f0f0f0f0h
524movzx edi, ah
525pxor xmm5, XMMWORD PTR [rsi + 32 + 1024 + 2*256 + rdi]
526movzx edi, al
527pxor xmm4, XMMWORD PTR [rsi + 32 + 1024 + 2*256 + rdi]
528shr eax, 16
529movzx edi, ah
530pxor xmm3, XMMWORD PTR [rsi + 32 + 1024 + 2*256 + rdi]
531movzx edi, al
532pxor xmm2, XMMWORD PTR [rsi + 32 + 1024 + 2*256 + rdi]
533psrldq xmm0, 4
534movd eax, xmm0
535and eax, 0f0f0f0f0h
536movzx edi, bh
537pxor xmm5, XMMWORD PTR [rsi + 32 + (3-1)*256 + rdi]
538movzx edi, bl
539pxor xmm4, XMMWORD PTR [rsi + 32 + (3-1)*256 + rdi]
540shr ebx, 16
541movzx edi, bh
542pxor xmm3, XMMWORD PTR [rsi + 32 + (3-1)*256 + rdi]
543movzx edi, bl
544pxor xmm2, XMMWORD PTR [rsi + 32 + (3-1)*256 + rdi]
545movd ebx, xmm0
546shl ebx, 4
547and ebx, 0f0f0f0f0h
548movzx edi, ah
549pxor xmm5, XMMWORD PTR [rsi + 32 + 1024 + 3*256 + rdi]
550movzx edi, al
551pxor xmm4, XMMWORD PTR [rsi + 32 + 1024 + 3*256 + rdi]
552shr eax, 16
553movzx edi, ah
554pxor xmm3, XMMWORD PTR [rsi + 32 + 1024 + 3*256 + rdi]
555movzx edi, al
556pxor xmm2, XMMWORD PTR [rsi + 32 + 1024 + 3*256 + rdi]
557movzx edi, bh
558pxor xmm5, XMMWORD PTR [rsi + 32 + 3*256 + rdi]
559movzx edi, bl
560pxor xmm4, XMMWORD PTR [rsi + 32 + 3*256 + rdi]
561shr ebx, 16
562movzx edi, bh
563pxor xmm3, XMMWORD PTR [rsi + 32 + 3*256 + rdi]
564movzx edi, bl
565pxor xmm2, XMMWORD PTR [rsi + 32 + 3*256 + rdi]
566movdqa xmm0, xmm3
567pslldq xmm3, 1
568pxor xmm2, xmm3
569movdqa xmm1, xmm2
570pslldq xmm2, 1
571pxor xmm5, xmm2
572psrldq xmm0, 15
573movd rdi, xmm0
574movzx eax, WORD PTR [r11 + rdi*2]
575shl eax, 8
576movdqa xmm0, xmm5
577pslldq xmm5, 1
578pxor xmm4, xmm5
579psrldq xmm1, 15
580movd rdi, xmm1
581xor ax, WORD PTR [r11 + rdi*2]
582shl eax, 8
583psrldq xmm0, 15
584movd rdi, xmm0
585xor ax, WORD PTR [r11 + rdi*2]
586movd xmm0, eax
587pxor xmm0, xmm4
588add rcx, 16
589sub rdx, 1
590jnz label0
591movdqa [rsi], xmm0
592pop rbx
593pop rdi
594pop rsi
595ret
596GCM_AuthenticateBlocks_2K ENDP
597
598ALIGN   8
599GCM_AuthenticateBlocks_64K      PROC FRAME
600rex_push_reg rsi
601push_reg rdi
602.endprolog
603mov rsi, r8
604movdqa xmm0, [rsi]
605label1:
606movdqu xmm1, [rcx]
607pxor xmm1, xmm0
608pxor xmm0, xmm0
609movd eax, xmm1
610psrldq xmm1, 4
611movzx edi, al
612add rdi, rdi
613pxor xmm0, [rsi + 32 + (0*4+0)*256*16 + rdi*8]
614movzx edi, ah
615add rdi, rdi
616pxor xmm0, [rsi + 32 + (0*4+1)*256*16 + rdi*8]
617shr eax, 16
618movzx edi, al
619add rdi, rdi
620pxor xmm0, [rsi + 32 + (0*4+2)*256*16 + rdi*8]
621movzx edi, ah
622add rdi, rdi
623pxor xmm0, [rsi + 32 + (0*4+3)*256*16 + rdi*8]
624movd eax, xmm1
625psrldq xmm1, 4
626movzx edi, al
627add rdi, rdi
628pxor xmm0, [rsi + 32 + (1*4+0)*256*16 + rdi*8]
629movzx edi, ah
630add rdi, rdi
631pxor xmm0, [rsi + 32 + (1*4+1)*256*16 + rdi*8]
632shr eax, 16
633movzx edi, al
634add rdi, rdi
635pxor xmm0, [rsi + 32 + (1*4+2)*256*16 + rdi*8]
636movzx edi, ah
637add rdi, rdi
638pxor xmm0, [rsi + 32 + (1*4+3)*256*16 + rdi*8]
639movd eax, xmm1
640psrldq xmm1, 4
641movzx edi, al
642add rdi, rdi
643pxor xmm0, [rsi + 32 + (2*4+0)*256*16 + rdi*8]
644movzx edi, ah
645add rdi, rdi
646pxor xmm0, [rsi + 32 + (2*4+1)*256*16 + rdi*8]
647shr eax, 16
648movzx edi, al
649add rdi, rdi
650pxor xmm0, [rsi + 32 + (2*4+2)*256*16 + rdi*8]
651movzx edi, ah
652add rdi, rdi
653pxor xmm0, [rsi + 32 + (2*4+3)*256*16 + rdi*8]
654movd eax, xmm1
655psrldq xmm1, 4
656movzx edi, al
657add rdi, rdi
658pxor xmm0, [rsi + 32 + (3*4+0)*256*16 + rdi*8]
659movzx edi, ah
660add rdi, rdi
661pxor xmm0, [rsi + 32 + (3*4+1)*256*16 + rdi*8]
662shr eax, 16
663movzx edi, al
664add rdi, rdi
665pxor xmm0, [rsi + 32 + (3*4+2)*256*16 + rdi*8]
666movzx edi, ah
667add rdi, rdi
668pxor xmm0, [rsi + 32 + (3*4+3)*256*16 + rdi*8]
669add rcx, 16
670sub rdx, 1
671jnz label1
672movdqa [rsi], xmm0
673pop rdi
674pop rsi
675ret
676GCM_AuthenticateBlocks_64K ENDP
677
678ALIGN   8
679X86_SHA256_HashBlocks   PROC FRAME
680rex_push_reg rsi
681push_reg rdi
682push_reg rbx
683push_reg rbp
684alloc_stack(8*4 + 16*4 + 4*8 + 8)
685.endprolog
686mov rdi, r8
687lea rsi, [?SHA256_K@CryptoPP@@3QBIB + 48*4]
688mov [rsp+8*4+16*4+1*8], rcx
689mov [rsp+8*4+16*4+2*8], rdx
690add rdi, rdx
691mov [rsp+8*4+16*4+3*8], rdi
692movdqa xmm0, XMMWORD PTR [rcx+0*16]
693movdqa xmm1, XMMWORD PTR [rcx+1*16]
694mov [rsp+8*4+16*4+0*8], rsi
695label0:
696sub rsi, 48*4
697movdqa [rsp+((1024+7-(0+3)) MOD (8))*4], xmm1
698movdqa [rsp+((1024+7-(0+7)) MOD (8))*4], xmm0
699mov rbx, [rdx+0*8]
700bswap rbx
701mov [rsp+8*4+((1024+15-(0*(1+1)+1)) MOD (16))*4], rbx
702mov rbx, [rdx+1*8]
703bswap rbx
704mov [rsp+8*4+((1024+15-(1*(1+1)+1)) MOD (16))*4], rbx
705mov rbx, [rdx+2*8]
706bswap rbx
707mov [rsp+8*4+((1024+15-(2*(1+1)+1)) MOD (16))*4], rbx
708mov rbx, [rdx+3*8]
709bswap rbx
710mov [rsp+8*4+((1024+15-(3*(1+1)+1)) MOD (16))*4], rbx
711mov rbx, [rdx+4*8]
712bswap rbx
713mov [rsp+8*4+((1024+15-(4*(1+1)+1)) MOD (16))*4], rbx
714mov rbx, [rdx+5*8]
715bswap rbx
716mov [rsp+8*4+((1024+15-(5*(1+1)+1)) MOD (16))*4], rbx
717mov rbx, [rdx+6*8]
718bswap rbx
719mov [rsp+8*4+((1024+15-(6*(1+1)+1)) MOD (16))*4], rbx
720mov rbx, [rdx+7*8]
721bswap rbx
722mov [rsp+8*4+((1024+15-(7*(1+1)+1)) MOD (16))*4], rbx
723mov edi, [rsp+((1024+7-(0+3)) MOD (8))*4]
724mov eax, [rsp+((1024+7-(0+6)) MOD (8))*4]
725xor eax, [rsp+((1024+7-(0+5)) MOD (8))*4]
726mov ecx, [rsp+((1024+7-(0+7)) MOD (8))*4]
727mov edx, [rsp+((1024+7-(0+2)) MOD (8))*4]
728xor edx, [rsp+((1024+7-(0+1)) MOD (8))*4]
729and edx, edi
730xor edx, [rsp+((1024+7-(0+1)) MOD (8))*4]
731mov ebp, edi
732ror edi, 6
733ror ebp, 25
734add edx, [rsi+(0)*4]
735add edx, [rsp+8*4+((1024+15-(0)) MOD (16))*4]
736add edx, [rsp+((1024+7-(0)) MOD (8))*4]
737xor ebp, edi
738ror edi, 5
739xor ebp, edi
740add edx, ebp
741mov ebx, ecx
742xor ecx, [rsp+((1024+7-(0+6)) MOD (8))*4]
743and eax, ecx
744xor eax, [rsp+((1024+7-(0+6)) MOD (8))*4]
745mov ebp, ebx
746ror ebx, 2
747add eax, edx
748add edx, [rsp+((1024+7-(0+4)) MOD (8))*4]
749mov [rsp+((1024+7-(0+4)) MOD (8))*4], edx
750ror ebp, 22
751xor ebp, ebx
752ror ebx, 11
753xor ebp, ebx
754add eax, ebp
755mov [rsp+((1024+7-(0)) MOD (8))*4], eax
756mov edi, [rsp+((1024+7-(1+2)) MOD (8))*4]
757xor edi, [rsp+((1024+7-(1+1)) MOD (8))*4]
758and edi, edx
759xor edi, [rsp+((1024+7-(1+1)) MOD (8))*4]
760mov ebp, edx
761ror edx, 6
762ror ebp, 25
763add edi, [rsi+(1)*4]
764add edi, [rsp+8*4+((1024+15-(1)) MOD (16))*4]
765add edi, [rsp+((1024+7-(1)) MOD (8))*4]
766xor ebp, edx
767ror edx, 5
768xor ebp, edx
769add edi, ebp
770mov ebx, eax
771xor eax, [rsp+((1024+7-(1+6)) MOD (8))*4]
772and ecx, eax
773xor ecx, [rsp+((1024+7-(1+6)) MOD (8))*4]
774mov ebp, ebx
775ror ebx, 2
776add ecx, edi
777add edi, [rsp+((1024+7-(1+4)) MOD (8))*4]
778mov [rsp+((1024+7-(1+4)) MOD (8))*4], edi
779ror ebp, 22
780xor ebp, ebx
781ror ebx, 11
782xor ebp, ebx
783add ecx, ebp
784mov [rsp+((1024+7-(1)) MOD (8))*4], ecx
785mov edx, [rsp+((1024+7-(2+2)) MOD (8))*4]
786xor edx, [rsp+((1024+7-(2+1)) MOD (8))*4]
787and edx, edi
788xor edx, [rsp+((1024+7-(2+1)) MOD (8))*4]
789mov ebp, edi
790ror edi, 6
791ror ebp, 25
792add edx, [rsi+(2)*4]
793add edx, [rsp+8*4+((1024+15-(2)) MOD (16))*4]
794add edx, [rsp+((1024+7-(2)) MOD (8))*4]
795xor ebp, edi
796ror edi, 5
797xor ebp, edi
798add edx, ebp
799mov ebx, ecx
800xor ecx, [rsp+((1024+7-(2+6)) MOD (8))*4]
801and eax, ecx
802xor eax, [rsp+((1024+7-(2+6)) MOD (8))*4]
803mov ebp, ebx
804ror ebx, 2
805add eax, edx
806add edx, [rsp+((1024+7-(2+4)) MOD (8))*4]
807mov [rsp+((1024+7-(2+4)) MOD (8))*4], edx
808ror ebp, 22
809xor ebp, ebx
810ror ebx, 11
811xor ebp, ebx
812add eax, ebp
813mov [rsp+((1024+7-(2)) MOD (8))*4], eax
814mov edi, [rsp+((1024+7-(3+2)) MOD (8))*4]
815xor edi, [rsp+((1024+7-(3+1)) MOD (8))*4]
816and edi, edx
817xor edi, [rsp+((1024+7-(3+1)) MOD (8))*4]
818mov ebp, edx
819ror edx, 6
820ror ebp, 25
821add edi, [rsi+(3)*4]
822add edi, [rsp+8*4+((1024+15-(3)) MOD (16))*4]
823add edi, [rsp+((1024+7-(3)) MOD (8))*4]
824xor ebp, edx
825ror edx, 5
826xor ebp, edx
827add edi, ebp
828mov ebx, eax
829xor eax, [rsp+((1024+7-(3+6)) MOD (8))*4]
830and ecx, eax
831xor ecx, [rsp+((1024+7-(3+6)) MOD (8))*4]
832mov ebp, ebx
833ror ebx, 2
834add ecx, edi
835add edi, [rsp+((1024+7-(3+4)) MOD (8))*4]
836mov [rsp+((1024+7-(3+4)) MOD (8))*4], edi
837ror ebp, 22
838xor ebp, ebx
839ror ebx, 11
840xor ebp, ebx
841add ecx, ebp
842mov [rsp+((1024+7-(3)) MOD (8))*4], ecx
843mov edx, [rsp+((1024+7-(4+2)) MOD (8))*4]
844xor edx, [rsp+((1024+7-(4+1)) MOD (8))*4]
845and edx, edi
846xor edx, [rsp+((1024+7-(4+1)) MOD (8))*4]
847mov ebp, edi
848ror edi, 6
849ror ebp, 25
850add edx, [rsi+(4)*4]
851add edx, [rsp+8*4+((1024+15-(4)) MOD (16))*4]
852add edx, [rsp+((1024+7-(4)) MOD (8))*4]
853xor ebp, edi
854ror edi, 5
855xor ebp, edi
856add edx, ebp
857mov ebx, ecx
858xor ecx, [rsp+((1024+7-(4+6)) MOD (8))*4]
859and eax, ecx
860xor eax, [rsp+((1024+7-(4+6)) MOD (8))*4]
861mov ebp, ebx
862ror ebx, 2
863add eax, edx
864add edx, [rsp+((1024+7-(4+4)) MOD (8))*4]
865mov [rsp+((1024+7-(4+4)) MOD (8))*4], edx
866ror ebp, 22
867xor ebp, ebx
868ror ebx, 11
869xor ebp, ebx
870add eax, ebp
871mov [rsp+((1024+7-(4)) MOD (8))*4], eax
872mov edi, [rsp+((1024+7-(5+2)) MOD (8))*4]
873xor edi, [rsp+((1024+7-(5+1)) MOD (8))*4]
874and edi, edx
875xor edi, [rsp+((1024+7-(5+1)) MOD (8))*4]
876mov ebp, edx
877ror edx, 6
878ror ebp, 25
879add edi, [rsi+(5)*4]
880add edi, [rsp+8*4+((1024+15-(5)) MOD (16))*4]
881add edi, [rsp+((1024+7-(5)) MOD (8))*4]
882xor ebp, edx
883ror edx, 5
884xor ebp, edx
885add edi, ebp
886mov ebx, eax
887xor eax, [rsp+((1024+7-(5+6)) MOD (8))*4]
888and ecx, eax
889xor ecx, [rsp+((1024+7-(5+6)) MOD (8))*4]
890mov ebp, ebx
891ror ebx, 2
892add ecx, edi
893add edi, [rsp+((1024+7-(5+4)) MOD (8))*4]
894mov [rsp+((1024+7-(5+4)) MOD (8))*4], edi
895ror ebp, 22
896xor ebp, ebx
897ror ebx, 11
898xor ebp, ebx
899add ecx, ebp
900mov [rsp+((1024+7-(5)) MOD (8))*4], ecx
901mov edx, [rsp+((1024+7-(6+2)) MOD (8))*4]
902xor edx, [rsp+((1024+7-(6+1)) MOD (8))*4]
903and edx, edi
904xor edx, [rsp+((1024+7-(6+1)) MOD (8))*4]
905mov ebp, edi
906ror edi, 6
907ror ebp, 25
908add edx, [rsi+(6)*4]
909add edx, [rsp+8*4+((1024+15-(6)) MOD (16))*4]
910add edx, [rsp+((1024+7-(6)) MOD (8))*4]
911xor ebp, edi
912ror edi, 5
913xor ebp, edi
914add edx, ebp
915mov ebx, ecx
916xor ecx, [rsp+((1024+7-(6+6)) MOD (8))*4]
917and eax, ecx
918xor eax, [rsp+((1024+7-(6+6)) MOD (8))*4]
919mov ebp, ebx
920ror ebx, 2
921add eax, edx
922add edx, [rsp+((1024+7-(6+4)) MOD (8))*4]
923mov [rsp+((1024+7-(6+4)) MOD (8))*4], edx
924ror ebp, 22
925xor ebp, ebx
926ror ebx, 11
927xor ebp, ebx
928add eax, ebp
929mov [rsp+((1024+7-(6)) MOD (8))*4], eax
930mov edi, [rsp+((1024+7-(7+2)) MOD (8))*4]
931xor edi, [rsp+((1024+7-(7+1)) MOD (8))*4]
932and edi, edx
933xor edi, [rsp+((1024+7-(7+1)) MOD (8))*4]
934mov ebp, edx
935ror edx, 6
936ror ebp, 25
937add edi, [rsi+(7)*4]
938add edi, [rsp+8*4+((1024+15-(7)) MOD (16))*4]
939add edi, [rsp+((1024+7-(7)) MOD (8))*4]
940xor ebp, edx
941ror edx, 5
942xor ebp, edx
943add edi, ebp
944mov ebx, eax
945xor eax, [rsp+((1024+7-(7+6)) MOD (8))*4]
946and ecx, eax
947xor ecx, [rsp+((1024+7-(7+6)) MOD (8))*4]
948mov ebp, ebx
949ror ebx, 2
950add ecx, edi
951add edi, [rsp+((1024+7-(7+4)) MOD (8))*4]
952mov [rsp+((1024+7-(7+4)) MOD (8))*4], edi
953ror ebp, 22
954xor ebp, ebx
955ror ebx, 11
956xor ebp, ebx
957add ecx, ebp
958mov [rsp+((1024+7-(7)) MOD (8))*4], ecx
959mov edx, [rsp+((1024+7-(8+2)) MOD (8))*4]
960xor edx, [rsp+((1024+7-(8+1)) MOD (8))*4]
961and edx, edi
962xor edx, [rsp+((1024+7-(8+1)) MOD (8))*4]
963mov ebp, edi
964ror edi, 6
965ror ebp, 25
966add edx, [rsi+(8)*4]
967add edx, [rsp+8*4+((1024+15-(8)) MOD (16))*4]
968add edx, [rsp+((1024+7-(8)) MOD (8))*4]
969xor ebp, edi
970ror edi, 5
971xor ebp, edi
972add edx, ebp
973mov ebx, ecx
974xor ecx, [rsp+((1024+7-(8+6)) MOD (8))*4]
975and eax, ecx
976xor eax, [rsp+((1024+7-(8+6)) MOD (8))*4]
977mov ebp, ebx
978ror ebx, 2
979add eax, edx
980add edx, [rsp+((1024+7-(8+4)) MOD (8))*4]
981mov [rsp+((1024+7-(8+4)) MOD (8))*4], edx
982ror ebp, 22
983xor ebp, ebx
984ror ebx, 11
985xor ebp, ebx
986add eax, ebp
987mov [rsp+((1024+7-(8)) MOD (8))*4], eax
988mov edi, [rsp+((1024+7-(9+2)) MOD (8))*4]
989xor edi, [rsp+((1024+7-(9+1)) MOD (8))*4]
990and edi, edx
991xor edi, [rsp+((1024+7-(9+1)) MOD (8))*4]
992mov ebp, edx
993ror edx, 6
994ror ebp, 25
995add edi, [rsi+(9)*4]
996add edi, [rsp+8*4+((1024+15-(9)) MOD (16))*4]
997add edi, [rsp+((1024+7-(9)) MOD (8))*4]
998xor ebp, edx
999ror edx, 5
1000xor ebp, edx
1001add edi, ebp
1002mov ebx, eax
1003xor eax, [rsp+((1024+7-(9+6)) MOD (8))*4]
1004and ecx, eax
1005xor ecx, [rsp+((1024+7-(9+6)) MOD (8))*4]
1006mov ebp, ebx
1007ror ebx, 2
1008add ecx, edi
1009add edi, [rsp+((1024+7-(9+4)) MOD (8))*4]
1010mov [rsp+((1024+7-(9+4)) MOD (8))*4], edi
1011ror ebp, 22
1012xor ebp, ebx
1013ror ebx, 11
1014xor ebp, ebx
1015add ecx, ebp
1016mov [rsp+((1024+7-(9)) MOD (8))*4], ecx
1017mov edx, [rsp+((1024+7-(10+2)) MOD (8))*4]
1018xor edx, [rsp+((1024+7-(10+1)) MOD (8))*4]
1019and edx, edi
1020xor edx, [rsp+((1024+7-(10+1)) MOD (8))*4]
1021mov ebp, edi
1022ror edi, 6
1023ror ebp, 25
1024add edx, [rsi+(10)*4]
1025add edx, [rsp+8*4+((1024+15-(10)) MOD (16))*4]
1026add edx, [rsp+((1024+7-(10)) MOD (8))*4]
1027xor ebp, edi
1028ror edi, 5
1029xor ebp, edi
1030add edx, ebp
1031mov ebx, ecx
1032xor ecx, [rsp+((1024+7-(10+6)) MOD (8))*4]
1033and eax, ecx
1034xor eax, [rsp+((1024+7-(10+6)) MOD (8))*4]
1035mov ebp, ebx
1036ror ebx, 2
1037add eax, edx
1038add edx, [rsp+((1024+7-(10+4)) MOD (8))*4]
1039mov [rsp+((1024+7-(10+4)) MOD (8))*4], edx
1040ror ebp, 22
1041xor ebp, ebx
1042ror ebx, 11
1043xor ebp, ebx
1044add eax, ebp
1045mov [rsp+((1024+7-(10)) MOD (8))*4], eax
1046mov edi, [rsp+((1024+7-(11+2)) MOD (8))*4]
1047xor edi, [rsp+((1024+7-(11+1)) MOD (8))*4]
1048and edi, edx
1049xor edi, [rsp+((1024+7-(11+1)) MOD (8))*4]
1050mov ebp, edx
1051ror edx, 6
1052ror ebp, 25
1053add edi, [rsi+(11)*4]
1054add edi, [rsp+8*4+((1024+15-(11)) MOD (16))*4]
1055add edi, [rsp+((1024+7-(11)) MOD (8))*4]
1056xor ebp, edx
1057ror edx, 5
1058xor ebp, edx
1059add edi, ebp
1060mov ebx, eax
1061xor eax, [rsp+((1024+7-(11+6)) MOD (8))*4]
1062and ecx, eax
1063xor ecx, [rsp+((1024+7-(11+6)) MOD (8))*4]
1064mov ebp, ebx
1065ror ebx, 2
1066add ecx, edi
1067add edi, [rsp+((1024+7-(11+4)) MOD (8))*4]
1068mov [rsp+((1024+7-(11+4)) MOD (8))*4], edi
1069ror ebp, 22
1070xor ebp, ebx
1071ror ebx, 11
1072xor ebp, ebx
1073add ecx, ebp
1074mov [rsp+((1024+7-(11)) MOD (8))*4], ecx
1075mov edx, [rsp+((1024+7-(12+2)) MOD (8))*4]
1076xor edx, [rsp+((1024+7-(12+1)) MOD (8))*4]
1077and edx, edi
1078xor edx, [rsp+((1024+7-(12+1)) MOD (8))*4]
1079mov ebp, edi
1080ror edi, 6
1081ror ebp, 25
1082add edx, [rsi+(12)*4]
1083add edx, [rsp+8*4+((1024+15-(12)) MOD (16))*4]
1084add edx, [rsp+((1024+7-(12)) MOD (8))*4]
1085xor ebp, edi
1086ror edi, 5
1087xor ebp, edi
1088add edx, ebp
1089mov ebx, ecx
1090xor ecx, [rsp+((1024+7-(12+6)) MOD (8))*4]
1091and eax, ecx
1092xor eax, [rsp+((1024+7-(12+6)) MOD (8))*4]
1093mov ebp, ebx
1094ror ebx, 2
1095add eax, edx
1096add edx, [rsp+((1024+7-(12+4)) MOD (8))*4]
1097mov [rsp+((1024+7-(12+4)) MOD (8))*4], edx
1098ror ebp, 22
1099xor ebp, ebx
1100ror ebx, 11
1101xor ebp, ebx
1102add eax, ebp
1103mov [rsp+((1024+7-(12)) MOD (8))*4], eax
1104mov edi, [rsp+((1024+7-(13+2)) MOD (8))*4]
1105xor edi, [rsp+((1024+7-(13+1)) MOD (8))*4]
1106and edi, edx
1107xor edi, [rsp+((1024+7-(13+1)) MOD (8))*4]
1108mov ebp, edx
1109ror edx, 6
1110ror ebp, 25
1111add edi, [rsi+(13)*4]
1112add edi, [rsp+8*4+((1024+15-(13)) MOD (16))*4]
1113add edi, [rsp+((1024+7-(13)) MOD (8))*4]
1114xor ebp, edx
1115ror edx, 5
1116xor ebp, edx
1117add edi, ebp
1118mov ebx, eax
1119xor eax, [rsp+((1024+7-(13+6)) MOD (8))*4]
1120and ecx, eax
1121xor ecx, [rsp+((1024+7-(13+6)) MOD (8))*4]
1122mov ebp, ebx
1123ror ebx, 2
1124add ecx, edi
1125add edi, [rsp+((1024+7-(13+4)) MOD (8))*4]
1126mov [rsp+((1024+7-(13+4)) MOD (8))*4], edi
1127ror ebp, 22
1128xor ebp, ebx
1129ror ebx, 11
1130xor ebp, ebx
1131add ecx, ebp
1132mov [rsp+((1024+7-(13)) MOD (8))*4], ecx
1133mov edx, [rsp+((1024+7-(14+2)) MOD (8))*4]
1134xor edx, [rsp+((1024+7-(14+1)) MOD (8))*4]
1135and edx, edi
1136xor edx, [rsp+((1024+7-(14+1)) MOD (8))*4]
1137mov ebp, edi
1138ror edi, 6
1139ror ebp, 25
1140add edx, [rsi+(14)*4]
1141add edx, [rsp+8*4+((1024+15-(14)) MOD (16))*4]
1142add edx, [rsp+((1024+7-(14)) MOD (8))*4]
1143xor ebp, edi
1144ror edi, 5
1145xor ebp, edi
1146add edx, ebp
1147mov ebx, ecx
1148xor ecx, [rsp+((1024+7-(14+6)) MOD (8))*4]
1149and eax, ecx
1150xor eax, [rsp+((1024+7-(14+6)) MOD (8))*4]
1151mov ebp, ebx
1152ror ebx, 2
1153add eax, edx
1154add edx, [rsp+((1024+7-(14+4)) MOD (8))*4]
1155mov [rsp+((1024+7-(14+4)) MOD (8))*4], edx
1156ror ebp, 22
1157xor ebp, ebx
1158ror ebx, 11
1159xor ebp, ebx
1160add eax, ebp
1161mov [rsp+((1024+7-(14)) MOD (8))*4], eax
1162mov edi, [rsp+((1024+7-(15+2)) MOD (8))*4]
1163xor edi, [rsp+((1024+7-(15+1)) MOD (8))*4]
1164and edi, edx
1165xor edi, [rsp+((1024+7-(15+1)) MOD (8))*4]
1166mov ebp, edx
1167ror edx, 6
1168ror ebp, 25
1169add edi, [rsi+(15)*4]
1170add edi, [rsp+8*4+((1024+15-(15)) MOD (16))*4]
1171add edi, [rsp+((1024+7-(15)) MOD (8))*4]
1172xor ebp, edx
1173ror edx, 5
1174xor ebp, edx
1175add edi, ebp
1176mov ebx, eax
1177xor eax, [rsp+((1024+7-(15+6)) MOD (8))*4]
1178and ecx, eax
1179xor ecx, [rsp+((1024+7-(15+6)) MOD (8))*4]
1180mov ebp, ebx
1181ror ebx, 2
1182add ecx, edi
1183add edi, [rsp+((1024+7-(15+4)) MOD (8))*4]
1184mov [rsp+((1024+7-(15+4)) MOD (8))*4], edi
1185ror ebp, 22
1186xor ebp, ebx
1187ror ebx, 11
1188xor ebp, ebx
1189add ecx, ebp
1190mov [rsp+((1024+7-(15)) MOD (8))*4], ecx
1191label1:
1192add rsi, 4*16
1193mov edx, [rsp+((1024+7-(0+2)) MOD (8))*4]
1194xor edx, [rsp+((1024+7-(0+1)) MOD (8))*4]
1195and edx, edi
1196xor edx, [rsp+((1024+7-(0+1)) MOD (8))*4]
1197mov ebp, edi
1198ror edi, 6
1199ror ebp, 25
1200xor ebp, edi
1201ror edi, 5
1202xor ebp, edi
1203add edx, ebp
1204mov ebp, [rsp+8*4+((1024+15-((0)-2)) MOD (16))*4]
1205mov edi, [rsp+8*4+((1024+15-((0)-15)) MOD (16))*4]
1206mov ebx, ebp
1207shr ebp, 10
1208ror ebx, 17
1209xor ebp, ebx
1210ror ebx, 2
1211xor ebx, ebp
1212add ebx, [rsp+8*4+((1024+15-((0)-7)) MOD (16))*4]
1213mov ebp, edi
1214shr ebp, 3
1215ror edi, 7
1216add ebx, [rsp+8*4+((1024+15-(0)) MOD (16))*4]
1217xor ebp, edi
1218add edx, [rsi+(0)*4]
1219ror edi, 11
1220add edx, [rsp+((1024+7-(0)) MOD (8))*4]
1221xor ebp, edi
1222add ebp, ebx
1223mov [rsp+8*4+((1024+15-(0)) MOD (16))*4], ebp
1224add edx, ebp
1225mov ebx, ecx
1226xor ecx, [rsp+((1024+7-(0+6)) MOD (8))*4]
1227and eax, ecx
1228xor eax, [rsp+((1024+7-(0+6)) MOD (8))*4]
1229mov ebp, ebx
1230ror ebx, 2
1231add eax, edx
1232add edx, [rsp+((1024+7-(0+4)) MOD (8))*4]
1233mov [rsp+((1024+7-(0+4)) MOD (8))*4], edx
1234ror ebp, 22
1235xor ebp, ebx
1236ror ebx, 11
1237xor ebp, ebx
1238add eax, ebp
1239mov [rsp+((1024+7-(0)) MOD (8))*4], eax
1240mov edi, [rsp+((1024+7-(1+2)) MOD (8))*4]
1241xor edi, [rsp+((1024+7-(1+1)) MOD (8))*4]
1242and edi, edx
1243xor edi, [rsp+((1024+7-(1+1)) MOD (8))*4]
1244mov ebp, edx
1245ror edx, 6
1246ror ebp, 25
1247xor ebp, edx
1248ror edx, 5
1249xor ebp, edx
1250add edi, ebp
1251mov ebp, [rsp+8*4+((1024+15-((1)-2)) MOD (16))*4]
1252mov edx, [rsp+8*4+((1024+15-((1)-15)) MOD (16))*4]
1253mov ebx, ebp
1254shr ebp, 10
1255ror ebx, 17
1256xor ebp, ebx
1257ror ebx, 2
1258xor ebx, ebp
1259add ebx, [rsp+8*4+((1024+15-((1)-7)) MOD (16))*4]
1260mov ebp, edx
1261shr ebp, 3
1262ror edx, 7
1263add ebx, [rsp+8*4+((1024+15-(1)) MOD (16))*4]
1264xor ebp, edx
1265add edi, [rsi+(1)*4]
1266ror edx, 11
1267add edi, [rsp+((1024+7-(1)) MOD (8))*4]
1268xor ebp, edx
1269add ebp, ebx
1270mov [rsp+8*4+((1024+15-(1)) MOD (16))*4], ebp
1271add edi, ebp
1272mov ebx, eax
1273xor eax, [rsp+((1024+7-(1+6)) MOD (8))*4]
1274and ecx, eax
1275xor ecx, [rsp+((1024+7-(1+6)) MOD (8))*4]
1276mov ebp, ebx
1277ror ebx, 2
1278add ecx, edi
1279add edi, [rsp+((1024+7-(1+4)) MOD (8))*4]
1280mov [rsp+((1024+7-(1+4)) MOD (8))*4], edi
1281ror ebp, 22
1282xor ebp, ebx
1283ror ebx, 11
1284xor ebp, ebx
1285add ecx, ebp
1286mov [rsp+((1024+7-(1)) MOD (8))*4], ecx
1287mov edx, [rsp+((1024+7-(2+2)) MOD (8))*4]
1288xor edx, [rsp+((1024+7-(2+1)) MOD (8))*4]
1289and edx, edi
1290xor edx, [rsp+((1024+7-(2+1)) MOD (8))*4]
1291mov ebp, edi
1292ror edi, 6
1293ror ebp, 25
1294xor ebp, edi
1295ror edi, 5
1296xor ebp, edi
1297add edx, ebp
1298mov ebp, [rsp+8*4+((1024+15-((2)-2)) MOD (16))*4]
1299mov edi, [rsp+8*4+((1024+15-((2)-15)) MOD (16))*4]
1300mov ebx, ebp
1301shr ebp, 10
1302ror ebx, 17
1303xor ebp, ebx
1304ror ebx, 2
1305xor ebx, ebp
1306add ebx, [rsp+8*4+((1024+15-((2)-7)) MOD (16))*4]
1307mov ebp, edi
1308shr ebp, 3
1309ror edi, 7
1310add ebx, [rsp+8*4+((1024+15-(2)) MOD (16))*4]
1311xor ebp, edi
1312add edx, [rsi+(2)*4]
1313ror edi, 11
1314add edx, [rsp+((1024+7-(2)) MOD (8))*4]
1315xor ebp, edi
1316add ebp, ebx
1317mov [rsp+8*4+((1024+15-(2)) MOD (16))*4], ebp
1318add edx, ebp
1319mov ebx, ecx
1320xor ecx, [rsp+((1024+7-(2+6)) MOD (8))*4]
1321and eax, ecx
1322xor eax, [rsp+((1024+7-(2+6)) MOD (8))*4]
1323mov ebp, ebx
1324ror ebx, 2
1325add eax, edx
1326add edx, [rsp+((1024+7-(2+4)) MOD (8))*4]
1327mov [rsp+((1024+7-(2+4)) MOD (8))*4], edx
1328ror ebp, 22
1329xor ebp, ebx
1330ror ebx, 11
1331xor ebp, ebx
1332add eax, ebp
1333mov [rsp+((1024+7-(2)) MOD (8))*4], eax
1334mov edi, [rsp+((1024+7-(3+2)) MOD (8))*4]
1335xor edi, [rsp+((1024+7-(3+1)) MOD (8))*4]
1336and edi, edx
1337xor edi, [rsp+((1024+7-(3+1)) MOD (8))*4]
1338mov ebp, edx
1339ror edx, 6
1340ror ebp, 25
1341xor ebp, edx
1342ror edx, 5
1343xor ebp, edx
1344add edi, ebp
1345mov ebp, [rsp+8*4+((1024+15-((3)-2)) MOD (16))*4]
1346mov edx, [rsp+8*4+((1024+15-((3)-15)) MOD (16))*4]
1347mov ebx, ebp
1348shr ebp, 10
1349ror ebx, 17
1350xor ebp, ebx
1351ror ebx, 2
1352xor ebx, ebp
1353add ebx, [rsp+8*4+((1024+15-((3)-7)) MOD (16))*4]
1354mov ebp, edx
1355shr ebp, 3
1356ror edx, 7
1357add ebx, [rsp+8*4+((1024+15-(3)) MOD (16))*4]
1358xor ebp, edx
1359add edi, [rsi+(3)*4]
1360ror edx, 11
1361add edi, [rsp+((1024+7-(3)) MOD (8))*4]
1362xor ebp, edx
1363add ebp, ebx
1364mov [rsp+8*4+((1024+15-(3)) MOD (16))*4], ebp
1365add edi, ebp
1366mov ebx, eax
1367xor eax, [rsp+((1024+7-(3+6)) MOD (8))*4]
1368and ecx, eax
1369xor ecx, [rsp+((1024+7-(3+6)) MOD (8))*4]
1370mov ebp, ebx
1371ror ebx, 2
1372add ecx, edi
1373add edi, [rsp+((1024+7-(3+4)) MOD (8))*4]
1374mov [rsp+((1024+7-(3+4)) MOD (8))*4], edi
1375ror ebp, 22
1376xor ebp, ebx
1377ror ebx, 11
1378xor ebp, ebx
1379add ecx, ebp
1380mov [rsp+((1024+7-(3)) MOD (8))*4], ecx
1381mov edx, [rsp+((1024+7-(4+2)) MOD (8))*4]
1382xor edx, [rsp+((1024+7-(4+1)) MOD (8))*4]
1383and edx, edi
1384xor edx, [rsp+((1024+7-(4+1)) MOD (8))*4]
1385mov ebp, edi
1386ror edi, 6
1387ror ebp, 25
1388xor ebp, edi
1389ror edi, 5
1390xor ebp, edi
1391add edx, ebp
1392mov ebp, [rsp+8*4+((1024+15-((4)-2)) MOD (16))*4]
1393mov edi, [rsp+8*4+((1024+15-((4)-15)) MOD (16))*4]
1394mov ebx, ebp
1395shr ebp, 10
1396ror ebx, 17
1397xor ebp, ebx
1398ror ebx, 2
1399xor ebx, ebp
1400add ebx, [rsp+8*4+((1024+15-((4)-7)) MOD (16))*4]
1401mov ebp, edi
1402shr ebp, 3
1403ror edi, 7
1404add ebx, [rsp+8*4+((1024+15-(4)) MOD (16))*4]
1405xor ebp, edi
1406add edx, [rsi+(4)*4]
1407ror edi, 11
1408add edx, [rsp+((1024+7-(4)) MOD (8))*4]
1409xor ebp, edi
1410add ebp, ebx
1411mov [rsp+8*4+((1024+15-(4)) MOD (16))*4], ebp
1412add edx, ebp
1413mov ebx, ecx
1414xor ecx, [rsp+((1024+7-(4+6)) MOD (8))*4]
1415and eax, ecx
1416xor eax, [rsp+((1024+7-(4+6)) MOD (8))*4]
1417mov ebp, ebx
1418ror ebx, 2
1419add eax, edx
1420add edx, [rsp+((1024+7-(4+4)) MOD (8))*4]
1421mov [rsp+((1024+7-(4+4)) MOD (8))*4], edx
1422ror ebp, 22
1423xor ebp, ebx
1424ror ebx, 11
1425xor ebp, ebx
1426add eax, ebp
1427mov [rsp+((1024+7-(4)) MOD (8))*4], eax
1428mov edi, [rsp+((1024+7-(5+2)) MOD (8))*4]
1429xor edi, [rsp+((1024+7-(5+1)) MOD (8))*4]
1430and edi, edx
1431xor edi, [rsp+((1024+7-(5+1)) MOD (8))*4]
1432mov ebp, edx
1433ror edx, 6
1434ror ebp, 25
1435xor ebp, edx
1436ror edx, 5
1437xor ebp, edx
1438add edi, ebp
1439mov ebp, [rsp+8*4+((1024+15-((5)-2)) MOD (16))*4]
1440mov edx, [rsp+8*4+((1024+15-((5)-15)) MOD (16))*4]
1441mov ebx, ebp
1442shr ebp, 10
1443ror ebx, 17
1444xor ebp, ebx
1445ror ebx, 2
1446xor ebx, ebp
1447add ebx, [rsp+8*4+((1024+15-((5)-7)) MOD (16))*4]
1448mov ebp, edx
1449shr ebp, 3
1450ror edx, 7
1451add ebx, [rsp+8*4+((1024+15-(5)) MOD (16))*4]
1452xor ebp, edx
1453add edi, [rsi+(5)*4]
1454ror edx, 11
1455add edi, [rsp+((1024+7-(5)) MOD (8))*4]
1456xor ebp, edx
1457add ebp, ebx
1458mov [rsp+8*4+((1024+15-(5)) MOD (16))*4], ebp
1459add edi, ebp
1460mov ebx, eax
1461xor eax, [rsp+((1024+7-(5+6)) MOD (8))*4]
1462and ecx, eax
1463xor ecx, [rsp+((1024+7-(5+6)) MOD (8))*4]
1464mov ebp, ebx
1465ror ebx, 2
1466add ecx, edi
1467add edi, [rsp+((1024+7-(5+4)) MOD (8))*4]
1468mov [rsp+((1024+7-(5+4)) MOD (8))*4], edi
1469ror ebp, 22
1470xor ebp, ebx
1471ror ebx, 11
1472xor ebp, ebx
1473add ecx, ebp
1474mov [rsp+((1024+7-(5)) MOD (8))*4], ecx
1475mov edx, [rsp+((1024+7-(6+2)) MOD (8))*4]
1476xor edx, [rsp+((1024+7-(6+1)) MOD (8))*4]
1477and edx, edi
1478xor edx, [rsp+((1024+7-(6+1)) MOD (8))*4]
1479mov ebp, edi
1480ror edi, 6
1481ror ebp, 25
1482xor ebp, edi
1483ror edi, 5
1484xor ebp, edi
1485add edx, ebp
1486mov ebp, [rsp+8*4+((1024+15-((6)-2)) MOD (16))*4]
1487mov edi, [rsp+8*4+((1024+15-((6)-15)) MOD (16))*4]
1488mov ebx, ebp
1489shr ebp, 10
1490ror ebx, 17
1491xor ebp, ebx
1492ror ebx, 2
1493xor ebx, ebp
1494add ebx, [rsp+8*4+((1024+15-((6)-7)) MOD (16))*4]
1495mov ebp, edi
1496shr ebp, 3
1497ror edi, 7
1498add ebx, [rsp+8*4+((1024+15-(6)) MOD (16))*4]
1499xor ebp, edi
1500add edx, [rsi+(6)*4]
1501ror edi, 11
1502add edx, [rsp+((1024+7-(6)) MOD (8))*4]
1503xor ebp, edi
1504add ebp, ebx
1505mov [rsp+8*4+((1024+15-(6)) MOD (16))*4], ebp
1506add edx, ebp
1507mov ebx, ecx
1508xor ecx, [rsp+((1024+7-(6+6)) MOD (8))*4]
1509and eax, ecx
1510xor eax, [rsp+((1024+7-(6+6)) MOD (8))*4]
1511mov ebp, ebx
1512ror ebx, 2
1513add eax, edx
1514add edx, [rsp+((1024+7-(6+4)) MOD (8))*4]
1515mov [rsp+((1024+7-(6+4)) MOD (8))*4], edx
1516ror ebp, 22
1517xor ebp, ebx
1518ror ebx, 11
1519xor ebp, ebx
1520add eax, ebp
1521mov [rsp+((1024+7-(6)) MOD (8))*4], eax
1522mov edi, [rsp+((1024+7-(7+2)) MOD (8))*4]
1523xor edi, [rsp+((1024+7-(7+1)) MOD (8))*4]
1524and edi, edx
1525xor edi, [rsp+((1024+7-(7+1)) MOD (8))*4]
1526mov ebp, edx
1527ror edx, 6
1528ror ebp, 25
1529xor ebp, edx
1530ror edx, 5
1531xor ebp, edx
1532add edi, ebp
1533mov ebp, [rsp+8*4+((1024+15-((7)-2)) MOD (16))*4]
1534mov edx, [rsp+8*4+((1024+15-((7)-15)) MOD (16))*4]
1535mov ebx, ebp
1536shr ebp, 10
1537ror ebx, 17
1538xor ebp, ebx
1539ror ebx, 2
1540xor ebx, ebp
1541add ebx, [rsp+8*4+((1024+15-((7)-7)) MOD (16))*4]
1542mov ebp, edx
1543shr ebp, 3
1544ror edx, 7
1545add ebx, [rsp+8*4+((1024+15-(7)) MOD (16))*4]
1546xor ebp, edx
1547add edi, [rsi+(7)*4]
1548ror edx, 11
1549add edi, [rsp+((1024+7-(7)) MOD (8))*4]
1550xor ebp, edx
1551add ebp, ebx
1552mov [rsp+8*4+((1024+15-(7)) MOD (16))*4], ebp
1553add edi, ebp
1554mov ebx, eax
1555xor eax, [rsp+((1024+7-(7+6)) MOD (8))*4]
1556and ecx, eax
1557xor ecx, [rsp+((1024+7-(7+6)) MOD (8))*4]
1558mov ebp, ebx
1559ror ebx, 2
1560add ecx, edi
1561add edi, [rsp+((1024+7-(7+4)) MOD (8))*4]
1562mov [rsp+((1024+7-(7+4)) MOD (8))*4], edi
1563ror ebp, 22
1564xor ebp, ebx
1565ror ebx, 11
1566xor ebp, ebx
1567add ecx, ebp
1568mov [rsp+((1024+7-(7)) MOD (8))*4], ecx
1569mov edx, [rsp+((1024+7-(8+2)) MOD (8))*4]
1570xor edx, [rsp+((1024+7-(8+1)) MOD (8))*4]
1571and edx, edi
1572xor edx, [rsp+((1024+7-(8+1)) MOD (8))*4]
1573mov ebp, edi
1574ror edi, 6
1575ror ebp, 25
1576xor ebp, edi
1577ror edi, 5
1578xor ebp, edi
1579add edx, ebp
1580mov ebp, [rsp+8*4+((1024+15-((8)-2)) MOD (16))*4]
1581mov edi, [rsp+8*4+((1024+15-((8)-15)) MOD (16))*4]
1582mov ebx, ebp
1583shr ebp, 10
1584ror ebx, 17
1585xor ebp, ebx
1586ror ebx, 2
1587xor ebx, ebp
1588add ebx, [rsp+8*4+((1024+15-((8)-7)) MOD (16))*4]
1589mov ebp, edi
1590shr ebp, 3
1591ror edi, 7
1592add ebx, [rsp+8*4+((1024+15-(8)) MOD (16))*4]
1593xor ebp, edi
1594add edx, [rsi+(8)*4]
1595ror edi, 11
1596add edx, [rsp+((1024+7-(8)) MOD (8))*4]
1597xor ebp, edi
1598add ebp, ebx
1599mov [rsp+8*4+((1024+15-(8)) MOD (16))*4], ebp
1600add edx, ebp
1601mov ebx, ecx
1602xor ecx, [rsp+((1024+7-(8+6)) MOD (8))*4]
1603and eax, ecx
1604xor eax, [rsp+((1024+7-(8+6)) MOD (8))*4]
1605mov ebp, ebx
1606ror ebx, 2
1607add eax, edx
1608add edx, [rsp+((1024+7-(8+4)) MOD (8))*4]
1609mov [rsp+((1024+7-(8+4)) MOD (8))*4], edx
1610ror ebp, 22
1611xor ebp, ebx
1612ror ebx, 11
1613xor ebp, ebx
1614add eax, ebp
1615mov [rsp+((1024+7-(8)) MOD (8))*4], eax
1616mov edi, [rsp+((1024+7-(9+2)) MOD (8))*4]
1617xor edi, [rsp+((1024+7-(9+1)) MOD (8))*4]
1618and edi, edx
1619xor edi, [rsp+((1024+7-(9+1)) MOD (8))*4]
1620mov ebp, edx
1621ror edx, 6
1622ror ebp, 25
1623xor ebp, edx
1624ror edx, 5
1625xor ebp, edx
1626add edi, ebp
1627mov ebp, [rsp+8*4+((1024+15-((9)-2)) MOD (16))*4]
1628mov edx, [rsp+8*4+((1024+15-((9)-15)) MOD (16))*4]
1629mov ebx, ebp
1630shr ebp, 10
1631ror ebx, 17
1632xor ebp, ebx
1633ror ebx, 2
1634xor ebx, ebp
1635add ebx, [rsp+8*4+((1024+15-((9)-7)) MOD (16))*4]
1636mov ebp, edx
1637shr ebp, 3
1638ror edx, 7
1639add ebx, [rsp+8*4+((1024+15-(9)) MOD (16))*4]
1640xor ebp, edx
1641add edi, [rsi+(9)*4]
1642ror edx, 11
1643add edi, [rsp+((1024+7-(9)) MOD (8))*4]
1644xor ebp, edx
1645add ebp, ebx
1646mov [rsp+8*4+((1024+15-(9)) MOD (16))*4], ebp
1647add edi, ebp
1648mov ebx, eax
1649xor eax, [rsp+((1024+7-(9+6)) MOD (8))*4]
1650and ecx, eax
1651xor ecx, [rsp+((1024+7-(9+6)) MOD (8))*4]
1652mov ebp, ebx
1653ror ebx, 2
1654add ecx, edi
1655add edi, [rsp+((1024+7-(9+4)) MOD (8))*4]
1656mov [rsp+((1024+7-(9+4)) MOD (8))*4], edi
1657ror ebp, 22
1658xor ebp, ebx
1659ror ebx, 11
1660xor ebp, ebx
1661add ecx, ebp
1662mov [rsp+((1024+7-(9)) MOD (8))*4], ecx
1663mov edx, [rsp+((1024+7-(10+2)) MOD (8))*4]
1664xor edx, [rsp+((1024+7-(10+1)) MOD (8))*4]
1665and edx, edi
1666xor edx, [rsp+((1024+7-(10+1)) MOD (8))*4]
1667mov ebp, edi
1668ror edi, 6
1669ror ebp, 25
1670xor ebp, edi
1671ror edi, 5
1672xor ebp, edi
1673add edx, ebp
1674mov ebp, [rsp+8*4+((1024+15-((10)-2)) MOD (16))*4]
1675mov edi, [rsp+8*4+((1024+15-((10)-15)) MOD (16))*4]
1676mov ebx, ebp
1677shr ebp, 10
1678ror ebx, 17
1679xor ebp, ebx
1680ror ebx, 2
1681xor ebx, ebp
1682add ebx, [rsp+8*4+((1024+15-((10)-7)) MOD (16))*4]
1683mov ebp, edi
1684shr ebp, 3
1685ror edi, 7
1686add ebx, [rsp+8*4+((1024+15-(10)) MOD (16))*4]
1687xor ebp, edi
1688add edx, [rsi+(10)*4]
1689ror edi, 11
1690add edx, [rsp+((1024+7-(10)) MOD (8))*4]
1691xor ebp, edi
1692add ebp, ebx
1693mov [rsp+8*4+((1024+15-(10)) MOD (16))*4], ebp
1694add edx, ebp
1695mov ebx, ecx
1696xor ecx, [rsp+((1024+7-(10+6)) MOD (8))*4]
1697and eax, ecx
1698xor eax, [rsp+((1024+7-(10+6)) MOD (8))*4]
1699mov ebp, ebx
1700ror ebx, 2
1701add eax, edx
1702add edx, [rsp+((1024+7-(10+4)) MOD (8))*4]
1703mov [rsp+((1024+7-(10+4)) MOD (8))*4], edx
1704ror ebp, 22
1705xor ebp, ebx
1706ror ebx, 11
1707xor ebp, ebx
1708add eax, ebp
1709mov [rsp+((1024+7-(10)) MOD (8))*4], eax
1710mov edi, [rsp+((1024+7-(11+2)) MOD (8))*4]
1711xor edi, [rsp+((1024+7-(11+1)) MOD (8))*4]
1712and edi, edx
1713xor edi, [rsp+((1024+7-(11+1)) MOD (8))*4]
1714mov ebp, edx
1715ror edx, 6
1716ror ebp, 25
1717xor ebp, edx
1718ror edx, 5
1719xor ebp, edx
1720add edi, ebp
1721mov ebp, [rsp+8*4+((1024+15-((11)-2)) MOD (16))*4]
1722mov edx, [rsp+8*4+((1024+15-((11)-15)) MOD (16))*4]
1723mov ebx, ebp
1724shr ebp, 10
1725ror ebx, 17
1726xor ebp, ebx
1727ror ebx, 2
1728xor ebx, ebp
1729add ebx, [rsp+8*4+((1024+15-((11)-7)) MOD (16))*4]
1730mov ebp, edx
1731shr ebp, 3
1732ror edx, 7
1733add ebx, [rsp+8*4+((1024+15-(11)) MOD (16))*4]
1734xor ebp, edx
1735add edi, [rsi+(11)*4]
1736ror edx, 11
1737add edi, [rsp+((1024+7-(11)) MOD (8))*4]
1738xor ebp, edx
1739add ebp, ebx
1740mov [rsp+8*4+((1024+15-(11)) MOD (16))*4], ebp
1741add edi, ebp
1742mov ebx, eax
1743xor eax, [rsp+((1024+7-(11+6)) MOD (8))*4]
1744and ecx, eax
1745xor ecx, [rsp+((1024+7-(11+6)) MOD (8))*4]
1746mov ebp, ebx
1747ror ebx, 2
1748add ecx, edi
1749add edi, [rsp+((1024+7-(11+4)) MOD (8))*4]
1750mov [rsp+((1024+7-(11+4)) MOD (8))*4], edi
1751ror ebp, 22
1752xor ebp, ebx
1753ror ebx, 11
1754xor ebp, ebx
1755add ecx, ebp
1756mov [rsp+((1024+7-(11)) MOD (8))*4], ecx
1757mov edx, [rsp+((1024+7-(12+2)) MOD (8))*4]
1758xor edx, [rsp+((1024+7-(12+1)) MOD (8))*4]
1759and edx, edi
1760xor edx, [rsp+((1024+7-(12+1)) MOD (8))*4]
1761mov ebp, edi
1762ror edi, 6
1763ror ebp, 25
1764xor ebp, edi
1765ror edi, 5
1766xor ebp, edi
1767add edx, ebp
1768mov ebp, [rsp+8*4+((1024+15-((12)-2)) MOD (16))*4]
1769mov edi, [rsp+8*4+((1024+15-((12)-15)) MOD (16))*4]
1770mov ebx, ebp
1771shr ebp, 10
1772ror ebx, 17
1773xor ebp, ebx
1774ror ebx, 2
1775xor ebx, ebp
1776add ebx, [rsp+8*4+((1024+15-((12)-7)) MOD (16))*4]
1777mov ebp, edi
1778shr ebp, 3
1779ror edi, 7
1780add ebx, [rsp+8*4+((1024+15-(12)) MOD (16))*4]
1781xor ebp, edi
1782add edx, [rsi+(12)*4]
1783ror edi, 11
1784add edx, [rsp+((1024+7-(12)) MOD (8))*4]
1785xor ebp, edi
1786add ebp, ebx
1787mov [rsp+8*4+((1024+15-(12)) MOD (16))*4], ebp
1788add edx, ebp
1789mov ebx, ecx
1790xor ecx, [rsp+((1024+7-(12+6)) MOD (8))*4]
1791and eax, ecx
1792xor eax, [rsp+((1024+7-(12+6)) MOD (8))*4]
1793mov ebp, ebx
1794ror ebx, 2
1795add eax, edx
1796add edx, [rsp+((1024+7-(12+4)) MOD (8))*4]
1797mov [rsp+((1024+7-(12+4)) MOD (8))*4], edx
1798ror ebp, 22
1799xor ebp, ebx
1800ror ebx, 11
1801xor ebp, ebx
1802add eax, ebp
1803mov [rsp+((1024+7-(12)) MOD (8))*4], eax
1804mov edi, [rsp+((1024+7-(13+2)) MOD (8))*4]
1805xor edi, [rsp+((1024+7-(13+1)) MOD (8))*4]
1806and edi, edx
1807xor edi, [rsp+((1024+7-(13+1)) MOD (8))*4]
1808mov ebp, edx
1809ror edx, 6
1810ror ebp, 25
1811xor ebp, edx
1812ror edx, 5
1813xor ebp, edx
1814add edi, ebp
1815mov ebp, [rsp+8*4+((1024+15-((13)-2)) MOD (16))*4]
1816mov edx, [rsp+8*4+((1024+15-((13)-15)) MOD (16))*4]
1817mov ebx, ebp
1818shr ebp, 10
1819ror ebx, 17
1820xor ebp, ebx
1821ror ebx, 2
1822xor ebx, ebp
1823add ebx, [rsp+8*4+((1024+15-((13)-7)) MOD (16))*4]
1824mov ebp, edx
1825shr ebp, 3
1826ror edx, 7
1827add ebx, [rsp+8*4+((1024+15-(13)) MOD (16))*4]
1828xor ebp, edx
1829add edi, [rsi+(13)*4]
1830ror edx, 11
1831add edi, [rsp+((1024+7-(13)) MOD (8))*4]
1832xor ebp, edx
1833add ebp, ebx
1834mov [rsp+8*4+((1024+15-(13)) MOD (16))*4], ebp
1835add edi, ebp
1836mov ebx, eax
1837xor eax, [rsp+((1024+7-(13+6)) MOD (8))*4]
1838and ecx, eax
1839xor ecx, [rsp+((1024+7-(13+6)) MOD (8))*4]
1840mov ebp, ebx
1841ror ebx, 2
1842add ecx, edi
1843add edi, [rsp+((1024+7-(13+4)) MOD (8))*4]
1844mov [rsp+((1024+7-(13+4)) MOD (8))*4], edi
1845ror ebp, 22
1846xor ebp, ebx
1847ror ebx, 11
1848xor ebp, ebx
1849add ecx, ebp
1850mov [rsp+((1024+7-(13)) MOD (8))*4], ecx
1851mov edx, [rsp+((1024+7-(14+2)) MOD (8))*4]
1852xor edx, [rsp+((1024+7-(14+1)) MOD (8))*4]
1853and edx, edi
1854xor edx, [rsp+((1024+7-(14+1)) MOD (8))*4]
1855mov ebp, edi
1856ror edi, 6
1857ror ebp, 25
1858xor ebp, edi
1859ror edi, 5
1860xor ebp, edi
1861add edx, ebp
1862mov ebp, [rsp+8*4+((1024+15-((14)-2)) MOD (16))*4]
1863mov edi, [rsp+8*4+((1024+15-((14)-15)) MOD (16))*4]
1864mov ebx, ebp
1865shr ebp, 10
1866ror ebx, 17
1867xor ebp, ebx
1868ror ebx, 2
1869xor ebx, ebp
1870add ebx, [rsp+8*4+((1024+15-((14)-7)) MOD (16))*4]
1871mov ebp, edi
1872shr ebp, 3
1873ror edi, 7
1874add ebx, [rsp+8*4+((1024+15-(14)) MOD (16))*4]
1875xor ebp, edi
1876add edx, [rsi+(14)*4]
1877ror edi, 11
1878add edx, [rsp+((1024+7-(14)) MOD (8))*4]
1879xor ebp, edi
1880add ebp, ebx
1881mov [rsp+8*4+((1024+15-(14)) MOD (16))*4], ebp
1882add edx, ebp
1883mov ebx, ecx
1884xor ecx, [rsp+((1024+7-(14+6)) MOD (8))*4]
1885and eax, ecx
1886xor eax, [rsp+((1024+7-(14+6)) MOD (8))*4]
1887mov ebp, ebx
1888ror ebx, 2
1889add eax, edx
1890add edx, [rsp+((1024+7-(14+4)) MOD (8))*4]
1891mov [rsp+((1024+7-(14+4)) MOD (8))*4], edx
1892ror ebp, 22
1893xor ebp, ebx
1894ror ebx, 11
1895xor ebp, ebx
1896add eax, ebp
1897mov [rsp+((1024+7-(14)) MOD (8))*4], eax
1898mov edi, [rsp+((1024+7-(15+2)) MOD (8))*4]
1899xor edi, [rsp+((1024+7-(15+1)) MOD (8))*4]
1900and edi, edx
1901xor edi, [rsp+((1024+7-(15+1)) MOD (8))*4]
1902mov ebp, edx
1903ror edx, 6
1904ror ebp, 25
1905xor ebp, edx
1906ror edx, 5
1907xor ebp, edx
1908add edi, ebp
1909mov ebp, [rsp+8*4+((1024+15-((15)-2)) MOD (16))*4]
1910mov edx, [rsp+8*4+((1024+15-((15)-15)) MOD (16))*4]
1911mov ebx, ebp
1912shr ebp, 10
1913ror ebx, 17
1914xor ebp, ebx
1915ror ebx, 2
1916xor ebx, ebp
1917add ebx, [rsp+8*4+((1024+15-((15)-7)) MOD (16))*4]
1918mov ebp, edx
1919shr ebp, 3
1920ror edx, 7
1921add ebx, [rsp+8*4+((1024+15-(15)) MOD (16))*4]
1922xor ebp, edx
1923add edi, [rsi+(15)*4]
1924ror edx, 11
1925add edi, [rsp+((1024+7-(15)) MOD (8))*4]
1926xor ebp, edx
1927add ebp, ebx
1928mov [rsp+8*4+((1024+15-(15)) MOD (16))*4], ebp
1929add edi, ebp
1930mov ebx, eax
1931xor eax, [rsp+((1024+7-(15+6)) MOD (8))*4]
1932and ecx, eax
1933xor ecx, [rsp+((1024+7-(15+6)) MOD (8))*4]
1934mov ebp, ebx
1935ror ebx, 2
1936add ecx, edi
1937add edi, [rsp+((1024+7-(15+4)) MOD (8))*4]
1938mov [rsp+((1024+7-(15+4)) MOD (8))*4], edi
1939ror ebp, 22
1940xor ebp, ebx
1941ror ebx, 11
1942xor ebp, ebx
1943add ecx, ebp
1944mov [rsp+((1024+7-(15)) MOD (8))*4], ecx
1945cmp rsi, [rsp+8*4+16*4+0*8]
1946jne label1
1947mov rcx, [rsp+8*4+16*4+1*8]
1948movdqa xmm1, XMMWORD PTR [rcx+1*16]
1949movdqa xmm0, XMMWORD PTR [rcx+0*16]
1950paddd xmm1, [rsp+((1024+7-(0+3)) MOD (8))*4]
1951paddd xmm0, [rsp+((1024+7-(0+7)) MOD (8))*4]
1952movdqa [rcx+1*16], xmm1
1953movdqa [rcx+0*16], xmm0
1954mov rdx, [rsp+8*4+16*4+2*8]
1955add rdx, 64
1956mov [rsp+8*4+16*4+2*8], rdx
1957cmp rdx, [rsp+8*4+16*4+3*8]
1958jne label0
1959add             rsp, 8*4 + 16*4 + 4*8 + 8
1960pop             rbp
1961pop             rbx
1962pop             rdi
1963pop             rsi
1964ret
1965X86_SHA256_HashBlocks ENDP
1966
1967_TEXT ENDS
1968END
Note: See TracBrowser for help on using the repository browser.