| // This file is generated from a similarly-named Perl script in the BoringSSL | |
| // source tree. Do not edit by hand. | |
| #include <openssl/asm_base.h> | |
| #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && defined(__ELF__) | |
| .text | |
| .align 16 | |
| .globl md5_block_asm_data_order | |
| .hidden md5_block_asm_data_order | |
| .type md5_block_asm_data_order,@function | |
| md5_block_asm_data_order: | |
| .cfi_startproc | |
| _CET_ENDBR | |
| pushq %rbp | |
| .cfi_adjust_cfa_offset 8 | |
| .cfi_offset rbp,-16 | |
| pushq %rbx | |
| .cfi_adjust_cfa_offset 8 | |
| .cfi_offset rbx,-24 | |
| pushq %r12 | |
| .cfi_adjust_cfa_offset 8 | |
| .cfi_offset r12,-32 | |
| pushq %r14 | |
| .cfi_adjust_cfa_offset 8 | |
| .cfi_offset r14,-40 | |
| pushq %r15 | |
| .cfi_adjust_cfa_offset 8 | |
| .cfi_offset r15,-48 | |
| .Lprologue: | |
| // rdi = arg #1 (ctx, MD5_CTX pointer) | |
| // rsi = arg #2 (ptr, data pointer) | |
| // rdx = arg #3 (nbr, number of 16-word blocks to process) | |
| movq %rdi,%rbp // rbp = ctx | |
| shlq $6,%rdx // rdx = nbr in bytes | |
| leaq (%rsi,%rdx,1),%rdi // rdi = end | |
| movl 0(%rbp),%eax // eax = ctx->A | |
| movl 4(%rbp),%ebx // ebx = ctx->B | |
| movl 8(%rbp),%ecx // ecx = ctx->C | |
| movl 12(%rbp),%edx // edx = ctx->D | |
| // end is 'rdi' | |
| // ptr is 'rsi' | |
| // A is 'eax' | |
| // B is 'ebx' | |
| // C is 'ecx' | |
| // D is 'edx' | |
| cmpq %rdi,%rsi // cmp end with ptr | |
| je .Lend // jmp if ptr == end | |
| // BEGIN of loop over 16-word blocks | |
| .Lloop: // save old values of A, B, C, D | |
| movl %eax,%r8d | |
| movl %ebx,%r9d | |
| movl %ecx,%r14d | |
| movl %edx,%r15d | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| xorl %ecx,%r11d // y ^ ... | |
| leal -680876936(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r11d // x & ... | |
| xorl %edx,%r11d // z ^ ... | |
| movl 4(%rsi),%r10d // (NEXT STEP) X[1] | |
| addl %r11d,%eax // dst += ... | |
| roll $7,%eax // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %ebx,%eax // dst += x | |
| xorl %ebx,%r11d // y ^ ... | |
| leal -389564586(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r11d // x & ... | |
| xorl %ecx,%r11d // z ^ ... | |
| movl 8(%rsi),%r10d // (NEXT STEP) X[2] | |
| addl %r11d,%edx // dst += ... | |
| roll $12,%edx // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %eax,%edx // dst += x | |
| xorl %eax,%r11d // y ^ ... | |
| leal 606105819(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r11d // x & ... | |
| xorl %ebx,%r11d // z ^ ... | |
| movl 12(%rsi),%r10d // (NEXT STEP) X[3] | |
| addl %r11d,%ecx // dst += ... | |
| roll $17,%ecx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %edx,%ecx // dst += x | |
| xorl %edx,%r11d // y ^ ... | |
| leal -1044525330(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r11d // x & ... | |
| xorl %eax,%r11d // z ^ ... | |
| movl 16(%rsi),%r10d // (NEXT STEP) X[4] | |
| addl %r11d,%ebx // dst += ... | |
| roll $22,%ebx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %ecx,%ebx // dst += x | |
| xorl %ecx,%r11d // y ^ ... | |
| leal -176418897(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r11d // x & ... | |
| xorl %edx,%r11d // z ^ ... | |
| movl 20(%rsi),%r10d // (NEXT STEP) X[5] | |
| addl %r11d,%eax // dst += ... | |
| roll $7,%eax // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %ebx,%eax // dst += x | |
| xorl %ebx,%r11d // y ^ ... | |
| leal 1200080426(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r11d // x & ... | |
| xorl %ecx,%r11d // z ^ ... | |
| movl 24(%rsi),%r10d // (NEXT STEP) X[6] | |
| addl %r11d,%edx // dst += ... | |
| roll $12,%edx // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %eax,%edx // dst += x | |
| xorl %eax,%r11d // y ^ ... | |
| leal -1473231341(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r11d // x & ... | |
| xorl %ebx,%r11d // z ^ ... | |
| movl 28(%rsi),%r10d // (NEXT STEP) X[7] | |
| addl %r11d,%ecx // dst += ... | |
| roll $17,%ecx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %edx,%ecx // dst += x | |
| xorl %edx,%r11d // y ^ ... | |
| leal -45705983(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r11d // x & ... | |
| xorl %eax,%r11d // z ^ ... | |
| movl 32(%rsi),%r10d // (NEXT STEP) X[8] | |
| addl %r11d,%ebx // dst += ... | |
| roll $22,%ebx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %ecx,%ebx // dst += x | |
| xorl %ecx,%r11d // y ^ ... | |
| leal 1770035416(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r11d // x & ... | |
| xorl %edx,%r11d // z ^ ... | |
| movl 36(%rsi),%r10d // (NEXT STEP) X[9] | |
| addl %r11d,%eax // dst += ... | |
| roll $7,%eax // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %ebx,%eax // dst += x | |
| xorl %ebx,%r11d // y ^ ... | |
| leal -1958414417(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r11d // x & ... | |
| xorl %ecx,%r11d // z ^ ... | |
| movl 40(%rsi),%r10d // (NEXT STEP) X[10] | |
| addl %r11d,%edx // dst += ... | |
| roll $12,%edx // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %eax,%edx // dst += x | |
| xorl %eax,%r11d // y ^ ... | |
| leal -42063(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r11d // x & ... | |
| xorl %ebx,%r11d // z ^ ... | |
| movl 44(%rsi),%r10d // (NEXT STEP) X[11] | |
| addl %r11d,%ecx // dst += ... | |
| roll $17,%ecx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %edx,%ecx // dst += x | |
| xorl %edx,%r11d // y ^ ... | |
| leal -1990404162(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r11d // x & ... | |
| xorl %eax,%r11d // z ^ ... | |
| movl 48(%rsi),%r10d // (NEXT STEP) X[12] | |
| addl %r11d,%ebx // dst += ... | |
| roll $22,%ebx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %ecx,%ebx // dst += x | |
| xorl %ecx,%r11d // y ^ ... | |
| leal 1804603682(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r11d // x & ... | |
| xorl %edx,%r11d // z ^ ... | |
| movl 52(%rsi),%r10d // (NEXT STEP) X[13] | |
| addl %r11d,%eax // dst += ... | |
| roll $7,%eax // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %ebx,%eax // dst += x | |
| xorl %ebx,%r11d // y ^ ... | |
| leal -40341101(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r11d // x & ... | |
| xorl %ecx,%r11d // z ^ ... | |
| movl 56(%rsi),%r10d // (NEXT STEP) X[14] | |
| addl %r11d,%edx // dst += ... | |
| roll $12,%edx // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %eax,%edx // dst += x | |
| xorl %eax,%r11d // y ^ ... | |
| leal -1502002290(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r11d // x & ... | |
| xorl %ebx,%r11d // z ^ ... | |
| movl 60(%rsi),%r10d // (NEXT STEP) X[15] | |
| addl %r11d,%ecx // dst += ... | |
| roll $17,%ecx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %edx,%ecx // dst += x | |
| xorl %edx,%r11d // y ^ ... | |
| leal 1236535329(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r11d // x & ... | |
| xorl %eax,%r11d // z ^ ... | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| addl %r11d,%ebx // dst += ... | |
| roll $22,%ebx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %ecx,%ebx // dst += x | |
| movl 4(%rsi),%r10d // (NEXT STEP) X[1] | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| movl %edx,%r12d // (NEXT STEP) z' = %edx | |
| notl %r11d // not z | |
| leal -165796510(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r12d // x & z | |
| andl %ecx,%r11d // y & (not z) | |
| movl 24(%rsi),%r10d // (NEXT STEP) X[6] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %r12d,%eax // dst += ... | |
| movl %ecx,%r12d // (NEXT STEP) z' = %ecx | |
| roll $5,%eax // dst <<< s | |
| addl %ebx,%eax // dst += x | |
| notl %r11d // not z | |
| leal -1069501632(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r12d // x & z | |
| andl %ebx,%r11d // y & (not z) | |
| movl 44(%rsi),%r10d // (NEXT STEP) X[11] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %r12d,%edx // dst += ... | |
| movl %ebx,%r12d // (NEXT STEP) z' = %ebx | |
| roll $9,%edx // dst <<< s | |
| addl %eax,%edx // dst += x | |
| notl %r11d // not z | |
| leal 643717713(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r12d // x & z | |
| andl %eax,%r11d // y & (not z) | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %r12d,%ecx // dst += ... | |
| movl %eax,%r12d // (NEXT STEP) z' = %eax | |
| roll $14,%ecx // dst <<< s | |
| addl %edx,%ecx // dst += x | |
| notl %r11d // not z | |
| leal -373897302(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r12d // x & z | |
| andl %edx,%r11d // y & (not z) | |
| movl 20(%rsi),%r10d // (NEXT STEP) X[5] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %r12d,%ebx // dst += ... | |
| movl %edx,%r12d // (NEXT STEP) z' = %edx | |
| roll $20,%ebx // dst <<< s | |
| addl %ecx,%ebx // dst += x | |
| notl %r11d // not z | |
| leal -701558691(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r12d // x & z | |
| andl %ecx,%r11d // y & (not z) | |
| movl 40(%rsi),%r10d // (NEXT STEP) X[10] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %r12d,%eax // dst += ... | |
| movl %ecx,%r12d // (NEXT STEP) z' = %ecx | |
| roll $5,%eax // dst <<< s | |
| addl %ebx,%eax // dst += x | |
| notl %r11d // not z | |
| leal 38016083(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r12d // x & z | |
| andl %ebx,%r11d // y & (not z) | |
| movl 60(%rsi),%r10d // (NEXT STEP) X[15] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %r12d,%edx // dst += ... | |
| movl %ebx,%r12d // (NEXT STEP) z' = %ebx | |
| roll $9,%edx // dst <<< s | |
| addl %eax,%edx // dst += x | |
| notl %r11d // not z | |
| leal -660478335(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r12d // x & z | |
| andl %eax,%r11d // y & (not z) | |
| movl 16(%rsi),%r10d // (NEXT STEP) X[4] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %r12d,%ecx // dst += ... | |
| movl %eax,%r12d // (NEXT STEP) z' = %eax | |
| roll $14,%ecx // dst <<< s | |
| addl %edx,%ecx // dst += x | |
| notl %r11d // not z | |
| leal -405537848(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r12d // x & z | |
| andl %edx,%r11d // y & (not z) | |
| movl 36(%rsi),%r10d // (NEXT STEP) X[9] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %r12d,%ebx // dst += ... | |
| movl %edx,%r12d // (NEXT STEP) z' = %edx | |
| roll $20,%ebx // dst <<< s | |
| addl %ecx,%ebx // dst += x | |
| notl %r11d // not z | |
| leal 568446438(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r12d // x & z | |
| andl %ecx,%r11d // y & (not z) | |
| movl 56(%rsi),%r10d // (NEXT STEP) X[14] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %r12d,%eax // dst += ... | |
| movl %ecx,%r12d // (NEXT STEP) z' = %ecx | |
| roll $5,%eax // dst <<< s | |
| addl %ebx,%eax // dst += x | |
| notl %r11d // not z | |
| leal -1019803690(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r12d // x & z | |
| andl %ebx,%r11d // y & (not z) | |
| movl 12(%rsi),%r10d // (NEXT STEP) X[3] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %r12d,%edx // dst += ... | |
| movl %ebx,%r12d // (NEXT STEP) z' = %ebx | |
| roll $9,%edx // dst <<< s | |
| addl %eax,%edx // dst += x | |
| notl %r11d // not z | |
| leal -187363961(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r12d // x & z | |
| andl %eax,%r11d // y & (not z) | |
| movl 32(%rsi),%r10d // (NEXT STEP) X[8] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %r12d,%ecx // dst += ... | |
| movl %eax,%r12d // (NEXT STEP) z' = %eax | |
| roll $14,%ecx // dst <<< s | |
| addl %edx,%ecx // dst += x | |
| notl %r11d // not z | |
| leal 1163531501(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r12d // x & z | |
| andl %edx,%r11d // y & (not z) | |
| movl 52(%rsi),%r10d // (NEXT STEP) X[13] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %r12d,%ebx // dst += ... | |
| movl %edx,%r12d // (NEXT STEP) z' = %edx | |
| roll $20,%ebx // dst <<< s | |
| addl %ecx,%ebx // dst += x | |
| notl %r11d // not z | |
| leal -1444681467(%rax,%r10,1),%eax // Const + dst + ... | |
| andl %ebx,%r12d // x & z | |
| andl %ecx,%r11d // y & (not z) | |
| movl 8(%rsi),%r10d // (NEXT STEP) X[2] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ecx,%r11d // (NEXT STEP) z' = %ecx | |
| addl %r12d,%eax // dst += ... | |
| movl %ecx,%r12d // (NEXT STEP) z' = %ecx | |
| roll $5,%eax // dst <<< s | |
| addl %ebx,%eax // dst += x | |
| notl %r11d // not z | |
| leal -51403784(%rdx,%r10,1),%edx // Const + dst + ... | |
| andl %eax,%r12d // x & z | |
| andl %ebx,%r11d // y & (not z) | |
| movl 28(%rsi),%r10d // (NEXT STEP) X[7] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %ebx,%r11d // (NEXT STEP) z' = %ebx | |
| addl %r12d,%edx // dst += ... | |
| movl %ebx,%r12d // (NEXT STEP) z' = %ebx | |
| roll $9,%edx // dst <<< s | |
| addl %eax,%edx // dst += x | |
| notl %r11d // not z | |
| leal 1735328473(%rcx,%r10,1),%ecx // Const + dst + ... | |
| andl %edx,%r12d // x & z | |
| andl %eax,%r11d // y & (not z) | |
| movl 48(%rsi),%r10d // (NEXT STEP) X[12] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %eax,%r11d // (NEXT STEP) z' = %eax | |
| addl %r12d,%ecx // dst += ... | |
| movl %eax,%r12d // (NEXT STEP) z' = %eax | |
| roll $14,%ecx // dst <<< s | |
| addl %edx,%ecx // dst += x | |
| notl %r11d // not z | |
| leal -1926607734(%rbx,%r10,1),%ebx // Const + dst + ... | |
| andl %ecx,%r12d // x & z | |
| andl %edx,%r11d // y & (not z) | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| orl %r11d,%r12d // (y & (not z)) | (x & z) | |
| movl %edx,%r11d // (NEXT STEP) z' = %edx | |
| addl %r12d,%ebx // dst += ... | |
| movl %edx,%r12d // (NEXT STEP) z' = %edx | |
| roll $20,%ebx // dst <<< s | |
| addl %ecx,%ebx // dst += x | |
| movl 20(%rsi),%r10d // (NEXT STEP) X[5] | |
| movl %ecx,%r11d // (NEXT STEP) y' = %ecx | |
| leal -378558(%rax,%r10,1),%eax // Const + dst + ... | |
| movl 32(%rsi),%r10d // (NEXT STEP) X[8] | |
| xorl %edx,%r11d // z ^ ... | |
| xorl %ebx,%r11d // x ^ ... | |
| addl %r11d,%eax // dst += ... | |
| roll $4,%eax // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) y' = %ebx | |
| addl %ebx,%eax // dst += x | |
| leal -2022574463(%rdx,%r10,1),%edx // Const + dst + ... | |
| movl 44(%rsi),%r10d // (NEXT STEP) X[11] | |
| xorl %ecx,%r11d // z ^ ... | |
| xorl %eax,%r11d // x ^ ... | |
| addl %r11d,%edx // dst += ... | |
| roll $11,%edx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) y' = %eax | |
| addl %eax,%edx // dst += x | |
| leal 1839030562(%rcx,%r10,1),%ecx // Const + dst + ... | |
| movl 56(%rsi),%r10d // (NEXT STEP) X[14] | |
| xorl %ebx,%r11d // z ^ ... | |
| xorl %edx,%r11d // x ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| roll $16,%ecx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) y' = %edx | |
| addl %edx,%ecx // dst += x | |
| leal -35309556(%rbx,%r10,1),%ebx // Const + dst + ... | |
| movl 4(%rsi),%r10d // (NEXT STEP) X[1] | |
| xorl %eax,%r11d // z ^ ... | |
| xorl %ecx,%r11d // x ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| roll $23,%ebx // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) y' = %ecx | |
| addl %ecx,%ebx // dst += x | |
| leal -1530992060(%rax,%r10,1),%eax // Const + dst + ... | |
| movl 16(%rsi),%r10d // (NEXT STEP) X[4] | |
| xorl %edx,%r11d // z ^ ... | |
| xorl %ebx,%r11d // x ^ ... | |
| addl %r11d,%eax // dst += ... | |
| roll $4,%eax // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) y' = %ebx | |
| addl %ebx,%eax // dst += x | |
| leal 1272893353(%rdx,%r10,1),%edx // Const + dst + ... | |
| movl 28(%rsi),%r10d // (NEXT STEP) X[7] | |
| xorl %ecx,%r11d // z ^ ... | |
| xorl %eax,%r11d // x ^ ... | |
| addl %r11d,%edx // dst += ... | |
| roll $11,%edx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) y' = %eax | |
| addl %eax,%edx // dst += x | |
| leal -155497632(%rcx,%r10,1),%ecx // Const + dst + ... | |
| movl 40(%rsi),%r10d // (NEXT STEP) X[10] | |
| xorl %ebx,%r11d // z ^ ... | |
| xorl %edx,%r11d // x ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| roll $16,%ecx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) y' = %edx | |
| addl %edx,%ecx // dst += x | |
| leal -1094730640(%rbx,%r10,1),%ebx // Const + dst + ... | |
| movl 52(%rsi),%r10d // (NEXT STEP) X[13] | |
| xorl %eax,%r11d // z ^ ... | |
| xorl %ecx,%r11d // x ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| roll $23,%ebx // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) y' = %ecx | |
| addl %ecx,%ebx // dst += x | |
| leal 681279174(%rax,%r10,1),%eax // Const + dst + ... | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| xorl %edx,%r11d // z ^ ... | |
| xorl %ebx,%r11d // x ^ ... | |
| addl %r11d,%eax // dst += ... | |
| roll $4,%eax // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) y' = %ebx | |
| addl %ebx,%eax // dst += x | |
| leal -358537222(%rdx,%r10,1),%edx // Const + dst + ... | |
| movl 12(%rsi),%r10d // (NEXT STEP) X[3] | |
| xorl %ecx,%r11d // z ^ ... | |
| xorl %eax,%r11d // x ^ ... | |
| addl %r11d,%edx // dst += ... | |
| roll $11,%edx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) y' = %eax | |
| addl %eax,%edx // dst += x | |
| leal -722521979(%rcx,%r10,1),%ecx // Const + dst + ... | |
| movl 24(%rsi),%r10d // (NEXT STEP) X[6] | |
| xorl %ebx,%r11d // z ^ ... | |
| xorl %edx,%r11d // x ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| roll $16,%ecx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) y' = %edx | |
| addl %edx,%ecx // dst += x | |
| leal 76029189(%rbx,%r10,1),%ebx // Const + dst + ... | |
| movl 36(%rsi),%r10d // (NEXT STEP) X[9] | |
| xorl %eax,%r11d // z ^ ... | |
| xorl %ecx,%r11d // x ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| roll $23,%ebx // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) y' = %ecx | |
| addl %ecx,%ebx // dst += x | |
| leal -640364487(%rax,%r10,1),%eax // Const + dst + ... | |
| movl 48(%rsi),%r10d // (NEXT STEP) X[12] | |
| xorl %edx,%r11d // z ^ ... | |
| xorl %ebx,%r11d // x ^ ... | |
| addl %r11d,%eax // dst += ... | |
| roll $4,%eax // dst <<< s | |
| movl %ebx,%r11d // (NEXT STEP) y' = %ebx | |
| addl %ebx,%eax // dst += x | |
| leal -421815835(%rdx,%r10,1),%edx // Const + dst + ... | |
| movl 60(%rsi),%r10d // (NEXT STEP) X[15] | |
| xorl %ecx,%r11d // z ^ ... | |
| xorl %eax,%r11d // x ^ ... | |
| addl %r11d,%edx // dst += ... | |
| roll $11,%edx // dst <<< s | |
| movl %eax,%r11d // (NEXT STEP) y' = %eax | |
| addl %eax,%edx // dst += x | |
| leal 530742520(%rcx,%r10,1),%ecx // Const + dst + ... | |
| movl 8(%rsi),%r10d // (NEXT STEP) X[2] | |
| xorl %ebx,%r11d // z ^ ... | |
| xorl %edx,%r11d // x ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| roll $16,%ecx // dst <<< s | |
| movl %edx,%r11d // (NEXT STEP) y' = %edx | |
| addl %edx,%ecx // dst += x | |
| leal -995338651(%rbx,%r10,1),%ebx // Const + dst + ... | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| xorl %eax,%r11d // z ^ ... | |
| xorl %ecx,%r11d // x ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| roll $23,%ebx // dst <<< s | |
| movl %ecx,%r11d // (NEXT STEP) y' = %ecx | |
| addl %ecx,%ebx // dst += x | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| movl $0xffffffff,%r11d | |
| xorl %edx,%r11d // (NEXT STEP) not z' = not %edx | |
| leal -198630844(%rax,%r10,1),%eax // Const + dst + ... | |
| orl %ebx,%r11d // x | ... | |
| xorl %ecx,%r11d // y ^ ... | |
| addl %r11d,%eax // dst += ... | |
| movl 28(%rsi),%r10d // (NEXT STEP) X[7] | |
| movl $0xffffffff,%r11d | |
| roll $6,%eax // dst <<< s | |
| xorl %ecx,%r11d // (NEXT STEP) not z' = not %ecx | |
| addl %ebx,%eax // dst += x | |
| leal 1126891415(%rdx,%r10,1),%edx // Const + dst + ... | |
| orl %eax,%r11d // x | ... | |
| xorl %ebx,%r11d // y ^ ... | |
| addl %r11d,%edx // dst += ... | |
| movl 56(%rsi),%r10d // (NEXT STEP) X[14] | |
| movl $0xffffffff,%r11d | |
| roll $10,%edx // dst <<< s | |
| xorl %ebx,%r11d // (NEXT STEP) not z' = not %ebx | |
| addl %eax,%edx // dst += x | |
| leal -1416354905(%rcx,%r10,1),%ecx // Const + dst + ... | |
| orl %edx,%r11d // x | ... | |
| xorl %eax,%r11d // y ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| movl 20(%rsi),%r10d // (NEXT STEP) X[5] | |
| movl $0xffffffff,%r11d | |
| roll $15,%ecx // dst <<< s | |
| xorl %eax,%r11d // (NEXT STEP) not z' = not %eax | |
| addl %edx,%ecx // dst += x | |
| leal -57434055(%rbx,%r10,1),%ebx // Const + dst + ... | |
| orl %ecx,%r11d // x | ... | |
| xorl %edx,%r11d // y ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| movl 48(%rsi),%r10d // (NEXT STEP) X[12] | |
| movl $0xffffffff,%r11d | |
| roll $21,%ebx // dst <<< s | |
| xorl %edx,%r11d // (NEXT STEP) not z' = not %edx | |
| addl %ecx,%ebx // dst += x | |
| leal 1700485571(%rax,%r10,1),%eax // Const + dst + ... | |
| orl %ebx,%r11d // x | ... | |
| xorl %ecx,%r11d // y ^ ... | |
| addl %r11d,%eax // dst += ... | |
| movl 12(%rsi),%r10d // (NEXT STEP) X[3] | |
| movl $0xffffffff,%r11d | |
| roll $6,%eax // dst <<< s | |
| xorl %ecx,%r11d // (NEXT STEP) not z' = not %ecx | |
| addl %ebx,%eax // dst += x | |
| leal -1894986606(%rdx,%r10,1),%edx // Const + dst + ... | |
| orl %eax,%r11d // x | ... | |
| xorl %ebx,%r11d // y ^ ... | |
| addl %r11d,%edx // dst += ... | |
| movl 40(%rsi),%r10d // (NEXT STEP) X[10] | |
| movl $0xffffffff,%r11d | |
| roll $10,%edx // dst <<< s | |
| xorl %ebx,%r11d // (NEXT STEP) not z' = not %ebx | |
| addl %eax,%edx // dst += x | |
| leal -1051523(%rcx,%r10,1),%ecx // Const + dst + ... | |
| orl %edx,%r11d // x | ... | |
| xorl %eax,%r11d // y ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| movl 4(%rsi),%r10d // (NEXT STEP) X[1] | |
| movl $0xffffffff,%r11d | |
| roll $15,%ecx // dst <<< s | |
| xorl %eax,%r11d // (NEXT STEP) not z' = not %eax | |
| addl %edx,%ecx // dst += x | |
| leal -2054922799(%rbx,%r10,1),%ebx // Const + dst + ... | |
| orl %ecx,%r11d // x | ... | |
| xorl %edx,%r11d // y ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| movl 32(%rsi),%r10d // (NEXT STEP) X[8] | |
| movl $0xffffffff,%r11d | |
| roll $21,%ebx // dst <<< s | |
| xorl %edx,%r11d // (NEXT STEP) not z' = not %edx | |
| addl %ecx,%ebx // dst += x | |
| leal 1873313359(%rax,%r10,1),%eax // Const + dst + ... | |
| orl %ebx,%r11d // x | ... | |
| xorl %ecx,%r11d // y ^ ... | |
| addl %r11d,%eax // dst += ... | |
| movl 60(%rsi),%r10d // (NEXT STEP) X[15] | |
| movl $0xffffffff,%r11d | |
| roll $6,%eax // dst <<< s | |
| xorl %ecx,%r11d // (NEXT STEP) not z' = not %ecx | |
| addl %ebx,%eax // dst += x | |
| leal -30611744(%rdx,%r10,1),%edx // Const + dst + ... | |
| orl %eax,%r11d // x | ... | |
| xorl %ebx,%r11d // y ^ ... | |
| addl %r11d,%edx // dst += ... | |
| movl 24(%rsi),%r10d // (NEXT STEP) X[6] | |
| movl $0xffffffff,%r11d | |
| roll $10,%edx // dst <<< s | |
| xorl %ebx,%r11d // (NEXT STEP) not z' = not %ebx | |
| addl %eax,%edx // dst += x | |
| leal -1560198380(%rcx,%r10,1),%ecx // Const + dst + ... | |
| orl %edx,%r11d // x | ... | |
| xorl %eax,%r11d // y ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| movl 52(%rsi),%r10d // (NEXT STEP) X[13] | |
| movl $0xffffffff,%r11d | |
| roll $15,%ecx // dst <<< s | |
| xorl %eax,%r11d // (NEXT STEP) not z' = not %eax | |
| addl %edx,%ecx // dst += x | |
| leal 1309151649(%rbx,%r10,1),%ebx // Const + dst + ... | |
| orl %ecx,%r11d // x | ... | |
| xorl %edx,%r11d // y ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| movl 16(%rsi),%r10d // (NEXT STEP) X[4] | |
| movl $0xffffffff,%r11d | |
| roll $21,%ebx // dst <<< s | |
| xorl %edx,%r11d // (NEXT STEP) not z' = not %edx | |
| addl %ecx,%ebx // dst += x | |
| leal -145523070(%rax,%r10,1),%eax // Const + dst + ... | |
| orl %ebx,%r11d // x | ... | |
| xorl %ecx,%r11d // y ^ ... | |
| addl %r11d,%eax // dst += ... | |
| movl 44(%rsi),%r10d // (NEXT STEP) X[11] | |
| movl $0xffffffff,%r11d | |
| roll $6,%eax // dst <<< s | |
| xorl %ecx,%r11d // (NEXT STEP) not z' = not %ecx | |
| addl %ebx,%eax // dst += x | |
| leal -1120210379(%rdx,%r10,1),%edx // Const + dst + ... | |
| orl %eax,%r11d // x | ... | |
| xorl %ebx,%r11d // y ^ ... | |
| addl %r11d,%edx // dst += ... | |
| movl 8(%rsi),%r10d // (NEXT STEP) X[2] | |
| movl $0xffffffff,%r11d | |
| roll $10,%edx // dst <<< s | |
| xorl %ebx,%r11d // (NEXT STEP) not z' = not %ebx | |
| addl %eax,%edx // dst += x | |
| leal 718787259(%rcx,%r10,1),%ecx // Const + dst + ... | |
| orl %edx,%r11d // x | ... | |
| xorl %eax,%r11d // y ^ ... | |
| addl %r11d,%ecx // dst += ... | |
| movl 36(%rsi),%r10d // (NEXT STEP) X[9] | |
| movl $0xffffffff,%r11d | |
| roll $15,%ecx // dst <<< s | |
| xorl %eax,%r11d // (NEXT STEP) not z' = not %eax | |
| addl %edx,%ecx // dst += x | |
| leal -343485551(%rbx,%r10,1),%ebx // Const + dst + ... | |
| orl %ecx,%r11d // x | ... | |
| xorl %edx,%r11d // y ^ ... | |
| addl %r11d,%ebx // dst += ... | |
| movl 0(%rsi),%r10d // (NEXT STEP) X[0] | |
| movl $0xffffffff,%r11d | |
| roll $21,%ebx // dst <<< s | |
| xorl %edx,%r11d // (NEXT STEP) not z' = not %edx | |
| addl %ecx,%ebx // dst += x | |
| // add old values of A, B, C, D | |
| addl %r8d,%eax | |
| addl %r9d,%ebx | |
| addl %r14d,%ecx | |
| addl %r15d,%edx | |
| // loop control | |
| addq $64,%rsi // ptr += 64 | |
| cmpq %rdi,%rsi // cmp end with ptr | |
| jb .Lloop // jmp if ptr < end | |
| // END of loop over 16-word blocks | |
| .Lend: | |
| movl %eax,0(%rbp) // ctx->A = A | |
| movl %ebx,4(%rbp) // ctx->B = B | |
| movl %ecx,8(%rbp) // ctx->C = C | |
| movl %edx,12(%rbp) // ctx->D = D | |
| movq (%rsp),%r15 | |
| .cfi_restore r15 | |
| movq 8(%rsp),%r14 | |
| .cfi_restore r14 | |
| movq 16(%rsp),%r12 | |
| .cfi_restore r12 | |
| movq 24(%rsp),%rbx | |
| .cfi_restore rbx | |
| movq 32(%rsp),%rbp | |
| .cfi_restore rbp | |
| addq $40,%rsp | |
| .cfi_adjust_cfa_offset -40 | |
| .Lepilogue: | |
| ret | |
| .cfi_endproc | |
| .size md5_block_asm_data_order,.-md5_block_asm_data_order | |
| #endif |