deps/openssl/asm/x64-macosx-gas/sha/sha512-x86_64.s

Summary

Maintainability
Test Coverage
.text


.globl    _sha512_block_data_order

.p2align    4
_sha512_block_data_order:
    pushq    %rbx
    pushq    %rbp
    pushq    %r12
    pushq    %r13
    pushq    %r14
    pushq    %r15
    movq    %rsp,%r11
    shlq    $4,%rdx
    subq    $128+32,%rsp
    leaq    (%rsi,%rdx,8),%rdx
    andq    $-64,%rsp
    movq    %rdi,128+0(%rsp)
    movq    %rsi,128+8(%rsp)
    movq    %rdx,128+16(%rsp)
    movq    %r11,128+24(%rsp)
L$prologue:

    leaq    K512(%rip),%rbp

    movq    0(%rdi),%rax
    movq    8(%rdi),%rbx
    movq    16(%rdi),%rcx
    movq    24(%rdi),%rdx
    movq    32(%rdi),%r8
    movq    40(%rdi),%r9
    movq    48(%rdi),%r10
    movq    56(%rdi),%r11
    jmp    L$loop

.p2align    4
L$loop:
    xorq    %rdi,%rdi
    movq    0(%rsi),%r12
    movq    %r8,%r13
    movq    %rax,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r9,%r15
    movq    %r12,0(%rsp)

    rorq    $5,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    rorq    $4,%r13
    addq    %r11,%r12
    xorq    %rax,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r8,%r15
    movq    %rbx,%r11

    rorq    $6,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    xorq    %rcx,%r11
    xorq    %rax,%r14
    addq    %r15,%r12
    movq    %rbx,%r15

    rorq    $14,%r13
    andq    %rax,%r11
    andq    %rcx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r11

    addq    %r12,%rdx
    addq    %r12,%r11
    leaq    1(%rdi),%rdi
    addq    %r14,%r11

    movq    8(%rsi),%r12
    movq    %rdx,%r13
    movq    %r11,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r8,%r15
    movq    %r12,8(%rsp)

    rorq    $5,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    rorq    $4,%r13
    addq    %r10,%r12
    xorq    %r11,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rdx,%r15
    movq    %rax,%r10

    rorq    $6,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    xorq    %rbx,%r10
    xorq    %r11,%r14
    addq    %r15,%r12
    movq    %rax,%r15

    rorq    $14,%r13
    andq    %r11,%r10
    andq    %rbx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r10

    addq    %r12,%rcx
    addq    %r12,%r10
    leaq    1(%rdi),%rdi
    addq    %r14,%r10

    movq    16(%rsi),%r12
    movq    %rcx,%r13
    movq    %r10,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rdx,%r15
    movq    %r12,16(%rsp)

    rorq    $5,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    rorq    $4,%r13
    addq    %r9,%r12
    xorq    %r10,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rcx,%r15
    movq    %r11,%r9

    rorq    $6,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    xorq    %rax,%r9
    xorq    %r10,%r14
    addq    %r15,%r12
    movq    %r11,%r15

    rorq    $14,%r13
    andq    %r10,%r9
    andq    %rax,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r9

    addq    %r12,%rbx
    addq    %r12,%r9
    leaq    1(%rdi),%rdi
    addq    %r14,%r9

    movq    24(%rsi),%r12
    movq    %rbx,%r13
    movq    %r9,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rcx,%r15
    movq    %r12,24(%rsp)

    rorq    $5,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    rorq    $4,%r13
    addq    %r8,%r12
    xorq    %r9,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rbx,%r15
    movq    %r10,%r8

    rorq    $6,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    xorq    %r11,%r8
    xorq    %r9,%r14
    addq    %r15,%r12
    movq    %r10,%r15

    rorq    $14,%r13
    andq    %r9,%r8
    andq    %r11,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r8

    addq    %r12,%rax
    addq    %r12,%r8
    leaq    1(%rdi),%rdi
    addq    %r14,%r8

    movq    32(%rsi),%r12
    movq    %rax,%r13
    movq    %r8,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rbx,%r15
    movq    %r12,32(%rsp)

    rorq    $5,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    rorq    $4,%r13
    addq    %rdx,%r12
    xorq    %r8,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rax,%r15
    movq    %r9,%rdx

    rorq    $6,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    xorq    %r10,%rdx
    xorq    %r8,%r14
    addq    %r15,%r12
    movq    %r9,%r15

    rorq    $14,%r13
    andq    %r8,%rdx
    andq    %r10,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rdx

    addq    %r12,%r11
    addq    %r12,%rdx
    leaq    1(%rdi),%rdi
    addq    %r14,%rdx

    movq    40(%rsi),%r12
    movq    %r11,%r13
    movq    %rdx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rax,%r15
    movq    %r12,40(%rsp)

    rorq    $5,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    rorq    $4,%r13
    addq    %rcx,%r12
    xorq    %rdx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r11,%r15
    movq    %r8,%rcx

    rorq    $6,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    xorq    %r9,%rcx
    xorq    %rdx,%r14
    addq    %r15,%r12
    movq    %r8,%r15

    rorq    $14,%r13
    andq    %rdx,%rcx
    andq    %r9,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rcx

    addq    %r12,%r10
    addq    %r12,%rcx
    leaq    1(%rdi),%rdi
    addq    %r14,%rcx

    movq    48(%rsi),%r12
    movq    %r10,%r13
    movq    %rcx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r11,%r15
    movq    %r12,48(%rsp)

    rorq    $5,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    rorq    $4,%r13
    addq    %rbx,%r12
    xorq    %rcx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r10,%r15
    movq    %rdx,%rbx

    rorq    $6,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    xorq    %r8,%rbx
    xorq    %rcx,%r14
    addq    %r15,%r12
    movq    %rdx,%r15

    rorq    $14,%r13
    andq    %rcx,%rbx
    andq    %r8,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rbx

    addq    %r12,%r9
    addq    %r12,%rbx
    leaq    1(%rdi),%rdi
    addq    %r14,%rbx

    movq    56(%rsi),%r12
    movq    %r9,%r13
    movq    %rbx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r10,%r15
    movq    %r12,56(%rsp)

    rorq    $5,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    rorq    $4,%r13
    addq    %rax,%r12
    xorq    %rbx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r9,%r15
    movq    %rcx,%rax

    rorq    $6,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    xorq    %rdx,%rax
    xorq    %rbx,%r14
    addq    %r15,%r12
    movq    %rcx,%r15

    rorq    $14,%r13
    andq    %rbx,%rax
    andq    %rdx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rax

    addq    %r12,%r8
    addq    %r12,%rax
    leaq    1(%rdi),%rdi
    addq    %r14,%rax

    movq    64(%rsi),%r12
    movq    %r8,%r13
    movq    %rax,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r9,%r15
    movq    %r12,64(%rsp)

    rorq    $5,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    rorq    $4,%r13
    addq    %r11,%r12
    xorq    %rax,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r8,%r15
    movq    %rbx,%r11

    rorq    $6,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    xorq    %rcx,%r11
    xorq    %rax,%r14
    addq    %r15,%r12
    movq    %rbx,%r15

    rorq    $14,%r13
    andq    %rax,%r11
    andq    %rcx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r11

    addq    %r12,%rdx
    addq    %r12,%r11
    leaq    1(%rdi),%rdi
    addq    %r14,%r11

    movq    72(%rsi),%r12
    movq    %rdx,%r13
    movq    %r11,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r8,%r15
    movq    %r12,72(%rsp)

    rorq    $5,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    rorq    $4,%r13
    addq    %r10,%r12
    xorq    %r11,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rdx,%r15
    movq    %rax,%r10

    rorq    $6,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    xorq    %rbx,%r10
    xorq    %r11,%r14
    addq    %r15,%r12
    movq    %rax,%r15

    rorq    $14,%r13
    andq    %r11,%r10
    andq    %rbx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r10

    addq    %r12,%rcx
    addq    %r12,%r10
    leaq    1(%rdi),%rdi
    addq    %r14,%r10

    movq    80(%rsi),%r12
    movq    %rcx,%r13
    movq    %r10,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rdx,%r15
    movq    %r12,80(%rsp)

    rorq    $5,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    rorq    $4,%r13
    addq    %r9,%r12
    xorq    %r10,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rcx,%r15
    movq    %r11,%r9

    rorq    $6,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    xorq    %rax,%r9
    xorq    %r10,%r14
    addq    %r15,%r12
    movq    %r11,%r15

    rorq    $14,%r13
    andq    %r10,%r9
    andq    %rax,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r9

    addq    %r12,%rbx
    addq    %r12,%r9
    leaq    1(%rdi),%rdi
    addq    %r14,%r9

    movq    88(%rsi),%r12
    movq    %rbx,%r13
    movq    %r9,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rcx,%r15
    movq    %r12,88(%rsp)

    rorq    $5,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    rorq    $4,%r13
    addq    %r8,%r12
    xorq    %r9,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rbx,%r15
    movq    %r10,%r8

    rorq    $6,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    xorq    %r11,%r8
    xorq    %r9,%r14
    addq    %r15,%r12
    movq    %r10,%r15

    rorq    $14,%r13
    andq    %r9,%r8
    andq    %r11,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r8

    addq    %r12,%rax
    addq    %r12,%r8
    leaq    1(%rdi),%rdi
    addq    %r14,%r8

    movq    96(%rsi),%r12
    movq    %rax,%r13
    movq    %r8,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rbx,%r15
    movq    %r12,96(%rsp)

    rorq    $5,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    rorq    $4,%r13
    addq    %rdx,%r12
    xorq    %r8,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rax,%r15
    movq    %r9,%rdx

    rorq    $6,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    xorq    %r10,%rdx
    xorq    %r8,%r14
    addq    %r15,%r12
    movq    %r9,%r15

    rorq    $14,%r13
    andq    %r8,%rdx
    andq    %r10,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rdx

    addq    %r12,%r11
    addq    %r12,%rdx
    leaq    1(%rdi),%rdi
    addq    %r14,%rdx

    movq    104(%rsi),%r12
    movq    %r11,%r13
    movq    %rdx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %rax,%r15
    movq    %r12,104(%rsp)

    rorq    $5,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    rorq    $4,%r13
    addq    %rcx,%r12
    xorq    %rdx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r11,%r15
    movq    %r8,%rcx

    rorq    $6,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    xorq    %r9,%rcx
    xorq    %rdx,%r14
    addq    %r15,%r12
    movq    %r8,%r15

    rorq    $14,%r13
    andq    %rdx,%rcx
    andq    %r9,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rcx

    addq    %r12,%r10
    addq    %r12,%rcx
    leaq    1(%rdi),%rdi
    addq    %r14,%rcx

    movq    112(%rsi),%r12
    movq    %r10,%r13
    movq    %rcx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r11,%r15
    movq    %r12,112(%rsp)

    rorq    $5,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    rorq    $4,%r13
    addq    %rbx,%r12
    xorq    %rcx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r10,%r15
    movq    %rdx,%rbx

    rorq    $6,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    xorq    %r8,%rbx
    xorq    %rcx,%r14
    addq    %r15,%r12
    movq    %rdx,%r15

    rorq    $14,%r13
    andq    %rcx,%rbx
    andq    %r8,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rbx

    addq    %r12,%r9
    addq    %r12,%rbx
    leaq    1(%rdi),%rdi
    addq    %r14,%rbx

    movq    120(%rsi),%r12
    movq    %r9,%r13
    movq    %rbx,%r14
    bswapq    %r12
    rorq    $23,%r13
    movq    %r10,%r15
    movq    %r12,120(%rsp)

    rorq    $5,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    rorq    $4,%r13
    addq    %rax,%r12
    xorq    %rbx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r9,%r15
    movq    %rcx,%rax

    rorq    $6,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    xorq    %rdx,%rax
    xorq    %rbx,%r14
    addq    %r15,%r12
    movq    %rcx,%r15

    rorq    $14,%r13
    andq    %rbx,%rax
    andq    %rdx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rax

    addq    %r12,%r8
    addq    %r12,%rax
    leaq    1(%rdi),%rdi
    addq    %r14,%rax

    jmp    L$rounds_16_xx
