1#if defined(lint) || defined(__lint) 2#include <sys/md5.h> 3 4/* ARGSUSED */ 5void md5_block_asm_host_order(MD5_CTX *ctx, const void *inpp, 6 unsigned int input_length_in_blocks) 7{ 8} 9 10#else 11#include <sys/asm_linkage.h> 12 13 ENTRY_NP(md5_block_asm_host_order) 14 push %rbp 15 push %rbx 16 push %r12 17 push %r13 18 push %r14 19 push %r15 20 21 / rdi = arg #1 (ctx, MD5_CTX pointer) 22 / rsi = arg #2 (ptr, data pointer) 23 / rdx = arg #3 (nbr, number of 64-byte blocks to process) 24 mov %rdi, %rbp / rbp = ctx 25 shl $6, %rdx / rdx = nbr in bytes 26 lea (%rsi,%rdx), %rdi / rdi = end 27 mov 0*4(%rbp), %eax / eax = ctx->A 28 mov 1*4(%rbp), %ebx / ebx = ctx->B 29 mov 2*4(%rbp), %ecx / ecx = ctx->C 30 mov 3*4(%rbp), %edx / edx = ctx->D 31 push %rbp / save ctx 32 / end is 'rdi' 33 / ptr is 'rsi' 34 / A is 'eax' 35 / B is 'ebx' 36 / C is 'ecx' 37 / D is 'edx' 38 39 cmp %rdi, %rsi / cmp end with ptr 40 je 1f / jmp if ptr == end 41 42 / BEGIN of loop over 64-byte blocks 432: / save old values of A, B, C, D 44 mov %eax, %r8d 45 mov %ebx, %r9d 46 mov %ecx, %r14d 47 mov %edx, %r15d 48 mov 0*4(%rsi), %r10d /* (NEXT STEP) X[0] */ 49 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 50 xor %ecx, %r11d /* y ^ ... */ 51 lea -0x28955b88(%eax,%r10d),%eax /* Const + dst + ... r1 */ 52 and %ebx, %r11d /* x & ... */ 53 xor %edx, %r11d /* z ^ ... */ 54 mov 1*4(%rsi),%r10d /* (NEXT STEP) X[1] */ 55 add %r11d, %eax /* dst += ... */ 56 rol $7, %eax /* dst <<< s */ 57 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 58 add %ebx, %eax /* dst += x */ 59 xor %ebx, %r11d /* y ^ ... */ 60 lea -0x173848aa(%edx,%r10d),%edx /* Const + dst + ... r1 */ 61 and %eax, %r11d /* x & ... */ 62 xor %ecx, %r11d /* z ^ ... */ 63 mov 2*4(%rsi),%r10d /* (NEXT STEP) X[2] */ 64 add %r11d, %edx /* dst += ... */ 65 rol $12, %edx /* dst <<< s */ 66 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 67 add %eax, %edx /* dst += x */ 68 xor %eax, %r11d /* y ^ ... */ 69 lea 0x242070db(%ecx,%r10d),%ecx /* Const + dst + ... r1 */ 70 and %edx, %r11d /* x & ... */ 71 xor %ebx, %r11d /* z ^ ... */ 72 mov 3*4(%rsi),%r10d /* (NEXT STEP) X[3] */ 73 add %r11d, %ecx /* dst += ... */ 74 rol $17, %ecx /* dst <<< s */ 75 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 76 add %edx, %ecx /* dst += x */ 77 xor %edx, %r11d /* y ^ ... */ 78 lea -0x3e423112(%ebx,%r10d),%ebx /* Const + dst + ... r1 */ 79 and %ecx, %r11d /* x & ... */ 80 xor %eax, %r11d /* z ^ ... */ 81 mov 4*4(%rsi),%r10d /* (NEXT STEP) X[4] */ 82 add %r11d, %ebx /* dst += ... */ 83 rol $22, %ebx /* dst <<< s */ 84 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 85 add %ecx, %ebx /* dst += x */ 86 xor %ecx, %r11d /* y ^ ... */ 87 lea -0x0a83f051(%eax,%r10d),%eax /* Const + dst + ... r1 */ 88 and %ebx, %r11d /* x & ... */ 89 xor %edx, %r11d /* z ^ ... */ 90 mov 5*4(%rsi),%r10d /* (NEXT STEP) X[5] */ 91 add %r11d, %eax /* dst += ... */ 92 rol $7, %eax /* dst <<< s */ 93 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 94 add %ebx, %eax /* dst += x */ 95 xor %ebx, %r11d /* y ^ ... */ 96 lea 0x4787c62a(%edx,%r10d),%edx /* Const + dst + ... r1 */ 97 and %eax, %r11d /* x & ... */ 98 xor %ecx, %r11d /* z ^ ... */ 99 mov 6*4(%rsi),%r10d /* (NEXT STEP) X[6] */ 100 add %r11d, %edx /* dst += ... */ 101 rol $12, %edx /* dst <<< s */ 102 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 103 add %eax, %edx /* dst += x */ 104 xor %eax, %r11d /* y ^ ... */ 105 lea -0x57cfb9ed(%ecx,%r10d),%ecx /* Const + dst + ... r1 */ 106 and %edx, %r11d /* x & ... */ 107 xor %ebx, %r11d /* z ^ ... */ 108 mov 7*4(%rsi),%r10d /* (NEXT STEP) X[7] */ 109 add %r11d, %ecx /* dst += ... */ 110 rol $17, %ecx /* dst <<< s */ 111 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 112 add %edx, %ecx /* dst += x */ 113 xor %edx, %r11d /* y ^ ... */ 114 lea -0x02b96aff(%ebx,%r10d),%ebx /* Const + dst + ... r1 */ 115 and %ecx, %r11d /* x & ... */ 116 xor %eax, %r11d /* z ^ ... */ 117 mov 8*4(%rsi),%r10d /* (NEXT STEP) X[8] */ 118 add %r11d, %ebx /* dst += ... */ 119 rol $22, %ebx /* dst <<< s */ 120 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 121 add %ecx, %ebx /* dst += x */ 122 xor %ecx, %r11d /* y ^ ... */ 123 lea 0x698098d8(%eax,%r10d),%eax /* Const + dst + ... r1 */ 124 and %ebx, %r11d /* x & ... */ 125 xor %edx, %r11d /* z ^ ... */ 126 mov 9*4(%rsi),%r10d /* (NEXT STEP) X[9] */ 127 add %r11d, %eax /* dst += ... */ 128 rol $7, %eax /* dst <<< s */ 129 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 130 add %ebx, %eax /* dst += x */ 131 xor %ebx, %r11d /* y ^ ... */ 132 lea -0x74bb0851(%edx,%r10d),%edx /* Const + dst + ... r1 */ 133 and %eax, %r11d /* x & ... */ 134 xor %ecx, %r11d /* z ^ ... */ 135 mov 10*4(%rsi),%r10d /* (NEXT STEP) X[10] */ 136 add %r11d, %edx /* dst += ... */ 137 rol $12, %edx /* dst <<< s */ 138 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 139 add %eax, %edx /* dst += x */ 140 xor %eax, %r11d /* y ^ ... */ 141 lea -0x0000a44f(%ecx,%r10d),%ecx /* Const + dst + ... r1 */ 142 and %edx, %r11d /* x & ... */ 143 xor %ebx, %r11d /* z ^ ... */ 144 mov 11*4(%rsi),%r10d /* (NEXT STEP) X[11] */ 145 add %r11d, %ecx /* dst += ... */ 146 rol $17, %ecx /* dst <<< s */ 147 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 148 add %edx, %ecx /* dst += x */ 149 xor %edx, %r11d /* y ^ ... */ 150 lea -0x76a32842(%ebx,%r10d),%ebx /* Const + dst + ... r1 */ 151 and %ecx, %r11d /* x & ... */ 152 xor %eax, %r11d /* z ^ ... */ 153 mov 12*4(%rsi),%r10d /* (NEXT STEP) X[12] */ 154 add %r11d, %ebx /* dst += ... */ 155 rol $22, %ebx /* dst <<< s */ 156 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 157 add %ecx, %ebx /* dst += x */ 158 xor %ecx, %r11d /* y ^ ... */ 159 lea 0x6b901122(%eax,%r10d),%eax /* Const + dst + ... r1 */ 160 and %ebx, %r11d /* x & ... */ 161 xor %edx, %r11d /* z ^ ... */ 162 mov 13*4(%rsi),%r10d /* (NEXT STEP) X[13] */ 163 add %r11d, %eax /* dst += ... */ 164 rol $7, %eax /* dst <<< s */ 165 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 166 add %ebx, %eax /* dst += x */ 167 xor %ebx, %r11d /* y ^ ... */ 168 lea -0x02678e6d(%edx,%r10d),%edx /* Const + dst + ... r1 */ 169 and %eax, %r11d /* x & ... */ 170 xor %ecx, %r11d /* z ^ ... */ 171 mov 14*4(%rsi),%r10d /* (NEXT STEP) X[14] */ 172 add %r11d, %edx /* dst += ... */ 173 rol $12, %edx /* dst <<< s */ 174 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 175 add %eax, %edx /* dst += x */ 176 xor %eax, %r11d /* y ^ ... */ 177 lea -0x5986bc72(%ecx,%r10d),%ecx /* Const + dst + ... r1 */ 178 and %edx, %r11d /* x & ... */ 179 xor %ebx, %r11d /* z ^ ... */ 180 mov 15*4(%rsi),%r10d /* (NEXT STEP) X[15] */ 181 add %r11d, %ecx /* dst += ... */ 182 rol $17, %ecx /* dst <<< s */ 183 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 184 add %edx, %ecx /* dst += x */ 185 xor %edx, %r11d /* y ^ ... */ 186 lea 0x49b40821(%ebx,%r10d),%ebx /* Const + dst + ... r1 */ 187 and %ecx, %r11d /* x & ... */ 188 xor %eax, %r11d /* z ^ ... */ 189 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 190 add %r11d, %ebx /* dst += ... */ 191 rol $22, %ebx /* dst <<< s */ 192 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 193 add %ecx, %ebx /* dst += x */ 194 mov 1*4(%rsi), %r10d /* (NEXT STEP) X[1] */ 195 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 196 mov %edx, %r12d /* (NEXT STEP) z' = %edx */ 197 not %r11d /* not z */ 198 lea -0x09e1da9e(%eax,%r10d),%eax /* Const + dst + ... r2 */ 199 and %ebx, %r12d /* x & z */ 200 and %ecx, %r11d /* y & (not z) */ 201 mov 6*4(%rsi),%r10d /* (NEXT STEP) X[6] */ 202 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 203 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 204 add %r12d, %eax /* dst += ... */ 205 mov %ecx, %r12d /* (NEXT STEP) z' = %ecx */ 206 rol $5, %eax /* dst <<< s */ 207 add %ebx, %eax /* dst += x */ 208 not %r11d /* not z */ 209 lea -0x3fbf4cc0(%edx,%r10d),%edx /* Const + dst + ... r2 */ 210 and %eax, %r12d /* x & z */ 211 and %ebx, %r11d /* y & (not z) */ 212 mov 11*4(%rsi),%r10d /* (NEXT STEP) X[11] */ 213 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 214 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 215 add %r12d, %edx /* dst += ... */ 216 mov %ebx, %r12d /* (NEXT STEP) z' = %ebx */ 217 rol $9, %edx /* dst <<< s */ 218 add %eax, %edx /* dst += x */ 219 not %r11d /* not z */ 220 lea 0x265e5a51(%ecx,%r10d),%ecx /* Const + dst + ... r2 */ 221 and %edx, %r12d /* x & z */ 222 and %eax, %r11d /* y & (not z) */ 223 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 224 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 225 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 226 add %r12d, %ecx /* dst += ... */ 227 mov %eax, %r12d /* (NEXT STEP) z' = %eax */ 228 rol $14, %ecx /* dst <<< s */ 229 add %edx, %ecx /* dst += x */ 230 not %r11d /* not z */ 231 lea -0x16493856(%ebx,%r10d),%ebx /* Const + dst + ... r2 */ 232 and %ecx, %r12d /* x & z */ 233 and %edx, %r11d /* y & (not z) */ 234 mov 5*4(%rsi),%r10d /* (NEXT STEP) X[5] */ 235 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 236 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 237 add %r12d, %ebx /* dst += ... */ 238 mov %edx, %r12d /* (NEXT STEP) z' = %edx */ 239 rol $20, %ebx /* dst <<< s */ 240 add %ecx, %ebx /* dst += x */ 241 not %r11d /* not z */ 242 lea -0x29d0efa3(%eax,%r10d),%eax /* Const + dst + ... r2 */ 243 and %ebx, %r12d /* x & z */ 244 and %ecx, %r11d /* y & (not z) */ 245 mov 10*4(%rsi),%r10d /* (NEXT STEP) X[10] */ 246 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 247 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 248 add %r12d, %eax /* dst += ... */ 249 mov %ecx, %r12d /* (NEXT STEP) z' = %ecx */ 250 rol $5, %eax /* dst <<< s */ 251 add %ebx, %eax /* dst += x */ 252 not %r11d /* not z */ 253 lea 0x2441453(%edx,%r10d),%edx /* Const + dst + ... r2 */ 254 and %eax, %r12d /* x & z */ 255 and %ebx, %r11d /* y & (not z) */ 256 mov 15*4(%rsi),%r10d /* (NEXT STEP) X[15] */ 257 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 258 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 259 add %r12d, %edx /* dst += ... */ 260 mov %ebx, %r12d /* (NEXT STEP) z' = %ebx */ 261 rol $9, %edx /* dst <<< s */ 262 add %eax, %edx /* dst += x */ 263 not %r11d /* not z */ 264 lea -0x275e197f(%ecx,%r10d),%ecx /* Const + dst + ... r2 */ 265 and %edx, %r12d /* x & z */ 266 and %eax, %r11d /* y & (not z) */ 267 mov 4*4(%rsi),%r10d /* (NEXT STEP) X[4] */ 268 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 269 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 270 add %r12d, %ecx /* dst += ... */ 271 mov %eax, %r12d /* (NEXT STEP) z' = %eax */ 272 rol $14, %ecx /* dst <<< s */ 273 add %edx, %ecx /* dst += x */ 274 not %r11d /* not z */ 275 lea -0x182c0438(%ebx,%r10d),%ebx /* Const + dst + ... r2 */ 276 and %ecx, %r12d /* x & z */ 277 and %edx, %r11d /* y & (not z) */ 278 mov 9*4(%rsi),%r10d /* (NEXT STEP) X[9] */ 279 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 280 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 281 add %r12d, %ebx /* dst += ... */ 282 mov %edx, %r12d /* (NEXT STEP) z' = %edx */ 283 rol $20, %ebx /* dst <<< s */ 284 add %ecx, %ebx /* dst += x */ 285 not %r11d /* not z */ 286 lea 0x21e1cde6(%eax,%r10d),%eax /* Const + dst + ... r2 */ 287 and %ebx, %r12d /* x & z */ 288 and %ecx, %r11d /* y & (not z) */ 289 mov 14*4(%rsi),%r10d /* (NEXT STEP) X[14] */ 290 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 291 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 292 add %r12d, %eax /* dst += ... */ 293 mov %ecx, %r12d /* (NEXT STEP) z' = %ecx */ 294 rol $5, %eax /* dst <<< s */ 295 add %ebx, %eax /* dst += x */ 296 not %r11d /* not z */ 297 lea -0x3cc8f82a(%edx,%r10d),%edx /* Const + dst + ... r2 */ 298 and %eax, %r12d /* x & z */ 299 and %ebx, %r11d /* y & (not z) */ 300 mov 3*4(%rsi),%r10d /* (NEXT STEP) X[3] */ 301 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 302 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 303 add %r12d, %edx /* dst += ... */ 304 mov %ebx, %r12d /* (NEXT STEP) z' = %ebx */ 305 rol $9, %edx /* dst <<< s */ 306 add %eax, %edx /* dst += x */ 307 not %r11d /* not z */ 308 lea -0x0b2af279(%ecx,%r10d),%ecx /* Const + dst + ... r2 */ 309 and %edx, %r12d /* x & z */ 310 and %eax, %r11d /* y & (not z) */ 311 mov 8*4(%rsi),%r10d /* (NEXT STEP) X[8] */ 312 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 313 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 314 add %r12d, %ecx /* dst += ... */ 315 mov %eax, %r12d /* (NEXT STEP) z' = %eax */ 316 rol $14, %ecx /* dst <<< s */ 317 add %edx, %ecx /* dst += x */ 318 not %r11d /* not z */ 319 lea 0x455a14ed(%ebx,%r10d),%ebx /* Const + dst + ... r2 */ 320 and %ecx, %r12d /* x & z */ 321 and %edx, %r11d /* y & (not z) */ 322 mov 13*4(%rsi),%r10d /* (NEXT STEP) X[13] */ 323 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 324 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 325 add %r12d, %ebx /* dst += ... */ 326 mov %edx, %r12d /* (NEXT STEP) z' = %edx */ 327 rol $20, %ebx /* dst <<< s */ 328 add %ecx, %ebx /* dst += x */ 329 not %r11d /* not z */ 330 lea -0x561c16fb(%eax,%r10d),%eax /* Const + dst + ... r2 */ 331 and %ebx, %r12d /* x & z */ 332 and %ecx, %r11d /* y & (not z) */ 333 mov 2*4(%rsi),%r10d /* (NEXT STEP) X[2] */ 334 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 335 mov %ecx, %r11d /* (NEXT STEP) z' = %ecx */ 336 add %r12d, %eax /* dst += ... */ 337 mov %ecx, %r12d /* (NEXT STEP) z' = %ecx */ 338 rol $5, %eax /* dst <<< s */ 339 add %ebx, %eax /* dst += x */ 340 not %r11d /* not z */ 341 lea -0x03105c08(%edx,%r10d),%edx /* Const + dst + ... r2 */ 342 and %eax, %r12d /* x & z */ 343 and %ebx, %r11d /* y & (not z) */ 344 mov 7*4(%rsi),%r10d /* (NEXT STEP) X[7] */ 345 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 346 mov %ebx, %r11d /* (NEXT STEP) z' = %ebx */ 347 add %r12d, %edx /* dst += ... */ 348 mov %ebx, %r12d /* (NEXT STEP) z' = %ebx */ 349 rol $9, %edx /* dst <<< s */ 350 add %eax, %edx /* dst += x */ 351 not %r11d /* not z */ 352 lea 0x676f02d9(%ecx,%r10d),%ecx /* Const + dst + ... r2 */ 353 and %edx, %r12d /* x & z */ 354 and %eax, %r11d /* y & (not z) */ 355 mov 12*4(%rsi),%r10d /* (NEXT STEP) X[12] */ 356 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 357 mov %eax, %r11d /* (NEXT STEP) z' = %eax */ 358 add %r12d, %ecx /* dst += ... */ 359 mov %eax, %r12d /* (NEXT STEP) z' = %eax */ 360 rol $14, %ecx /* dst <<< s */ 361 add %edx, %ecx /* dst += x */ 362 not %r11d /* not z */ 363 lea -0x72d5b376(%ebx,%r10d),%ebx /* Const + dst + ... r2 */ 364 and %ecx, %r12d /* x & z */ 365 and %edx, %r11d /* y & (not z) */ 366 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 367 or %r11d, %r12d /* (y & (not z)) | (x & z) */ 368 mov %edx, %r11d /* (NEXT STEP) z' = %edx */ 369 add %r12d, %ebx /* dst += ... */ 370 mov %edx, %r12d /* (NEXT STEP) z' = %edx */ 371 rol $20, %ebx /* dst <<< s */ 372 add %ecx, %ebx /* dst += x */ 373 mov 5*4(%rsi), %r10d /* (NEXT STEP) X[5] */ 374 mov %ecx, %r11d /* (NEXT STEP) y' = %ecx */ 375 lea -0x0005c6be(%eax,%r10d),%eax /* Const + dst + ... r3 */ 376 mov 8*4(%rsi),%r10d /* (NEXT STEP) X[8] */ 377 xor %edx, %r11d /* z ^ ... */ 378 xor %ebx, %r11d /* x ^ ... */ 379 add %r11d, %eax /* dst += ... */ 380 rol $4, %eax /* dst <<< s */ 381 mov %ebx, %r11d /* (NEXT STEP) y' = %ebx */ 382 add %ebx, %eax /* dst += x */ 383 lea -0x788e097f(%edx,%r10d),%edx /* Const + dst + ... r3 */ 384 mov 11*4(%rsi),%r10d /* (NEXT STEP) X[11] */ 385 xor %ecx, %r11d /* z ^ ... */ 386 xor %eax, %r11d /* x ^ ... */ 387 add %r11d, %edx /* dst += ... */ 388 rol $11, %edx /* dst <<< s */ 389 mov %eax, %r11d /* (NEXT STEP) y' = %eax */ 390 add %eax, %edx /* dst += x */ 391 lea 0x6d9d6122(%ecx,%r10d),%ecx /* Const + dst + ... r3 */ 392 mov 14*4(%rsi),%r10d /* (NEXT STEP) X[14] */ 393 xor %ebx, %r11d /* z ^ ... */ 394 xor %edx, %r11d /* x ^ ... */ 395 add %r11d, %ecx /* dst += ... */ 396 rol $16, %ecx /* dst <<< s */ 397 mov %edx, %r11d /* (NEXT STEP) y' = %edx */ 398 add %edx, %ecx /* dst += x */ 399 lea -0x021ac7f4(%ebx,%r10d),%ebx /* Const + dst + ... r3 */ 400 mov 1*4(%rsi),%r10d /* (NEXT STEP) X[1] */ 401 xor %eax, %r11d /* z ^ ... */ 402 xor %ecx, %r11d /* x ^ ... */ 403 add %r11d, %ebx /* dst += ... */ 404 rol $23, %ebx /* dst <<< s */ 405 mov %ecx, %r11d /* (NEXT STEP) y' = %ecx */ 406 add %ecx, %ebx /* dst += x */ 407 lea -0x5b4115bc(%eax,%r10d),%eax /* Const + dst + ... r3 */ 408 mov 4*4(%rsi),%r10d /* (NEXT STEP) X[4] */ 409 xor %edx, %r11d /* z ^ ... */ 410 xor %ebx, %r11d /* x ^ ... */ 411 add %r11d, %eax /* dst += ... */ 412 rol $4, %eax /* dst <<< s */ 413 mov %ebx, %r11d /* (NEXT STEP) y' = %ebx */ 414 add %ebx, %eax /* dst += x */ 415 lea 0x4bdecfa9(%edx,%r10d),%edx /* Const + dst + ... r3 */ 416 mov 7*4(%rsi),%r10d /* (NEXT STEP) X[7] */ 417 xor %ecx, %r11d /* z ^ ... */ 418 xor %eax, %r11d /* x ^ ... */ 419 add %r11d, %edx /* dst += ... */ 420 rol $11, %edx /* dst <<< s */ 421 mov %eax, %r11d /* (NEXT STEP) y' = %eax */ 422 add %eax, %edx /* dst += x */ 423 lea -0x0944b4a0(%ecx,%r10d),%ecx /* Const + dst + ... r3 */ 424 mov 10*4(%rsi),%r10d /* (NEXT STEP) X[10] */ 425 xor %ebx, %r11d /* z ^ ... */ 426 xor %edx, %r11d /* x ^ ... */ 427 add %r11d, %ecx /* dst += ... */ 428 rol $16, %ecx /* dst <<< s */ 429 mov %edx, %r11d /* (NEXT STEP) y' = %edx */ 430 add %edx, %ecx /* dst += x */ 431 lea -0x41404390(%ebx,%r10d),%ebx /* Const + dst + ... r3 */ 432 mov 13*4(%rsi),%r10d /* (NEXT STEP) X[13] */ 433 xor %eax, %r11d /* z ^ ... */ 434 xor %ecx, %r11d /* x ^ ... */ 435 add %r11d, %ebx /* dst += ... */ 436 rol $23, %ebx /* dst <<< s */ 437 mov %ecx, %r11d /* (NEXT STEP) y' = %ecx */ 438 add %ecx, %ebx /* dst += x */ 439 lea 0x289b7ec6(%eax,%r10d),%eax /* Const + dst + ... r3 */ 440 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 441 xor %edx, %r11d /* z ^ ... */ 442 xor %ebx, %r11d /* x ^ ... */ 443 add %r11d, %eax /* dst += ... */ 444 rol $4, %eax /* dst <<< s */ 445 mov %ebx, %r11d /* (NEXT STEP) y' = %ebx */ 446 add %ebx, %eax /* dst += x */ 447 lea -0x155ed806(%edx,%r10d),%edx /* Const + dst + ... r3 */ 448 mov 3*4(%rsi),%r10d /* (NEXT STEP) X[3] */ 449 xor %ecx, %r11d /* z ^ ... */ 450 xor %eax, %r11d /* x ^ ... */ 451 add %r11d, %edx /* dst += ... */ 452 rol $11, %edx /* dst <<< s */ 453 mov %eax, %r11d /* (NEXT STEP) y' = %eax */ 454 add %eax, %edx /* dst += x */ 455 lea -0x2b10cf7b(%ecx,%r10d),%ecx /* Const + dst + ... r3 */ 456 mov 6*4(%rsi),%r10d /* (NEXT STEP) X[6] */ 457 xor %ebx, %r11d /* z ^ ... */ 458 xor %edx, %r11d /* x ^ ... */ 459 add %r11d, %ecx /* dst += ... */ 460 rol $16, %ecx /* dst <<< s */ 461 mov %edx, %r11d /* (NEXT STEP) y' = %edx */ 462 add %edx, %ecx /* dst += x */ 463 lea 0x4881d05(%ebx,%r10d),%ebx /* Const + dst + ... r3 */ 464 mov 9*4(%rsi),%r10d /* (NEXT STEP) X[9] */ 465 xor %eax, %r11d /* z ^ ... */ 466 xor %ecx, %r11d /* x ^ ... */ 467 add %r11d, %ebx /* dst += ... */ 468 rol $23, %ebx /* dst <<< s */ 469 mov %ecx, %r11d /* (NEXT STEP) y' = %ecx */ 470 add %ecx, %ebx /* dst += x */ 471 lea -0x262b2fc7(%eax,%r10d),%eax /* Const + dst + ... r3 */ 472 mov 12*4(%rsi),%r10d /* (NEXT STEP) X[12] */ 473 xor %edx, %r11d /* z ^ ... */ 474 xor %ebx, %r11d /* x ^ ... */ 475 add %r11d, %eax /* dst += ... */ 476 rol $4, %eax /* dst <<< s */ 477 mov %ebx, %r11d /* (NEXT STEP) y' = %ebx */ 478 add %ebx, %eax /* dst += x */ 479 lea -0x1924661b(%edx,%r10d),%edx /* Const + dst + ... r3 */ 480 mov 15*4(%rsi),%r10d /* (NEXT STEP) X[15] */ 481 xor %ecx, %r11d /* z ^ ... */ 482 xor %eax, %r11d /* x ^ ... */ 483 add %r11d, %edx /* dst += ... */ 484 rol $11, %edx /* dst <<< s */ 485 mov %eax, %r11d /* (NEXT STEP) y' = %eax */ 486 add %eax, %edx /* dst += x */ 487 lea 0x1fa27cf8(%ecx,%r10d),%ecx /* Const + dst + ... r3 */ 488 mov 2*4(%rsi),%r10d /* (NEXT STEP) X[2] */ 489 xor %ebx, %r11d /* z ^ ... */ 490 xor %edx, %r11d /* x ^ ... */ 491 add %r11d, %ecx /* dst += ... */ 492 rol $16, %ecx /* dst <<< s */ 493 mov %edx, %r11d /* (NEXT STEP) y' = %edx */ 494 add %edx, %ecx /* dst += x */ 495 lea -0x3b53a99b(%ebx,%r10d),%ebx /* Const + dst + ... r3 */ 496 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 497 xor %eax, %r11d /* z ^ ... */ 498 xor %ecx, %r11d /* x ^ ... */ 499 add %r11d, %ebx /* dst += ... */ 500 rol $23, %ebx /* dst <<< s */ 501 mov %ecx, %r11d /* (NEXT STEP) y' = %ecx */ 502 add %ecx, %ebx /* dst += x */ 503 mov 0*4(%rsi), %r10d /* (NEXT STEP) X[0] */ 504 mov $0xffffffff, %r11d 505 xor %edx, %r11d /* (NEXT STEP) not z' = not %edx*/ 506 lea -0x0bd6ddbc(%eax,%r10d),%eax /* Const + dst + ... r4 */ 507 or %ebx, %r11d /* x | ... */ 508 xor %ecx, %r11d /* y ^ ... */ 509 add %r11d, %eax /* dst += ... */ 510 mov 7*4(%rsi),%r10d /* (NEXT STEP) X[7] */ 511 mov $0xffffffff, %r11d 512 rol $6, %eax /* dst <<< s */ 513 xor %ecx, %r11d /* (NEXT STEP) not z' = not %ecx */ 514 add %ebx, %eax /* dst += x */ 515 lea 0x432aff97(%edx,%r10d),%edx /* Const + dst + ... r4 */ 516 or %eax, %r11d /* x | ... */ 517 xor %ebx, %r11d /* y ^ ... */ 518 add %r11d, %edx /* dst += ... */ 519 mov 14*4(%rsi),%r10d /* (NEXT STEP) X[14] */ 520 mov $0xffffffff, %r11d 521 rol $10, %edx /* dst <<< s */ 522 xor %ebx, %r11d /* (NEXT STEP) not z' = not %ebx */ 523 add %eax, %edx /* dst += x */ 524 lea -0x546bdc59(%ecx,%r10d),%ecx /* Const + dst + ... r4 */ 525 or %edx, %r11d /* x | ... */ 526 xor %eax, %r11d /* y ^ ... */ 527 add %r11d, %ecx /* dst += ... */ 528 mov 5*4(%rsi),%r10d /* (NEXT STEP) X[5] */ 529 mov $0xffffffff, %r11d 530 rol $15, %ecx /* dst <<< s */ 531 xor %eax, %r11d /* (NEXT STEP) not z' = not %eax */ 532 add %edx, %ecx /* dst += x */ 533 lea -0x036c5fc7(%ebx,%r10d),%ebx /* Const + dst + ... r4 */ 534 or %ecx, %r11d /* x | ... */ 535 xor %edx, %r11d /* y ^ ... */ 536 add %r11d, %ebx /* dst += ... */ 537 mov 12*4(%rsi),%r10d /* (NEXT STEP) X[12] */ 538 mov $0xffffffff, %r11d 539 rol $21, %ebx /* dst <<< s */ 540 xor %edx, %r11d /* (NEXT STEP) not z' = not %edx */ 541 add %ecx, %ebx /* dst += x */ 542 lea 0x655b59c3(%eax,%r10d),%eax /* Const + dst + ... r4 */ 543 or %ebx, %r11d /* x | ... */ 544 xor %ecx, %r11d /* y ^ ... */ 545 add %r11d, %eax /* dst += ... */ 546 mov 3*4(%rsi),%r10d /* (NEXT STEP) X[3] */ 547 mov $0xffffffff, %r11d 548 rol $6, %eax /* dst <<< s */ 549 xor %ecx, %r11d /* (NEXT STEP) not z' = not %ecx */ 550 add %ebx, %eax /* dst += x */ 551 lea -0x70f3336e(%edx,%r10d),%edx /* Const + dst + ... r4 */ 552 or %eax, %r11d /* x | ... */ 553 xor %ebx, %r11d /* y ^ ... */ 554 add %r11d, %edx /* dst += ... */ 555 mov 10*4(%rsi),%r10d /* (NEXT STEP) X[10] */ 556 mov $0xffffffff, %r11d 557 rol $10, %edx /* dst <<< s */ 558 xor %ebx, %r11d /* (NEXT STEP) not z' = not %ebx */ 559 add %eax, %edx /* dst += x */ 560 lea -0x00100b83(%ecx,%r10d),%ecx /* Const + dst + ... r4 */ 561 or %edx, %r11d /* x | ... */ 562 xor %eax, %r11d /* y ^ ... */ 563 add %r11d, %ecx /* dst += ... */ 564 mov 1*4(%rsi),%r10d /* (NEXT STEP) X[1] */ 565 mov $0xffffffff, %r11d 566 rol $15, %ecx /* dst <<< s */ 567 xor %eax, %r11d /* (NEXT STEP) not z' = not %eax */ 568 add %edx, %ecx /* dst += x */ 569 lea -0x7a7ba22f(%ebx,%r10d),%ebx /* Const + dst + ... r4 */ 570 or %ecx, %r11d /* x | ... */ 571 xor %edx, %r11d /* y ^ ... */ 572 add %r11d, %ebx /* dst += ... */ 573 mov 8*4(%rsi),%r10d /* (NEXT STEP) X[8] */ 574 mov $0xffffffff, %r11d 575 rol $21, %ebx /* dst <<< s */ 576 xor %edx, %r11d /* (NEXT STEP) not z' = not %edx */ 577 add %ecx, %ebx /* dst += x */ 578 lea 0x6fa87e4f(%eax,%r10d),%eax /* Const + dst + ... r4 */ 579 or %ebx, %r11d /* x | ... */ 580 xor %ecx, %r11d /* y ^ ... */ 581 add %r11d, %eax /* dst += ... */ 582 mov 15*4(%rsi),%r10d /* (NEXT STEP) X[15] */ 583 mov $0xffffffff, %r11d 584 rol $6, %eax /* dst <<< s */ 585 xor %ecx, %r11d /* (NEXT STEP) not z' = not %ecx */ 586 add %ebx, %eax /* dst += x */ 587 lea -0x01d31920(%edx,%r10d),%edx /* Const + dst + ... r4 */ 588 or %eax, %r11d /* x | ... */ 589 xor %ebx, %r11d /* y ^ ... */ 590 add %r11d, %edx /* dst += ... */ 591 mov 6*4(%rsi),%r10d /* (NEXT STEP) X[6] */ 592 mov $0xffffffff, %r11d 593 rol $10, %edx /* dst <<< s */ 594 xor %ebx, %r11d /* (NEXT STEP) not z' = not %ebx */ 595 add %eax, %edx /* dst += x */ 596 lea -0x5cfebcec(%ecx,%r10d),%ecx /* Const + dst + ... r4 */ 597 or %edx, %r11d /* x | ... */ 598 xor %eax, %r11d /* y ^ ... */ 599 add %r11d, %ecx /* dst += ... */ 600 mov 13*4(%rsi),%r10d /* (NEXT STEP) X[13] */ 601 mov $0xffffffff, %r11d 602 rol $15, %ecx /* dst <<< s */ 603 xor %eax, %r11d /* (NEXT STEP) not z' = not %eax */ 604 add %edx, %ecx /* dst += x */ 605 lea 0x4e0811a1(%ebx,%r10d),%ebx /* Const + dst + ... r4 */ 606 or %ecx, %r11d /* x | ... */ 607 xor %edx, %r11d /* y ^ ... */ 608 add %r11d, %ebx /* dst += ... */ 609 mov 4*4(%rsi),%r10d /* (NEXT STEP) X[4] */ 610 mov $0xffffffff, %r11d 611 rol $21, %ebx /* dst <<< s */ 612 xor %edx, %r11d /* (NEXT STEP) not z' = not %edx */ 613 add %ecx, %ebx /* dst += x */ 614 lea -0x08ac817e(%eax,%r10d),%eax /* Const + dst + ... r4 */ 615 or %ebx, %r11d /* x | ... */ 616 xor %ecx, %r11d /* y ^ ... */ 617 add %r11d, %eax /* dst += ... */ 618 mov 11*4(%rsi),%r10d /* (NEXT STEP) X[11] */ 619 mov $0xffffffff, %r11d 620 rol $6, %eax /* dst <<< s */ 621 xor %ecx, %r11d /* (NEXT STEP) not z' = not %ecx */ 622 add %ebx, %eax /* dst += x */ 623 lea -0x42c50dcb(%edx,%r10d),%edx /* Const + dst + ... r4 */ 624 or %eax, %r11d /* x | ... */ 625 xor %ebx, %r11d /* y ^ ... */ 626 add %r11d, %edx /* dst += ... */ 627 mov 2*4(%rsi),%r10d /* (NEXT STEP) X[2] */ 628 mov $0xffffffff, %r11d 629 rol $10, %edx /* dst <<< s */ 630 xor %ebx, %r11d /* (NEXT STEP) not z' = not %ebx */ 631 add %eax, %edx /* dst += x */ 632 lea 0x2ad7d2bb(%ecx,%r10d),%ecx /* Const + dst + ... r4 */ 633 or %edx, %r11d /* x | ... */ 634 xor %eax, %r11d /* y ^ ... */ 635 add %r11d, %ecx /* dst += ... */ 636 mov 9*4(%rsi),%r10d /* (NEXT STEP) X[9] */ 637 mov $0xffffffff, %r11d 638 rol $15, %ecx /* dst <<< s */ 639 xor %eax, %r11d /* (NEXT STEP) not z' = not %eax */ 640 add %edx, %ecx /* dst += x */ 641 lea -0x14792c6f(%ebx,%r10d),%ebx /* Const + dst + ... r4 */ 642 or %ecx, %r11d /* x | ... */ 643 xor %edx, %r11d /* y ^ ... */ 644 add %r11d, %ebx /* dst += ... */ 645 mov 0*4(%rsi),%r10d /* (NEXT STEP) X[0] */ 646 mov $0xffffffff, %r11d 647 rol $21, %ebx /* dst <<< s */ 648 xor %edx, %r11d /* (NEXT STEP) not z' = not %edx */ 649 add %ecx, %ebx /* dst += x */ 650 / add old values of A, B, C, D 651 add %r8d, %eax 652 add %r9d, %ebx 653 add %r14d, %ecx 654 add %r15d, %edx 655 656 / loop control 657 add $64, %rsi / ptr += 64 658 cmp %rdi, %rsi / cmp end with ptr 659 jb 2b / jmp if ptr < end 660 / END of loop over 64-byte blocks 661 6621: pop %rbp / restore ctx 663 mov %eax, 0*4(%rbp) / ctx->A = A 664 mov %ebx, 1*4(%rbp) / ctx->B = B 665 mov %ecx, 2*4(%rbp) / ctx->C = C 666 mov %edx, 3*4(%rbp) / ctx->D = D 667 668 pop %r15 669 pop %r14 670 pop %r13 671 pop %r12 672 pop %rbx 673 pop %rbp 674 ret 675 SET_SIZE(md5_block_asm_host_order) 676 677#endif /* lint || __lint */ 678