| // 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 |