.p2align    4
L$rounds_16_xx:
    movq    8(%rsp),%r13
    movq    112(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    72(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    0(%rsp),%r12
    movq    %r8,%r13
    addq    %r14,%r12
    movq    %rax,%r14
    rorq    $23,%r13
    movq    %r9,%r15
    movq    %r12,0(%rsp)

    rorq    $5,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    rorq    $4,%r13
    addq    %r11,%r12
    xorq    %rax,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r8,%r15
    movq    %rbx,%r11

    rorq    $6,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    xorq    %rcx,%r11
    xorq    %rax,%r14
    addq    %r15,%r12
    movq    %rbx,%r15

    rorq    $14,%r13
    andq    %rax,%r11
    andq    %rcx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r11

    addq    %r12,%rdx
    addq    %r12,%r11
    leaq    1(%rdi),%rdi
    addq    %r14,%r11

    movq    16(%rsp),%r13
    movq    120(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    80(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    8(%rsp),%r12
    movq    %rdx,%r13
    addq    %r14,%r12
    movq    %r11,%r14
    rorq    $23,%r13
    movq    %r8,%r15
    movq    %r12,8(%rsp)

    rorq    $5,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    rorq    $4,%r13
    addq    %r10,%r12
    xorq    %r11,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rdx,%r15
    movq    %rax,%r10

    rorq    $6,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    xorq    %rbx,%r10
    xorq    %r11,%r14
    addq    %r15,%r12
    movq    %rax,%r15

    rorq    $14,%r13
    andq    %r11,%r10
    andq    %rbx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r10

    addq    %r12,%rcx
    addq    %r12,%r10
    leaq    1(%rdi),%rdi
    addq    %r14,%r10

    movq    24(%rsp),%r13
    movq    0(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    88(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    16(%rsp),%r12
    movq    %rcx,%r13
    addq    %r14,%r12
    movq    %r10,%r14
    rorq    $23,%r13
    movq    %rdx,%r15
    movq    %r12,16(%rsp)

    rorq    $5,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    rorq    $4,%r13
    addq    %r9,%r12
    xorq    %r10,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rcx,%r15
    movq    %r11,%r9

    rorq    $6,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    xorq    %rax,%r9
    xorq    %r10,%r14
    addq    %r15,%r12
    movq    %r11,%r15

    rorq    $14,%r13
    andq    %r10,%r9
    andq    %rax,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r9

    addq    %r12,%rbx
    addq    %r12,%r9
    leaq    1(%rdi),%rdi
    addq    %r14,%r9

    movq    32(%rsp),%r13
    movq    8(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    96(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    24(%rsp),%r12
    movq    %rbx,%r13
    addq    %r14,%r12
    movq    %r9,%r14
    rorq    $23,%r13
    movq    %rcx,%r15
    movq    %r12,24(%rsp)

    rorq    $5,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    rorq    $4,%r13
    addq    %r8,%r12
    xorq    %r9,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rbx,%r15
    movq    %r10,%r8

    rorq    $6,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    xorq    %r11,%r8
    xorq    %r9,%r14
    addq    %r15,%r12
    movq    %r10,%r15

    rorq    $14,%r13
    andq    %r9,%r8
    andq    %r11,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r8

    addq    %r12,%rax
    addq    %r12,%r8
    leaq    1(%rdi),%rdi
    addq    %r14,%r8

    movq    40(%rsp),%r13
    movq    16(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    104(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    32(%rsp),%r12
    movq    %rax,%r13
    addq    %r14,%r12
    movq    %r8,%r14
    rorq    $23,%r13
    movq    %rbx,%r15
    movq    %r12,32(%rsp)

    rorq    $5,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    rorq    $4,%r13
    addq    %rdx,%r12
    xorq    %r8,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rax,%r15
    movq    %r9,%rdx

    rorq    $6,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    xorq    %r10,%rdx
    xorq    %r8,%r14
    addq    %r15,%r12
    movq    %r9,%r15

    rorq    $14,%r13
    andq    %r8,%rdx
    andq    %r10,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rdx

    addq    %r12,%r11
    addq    %r12,%rdx
    leaq    1(%rdi),%rdi
    addq    %r14,%rdx

    movq    48(%rsp),%r13
    movq    24(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    112(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    40(%rsp),%r12
    movq    %r11,%r13
    addq    %r14,%r12
    movq    %rdx,%r14
    rorq    $23,%r13
    movq    %rax,%r15
    movq    %r12,40(%rsp)

    rorq    $5,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    rorq    $4,%r13
    addq    %rcx,%r12
    xorq    %rdx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r11,%r15
    movq    %r8,%rcx

    rorq    $6,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    xorq    %r9,%rcx
    xorq    %rdx,%r14
    addq    %r15,%r12
    movq    %r8,%r15

    rorq    $14,%r13
    andq    %rdx,%rcx
    andq    %r9,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rcx

    addq    %r12,%r10
    addq    %r12,%rcx
    leaq    1(%rdi),%rdi
    addq    %r14,%rcx

    movq    56(%rsp),%r13
    movq    32(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    120(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    48(%rsp),%r12
    movq    %r10,%r13
    addq    %r14,%r12
    movq    %rcx,%r14
    rorq    $23,%r13
    movq    %r11,%r15
    movq    %r12,48(%rsp)

    rorq    $5,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    rorq    $4,%r13
    addq    %rbx,%r12
    xorq    %rcx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r10,%r15
    movq    %rdx,%rbx

    rorq    $6,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    xorq    %r8,%rbx
    xorq    %rcx,%r14
    addq    %r15,%r12
    movq    %rdx,%r15

    rorq    $14,%r13
    andq    %rcx,%rbx
    andq    %r8,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rbx

    addq    %r12,%r9
    addq    %r12,%rbx
    leaq    1(%rdi),%rdi
    addq    %r14,%rbx

    movq    64(%rsp),%r13
    movq    40(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    0(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    56(%rsp),%r12
    movq    %r9,%r13
    addq    %r14,%r12
    movq    %rbx,%r14
    rorq    $23,%r13
    movq    %r10,%r15
    movq    %r12,56(%rsp)

    rorq    $5,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    rorq    $4,%r13
    addq    %rax,%r12
    xorq    %rbx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r9,%r15
    movq    %rcx,%rax

    rorq    $6,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    xorq    %rdx,%rax
    xorq    %rbx,%r14
    addq    %r15,%r12
    movq    %rcx,%r15

    rorq    $14,%r13
    andq    %rbx,%rax
    andq    %rdx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rax

    addq    %r12,%r8
    addq    %r12,%rax
    leaq    1(%rdi),%rdi
    addq    %r14,%rax

    movq    72(%rsp),%r13
    movq    48(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    8(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    64(%rsp),%r12
    movq    %r8,%r13
    addq    %r14,%r12
    movq    %rax,%r14
    rorq    $23,%r13
    movq    %r9,%r15
    movq    %r12,64(%rsp)

    rorq    $5,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    rorq    $4,%r13
    addq    %r11,%r12
    xorq    %rax,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r8,%r15
    movq    %rbx,%r11

    rorq    $6,%r14
    xorq    %r8,%r13
    xorq    %r10,%r15

    xorq    %rcx,%r11
    xorq    %rax,%r14
    addq    %r15,%r12
    movq    %rbx,%r15

    rorq    $14,%r13
    andq    %rax,%r11
    andq    %rcx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r11

    addq    %r12,%rdx
    addq    %r12,%r11
    leaq    1(%rdi),%rdi
    addq    %r14,%r11

    movq    80(%rsp),%r13
    movq    56(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    16(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    72(%rsp),%r12
    movq    %rdx,%r13
    addq    %r14,%r12
    movq    %r11,%r14
    rorq    $23,%r13
    movq    %r8,%r15
    movq    %r12,72(%rsp)

    rorq    $5,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    rorq    $4,%r13
    addq    %r10,%r12
    xorq    %r11,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rdx,%r15
    movq    %rax,%r10

    rorq    $6,%r14
    xorq    %rdx,%r13
    xorq    %r9,%r15

    xorq    %rbx,%r10
    xorq    %r11,%r14
    addq    %r15,%r12
    movq    %rax,%r15

    rorq    $14,%r13
    andq    %r11,%r10
    andq    %rbx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r10

    addq    %r12,%rcx
    addq    %r12,%r10
    leaq    1(%rdi),%rdi
    addq    %r14,%r10

    movq    88(%rsp),%r13
    movq    64(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    24(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    80(%rsp),%r12
    movq    %rcx,%r13
    addq    %r14,%r12
    movq    %r10,%r14
    rorq    $23,%r13
    movq    %rdx,%r15
    movq    %r12,80(%rsp)

    rorq    $5,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    rorq    $4,%r13
    addq    %r9,%r12
    xorq    %r10,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rcx,%r15
    movq    %r11,%r9

    rorq    $6,%r14
    xorq    %rcx,%r13
    xorq    %r8,%r15

    xorq    %rax,%r9
    xorq    %r10,%r14
    addq    %r15,%r12
    movq    %r11,%r15

    rorq    $14,%r13
    andq    %r10,%r9
    andq    %rax,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r9

    addq    %r12,%rbx
    addq    %r12,%r9
    leaq    1(%rdi),%rdi
    addq    %r14,%r9

    movq    96(%rsp),%r13
    movq    72(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    32(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    88(%rsp),%r12
    movq    %rbx,%r13
    addq    %r14,%r12
    movq    %r9,%r14
    rorq    $23,%r13
    movq    %rcx,%r15
    movq    %r12,88(%rsp)

    rorq    $5,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    rorq    $4,%r13
    addq    %r8,%r12
    xorq    %r9,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rbx,%r15
    movq    %r10,%r8

    rorq    $6,%r14
    xorq    %rbx,%r13
    xorq    %rdx,%r15

    xorq    %r11,%r8
    xorq    %r9,%r14
    addq    %r15,%r12
    movq    %r10,%r15

    rorq    $14,%r13
    andq    %r9,%r8
    andq    %r11,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%r8

    addq    %r12,%rax
    addq    %r12,%r8
    leaq    1(%rdi),%rdi
    addq    %r14,%r8

    movq    104(%rsp),%r13
    movq    80(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    40(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    96(%rsp),%r12
    movq    %rax,%r13
    addq    %r14,%r12
    movq    %r8,%r14
    rorq    $23,%r13
    movq    %rbx,%r15
    movq    %r12,96(%rsp)

    rorq    $5,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    rorq    $4,%r13
    addq    %rdx,%r12
    xorq    %r8,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %rax,%r15
    movq    %r9,%rdx

    rorq    $6,%r14
    xorq    %rax,%r13
    xorq    %rcx,%r15

    xorq    %r10,%rdx
    xorq    %r8,%r14
    addq    %r15,%r12
    movq    %r9,%r15

    rorq    $14,%r13
    andq    %r8,%rdx
    andq    %r10,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rdx

    addq    %r12,%r11
    addq    %r12,%rdx
    leaq    1(%rdi),%rdi
    addq    %r14,%rdx

    movq    112(%rsp),%r13
    movq    88(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    48(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    104(%rsp),%r12
    movq    %r11,%r13
    addq    %r14,%r12
    movq    %rdx,%r14
    rorq    $23,%r13
    movq    %rax,%r15
    movq    %r12,104(%rsp)

    rorq    $5,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    rorq    $4,%r13
    addq    %rcx,%r12
    xorq    %rdx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r11,%r15
    movq    %r8,%rcx

    rorq    $6,%r14
    xorq    %r11,%r13
    xorq    %rbx,%r15

    xorq    %r9,%rcx
    xorq    %rdx,%r14
    addq    %r15,%r12
    movq    %r8,%r15

    rorq    $14,%r13
    andq    %rdx,%rcx
    andq    %r9,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rcx

    addq    %r12,%r10
    addq    %r12,%rcx
    leaq    1(%rdi),%rdi
    addq    %r14,%rcx

    movq    120(%rsp),%r13
    movq    96(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    56(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    112(%rsp),%r12
    movq    %r10,%r13
    addq    %r14,%r12
    movq    %rcx,%r14
    rorq    $23,%r13
    movq    %r11,%r15
    movq    %r12,112(%rsp)

    rorq    $5,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    rorq    $4,%r13
    addq    %rbx,%r12
    xorq    %rcx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r10,%r15
    movq    %rdx,%rbx

    rorq    $6,%r14
    xorq    %r10,%r13
    xorq    %rax,%r15

    xorq    %r8,%rbx
    xorq    %rcx,%r14
    addq    %r15,%r12
    movq    %rdx,%r15

    rorq    $14,%r13
    andq    %rcx,%rbx
    andq    %r8,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rbx

    addq    %r12,%r9
    addq    %r12,%rbx
    leaq    1(%rdi),%rdi
    addq    %r14,%rbx

    movq    0(%rsp),%r13
    movq    104(%rsp),%r14
    movq    %r13,%r12
    movq    %r14,%r15

    rorq    $7,%r12
    xorq    %r13,%r12
    shrq    $7,%r13

    rorq    $1,%r12
    xorq    %r12,%r13
    movq    64(%rsp),%r12

    rorq    $42,%r15
    xorq    %r14,%r15
    shrq    $6,%r14

    rorq    $19,%r15
    addq    %r13,%r12
    xorq    %r15,%r14

    addq    120(%rsp),%r12
    movq    %r9,%r13
    addq    %r14,%r12
    movq    %rbx,%r14
    rorq    $23,%r13
    movq    %r10,%r15
    movq    %r12,120(%rsp)

    rorq    $5,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    rorq    $4,%r13
    addq    %rax,%r12
    xorq    %rbx,%r14

    addq    (%rbp,%rdi,8),%r12
    andq    %r9,%r15
    movq    %rcx,%rax

    rorq    $6,%r14
    xorq    %r9,%r13
    xorq    %r11,%r15

    xorq    %rdx,%rax
    xorq    %rbx,%r14
    addq    %r15,%r12
    movq    %rcx,%r15

    rorq    $14,%r13
    andq    %rbx,%rax
    andq    %rdx,%r15

    rorq    $28,%r14
    addq    %r13,%r12
    addq    %r15,%rax

    addq    %r12,%r8
    addq    %r12,%rax
    leaq    1(%rdi),%rdi
    addq    %r14,%rax

    cmpq    $80,%rdi
    jb    L$rounds_16_xx

    movq    128+0(%rsp),%rdi
    leaq    128(%rsi),%rsi

    addq    0(%rdi),%rax
    addq    8(%rdi),%rbx
    addq    16(%rdi),%rcx
    addq    24(%rdi),%rdx
    addq    32(%rdi),%r8
    addq    40(%rdi),%r9
    addq    48(%rdi),%r10
    addq    56(%rdi),%r11

    cmpq    128+16(%rsp),%rsi

    movq    %rax,0(%rdi)
    movq    %rbx,8(%rdi)
    movq    %rcx,16(%rdi)
    movq    %rdx,24(%rdi)
    movq    %r8,32(%rdi)
    movq    %r9,40(%rdi)
    movq    %r10,48(%rdi)
    movq    %r11,56(%rdi)
    jb    L$loop

    movq    128+24(%rsp),%rsi
    movq    (%rsi),%r15
    movq    8(%rsi),%r14
    movq    16(%rsi),%r13
    movq    24(%rsi),%r12
    movq    32(%rsi),%rbp
    movq    40(%rsi),%rbx
    leaq    48(%rsi),%rsp
L$epilogue:
    .byte    0xf3,0xc3

.p2align    6

K512:
.quad    0x428a2f98d728ae22,0x7137449123ef65cd
.quad    0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
.quad    0x3956c25bf348b538,0x59f111f1b605d019
.quad    0x923f82a4af194f9b,0xab1c5ed5da6d8118
.quad    0xd807aa98a3030242,0x12835b0145706fbe
.quad    0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
.quad    0x72be5d74f27b896f,0x80deb1fe3b1696b1
.quad    0x9bdc06a725c71235,0xc19bf174cf692694
.quad    0xe49b69c19ef14ad2,0xefbe4786384f25e3
.quad    0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
.quad    0x2de92c6f592b0275,0x4a7484aa6ea6e483
.quad    0x5cb0a9dcbd41fbd4,0x76f988da831153b5
.quad    0x983e5152ee66dfab,0xa831c66d2db43210
.quad    0xb00327c898fb213f,0xbf597fc7beef0ee4
.quad    0xc6e00bf33da88fc2,0xd5a79147930aa725
.quad    0x06ca6351e003826f,0x142929670a0e6e70
.quad    0x27b70a8546d22ffc,0x2e1b21385c26c926
.quad    0x4d2c6dfc5ac42aed,0x53380d139d95b3df
.quad    0x650a73548baf63de,0x766a0abb3c77b2a8
.quad    0x81c2c92e47edaee6,0x92722c851482353b
.quad    0xa2bfe8a14cf10364,0xa81a664bbc423001
.quad    0xc24b8b70d0f89791,0xc76c51a30654be30
.quad    0xd192e819d6ef5218,0xd69906245565a910
.quad    0xf40e35855771202a,0x106aa07032bbd1b8
.quad    0x19a4c116b8d2d0c8,0x1e376c085141ab53
.quad    0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
.quad    0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
.quad    0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
.quad    0x748f82ee5defb2fc,0x78a5636f43172f60
.quad    0x84c87814a1f0ab72,0x8cc702081a6439ec
.quad    0x90befffa23631e28,0xa4506cebde82bde9
.quad    0xbef9a3f7b2c67915,0xc67178f2e372532b
.quad    0xca273eceea26619c,0xd186b8c721c0c207
.quad    0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
.quad    0x06f067aa72176fba,0x0a637dc5a2c898a6
.quad    0x113f9804bef90dae,0x1b710b35131c471b
.quad    0x28db77f523047d84,0x32caab7b40c72493
.quad    0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
.quad    0x4cc5d4becb3e42b6,0x597f299cfc657e2a
.quad    0x5fcb6fab3ad6faec,0x6c44198c4a475817