blob: ff78fc049fa804794841198d111ae607dec37bec [file] [log] [blame]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001### Generated by hash_md5_sha_x86-64.S.sh ###
Denys Vlasenko947bef02022-01-03 13:00:07 +01002
3#if CONFIG_SHA1_SMALL == 0 && defined(__GNUC__) && defined(__x86_64__)
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01004 .section .text.sha1_process_block64,"ax",@progbits
Denys Vlasenko947bef02022-01-03 13:00:07 +01005 .globl sha1_process_block64
6 .hidden sha1_process_block64
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01007 .type sha1_process_block64, @function
Denys Vlasenko947bef02022-01-03 13:00:07 +01008
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +01009 .balign 8 # allow decoders to fetch at least 5 first insns
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010010sha1_process_block64:
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +010011 pushq %rbp # 1 byte insn
12 pushq %rbx # 1 byte insn
13 pushq %r15 # 2 byte insn
14 pushq %r14 # 2 byte insn
15 pushq %r13 # 2 byte insn
16 pushq %r12 # 2 byte insn
Denys Vlasenko947bef02022-01-03 13:00:07 +010017 pushq %rdi # we need ctx at the end
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010018
19#Register and stack use:
20# eax..edx: a..d
21# ebp: e
22# esi,edi: temps
23# -32+4*n(%rsp),r8...r15: W[0..7,8..15]
Denys Vlasenko43870772022-01-03 13:14:09 +010024# (TODO: actually W[0..7] are used a bit more often, put _them_ into r8..r15?)
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010025 movl $3, %eax
261:
27 movq (%rdi,%rax,8), %rsi
28 bswapq %rsi
29 rolq $32, %rsi
30 movq %rsi, -32(%rsp,%rax,8)
31 decl %eax
32 jns 1b
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +010033
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010034 movl 80(%rdi), %eax # a = ctx->hash[0]
35 movl 84(%rdi), %ebx # b = ctx->hash[1]
36 movl 88(%rdi), %ecx # c = ctx->hash[2]
37 movl 92(%rdi), %edx # d = ctx->hash[3]
38 movl 96(%rdi), %ebp # e = ctx->hash[4]
39
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +010040 movq 4*8(%rdi), %r8
41 movq 4*10(%rdi), %r10
42 bswapq %r8
43 bswapq %r10
44 movq 4*12(%rdi), %r12
45 movq 4*14(%rdi), %r14
46 bswapq %r12
47 bswapq %r14
48 movl %r8d, %r9d
49 shrq $32, %r8
50 movl %r10d, %r11d
51 shrq $32, %r10
52 movl %r12d, %r13d
53 shrq $32, %r12
54 movl %r14d, %r15d
55 shrq $32, %r14
56
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010057# 0
58 # W[0], already in %esi
59 movl %ecx, %edi # c
60 xorl %edx, %edi # ^d
61 andl %ebx, %edi # &b
62 xorl %edx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +010063 leal 0x5A827999(%rbp,%rsi), %ebp # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010064 addl %edi, %ebp # e += (((c ^ d) & b) ^ d)
65 movl %eax, %esi #
66 roll $5, %esi # rotl32(a,5)
67 addl %esi, %ebp # e += rotl32(a,5)
68 rorl $2, %ebx # b = rotl32(b,30)
69# 1
70 movl -32+4*1(%rsp), %esi # W[n]
71 movl %ebx, %edi # c
72 xorl %ecx, %edi # ^d
73 andl %eax, %edi # &b
74 xorl %ecx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +010075 leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010076 addl %edi, %edx # e += (((c ^ d) & b) ^ d)
77 movl %ebp, %esi #
78 roll $5, %esi # rotl32(a,5)
79 addl %esi, %edx # e += rotl32(a,5)
80 rorl $2, %eax # b = rotl32(b,30)
81# 2
82 movl -32+4*2(%rsp), %esi # W[n]
83 movl %eax, %edi # c
84 xorl %ebx, %edi # ^d
85 andl %ebp, %edi # &b
86 xorl %ebx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +010087 leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +010088 addl %edi, %ecx # e += (((c ^ d) & b) ^ d)
89 movl %edx, %esi #
90 roll $5, %esi # rotl32(a,5)
91 addl %esi, %ecx # e += rotl32(a,5)
92 rorl $2, %ebp # b = rotl32(b,30)
93# 3
94 movl -32+4*3(%rsp), %esi # W[n]
95 movl %ebp, %edi # c
96 xorl %eax, %edi # ^d
97 andl %edx, %edi # &b
98 xorl %eax, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +010099 leal 0x5A827999(%rbx,%rsi), %ebx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100100 addl %edi, %ebx # e += (((c ^ d) & b) ^ d)
101 movl %ecx, %esi #
102 roll $5, %esi # rotl32(a,5)
103 addl %esi, %ebx # e += rotl32(a,5)
104 rorl $2, %edx # b = rotl32(b,30)
105# 4
106 movl -32+4*4(%rsp), %esi # W[n]
107 movl %edx, %edi # c
108 xorl %ebp, %edi # ^d
109 andl %ecx, %edi # &b
110 xorl %ebp, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100111 leal 0x5A827999(%rax,%rsi), %eax # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100112 addl %edi, %eax # e += (((c ^ d) & b) ^ d)
113 movl %ebx, %esi #
114 roll $5, %esi # rotl32(a,5)
115 addl %esi, %eax # e += rotl32(a,5)
116 rorl $2, %ecx # b = rotl32(b,30)
117# 5
118 movl -32+4*5(%rsp), %esi # W[n]
119 movl %ecx, %edi # c
120 xorl %edx, %edi # ^d
121 andl %ebx, %edi # &b
122 xorl %edx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100123 leal 0x5A827999(%rbp,%rsi), %ebp # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100124 addl %edi, %ebp # e += (((c ^ d) & b) ^ d)
125 movl %eax, %esi #
126 roll $5, %esi # rotl32(a,5)
127 addl %esi, %ebp # e += rotl32(a,5)
128 rorl $2, %ebx # b = rotl32(b,30)
129# 6
130 movl -32+4*6(%rsp), %esi # W[n]
131 movl %ebx, %edi # c
132 xorl %ecx, %edi # ^d
133 andl %eax, %edi # &b
134 xorl %ecx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100135 leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100136 addl %edi, %edx # e += (((c ^ d) & b) ^ d)
137 movl %ebp, %esi #
138 roll $5, %esi # rotl32(a,5)
139 addl %esi, %edx # e += rotl32(a,5)
140 rorl $2, %eax # b = rotl32(b,30)
141# 7
142 movl -32+4*7(%rsp), %esi # W[n]
143 movl %eax, %edi # c
144 xorl %ebx, %edi # ^d
145 andl %ebp, %edi # &b
146 xorl %ebx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100147 leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100148 addl %edi, %ecx # e += (((c ^ d) & b) ^ d)
149 movl %edx, %esi #
150 roll $5, %esi # rotl32(a,5)
151 addl %esi, %ecx # e += rotl32(a,5)
152 rorl $2, %ebp # b = rotl32(b,30)
153# 8
154 # W[n], in %r8
155 movl %ebp, %edi # c
156 xorl %eax, %edi # ^d
157 andl %edx, %edi # &b
158 xorl %eax, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100159 leal 0x5A827999(%rbx,%r8), %ebx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100160 addl %edi, %ebx # e += (((c ^ d) & b) ^ d)
161 movl %ecx, %esi #
162 roll $5, %esi # rotl32(a,5)
163 addl %esi, %ebx # e += rotl32(a,5)
164 rorl $2, %edx # b = rotl32(b,30)
165# 9
166 # W[n], in %r9
167 movl %edx, %edi # c
168 xorl %ebp, %edi # ^d
169 andl %ecx, %edi # &b
170 xorl %ebp, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100171 leal 0x5A827999(%rax,%r9), %eax # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100172 addl %edi, %eax # e += (((c ^ d) & b) ^ d)
173 movl %ebx, %esi #
174 roll $5, %esi # rotl32(a,5)
175 addl %esi, %eax # e += rotl32(a,5)
176 rorl $2, %ecx # b = rotl32(b,30)
177# 10
178 # W[n], in %r10
179 movl %ecx, %edi # c
180 xorl %edx, %edi # ^d
181 andl %ebx, %edi # &b
182 xorl %edx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100183 leal 0x5A827999(%rbp,%r10), %ebp # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100184 addl %edi, %ebp # e += (((c ^ d) & b) ^ d)
185 movl %eax, %esi #
186 roll $5, %esi # rotl32(a,5)
187 addl %esi, %ebp # e += rotl32(a,5)
188 rorl $2, %ebx # b = rotl32(b,30)
189# 11
190 # W[n], in %r11
191 movl %ebx, %edi # c
192 xorl %ecx, %edi # ^d
193 andl %eax, %edi # &b
194 xorl %ecx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100195 leal 0x5A827999(%rdx,%r11), %edx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100196 addl %edi, %edx # e += (((c ^ d) & b) ^ d)
197 movl %ebp, %esi #
198 roll $5, %esi # rotl32(a,5)
199 addl %esi, %edx # e += rotl32(a,5)
200 rorl $2, %eax # b = rotl32(b,30)
201# 12
202 # W[n], in %r12
203 movl %eax, %edi # c
204 xorl %ebx, %edi # ^d
205 andl %ebp, %edi # &b
206 xorl %ebx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100207 leal 0x5A827999(%rcx,%r12), %ecx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100208 addl %edi, %ecx # e += (((c ^ d) & b) ^ d)
209 movl %edx, %esi #
210 roll $5, %esi # rotl32(a,5)
211 addl %esi, %ecx # e += rotl32(a,5)
212 rorl $2, %ebp # b = rotl32(b,30)
213# 13
214 # W[n], in %r13
215 movl %ebp, %edi # c
216 xorl %eax, %edi # ^d
217 andl %edx, %edi # &b
218 xorl %eax, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100219 leal 0x5A827999(%rbx,%r13), %ebx # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100220 addl %edi, %ebx # e += (((c ^ d) & b) ^ d)
221 movl %ecx, %esi #
222 roll $5, %esi # rotl32(a,5)
223 addl %esi, %ebx # e += rotl32(a,5)
224 rorl $2, %edx # b = rotl32(b,30)
225# 14
226 # W[n], in %r14
227 movl %edx, %edi # c
228 xorl %ebp, %edi # ^d
229 andl %ecx, %edi # &b
230 xorl %ebp, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100231 leal 0x5A827999(%rax,%r14), %eax # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100232 addl %edi, %eax # e += (((c ^ d) & b) ^ d)
233 movl %ebx, %esi #
234 roll $5, %esi # rotl32(a,5)
235 addl %esi, %eax # e += rotl32(a,5)
236 rorl $2, %ecx # b = rotl32(b,30)
237# 15
238 # W[n], in %r15
239 movl %ecx, %edi # c
240 xorl %edx, %edi # ^d
241 andl %ebx, %edi # &b
242 xorl %edx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko7abb2bb2022-01-03 17:02:48 +0100243 leal 0x5A827999(%rbp,%r15), %ebp # e += RCONST + W[n]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100244 addl %edi, %ebp # e += (((c ^ d) & b) ^ d)
245 movl %eax, %esi #
246 roll $5, %esi # rotl32(a,5)
247 addl %esi, %ebp # e += rotl32(a,5)
248 rorl $2, %ebx # b = rotl32(b,30)
249# 16
250 movl %r13d, %esi # W[(n+13) & 15]
251 xorl %r8d, %esi # ^W[(n+8) & 15]
252 xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15]
253 xorl -32+4*0(%rsp), %esi # ^W[n & 15]
254 roll %esi #
255 movl %esi, -32+4*0(%rsp) # store to W[n & 15]
256 movl %ebx, %edi # c
257 xorl %ecx, %edi # ^d
258 andl %eax, %edi # &b
259 xorl %ecx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100260 leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100261 addl %edi, %edx # e += (((c ^ d) & b) ^ d)
262 movl %ebp, %esi #
263 roll $5, %esi # rotl32(a,5)
264 addl %esi, %edx # e += rotl32(a,5)
265 rorl $2, %eax # b = rotl32(b,30)
266# 17
267 movl %r14d, %esi # W[(n+13) & 15]
268 xorl %r9d, %esi # ^W[(n+8) & 15]
269 xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15]
270 xorl -32+4*1(%rsp), %esi # ^W[n & 15]
271 roll %esi #
272 movl %esi, -32+4*1(%rsp) # store to W[n & 15]
273 movl %eax, %edi # c
274 xorl %ebx, %edi # ^d
275 andl %ebp, %edi # &b
276 xorl %ebx, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100277 leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100278 addl %edi, %ecx # e += (((c ^ d) & b) ^ d)
279 movl %edx, %esi #
280 roll $5, %esi # rotl32(a,5)
281 addl %esi, %ecx # e += rotl32(a,5)
282 rorl $2, %ebp # b = rotl32(b,30)
283# 18
284 movl %r15d, %esi # W[(n+13) & 15]
285 xorl %r10d, %esi # ^W[(n+8) & 15]
286 xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15]
287 xorl -32+4*2(%rsp), %esi # ^W[n & 15]
288 roll %esi #
289 movl %esi, -32+4*2(%rsp) # store to W[n & 15]
290 movl %ebp, %edi # c
291 xorl %eax, %edi # ^d
292 andl %edx, %edi # &b
293 xorl %eax, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100294 leal 0x5A827999(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100295 addl %edi, %ebx # e += (((c ^ d) & b) ^ d)
296 movl %ecx, %esi #
297 roll $5, %esi # rotl32(a,5)
298 addl %esi, %ebx # e += rotl32(a,5)
299 rorl $2, %edx # b = rotl32(b,30)
300# 19
301 movl -32+4*0(%rsp), %esi # W[(n+13) & 15]
302 xorl %r11d, %esi # ^W[(n+8) & 15]
303 xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15]
304 xorl -32+4*3(%rsp), %esi # ^W[n & 15]
305 roll %esi #
306 movl %esi, -32+4*3(%rsp) # store to W[n & 15]
307 movl %edx, %edi # c
308 xorl %ebp, %edi # ^d
309 andl %ecx, %edi # &b
310 xorl %ebp, %edi # (((c ^ d) & b) ^ d)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100311 leal 0x5A827999(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100312 addl %edi, %eax # e += (((c ^ d) & b) ^ d)
313 movl %ebx, %esi #
314 roll $5, %esi # rotl32(a,5)
315 addl %esi, %eax # e += rotl32(a,5)
316 rorl $2, %ecx # b = rotl32(b,30)
317# 20
318 movl -32+4*1(%rsp), %esi # W[(n+13) & 15]
319 xorl %r12d, %esi # ^W[(n+8) & 15]
320 xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15]
321 xorl -32+4*4(%rsp), %esi # ^W[n & 15]
322 roll %esi #
323 movl %esi, -32+4*4(%rsp) # store to W[n & 15]
324 movl %ecx, %edi # c
325 xorl %edx, %edi # ^d
326 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100327 leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100328 addl %edi, %ebp # e += (c ^ d ^ b)
329 movl %eax, %esi #
330 roll $5, %esi # rotl32(a,5)
331 addl %esi, %ebp # e += rotl32(a,5)
332 rorl $2, %ebx # b = rotl32(b,30)
333# 21
334 movl -32+4*2(%rsp), %esi # W[(n+13) & 15]
335 xorl %r13d, %esi # ^W[(n+8) & 15]
336 xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15]
337 xorl -32+4*5(%rsp), %esi # ^W[n & 15]
338 roll %esi #
339 movl %esi, -32+4*5(%rsp) # store to W[n & 15]
340 movl %ebx, %edi # c
341 xorl %ecx, %edi # ^d
342 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100343 leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100344 addl %edi, %edx # e += (c ^ d ^ b)
345 movl %ebp, %esi #
346 roll $5, %esi # rotl32(a,5)
347 addl %esi, %edx # e += rotl32(a,5)
348 rorl $2, %eax # b = rotl32(b,30)
349# 22
350 movl -32+4*3(%rsp), %esi # W[(n+13) & 15]
351 xorl %r14d, %esi # ^W[(n+8) & 15]
352 xorl %r8d, %esi # ^W[(n+2) & 15]
353 xorl -32+4*6(%rsp), %esi # ^W[n & 15]
354 roll %esi #
355 movl %esi, -32+4*6(%rsp) # store to W[n & 15]
356 movl %eax, %edi # c
357 xorl %ebx, %edi # ^d
358 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100359 leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100360 addl %edi, %ecx # e += (c ^ d ^ b)
361 movl %edx, %esi #
362 roll $5, %esi # rotl32(a,5)
363 addl %esi, %ecx # e += rotl32(a,5)
364 rorl $2, %ebp # b = rotl32(b,30)
365# 23
366 movl -32+4*4(%rsp), %esi # W[(n+13) & 15]
367 xorl %r15d, %esi # ^W[(n+8) & 15]
368 xorl %r9d, %esi # ^W[(n+2) & 15]
369 xorl -32+4*7(%rsp), %esi # ^W[n & 15]
370 roll %esi #
371 movl %esi, -32+4*7(%rsp) # store to W[n & 15]
372 movl %ebp, %edi # c
373 xorl %eax, %edi # ^d
374 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100375 leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100376 addl %edi, %ebx # e += (c ^ d ^ b)
377 movl %ecx, %esi #
378 roll $5, %esi # rotl32(a,5)
379 addl %esi, %ebx # e += rotl32(a,5)
380 rorl $2, %edx # b = rotl32(b,30)
381# 24
Denys Vlasenko947bef02022-01-03 13:00:07 +0100382 xorl -32+4*5(%rsp), %r8d # W[n & 15] ^= W[(n+13) & 15]
383 xorl -32+4*0(%rsp), %r8d # ^W[(n+8) & 15]
384 xorl %r10d, %r8d # ^W[(n+2) & 15]
385 roll %r8d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100386 movl %edx, %edi # c
387 xorl %ebp, %edi # ^d
388 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100389 leal 0x6ED9EBA1(%rax,%r8), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100390 addl %edi, %eax # e += (c ^ d ^ b)
391 movl %ebx, %esi #
392 roll $5, %esi # rotl32(a,5)
393 addl %esi, %eax # e += rotl32(a,5)
394 rorl $2, %ecx # b = rotl32(b,30)
395# 25
Denys Vlasenko947bef02022-01-03 13:00:07 +0100396 xorl -32+4*6(%rsp), %r9d # W[n & 15] ^= W[(n+13) & 15]
397 xorl -32+4*1(%rsp), %r9d # ^W[(n+8) & 15]
398 xorl %r11d, %r9d # ^W[(n+2) & 15]
399 roll %r9d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100400 movl %ecx, %edi # c
401 xorl %edx, %edi # ^d
402 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100403 leal 0x6ED9EBA1(%rbp,%r9), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100404 addl %edi, %ebp # e += (c ^ d ^ b)
405 movl %eax, %esi #
406 roll $5, %esi # rotl32(a,5)
407 addl %esi, %ebp # e += rotl32(a,5)
408 rorl $2, %ebx # b = rotl32(b,30)
409# 26
Denys Vlasenko947bef02022-01-03 13:00:07 +0100410 xorl -32+4*7(%rsp), %r10d # W[n & 15] ^= W[(n+13) & 15]
411 xorl -32+4*2(%rsp), %r10d # ^W[(n+8) & 15]
412 xorl %r12d, %r10d # ^W[(n+2) & 15]
413 roll %r10d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100414 movl %ebx, %edi # c
415 xorl %ecx, %edi # ^d
416 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100417 leal 0x6ED9EBA1(%rdx,%r10), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100418 addl %edi, %edx # e += (c ^ d ^ b)
419 movl %ebp, %esi #
420 roll $5, %esi # rotl32(a,5)
421 addl %esi, %edx # e += rotl32(a,5)
422 rorl $2, %eax # b = rotl32(b,30)
423# 27
Denys Vlasenko947bef02022-01-03 13:00:07 +0100424 xorl %r8d, %r11d # W[n & 15] ^= W[(n+13) & 15]
425 xorl -32+4*3(%rsp), %r11d # ^W[(n+8) & 15]
426 xorl %r13d, %r11d # ^W[(n+2) & 15]
427 roll %r11d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100428 movl %eax, %edi # c
429 xorl %ebx, %edi # ^d
430 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100431 leal 0x6ED9EBA1(%rcx,%r11), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100432 addl %edi, %ecx # e += (c ^ d ^ b)
433 movl %edx, %esi #
434 roll $5, %esi # rotl32(a,5)
435 addl %esi, %ecx # e += rotl32(a,5)
436 rorl $2, %ebp # b = rotl32(b,30)
437# 28
Denys Vlasenko947bef02022-01-03 13:00:07 +0100438 xorl %r9d, %r12d # W[n & 15] ^= W[(n+13) & 15]
439 xorl -32+4*4(%rsp), %r12d # ^W[(n+8) & 15]
440 xorl %r14d, %r12d # ^W[(n+2) & 15]
441 roll %r12d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100442 movl %ebp, %edi # c
443 xorl %eax, %edi # ^d
444 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100445 leal 0x6ED9EBA1(%rbx,%r12), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100446 addl %edi, %ebx # e += (c ^ d ^ b)
447 movl %ecx, %esi #
448 roll $5, %esi # rotl32(a,5)
449 addl %esi, %ebx # e += rotl32(a,5)
450 rorl $2, %edx # b = rotl32(b,30)
451# 29
Denys Vlasenko947bef02022-01-03 13:00:07 +0100452 xorl %r10d, %r13d # W[n & 15] ^= W[(n+13) & 15]
453 xorl -32+4*5(%rsp), %r13d # ^W[(n+8) & 15]
454 xorl %r15d, %r13d # ^W[(n+2) & 15]
455 roll %r13d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100456 movl %edx, %edi # c
457 xorl %ebp, %edi # ^d
458 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100459 leal 0x6ED9EBA1(%rax,%r13), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100460 addl %edi, %eax # e += (c ^ d ^ b)
461 movl %ebx, %esi #
462 roll $5, %esi # rotl32(a,5)
463 addl %esi, %eax # e += rotl32(a,5)
464 rorl $2, %ecx # b = rotl32(b,30)
465# 30
Denys Vlasenko947bef02022-01-03 13:00:07 +0100466 xorl %r11d, %r14d # W[n & 15] ^= W[(n+13) & 15]
467 xorl -32+4*6(%rsp), %r14d # ^W[(n+8) & 15]
468 xorl -32+4*0(%rsp), %r14d # ^W[(n+2) & 15]
469 roll %r14d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100470 movl %ecx, %edi # c
471 xorl %edx, %edi # ^d
472 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100473 leal 0x6ED9EBA1(%rbp,%r14), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100474 addl %edi, %ebp # e += (c ^ d ^ b)
475 movl %eax, %esi #
476 roll $5, %esi # rotl32(a,5)
477 addl %esi, %ebp # e += rotl32(a,5)
478 rorl $2, %ebx # b = rotl32(b,30)
479# 31
Denys Vlasenko947bef02022-01-03 13:00:07 +0100480 xorl %r12d, %r15d # W[n & 15] ^= W[(n+13) & 15]
481 xorl -32+4*7(%rsp), %r15d # ^W[(n+8) & 15]
482 xorl -32+4*1(%rsp), %r15d # ^W[(n+2) & 15]
483 roll %r15d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100484 movl %ebx, %edi # c
485 xorl %ecx, %edi # ^d
486 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100487 leal 0x6ED9EBA1(%rdx,%r15), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100488 addl %edi, %edx # e += (c ^ d ^ b)
489 movl %ebp, %esi #
490 roll $5, %esi # rotl32(a,5)
491 addl %esi, %edx # e += rotl32(a,5)
492 rorl $2, %eax # b = rotl32(b,30)
493# 32
494 movl %r13d, %esi # W[(n+13) & 15]
495 xorl %r8d, %esi # ^W[(n+8) & 15]
496 xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15]
497 xorl -32+4*0(%rsp), %esi # ^W[n & 15]
498 roll %esi #
499 movl %esi, -32+4*0(%rsp) # store to W[n & 15]
500 movl %eax, %edi # c
501 xorl %ebx, %edi # ^d
502 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100503 leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100504 addl %edi, %ecx # e += (c ^ d ^ b)
505 movl %edx, %esi #
506 roll $5, %esi # rotl32(a,5)
507 addl %esi, %ecx # e += rotl32(a,5)
508 rorl $2, %ebp # b = rotl32(b,30)
509# 33
510 movl %r14d, %esi # W[(n+13) & 15]
511 xorl %r9d, %esi # ^W[(n+8) & 15]
512 xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15]
513 xorl -32+4*1(%rsp), %esi # ^W[n & 15]
514 roll %esi #
515 movl %esi, -32+4*1(%rsp) # store to W[n & 15]
516 movl %ebp, %edi # c
517 xorl %eax, %edi # ^d
518 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100519 leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100520 addl %edi, %ebx # e += (c ^ d ^ b)
521 movl %ecx, %esi #
522 roll $5, %esi # rotl32(a,5)
523 addl %esi, %ebx # e += rotl32(a,5)
524 rorl $2, %edx # b = rotl32(b,30)
525# 34
526 movl %r15d, %esi # W[(n+13) & 15]
527 xorl %r10d, %esi # ^W[(n+8) & 15]
528 xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15]
529 xorl -32+4*2(%rsp), %esi # ^W[n & 15]
530 roll %esi #
531 movl %esi, -32+4*2(%rsp) # store to W[n & 15]
532 movl %edx, %edi # c
533 xorl %ebp, %edi # ^d
534 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100535 leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100536 addl %edi, %eax # e += (c ^ d ^ b)
537 movl %ebx, %esi #
538 roll $5, %esi # rotl32(a,5)
539 addl %esi, %eax # e += rotl32(a,5)
540 rorl $2, %ecx # b = rotl32(b,30)
541# 35
542 movl -32+4*0(%rsp), %esi # W[(n+13) & 15]
543 xorl %r11d, %esi # ^W[(n+8) & 15]
544 xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15]
545 xorl -32+4*3(%rsp), %esi # ^W[n & 15]
546 roll %esi #
547 movl %esi, -32+4*3(%rsp) # store to W[n & 15]
548 movl %ecx, %edi # c
549 xorl %edx, %edi # ^d
550 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100551 leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100552 addl %edi, %ebp # e += (c ^ d ^ b)
553 movl %eax, %esi #
554 roll $5, %esi # rotl32(a,5)
555 addl %esi, %ebp # e += rotl32(a,5)
556 rorl $2, %ebx # b = rotl32(b,30)
557# 36
558 movl -32+4*1(%rsp), %esi # W[(n+13) & 15]
559 xorl %r12d, %esi # ^W[(n+8) & 15]
560 xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15]
561 xorl -32+4*4(%rsp), %esi # ^W[n & 15]
562 roll %esi #
563 movl %esi, -32+4*4(%rsp) # store to W[n & 15]
564 movl %ebx, %edi # c
565 xorl %ecx, %edi # ^d
566 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100567 leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100568 addl %edi, %edx # e += (c ^ d ^ b)
569 movl %ebp, %esi #
570 roll $5, %esi # rotl32(a,5)
571 addl %esi, %edx # e += rotl32(a,5)
572 rorl $2, %eax # b = rotl32(b,30)
573# 37
574 movl -32+4*2(%rsp), %esi # W[(n+13) & 15]
575 xorl %r13d, %esi # ^W[(n+8) & 15]
576 xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15]
577 xorl -32+4*5(%rsp), %esi # ^W[n & 15]
578 roll %esi #
579 movl %esi, -32+4*5(%rsp) # store to W[n & 15]
580 movl %eax, %edi # c
581 xorl %ebx, %edi # ^d
582 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100583 leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100584 addl %edi, %ecx # e += (c ^ d ^ b)
585 movl %edx, %esi #
586 roll $5, %esi # rotl32(a,5)
587 addl %esi, %ecx # e += rotl32(a,5)
588 rorl $2, %ebp # b = rotl32(b,30)
589# 38
590 movl -32+4*3(%rsp), %esi # W[(n+13) & 15]
591 xorl %r14d, %esi # ^W[(n+8) & 15]
592 xorl %r8d, %esi # ^W[(n+2) & 15]
593 xorl -32+4*6(%rsp), %esi # ^W[n & 15]
594 roll %esi #
595 movl %esi, -32+4*6(%rsp) # store to W[n & 15]
596 movl %ebp, %edi # c
597 xorl %eax, %edi # ^d
598 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100599 leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100600 addl %edi, %ebx # e += (c ^ d ^ b)
601 movl %ecx, %esi #
602 roll $5, %esi # rotl32(a,5)
603 addl %esi, %ebx # e += rotl32(a,5)
604 rorl $2, %edx # b = rotl32(b,30)
605# 39
606 movl -32+4*4(%rsp), %esi # W[(n+13) & 15]
607 xorl %r15d, %esi # ^W[(n+8) & 15]
608 xorl %r9d, %esi # ^W[(n+2) & 15]
609 xorl -32+4*7(%rsp), %esi # ^W[n & 15]
610 roll %esi #
611 movl %esi, -32+4*7(%rsp) # store to W[n & 15]
612 movl %edx, %edi # c
613 xorl %ebp, %edi # ^d
614 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100615 leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100616 addl %edi, %eax # e += (c ^ d ^ b)
617 movl %ebx, %esi #
618 roll $5, %esi # rotl32(a,5)
619 addl %esi, %eax # e += rotl32(a,5)
620 rorl $2, %ecx # b = rotl32(b,30)
621# 40
622 movl %ebx, %edi # di: b
623 movl %ebx, %esi # si: b
624 orl %ecx, %edi # di: b | c
625 andl %ecx, %esi # si: b & c
626 andl %edx, %edi # di: (b | c) & d
627 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100628 xorl -32+4*5(%rsp), %r8d # W[n & 15] ^= W[(n+13) & 15]
629 xorl -32+4*0(%rsp), %r8d # ^W[(n+8) & 15]
630 xorl %r10d, %r8d # ^W[(n+2) & 15]
631 roll %r8d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100632 addl %edi, %ebp # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100633 leal -0x70E44324(%rbp,%r8), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100634 movl %eax, %esi #
635 roll $5, %esi # rotl32(a,5)
636 addl %esi, %ebp # e += rotl32(a,5)
637 rorl $2, %ebx # b = rotl32(b,30)
638# 41
639 movl %eax, %edi # di: b
640 movl %eax, %esi # si: b
641 orl %ebx, %edi # di: b | c
642 andl %ebx, %esi # si: b & c
643 andl %ecx, %edi # di: (b | c) & d
644 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100645 xorl -32+4*6(%rsp), %r9d # W[n & 15] ^= W[(n+13) & 15]
646 xorl -32+4*1(%rsp), %r9d # ^W[(n+8) & 15]
647 xorl %r11d, %r9d # ^W[(n+2) & 15]
648 roll %r9d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100649 addl %edi, %edx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100650 leal -0x70E44324(%rdx,%r9), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100651 movl %ebp, %esi #
652 roll $5, %esi # rotl32(a,5)
653 addl %esi, %edx # e += rotl32(a,5)
654 rorl $2, %eax # b = rotl32(b,30)
655# 42
656 movl %ebp, %edi # di: b
657 movl %ebp, %esi # si: b
658 orl %eax, %edi # di: b | c
659 andl %eax, %esi # si: b & c
660 andl %ebx, %edi # di: (b | c) & d
661 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100662 xorl -32+4*7(%rsp), %r10d # W[n & 15] ^= W[(n+13) & 15]
663 xorl -32+4*2(%rsp), %r10d # ^W[(n+8) & 15]
664 xorl %r12d, %r10d # ^W[(n+2) & 15]
665 roll %r10d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100666 addl %edi, %ecx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100667 leal -0x70E44324(%rcx,%r10), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100668 movl %edx, %esi #
669 roll $5, %esi # rotl32(a,5)
670 addl %esi, %ecx # e += rotl32(a,5)
671 rorl $2, %ebp # b = rotl32(b,30)
672# 43
673 movl %edx, %edi # di: b
674 movl %edx, %esi # si: b
675 orl %ebp, %edi # di: b | c
676 andl %ebp, %esi # si: b & c
677 andl %eax, %edi # di: (b | c) & d
678 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100679 xorl %r8d, %r11d # W[n & 15] ^= W[(n+13) & 15]
680 xorl -32+4*3(%rsp), %r11d # ^W[(n+8) & 15]
681 xorl %r13d, %r11d # ^W[(n+2) & 15]
682 roll %r11d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100683 addl %edi, %ebx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100684 leal -0x70E44324(%rbx,%r11), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100685 movl %ecx, %esi #
686 roll $5, %esi # rotl32(a,5)
687 addl %esi, %ebx # e += rotl32(a,5)
688 rorl $2, %edx # b = rotl32(b,30)
689# 44
690 movl %ecx, %edi # di: b
691 movl %ecx, %esi # si: b
692 orl %edx, %edi # di: b | c
693 andl %edx, %esi # si: b & c
694 andl %ebp, %edi # di: (b | c) & d
695 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100696 xorl %r9d, %r12d # W[n & 15] ^= W[(n+13) & 15]
697 xorl -32+4*4(%rsp), %r12d # ^W[(n+8) & 15]
698 xorl %r14d, %r12d # ^W[(n+2) & 15]
699 roll %r12d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100700 addl %edi, %eax # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100701 leal -0x70E44324(%rax,%r12), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100702 movl %ebx, %esi #
703 roll $5, %esi # rotl32(a,5)
704 addl %esi, %eax # e += rotl32(a,5)
705 rorl $2, %ecx # b = rotl32(b,30)
706# 45
707 movl %ebx, %edi # di: b
708 movl %ebx, %esi # si: b
709 orl %ecx, %edi # di: b | c
710 andl %ecx, %esi # si: b & c
711 andl %edx, %edi # di: (b | c) & d
712 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100713 xorl %r10d, %r13d # W[n & 15] ^= W[(n+13) & 15]
714 xorl -32+4*5(%rsp), %r13d # ^W[(n+8) & 15]
715 xorl %r15d, %r13d # ^W[(n+2) & 15]
716 roll %r13d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100717 addl %edi, %ebp # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100718 leal -0x70E44324(%rbp,%r13), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100719 movl %eax, %esi #
720 roll $5, %esi # rotl32(a,5)
721 addl %esi, %ebp # e += rotl32(a,5)
722 rorl $2, %ebx # b = rotl32(b,30)
723# 46
724 movl %eax, %edi # di: b
725 movl %eax, %esi # si: b
726 orl %ebx, %edi # di: b | c
727 andl %ebx, %esi # si: b & c
728 andl %ecx, %edi # di: (b | c) & d
729 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100730 xorl %r11d, %r14d # W[n & 15] ^= W[(n+13) & 15]
731 xorl -32+4*6(%rsp), %r14d # ^W[(n+8) & 15]
732 xorl -32+4*0(%rsp), %r14d # ^W[(n+2) & 15]
733 roll %r14d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100734 addl %edi, %edx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100735 leal -0x70E44324(%rdx,%r14), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100736 movl %ebp, %esi #
737 roll $5, %esi # rotl32(a,5)
738 addl %esi, %edx # e += rotl32(a,5)
739 rorl $2, %eax # b = rotl32(b,30)
740# 47
741 movl %ebp, %edi # di: b
742 movl %ebp, %esi # si: b
743 orl %eax, %edi # di: b | c
744 andl %eax, %esi # si: b & c
745 andl %ebx, %edi # di: (b | c) & d
746 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100747 xorl %r12d, %r15d # W[n & 15] ^= W[(n+13) & 15]
748 xorl -32+4*7(%rsp), %r15d # ^W[(n+8) & 15]
749 xorl -32+4*1(%rsp), %r15d # ^W[(n+2) & 15]
750 roll %r15d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100751 addl %edi, %ecx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100752 leal -0x70E44324(%rcx,%r15), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100753 movl %edx, %esi #
754 roll $5, %esi # rotl32(a,5)
755 addl %esi, %ecx # e += rotl32(a,5)
756 rorl $2, %ebp # b = rotl32(b,30)
757# 48
758 movl %edx, %edi # di: b
759 movl %edx, %esi # si: b
760 orl %ebp, %edi # di: b | c
761 andl %ebp, %esi # si: b & c
762 andl %eax, %edi # di: (b | c) & d
763 orl %esi, %edi # ((b | c) & d) | (b & c)
764 movl %r13d, %esi # W[(n+13) & 15]
765 xorl %r8d, %esi # ^W[(n+8) & 15]
766 xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15]
767 xorl -32+4*0(%rsp), %esi # ^W[n & 15]
768 roll %esi #
769 movl %esi, -32+4*0(%rsp) # store to W[n & 15]
770 addl %edi, %ebx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100771 leal -0x70E44324(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100772 movl %ecx, %esi #
773 roll $5, %esi # rotl32(a,5)
774 addl %esi, %ebx # e += rotl32(a,5)
775 rorl $2, %edx # b = rotl32(b,30)
776# 49
777 movl %ecx, %edi # di: b
778 movl %ecx, %esi # si: b
779 orl %edx, %edi # di: b | c
780 andl %edx, %esi # si: b & c
781 andl %ebp, %edi # di: (b | c) & d
782 orl %esi, %edi # ((b | c) & d) | (b & c)
783 movl %r14d, %esi # W[(n+13) & 15]
784 xorl %r9d, %esi # ^W[(n+8) & 15]
785 xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15]
786 xorl -32+4*1(%rsp), %esi # ^W[n & 15]
787 roll %esi #
788 movl %esi, -32+4*1(%rsp) # store to W[n & 15]
789 addl %edi, %eax # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100790 leal -0x70E44324(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100791 movl %ebx, %esi #
792 roll $5, %esi # rotl32(a,5)
793 addl %esi, %eax # e += rotl32(a,5)
794 rorl $2, %ecx # b = rotl32(b,30)
795# 50
796 movl %ebx, %edi # di: b
797 movl %ebx, %esi # si: b
798 orl %ecx, %edi # di: b | c
799 andl %ecx, %esi # si: b & c
800 andl %edx, %edi # di: (b | c) & d
801 orl %esi, %edi # ((b | c) & d) | (b & c)
802 movl %r15d, %esi # W[(n+13) & 15]
803 xorl %r10d, %esi # ^W[(n+8) & 15]
804 xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15]
805 xorl -32+4*2(%rsp), %esi # ^W[n & 15]
806 roll %esi #
807 movl %esi, -32+4*2(%rsp) # store to W[n & 15]
808 addl %edi, %ebp # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100809 leal -0x70E44324(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100810 movl %eax, %esi #
811 roll $5, %esi # rotl32(a,5)
812 addl %esi, %ebp # e += rotl32(a,5)
813 rorl $2, %ebx # b = rotl32(b,30)
814# 51
815 movl %eax, %edi # di: b
816 movl %eax, %esi # si: b
817 orl %ebx, %edi # di: b | c
818 andl %ebx, %esi # si: b & c
819 andl %ecx, %edi # di: (b | c) & d
820 orl %esi, %edi # ((b | c) & d) | (b & c)
821 movl -32+4*0(%rsp), %esi # W[(n+13) & 15]
822 xorl %r11d, %esi # ^W[(n+8) & 15]
823 xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15]
824 xorl -32+4*3(%rsp), %esi # ^W[n & 15]
825 roll %esi #
826 movl %esi, -32+4*3(%rsp) # store to W[n & 15]
827 addl %edi, %edx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100828 leal -0x70E44324(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100829 movl %ebp, %esi #
830 roll $5, %esi # rotl32(a,5)
831 addl %esi, %edx # e += rotl32(a,5)
832 rorl $2, %eax # b = rotl32(b,30)
833# 52
834 movl %ebp, %edi # di: b
835 movl %ebp, %esi # si: b
836 orl %eax, %edi # di: b | c
837 andl %eax, %esi # si: b & c
838 andl %ebx, %edi # di: (b | c) & d
839 orl %esi, %edi # ((b | c) & d) | (b & c)
840 movl -32+4*1(%rsp), %esi # W[(n+13) & 15]
841 xorl %r12d, %esi # ^W[(n+8) & 15]
842 xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15]
843 xorl -32+4*4(%rsp), %esi # ^W[n & 15]
844 roll %esi #
845 movl %esi, -32+4*4(%rsp) # store to W[n & 15]
846 addl %edi, %ecx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100847 leal -0x70E44324(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100848 movl %edx, %esi #
849 roll $5, %esi # rotl32(a,5)
850 addl %esi, %ecx # e += rotl32(a,5)
851 rorl $2, %ebp # b = rotl32(b,30)
852# 53
853 movl %edx, %edi # di: b
854 movl %edx, %esi # si: b
855 orl %ebp, %edi # di: b | c
856 andl %ebp, %esi # si: b & c
857 andl %eax, %edi # di: (b | c) & d
858 orl %esi, %edi # ((b | c) & d) | (b & c)
859 movl -32+4*2(%rsp), %esi # W[(n+13) & 15]
860 xorl %r13d, %esi # ^W[(n+8) & 15]
861 xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15]
862 xorl -32+4*5(%rsp), %esi # ^W[n & 15]
863 roll %esi #
864 movl %esi, -32+4*5(%rsp) # store to W[n & 15]
865 addl %edi, %ebx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100866 leal -0x70E44324(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100867 movl %ecx, %esi #
868 roll $5, %esi # rotl32(a,5)
869 addl %esi, %ebx # e += rotl32(a,5)
870 rorl $2, %edx # b = rotl32(b,30)
871# 54
872 movl %ecx, %edi # di: b
873 movl %ecx, %esi # si: b
874 orl %edx, %edi # di: b | c
875 andl %edx, %esi # si: b & c
876 andl %ebp, %edi # di: (b | c) & d
877 orl %esi, %edi # ((b | c) & d) | (b & c)
878 movl -32+4*3(%rsp), %esi # W[(n+13) & 15]
879 xorl %r14d, %esi # ^W[(n+8) & 15]
880 xorl %r8d, %esi # ^W[(n+2) & 15]
881 xorl -32+4*6(%rsp), %esi # ^W[n & 15]
882 roll %esi #
883 movl %esi, -32+4*6(%rsp) # store to W[n & 15]
884 addl %edi, %eax # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100885 leal -0x70E44324(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100886 movl %ebx, %esi #
887 roll $5, %esi # rotl32(a,5)
888 addl %esi, %eax # e += rotl32(a,5)
889 rorl $2, %ecx # b = rotl32(b,30)
890# 55
891 movl %ebx, %edi # di: b
892 movl %ebx, %esi # si: b
893 orl %ecx, %edi # di: b | c
894 andl %ecx, %esi # si: b & c
895 andl %edx, %edi # di: (b | c) & d
896 orl %esi, %edi # ((b | c) & d) | (b & c)
897 movl -32+4*4(%rsp), %esi # W[(n+13) & 15]
898 xorl %r15d, %esi # ^W[(n+8) & 15]
899 xorl %r9d, %esi # ^W[(n+2) & 15]
900 xorl -32+4*7(%rsp), %esi # ^W[n & 15]
901 roll %esi #
902 movl %esi, -32+4*7(%rsp) # store to W[n & 15]
903 addl %edi, %ebp # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100904 leal -0x70E44324(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100905 movl %eax, %esi #
906 roll $5, %esi # rotl32(a,5)
907 addl %esi, %ebp # e += rotl32(a,5)
908 rorl $2, %ebx # b = rotl32(b,30)
909# 56
910 movl %eax, %edi # di: b
911 movl %eax, %esi # si: b
912 orl %ebx, %edi # di: b | c
913 andl %ebx, %esi # si: b & c
914 andl %ecx, %edi # di: (b | c) & d
915 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100916 xorl -32+4*5(%rsp), %r8d # W[n & 15] ^= W[(n+13) & 15]
917 xorl -32+4*0(%rsp), %r8d # ^W[(n+8) & 15]
918 xorl %r10d, %r8d # ^W[(n+2) & 15]
919 roll %r8d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100920 addl %edi, %edx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100921 leal -0x70E44324(%rdx,%r8), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100922 movl %ebp, %esi #
923 roll $5, %esi # rotl32(a,5)
924 addl %esi, %edx # e += rotl32(a,5)
925 rorl $2, %eax # b = rotl32(b,30)
926# 57
927 movl %ebp, %edi # di: b
928 movl %ebp, %esi # si: b
929 orl %eax, %edi # di: b | c
930 andl %eax, %esi # si: b & c
931 andl %ebx, %edi # di: (b | c) & d
932 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100933 xorl -32+4*6(%rsp), %r9d # W[n & 15] ^= W[(n+13) & 15]
934 xorl -32+4*1(%rsp), %r9d # ^W[(n+8) & 15]
935 xorl %r11d, %r9d # ^W[(n+2) & 15]
936 roll %r9d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100937 addl %edi, %ecx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100938 leal -0x70E44324(%rcx,%r9), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100939 movl %edx, %esi #
940 roll $5, %esi # rotl32(a,5)
941 addl %esi, %ecx # e += rotl32(a,5)
942 rorl $2, %ebp # b = rotl32(b,30)
943# 58
944 movl %edx, %edi # di: b
945 movl %edx, %esi # si: b
946 orl %ebp, %edi # di: b | c
947 andl %ebp, %esi # si: b & c
948 andl %eax, %edi # di: (b | c) & d
949 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100950 xorl -32+4*7(%rsp), %r10d # W[n & 15] ^= W[(n+13) & 15]
951 xorl -32+4*2(%rsp), %r10d # ^W[(n+8) & 15]
952 xorl %r12d, %r10d # ^W[(n+2) & 15]
953 roll %r10d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100954 addl %edi, %ebx # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100955 leal -0x70E44324(%rbx,%r10), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100956 movl %ecx, %esi #
957 roll $5, %esi # rotl32(a,5)
958 addl %esi, %ebx # e += rotl32(a,5)
959 rorl $2, %edx # b = rotl32(b,30)
960# 59
961 movl %ecx, %edi # di: b
962 movl %ecx, %esi # si: b
963 orl %edx, %edi # di: b | c
964 andl %edx, %esi # si: b & c
965 andl %ebp, %edi # di: (b | c) & d
966 orl %esi, %edi # ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100967 xorl %r8d, %r11d # W[n & 15] ^= W[(n+13) & 15]
968 xorl -32+4*3(%rsp), %r11d # ^W[(n+8) & 15]
969 xorl %r13d, %r11d # ^W[(n+2) & 15]
970 roll %r11d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100971 addl %edi, %eax # += ((b | c) & d) | (b & c)
Denys Vlasenko947bef02022-01-03 13:00:07 +0100972 leal -0x70E44324(%rax,%r11), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100973 movl %ebx, %esi #
974 roll $5, %esi # rotl32(a,5)
975 addl %esi, %eax # e += rotl32(a,5)
976 rorl $2, %ecx # b = rotl32(b,30)
977# 60
Denys Vlasenko947bef02022-01-03 13:00:07 +0100978 xorl %r9d, %r12d # W[n & 15] ^= W[(n+13) & 15]
979 xorl -32+4*4(%rsp), %r12d # ^W[(n+8) & 15]
980 xorl %r14d, %r12d # ^W[(n+2) & 15]
981 roll %r12d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100982 movl %ecx, %edi # c
983 xorl %edx, %edi # ^d
984 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100985 leal -0x359D3E2A(%rbp,%r12), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100986 addl %edi, %ebp # e += (c ^ d ^ b)
987 movl %eax, %esi #
988 roll $5, %esi # rotl32(a,5)
989 addl %esi, %ebp # e += rotl32(a,5)
990 rorl $2, %ebx # b = rotl32(b,30)
991# 61
Denys Vlasenko947bef02022-01-03 13:00:07 +0100992 xorl %r10d, %r13d # W[n & 15] ^= W[(n+13) & 15]
993 xorl -32+4*5(%rsp), %r13d # ^W[(n+8) & 15]
994 xorl %r15d, %r13d # ^W[(n+2) & 15]
995 roll %r13d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +0100996 movl %ebx, %edi # c
997 xorl %ecx, %edi # ^d
998 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +0100999 leal -0x359D3E2A(%rdx,%r13), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001000 addl %edi, %edx # e += (c ^ d ^ b)
1001 movl %ebp, %esi #
1002 roll $5, %esi # rotl32(a,5)
1003 addl %esi, %edx # e += rotl32(a,5)
1004 rorl $2, %eax # b = rotl32(b,30)
1005# 62
Denys Vlasenko947bef02022-01-03 13:00:07 +01001006 xorl %r11d, %r14d # W[n & 15] ^= W[(n+13) & 15]
1007 xorl -32+4*6(%rsp), %r14d # ^W[(n+8) & 15]
1008 xorl -32+4*0(%rsp), %r14d # ^W[(n+2) & 15]
1009 roll %r14d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001010 movl %eax, %edi # c
1011 xorl %ebx, %edi # ^d
1012 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001013 leal -0x359D3E2A(%rcx,%r14), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001014 addl %edi, %ecx # e += (c ^ d ^ b)
1015 movl %edx, %esi #
1016 roll $5, %esi # rotl32(a,5)
1017 addl %esi, %ecx # e += rotl32(a,5)
1018 rorl $2, %ebp # b = rotl32(b,30)
1019# 63
Denys Vlasenko947bef02022-01-03 13:00:07 +01001020 xorl %r12d, %r15d # W[n & 15] ^= W[(n+13) & 15]
1021 xorl -32+4*7(%rsp), %r15d # ^W[(n+8) & 15]
1022 xorl -32+4*1(%rsp), %r15d # ^W[(n+2) & 15]
1023 roll %r15d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001024 movl %ebp, %edi # c
1025 xorl %eax, %edi # ^d
1026 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001027 leal -0x359D3E2A(%rbx,%r15), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001028 addl %edi, %ebx # e += (c ^ d ^ b)
1029 movl %ecx, %esi #
1030 roll $5, %esi # rotl32(a,5)
1031 addl %esi, %ebx # e += rotl32(a,5)
1032 rorl $2, %edx # b = rotl32(b,30)
1033# 64
1034 movl %r13d, %esi # W[(n+13) & 15]
1035 xorl %r8d, %esi # ^W[(n+8) & 15]
1036 xorl -32+4*2(%rsp), %esi # ^W[(n+2) & 15]
1037 xorl -32+4*0(%rsp), %esi # ^W[n & 15]
1038 roll %esi #
1039 movl %esi, -32+4*0(%rsp) # store to W[n & 15]
1040 movl %edx, %edi # c
1041 xorl %ebp, %edi # ^d
1042 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001043 leal -0x359D3E2A(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001044 addl %edi, %eax # e += (c ^ d ^ b)
1045 movl %ebx, %esi #
1046 roll $5, %esi # rotl32(a,5)
1047 addl %esi, %eax # e += rotl32(a,5)
1048 rorl $2, %ecx # b = rotl32(b,30)
1049# 65
1050 movl %r14d, %esi # W[(n+13) & 15]
1051 xorl %r9d, %esi # ^W[(n+8) & 15]
1052 xorl -32+4*3(%rsp), %esi # ^W[(n+2) & 15]
1053 xorl -32+4*1(%rsp), %esi # ^W[n & 15]
1054 roll %esi #
1055 movl %esi, -32+4*1(%rsp) # store to W[n & 15]
1056 movl %ecx, %edi # c
1057 xorl %edx, %edi # ^d
1058 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001059 leal -0x359D3E2A(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001060 addl %edi, %ebp # e += (c ^ d ^ b)
1061 movl %eax, %esi #
1062 roll $5, %esi # rotl32(a,5)
1063 addl %esi, %ebp # e += rotl32(a,5)
1064 rorl $2, %ebx # b = rotl32(b,30)
1065# 66
1066 movl %r15d, %esi # W[(n+13) & 15]
1067 xorl %r10d, %esi # ^W[(n+8) & 15]
1068 xorl -32+4*4(%rsp), %esi # ^W[(n+2) & 15]
1069 xorl -32+4*2(%rsp), %esi # ^W[n & 15]
1070 roll %esi #
1071 movl %esi, -32+4*2(%rsp) # store to W[n & 15]
1072 movl %ebx, %edi # c
1073 xorl %ecx, %edi # ^d
1074 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001075 leal -0x359D3E2A(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001076 addl %edi, %edx # e += (c ^ d ^ b)
1077 movl %ebp, %esi #
1078 roll $5, %esi # rotl32(a,5)
1079 addl %esi, %edx # e += rotl32(a,5)
1080 rorl $2, %eax # b = rotl32(b,30)
1081# 67
1082 movl -32+4*0(%rsp), %esi # W[(n+13) & 15]
1083 xorl %r11d, %esi # ^W[(n+8) & 15]
1084 xorl -32+4*5(%rsp), %esi # ^W[(n+2) & 15]
1085 xorl -32+4*3(%rsp), %esi # ^W[n & 15]
1086 roll %esi #
1087 movl %esi, -32+4*3(%rsp) # store to W[n & 15]
1088 movl %eax, %edi # c
1089 xorl %ebx, %edi # ^d
1090 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001091 leal -0x359D3E2A(%rcx,%rsi), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001092 addl %edi, %ecx # e += (c ^ d ^ b)
1093 movl %edx, %esi #
1094 roll $5, %esi # rotl32(a,5)
1095 addl %esi, %ecx # e += rotl32(a,5)
1096 rorl $2, %ebp # b = rotl32(b,30)
1097# 68
1098 movl -32+4*1(%rsp), %esi # W[(n+13) & 15]
1099 xorl %r12d, %esi # ^W[(n+8) & 15]
1100 xorl -32+4*6(%rsp), %esi # ^W[(n+2) & 15]
1101 xorl -32+4*4(%rsp), %esi # ^W[n & 15]
1102 roll %esi #
1103 movl %esi, -32+4*4(%rsp) # store to W[n & 15]
1104 movl %ebp, %edi # c
1105 xorl %eax, %edi # ^d
1106 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001107 leal -0x359D3E2A(%rbx,%rsi), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001108 addl %edi, %ebx # e += (c ^ d ^ b)
1109 movl %ecx, %esi #
1110 roll $5, %esi # rotl32(a,5)
1111 addl %esi, %ebx # e += rotl32(a,5)
1112 rorl $2, %edx # b = rotl32(b,30)
1113# 69
1114 movl -32+4*2(%rsp), %esi # W[(n+13) & 15]
1115 xorl %r13d, %esi # ^W[(n+8) & 15]
1116 xorl -32+4*7(%rsp), %esi # ^W[(n+2) & 15]
1117 xorl -32+4*5(%rsp), %esi # ^W[n & 15]
1118 roll %esi #
1119 movl %esi, -32+4*5(%rsp) # store to W[n & 15]
1120 movl %edx, %edi # c
1121 xorl %ebp, %edi # ^d
1122 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001123 leal -0x359D3E2A(%rax,%rsi), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001124 addl %edi, %eax # e += (c ^ d ^ b)
1125 movl %ebx, %esi #
1126 roll $5, %esi # rotl32(a,5)
1127 addl %esi, %eax # e += rotl32(a,5)
1128 rorl $2, %ecx # b = rotl32(b,30)
1129# 70
1130 movl -32+4*3(%rsp), %esi # W[(n+13) & 15]
1131 xorl %r14d, %esi # ^W[(n+8) & 15]
1132 xorl %r8d, %esi # ^W[(n+2) & 15]
1133 xorl -32+4*6(%rsp), %esi # ^W[n & 15]
1134 roll %esi #
1135 movl %esi, -32+4*6(%rsp) # store to W[n & 15]
1136 movl %ecx, %edi # c
1137 xorl %edx, %edi # ^d
1138 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001139 leal -0x359D3E2A(%rbp,%rsi), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001140 addl %edi, %ebp # e += (c ^ d ^ b)
1141 movl %eax, %esi #
1142 roll $5, %esi # rotl32(a,5)
1143 addl %esi, %ebp # e += rotl32(a,5)
1144 rorl $2, %ebx # b = rotl32(b,30)
1145# 71
1146 movl -32+4*4(%rsp), %esi # W[(n+13) & 15]
1147 xorl %r15d, %esi # ^W[(n+8) & 15]
1148 xorl %r9d, %esi # ^W[(n+2) & 15]
1149 xorl -32+4*7(%rsp), %esi # ^W[n & 15]
1150 roll %esi #
1151 movl %esi, -32+4*7(%rsp) # store to W[n & 15]
1152 movl %ebx, %edi # c
1153 xorl %ecx, %edi # ^d
1154 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001155 leal -0x359D3E2A(%rdx,%rsi), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001156 addl %edi, %edx # e += (c ^ d ^ b)
1157 movl %ebp, %esi #
1158 roll $5, %esi # rotl32(a,5)
1159 addl %esi, %edx # e += rotl32(a,5)
1160 rorl $2, %eax # b = rotl32(b,30)
1161# 72
Denys Vlasenko947bef02022-01-03 13:00:07 +01001162 xorl -32+4*5(%rsp), %r8d # W[n & 15] ^= W[(n+13) & 15]
1163 xorl -32+4*0(%rsp), %r8d # ^W[(n+8) & 15]
1164 xorl %r10d, %r8d # ^W[(n+2) & 15]
1165 roll %r8d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001166 movl %eax, %edi # c
1167 xorl %ebx, %edi # ^d
1168 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001169 leal -0x359D3E2A(%rcx,%r8), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001170 addl %edi, %ecx # e += (c ^ d ^ b)
1171 movl %edx, %esi #
1172 roll $5, %esi # rotl32(a,5)
1173 addl %esi, %ecx # e += rotl32(a,5)
1174 rorl $2, %ebp # b = rotl32(b,30)
1175# 73
Denys Vlasenko947bef02022-01-03 13:00:07 +01001176 xorl -32+4*6(%rsp), %r9d # W[n & 15] ^= W[(n+13) & 15]
1177 xorl -32+4*1(%rsp), %r9d # ^W[(n+8) & 15]
1178 xorl %r11d, %r9d # ^W[(n+2) & 15]
1179 roll %r9d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001180 movl %ebp, %edi # c
1181 xorl %eax, %edi # ^d
1182 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001183 leal -0x359D3E2A(%rbx,%r9), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001184 addl %edi, %ebx # e += (c ^ d ^ b)
1185 movl %ecx, %esi #
1186 roll $5, %esi # rotl32(a,5)
1187 addl %esi, %ebx # e += rotl32(a,5)
1188 rorl $2, %edx # b = rotl32(b,30)
1189# 74
Denys Vlasenko947bef02022-01-03 13:00:07 +01001190 xorl -32+4*7(%rsp), %r10d # W[n & 15] ^= W[(n+13) & 15]
1191 xorl -32+4*2(%rsp), %r10d # ^W[(n+8) & 15]
1192 xorl %r12d, %r10d # ^W[(n+2) & 15]
1193 roll %r10d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001194 movl %edx, %edi # c
1195 xorl %ebp, %edi # ^d
1196 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001197 leal -0x359D3E2A(%rax,%r10), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001198 addl %edi, %eax # e += (c ^ d ^ b)
1199 movl %ebx, %esi #
1200 roll $5, %esi # rotl32(a,5)
1201 addl %esi, %eax # e += rotl32(a,5)
1202 rorl $2, %ecx # b = rotl32(b,30)
1203# 75
Denys Vlasenko947bef02022-01-03 13:00:07 +01001204 xorl %r8d, %r11d # W[n & 15] ^= W[(n+13) & 15]
1205 xorl -32+4*3(%rsp), %r11d # ^W[(n+8) & 15]
1206 xorl %r13d, %r11d # ^W[(n+2) & 15]
1207 roll %r11d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001208 movl %ecx, %edi # c
1209 xorl %edx, %edi # ^d
1210 xorl %ebx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001211 leal -0x359D3E2A(%rbp,%r11), %ebp # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001212 addl %edi, %ebp # e += (c ^ d ^ b)
1213 movl %eax, %esi #
1214 roll $5, %esi # rotl32(a,5)
1215 addl %esi, %ebp # e += rotl32(a,5)
1216 rorl $2, %ebx # b = rotl32(b,30)
1217# 76
Denys Vlasenko947bef02022-01-03 13:00:07 +01001218 xorl %r9d, %r12d # W[n & 15] ^= W[(n+13) & 15]
1219 xorl -32+4*4(%rsp), %r12d # ^W[(n+8) & 15]
1220 xorl %r14d, %r12d # ^W[(n+2) & 15]
1221 roll %r12d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001222 movl %ebx, %edi # c
1223 xorl %ecx, %edi # ^d
1224 xorl %eax, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001225 leal -0x359D3E2A(%rdx,%r12), %edx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001226 addl %edi, %edx # e += (c ^ d ^ b)
1227 movl %ebp, %esi #
1228 roll $5, %esi # rotl32(a,5)
1229 addl %esi, %edx # e += rotl32(a,5)
1230 rorl $2, %eax # b = rotl32(b,30)
1231# 77
Denys Vlasenko947bef02022-01-03 13:00:07 +01001232 xorl %r10d, %r13d # W[n & 15] ^= W[(n+13) & 15]
1233 xorl -32+4*5(%rsp), %r13d # ^W[(n+8) & 15]
1234 xorl %r15d, %r13d # ^W[(n+2) & 15]
1235 roll %r13d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001236 movl %eax, %edi # c
1237 xorl %ebx, %edi # ^d
1238 xorl %ebp, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001239 leal -0x359D3E2A(%rcx,%r13), %ecx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001240 addl %edi, %ecx # e += (c ^ d ^ b)
1241 movl %edx, %esi #
1242 roll $5, %esi # rotl32(a,5)
1243 addl %esi, %ecx # e += rotl32(a,5)
1244 rorl $2, %ebp # b = rotl32(b,30)
1245# 78
Denys Vlasenko947bef02022-01-03 13:00:07 +01001246 xorl %r11d, %r14d # W[n & 15] ^= W[(n+13) & 15]
1247 xorl -32+4*6(%rsp), %r14d # ^W[(n+8) & 15]
1248 xorl -32+4*0(%rsp), %r14d # ^W[(n+2) & 15]
1249 roll %r14d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001250 movl %ebp, %edi # c
1251 xorl %eax, %edi # ^d
1252 xorl %edx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001253 leal -0x359D3E2A(%rbx,%r14), %ebx # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001254 addl %edi, %ebx # e += (c ^ d ^ b)
1255 movl %ecx, %esi #
1256 roll $5, %esi # rotl32(a,5)
1257 addl %esi, %ebx # e += rotl32(a,5)
1258 rorl $2, %edx # b = rotl32(b,30)
1259# 79
Denys Vlasenko947bef02022-01-03 13:00:07 +01001260 xorl %r12d, %r15d # W[n & 15] ^= W[(n+13) & 15]
1261 xorl -32+4*7(%rsp), %r15d # ^W[(n+8) & 15]
1262 xorl -32+4*1(%rsp), %r15d # ^W[(n+2) & 15]
1263 roll %r15d #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001264 movl %edx, %edi # c
1265 xorl %ebp, %edi # ^d
1266 xorl %ecx, %edi # ^b
Denys Vlasenko947bef02022-01-03 13:00:07 +01001267 leal -0x359D3E2A(%rax,%r15), %eax # e += RCONST + W[n & 15]
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001268 addl %edi, %eax # e += (c ^ d ^ b)
1269 movl %ebx, %esi #
1270 roll $5, %esi # rotl32(a,5)
1271 addl %esi, %eax # e += rotl32(a,5)
1272 rorl $2, %ecx # b = rotl32(b,30)
1273
1274 popq %rdi #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001275 popq %r12 #
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +01001276 addl %eax, 80(%rdi) # ctx->hash[0] += a
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001277 popq %r13 #
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +01001278 addl %ebx, 84(%rdi) # ctx->hash[1] += b
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001279 popq %r14 #
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +01001280 addl %ecx, 88(%rdi) # ctx->hash[2] += c
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001281 popq %r15 #
Denys Vlasenkoc3cfcc92022-01-04 01:45:13 +01001282 addl %edx, 92(%rdi) # ctx->hash[3] += d
1283 popq %rbx #
1284 addl %ebp, 96(%rdi) # ctx->hash[4] += e
1285 popq %rbp #
Denys Vlasenko05fd13e2022-01-03 01:57:29 +01001286
1287 ret
1288 .size sha1_process_block64, .-sha1_process_block64
1289#endif