Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1 | ### Generated by hash_md5_sha_x86-64.S.sh ### |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 2 | |
| 3 | #if CONFIG_SHA1_SMALL == 0 && defined(__GNUC__) && defined(__x86_64__) |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 4 | .section .text.sha1_process_block64,"ax",@progbits |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 5 | .globl sha1_process_block64 |
| 6 | .hidden sha1_process_block64 |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 7 | .type sha1_process_block64, @function |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 8 | |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 9 | .balign 8 # allow decoders to fetch at least 5 first insns |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 10 | sha1_process_block64: |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 11 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 17 | pushq %rdi # we need ctx at the end |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 18 | |
| 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 Vlasenko | 4387077 | 2022-01-03 13:14:09 +0100 | [diff] [blame] | 24 | # (TODO: actually W[0..7] are used a bit more often, put _them_ into r8..r15?) |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 25 | movl $3, %eax |
| 26 | 1: |
| 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 Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 33 | |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 34 | 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 Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 40 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 57 | # 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 63 | leal 0x5A827999(%rbp,%rsi), %ebp # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 64 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 75 | leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 76 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 87 | leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 88 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 99 | leal 0x5A827999(%rbx,%rsi), %ebx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 100 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 111 | leal 0x5A827999(%rax,%rsi), %eax # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 112 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 123 | leal 0x5A827999(%rbp,%rsi), %ebp # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 124 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 135 | leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 136 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 147 | leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 148 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 159 | leal 0x5A827999(%rbx,%r8), %ebx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 160 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 171 | leal 0x5A827999(%rax,%r9), %eax # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 172 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 183 | leal 0x5A827999(%rbp,%r10), %ebp # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 184 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 195 | leal 0x5A827999(%rdx,%r11), %edx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 196 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 207 | leal 0x5A827999(%rcx,%r12), %ecx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 208 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 219 | leal 0x5A827999(%rbx,%r13), %ebx # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 220 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 231 | leal 0x5A827999(%rax,%r14), %eax # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 232 | 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 Vlasenko | 7abb2bb | 2022-01-03 17:02:48 +0100 | [diff] [blame] | 243 | leal 0x5A827999(%rbp,%r15), %ebp # e += RCONST + W[n] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 244 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 260 | leal 0x5A827999(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 261 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 277 | leal 0x5A827999(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 278 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 294 | leal 0x5A827999(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 295 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 311 | leal 0x5A827999(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 312 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 327 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 328 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 343 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 344 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 359 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 360 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 375 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 376 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 382 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 386 | movl %edx, %edi # c |
| 387 | xorl %ebp, %edi # ^d |
| 388 | xorl %ecx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 389 | leal 0x6ED9EBA1(%rax,%r8), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 390 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 396 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 400 | movl %ecx, %edi # c |
| 401 | xorl %edx, %edi # ^d |
| 402 | xorl %ebx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 403 | leal 0x6ED9EBA1(%rbp,%r9), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 404 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 410 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 414 | movl %ebx, %edi # c |
| 415 | xorl %ecx, %edi # ^d |
| 416 | xorl %eax, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 417 | leal 0x6ED9EBA1(%rdx,%r10), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 418 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 424 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 428 | movl %eax, %edi # c |
| 429 | xorl %ebx, %edi # ^d |
| 430 | xorl %ebp, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 431 | leal 0x6ED9EBA1(%rcx,%r11), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 432 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 438 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 442 | movl %ebp, %edi # c |
| 443 | xorl %eax, %edi # ^d |
| 444 | xorl %edx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 445 | leal 0x6ED9EBA1(%rbx,%r12), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 446 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 452 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 456 | movl %edx, %edi # c |
| 457 | xorl %ebp, %edi # ^d |
| 458 | xorl %ecx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 459 | leal 0x6ED9EBA1(%rax,%r13), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 460 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 466 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 470 | movl %ecx, %edi # c |
| 471 | xorl %edx, %edi # ^d |
| 472 | xorl %ebx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 473 | leal 0x6ED9EBA1(%rbp,%r14), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 474 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 480 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 484 | movl %ebx, %edi # c |
| 485 | xorl %ecx, %edi # ^d |
| 486 | xorl %eax, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 487 | leal 0x6ED9EBA1(%rdx,%r15), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 488 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 503 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 504 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 519 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 520 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 535 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 536 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 551 | leal 0x6ED9EBA1(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 552 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 567 | leal 0x6ED9EBA1(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 568 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 583 | leal 0x6ED9EBA1(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 584 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 599 | leal 0x6ED9EBA1(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 600 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 615 | leal 0x6ED9EBA1(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 616 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 628 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 632 | addl %edi, %ebp # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 633 | leal -0x70E44324(%rbp,%r8), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 634 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 645 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 649 | addl %edi, %edx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 650 | leal -0x70E44324(%rdx,%r9), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 651 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 662 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 666 | addl %edi, %ecx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 667 | leal -0x70E44324(%rcx,%r10), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 668 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 679 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 683 | addl %edi, %ebx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 684 | leal -0x70E44324(%rbx,%r11), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 685 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 696 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 700 | addl %edi, %eax # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 701 | leal -0x70E44324(%rax,%r12), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 702 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 713 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 717 | addl %edi, %ebp # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 718 | leal -0x70E44324(%rbp,%r13), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 719 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 730 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 734 | addl %edi, %edx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 735 | leal -0x70E44324(%rdx,%r14), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 736 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 747 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 751 | addl %edi, %ecx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 752 | leal -0x70E44324(%rcx,%r15), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 753 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 771 | leal -0x70E44324(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 772 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 790 | leal -0x70E44324(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 791 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 809 | leal -0x70E44324(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 810 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 828 | leal -0x70E44324(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 829 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 847 | leal -0x70E44324(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 848 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 866 | leal -0x70E44324(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 867 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 885 | leal -0x70E44324(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 886 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 904 | leal -0x70E44324(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 905 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 916 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 920 | addl %edi, %edx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 921 | leal -0x70E44324(%rdx,%r8), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 922 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 933 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 937 | addl %edi, %ecx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 938 | leal -0x70E44324(%rcx,%r9), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 939 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 950 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 954 | addl %edi, %ebx # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 955 | leal -0x70E44324(%rbx,%r10), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 956 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 967 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 971 | addl %edi, %eax # += ((b | c) & d) | (b & c) |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 972 | leal -0x70E44324(%rax,%r11), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 973 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 978 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 982 | movl %ecx, %edi # c |
| 983 | xorl %edx, %edi # ^d |
| 984 | xorl %ebx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 985 | leal -0x359D3E2A(%rbp,%r12), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 986 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 992 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 996 | movl %ebx, %edi # c |
| 997 | xorl %ecx, %edi # ^d |
| 998 | xorl %eax, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 999 | leal -0x359D3E2A(%rdx,%r13), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1000 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1006 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1010 | movl %eax, %edi # c |
| 1011 | xorl %ebx, %edi # ^d |
| 1012 | xorl %ebp, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1013 | leal -0x359D3E2A(%rcx,%r14), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1014 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1020 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1024 | movl %ebp, %edi # c |
| 1025 | xorl %eax, %edi # ^d |
| 1026 | xorl %edx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1027 | leal -0x359D3E2A(%rbx,%r15), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1028 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1043 | leal -0x359D3E2A(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1044 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1059 | leal -0x359D3E2A(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1060 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1075 | leal -0x359D3E2A(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1076 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1091 | leal -0x359D3E2A(%rcx,%rsi), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1092 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1107 | leal -0x359D3E2A(%rbx,%rsi), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1108 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1123 | leal -0x359D3E2A(%rax,%rsi), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1124 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1139 | leal -0x359D3E2A(%rbp,%rsi), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1140 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1155 | leal -0x359D3E2A(%rdx,%rsi), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1156 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1162 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1166 | movl %eax, %edi # c |
| 1167 | xorl %ebx, %edi # ^d |
| 1168 | xorl %ebp, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1169 | leal -0x359D3E2A(%rcx,%r8), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1170 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1176 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1180 | movl %ebp, %edi # c |
| 1181 | xorl %eax, %edi # ^d |
| 1182 | xorl %edx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1183 | leal -0x359D3E2A(%rbx,%r9), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1184 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1190 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1194 | movl %edx, %edi # c |
| 1195 | xorl %ebp, %edi # ^d |
| 1196 | xorl %ecx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1197 | leal -0x359D3E2A(%rax,%r10), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1198 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1204 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1208 | movl %ecx, %edi # c |
| 1209 | xorl %edx, %edi # ^d |
| 1210 | xorl %ebx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1211 | leal -0x359D3E2A(%rbp,%r11), %ebp # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1212 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1218 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1222 | movl %ebx, %edi # c |
| 1223 | xorl %ecx, %edi # ^d |
| 1224 | xorl %eax, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1225 | leal -0x359D3E2A(%rdx,%r12), %edx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1226 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1232 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1236 | movl %eax, %edi # c |
| 1237 | xorl %ebx, %edi # ^d |
| 1238 | xorl %ebp, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1239 | leal -0x359D3E2A(%rcx,%r13), %ecx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1240 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1246 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1250 | movl %ebp, %edi # c |
| 1251 | xorl %eax, %edi # ^d |
| 1252 | xorl %edx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1253 | leal -0x359D3E2A(%rbx,%r14), %ebx # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1254 | 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 Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1260 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1264 | movl %edx, %edi # c |
| 1265 | xorl %ebp, %edi # ^d |
| 1266 | xorl %ecx, %edi # ^b |
Denys Vlasenko | 947bef0 | 2022-01-03 13:00:07 +0100 | [diff] [blame] | 1267 | leal -0x359D3E2A(%rax,%r15), %eax # e += RCONST + W[n & 15] |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1268 | 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 Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1275 | popq %r12 # |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 1276 | addl %eax, 80(%rdi) # ctx->hash[0] += a |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1277 | popq %r13 # |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 1278 | addl %ebx, 84(%rdi) # ctx->hash[1] += b |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1279 | popq %r14 # |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 1280 | addl %ecx, 88(%rdi) # ctx->hash[2] += c |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1281 | popq %r15 # |
Denys Vlasenko | c3cfcc9 | 2022-01-04 01:45:13 +0100 | [diff] [blame] | 1282 | addl %edx, 92(%rdi) # ctx->hash[3] += d |
| 1283 | popq %rbx # |
| 1284 | addl %ebp, 96(%rdi) # ctx->hash[4] += e |
| 1285 | popq %rbp # |
Denys Vlasenko | 05fd13e | 2022-01-03 01:57:29 +0100 | [diff] [blame] | 1286 | |
| 1287 | ret |
| 1288 | .size sha1_process_block64, .-sha1_process_block64 |
| 1289 | #endif |