[funini.com] -> [kei@sodan] -> Kernel Reading

root/arch/x86/crypto/salsa20-x86_64-asm_64.S

/* [<][>][^][v][top][bottom][index][help] */
# enter ECRYPT_encrypt_bytes
.text
.p2align 5
.globl ECRYPT_encrypt_bytes
ECRYPT_encrypt_bytes:
        mov     %rsp,%r11
        and     $31,%r11
        add     $256,%r11
        sub     %r11,%rsp
        # x = arg1
        mov     %rdi,%r8
        # m = arg2
        mov     %rsi,%rsi
        # out = arg3
        mov     %rdx,%rdi
        # bytes = arg4
        mov     %rcx,%rdx
        #               unsigned>? bytes - 0
        cmp     $0,%rdx
        # comment:fp stack unchanged by jump
        # goto done if !unsigned>
        jbe     ._done
        # comment:fp stack unchanged by fallthrough
# start:
._start:
        # r11_stack = r11
        movq    %r11,0(%rsp)
        # r12_stack = r12
        movq    %r12,8(%rsp)
        # r13_stack = r13
        movq    %r13,16(%rsp)
        # r14_stack = r14
        movq    %r14,24(%rsp)
        # r15_stack = r15
        movq    %r15,32(%rsp)
        # rbx_stack = rbx
        movq    %rbx,40(%rsp)
        # rbp_stack = rbp
        movq    %rbp,48(%rsp)
        # in0 = *(uint64 *) (x + 0)
        movq    0(%r8),%rcx
        # in2 = *(uint64 *) (x + 8)
        movq    8(%r8),%r9
        # in4 = *(uint64 *) (x + 16)
        movq    16(%r8),%rax
        # in6 = *(uint64 *) (x + 24)
        movq    24(%r8),%r10
        # in8 = *(uint64 *) (x + 32)
        movq    32(%r8),%r11
        # in10 = *(uint64 *) (x + 40)
        movq    40(%r8),%r12
        # in12 = *(uint64 *) (x + 48)
        movq    48(%r8),%r13
        # in14 = *(uint64 *) (x + 56)
        movq    56(%r8),%r14
        # j0 = in0
        movq    %rcx,56(%rsp)
        # j2 = in2
        movq    %r9,64(%rsp)
        # j4 = in4
        movq    %rax,72(%rsp)
        # j6 = in6
        movq    %r10,80(%rsp)
        # j8 = in8
        movq    %r11,88(%rsp)
        # j10 = in10
        movq    %r12,96(%rsp)
        # j12 = in12
        movq    %r13,104(%rsp)
        # j14 = in14
        movq    %r14,112(%rsp)
        # x_backup = x
        movq    %r8,120(%rsp)
# bytesatleast1:
._bytesatleast1:
        #                   unsigned<? bytes - 64
        cmp     $64,%rdx
        # comment:fp stack unchanged by jump
        #   goto nocopy if !unsigned<
        jae     ._nocopy
        #     ctarget = out
        movq    %rdi,128(%rsp)
        #     out = &tmp
        leaq    192(%rsp),%rdi
        #     i = bytes
        mov     %rdx,%rcx
        #     while (i) { *out++ = *m++; --i }
        rep     movsb
        #     out = &tmp
        leaq    192(%rsp),%rdi
        #     m = &tmp
        leaq    192(%rsp),%rsi
        # comment:fp stack unchanged by fallthrough
#   nocopy:
._nocopy:
        #   out_backup = out
        movq    %rdi,136(%rsp)
        #   m_backup = m
        movq    %rsi,144(%rsp)
        #   bytes_backup = bytes
        movq    %rdx,152(%rsp)
        #   x1 = j0
        movq    56(%rsp),%rdi
        #   x0 = x1
        mov     %rdi,%rdx
        #   (uint64) x1 >>= 32
        shr     $32,%rdi
        #               x3 = j2
        movq    64(%rsp),%rsi
        #               x2 = x3
        mov     %rsi,%rcx
        #               (uint64) x3 >>= 32
        shr     $32,%rsi
        #   x5 = j4
        movq    72(%rsp),%r8
        #   x4 = x5
        mov     %r8,%r9
        #   (uint64) x5 >>= 32
        shr     $32,%r8
        #   x5_stack = x5
        movq    %r8,160(%rsp)
        #               x7 = j6
        movq    80(%rsp),%r8
        #               x6 = x7
        mov     %r8,%rax
        #               (uint64) x7 >>= 32
        shr     $32,%r8
        #   x9 = j8
        movq    88(%rsp),%r10
        #   x8 = x9
        mov     %r10,%r11
        #   (uint64) x9 >>= 32
        shr     $32,%r10
        #               x11 = j10
        movq    96(%rsp),%r12
        #               x10 = x11
        mov     %r12,%r13
        #               x10_stack = x10
        movq    %r13,168(%rsp)
        #               (uint64) x11 >>= 32
        shr     $32,%r12
        #   x13 = j12
        movq    104(%rsp),%r13
        #   x12 = x13
        mov     %r13,%r14
        #   (uint64) x13 >>= 32
        shr     $32,%r13
        #               x15 = j14
        movq    112(%rsp),%r15
        #               x14 = x15
        mov     %r15,%rbx
        #               (uint64) x15 >>= 32
        shr     $32,%r15
        #               x15_stack = x15
        movq    %r15,176(%rsp)
        #   i = 20
        mov     $20,%r15
#   mainloop:
._mainloop:
        #   i_backup = i
        movq    %r15,184(%rsp)
        #               x5 = x5_stack
        movq    160(%rsp),%r15
        # a = x12 + x0
        lea     (%r14,%rdx),%rbp
        # (uint32) a <<<= 7
        rol     $7,%ebp
        # x4 ^= a
        xor     %rbp,%r9
        #               b = x1 + x5
        lea     (%rdi,%r15),%rbp
        #               (uint32) b <<<= 7
        rol     $7,%ebp
        #               x9 ^= b
        xor     %rbp,%r10
        # a = x0 + x4
        lea     (%rdx,%r9),%rbp
        # (uint32) a <<<= 9
        rol     $9,%ebp
        # x8 ^= a
        xor     %rbp,%r11
        #               b = x5 + x9
        lea     (%r15,%r10),%rbp
        #               (uint32) b <<<= 9
        rol     $9,%ebp
        #               x13 ^= b
        xor     %rbp,%r13
        # a = x4 + x8
        lea     (%r9,%r11),%rbp
        # (uint32) a <<<= 13
        rol     $13,%ebp
        # x12 ^= a
        xor     %rbp,%r14
        #               b = x9 + x13
        lea     (%r10,%r13),%rbp
        #               (uint32) b <<<= 13
        rol     $13,%ebp
        #               x1 ^= b
        xor     %rbp,%rdi
        # a = x8 + x12
        lea     (%r11,%r14),%rbp
        # (uint32) a <<<= 18
        rol     $18,%ebp
        # x0 ^= a
        xor     %rbp,%rdx
        #               b = x13 + x1
        lea     (%r13,%rdi),%rbp
        #               (uint32) b <<<= 18
        rol     $18,%ebp
        #               x5 ^= b
        xor     %rbp,%r15
        #                               x10 = x10_stack
        movq    168(%rsp),%rbp
        #               x5_stack = x5
        movq    %r15,160(%rsp)
        #                               c = x6 + x10
        lea     (%rax,%rbp),%r15
        #                               (uint32) c <<<= 7
        rol     $7,%r15d
        #                               x14 ^= c
        xor     %r15,%rbx
        #                               c = x10 + x14
        lea     (%rbp,%rbx),%r15
        #                               (uint32) c <<<= 9
        rol     $9,%r15d
        #                               x2 ^= c
        xor     %r15,%rcx
        #                               c = x14 + x2
        lea     (%rbx,%rcx),%r15
        #                               (uint32) c <<<= 13
        rol     $13,%r15d
        #                               x6 ^= c
        xor     %r15,%rax
        #                               c = x2 + x6
        lea     (%rcx,%rax),%r15
        #                               (uint32) c <<<= 18
        rol     $18,%r15d
        #                               x10 ^= c
        xor     %r15,%rbp
        #                                               x15 = x15_stack
        movq    176(%rsp),%r15
        #                               x10_stack = x10
        movq    %rbp,168(%rsp)
        #                                               d = x11 + x15
        lea     (%r12,%r15),%rbp
        #                                               (uint32) d <<<= 7
        rol     $7,%ebp
        #                                               x3 ^= d
        xor     %rbp,%rsi
        #                                               d = x15 + x3
        lea     (%r15,%rsi),%rbp
        #                                               (uint32) d <<<= 9
        rol     $9,%ebp
        #                                               x7 ^= d
        xor     %rbp,%r8
        #                                               d = x3 + x7
        lea     (%rsi,%r8),%rbp
        #                                               (uint32) d <<<= 13
        rol     $13,%ebp
        #                                               x11 ^= d
        xor     %rbp,%r12
        #                                               d = x7 + x11
        lea     (%r8,%r12),%rbp
        #                                               (uint32) d <<<= 18
        rol     $18,%ebp
        #                                               x15 ^= d
        xor     %rbp,%r15
        #                                               x15_stack = x15
        movq    %r15,176(%rsp)
        #               x5 = x5_stack
        movq    160(%rsp),%r15
        # a = x3 + x0
        lea     (%rsi,%rdx),%rbp
        # (uint32) a <<<= 7
        rol     $7,%ebp
        # x1 ^= a
        xor     %rbp,%rdi
        #               b = x4 + x5
        lea     (%r9,%r15),%rbp
        #               (uint32) b <<<= 7
        rol     $7,%ebp
        #               x6 ^= b
        xor     %rbp,%rax
        # a = x0 + x1
        lea     (%rdx,%rdi),%rbp
        # (uint32) a <<<= 9
        rol     $9,%ebp
        # x2 ^= a
        xor     %rbp,%rcx
        #               b = x5 + x6
        lea     (%r15,%rax),%rbp
        #               (uint32) b <<<= 9
        rol     $9,%ebp
        #               x7 ^= b
        xor     %rbp,%r8
        # a = x1 + x2
        lea     (%rdi,%rcx),%rbp
        # (uint32) a <<<= 13
        rol     $13,%ebp
        # x3 ^= a
        xor     %rbp,%rsi
        #               b = x6 + x7
        lea     (%rax,%r8),%rbp
        #               (uint32) b <<<= 13
        rol     $13,%ebp
        #               x4 ^= b
        xor     %rbp,%r9
        # a = x2 + x3
        lea     (%rcx,%rsi),%rbp
        # (uint32) a <<<= 18
        rol     $18,%ebp
        # x0 ^= a
        xor     %rbp,%rdx
        #               b = x7 + x4
        lea     (%r8,%r9),%rbp
        #               (uint32) b <<<= 18
        rol     $18,%ebp
        #               x5 ^= b
        xor     %rbp,%r15
        #                               x10 = x10_stack
        movq    168(%rsp),%rbp
        #               x5_stack = x5
        movq    %r15,160(%rsp)
        #                               c = x9 + x10
        lea     (%r10,%rbp),%r15
        #                               (uint32) c <<<= 7
        rol     $7,%r15d
        #                               x11 ^= c
        xor     %r15,%r12
        #                               c = x10 + x11
        lea     (%rbp,%r12),%r15
        #                               (uint32) c <<<= 9
        rol     $9,%r15d
        #                               x8 ^= c
        xor     %r15,%r11
        #                               c = x11 + x8
        lea     (%r12,%r11),%r15
        #                               (uint32) c <<<= 13
        rol     $13,%r15d
        #                               x9 ^= c
        xor     %r15,%r10
        #                               c = x8 + x9
        lea     (%r11,%r10),%r15
        #                               (uint32) c <<<= 18
        rol     $18,%r15d
        #                               x10 ^= c
        xor     %r15,%rbp
        #                                               x15 = x15_stack
        movq    176(%rsp),%r15
        #                               x10_stack = x10
        movq    %rbp,168(%rsp)
        #                                               d = x14 + x15
        lea     (%rbx,%r15),%rbp
        #                                               (uint32) d <<<= 7
        rol     $7,%ebp
        #                                               x12 ^= d
        xor     %rbp,%r14
        #                                               d = x15 + x12
        lea     (%r15,%r14),%rbp
        #                                               (uint32) d <<<= 9
        rol     $9,%ebp
        #                                               x13 ^= d
        xor     %rbp,%r13
        #                                               d = x12 + x13
        lea     (%r14,%r13),%rbp
        #                                               (uint32) d <<<= 13
        rol     $13,%ebp
        #                                               x14 ^= d
        xor     %rbp,%rbx
        #                                               d = x13 + x14
        lea     (%r13,%rbx),%rbp
        #                                               (uint32) d <<<= 18
        rol     $18,%ebp
        #                                               x15 ^= d
        xor     %rbp,%r15
        #                                               x15_stack = x15
        movq    %r15,176(%rsp)
        #               x5 = x5_stack
        movq    160(%rsp),%r15
        # a = x12 + x0
        lea     (%r14,%rdx),%rbp
        # (uint32) a <<<= 7
        rol     $7,%ebp
        # x4 ^= a
        xor     %rbp,%r9
        #               b = x1 + x5
        lea     (%rdi,%r15),%rbp
        #               (uint32) b <<<= 7
        rol     $7,%ebp
        #               x9 ^= b
        xor     %rbp,%r10
        # a = x0 + x4
        lea     (%rdx,%r9),%rbp
        # (uint32) a <<<= 9
        rol     $9,%ebp
        # x8 ^= a
        xor     %rbp,%r11
        #               b = x5 + x9
        lea     (%r15,%r10),%rbp
        #               (uint32) b <<<= 9
        rol     $9,%ebp
        #               x13 ^= b
        xor     %rbp,%r13
        # a = x4 + x8
        lea     (%r9,%r11),%rbp
        # (uint32) a <<<= 13
        rol     $13,%ebp
        # x12 ^= a
        xor     %rbp,%r14
        #               b = x9 + x13
        lea     (%r10,%r13),%rbp
        #               (uint32) b <<<= 13
        rol     $13,%ebp
        #               x1 ^= b
        xor     %rbp,%rdi
        # a = x8 + x12
        lea     (%r11,%r14),%rbp
        # (uint32) a <<<= 18
        rol     $18,%ebp
        # x0 ^= a
        xor     %rbp,%rdx
        #               b = x13 + x1
        lea     (%r13,%rdi),%rbp
        #               (uint32) b <<<= 18
        rol     $18,%ebp
        #               x5 ^= b
        xor     %rbp,%r15
        #                               x10 = x10_stack
        movq    168(%rsp),%rbp
        #               x5_stack = x5
        movq    %r15,160(%rsp)
        #                               c = x6 + x10
        lea     (%rax,%rbp),%r15
        #                               (uint32) c <<<= 7
        rol     $7,%r15d
        #                               x14 ^= c
        xor     %r15,%rbx
        #                               c = x10 + x14
        lea     (%rbp,%rbx),%r15
        #                               (uint32) c <<<= 9
        rol     $9,%r15d
        #                               x2 ^= c
        xor     %r15,%rcx
        #                               c = x14 + x2
        lea     (%rbx,%rcx),%r15
        #                               (uint32) c <<<= 13
        rol     $13,%r15d
        #                               x6 ^= c
        xor     %r15,%rax
        #                               c = x2 + x6
        lea     (%rcx,%rax),%r15
        #                               (uint32) c <<<= 18
        rol     $18,%r15d
        #                               x10 ^= c
        xor     %r15,%rbp
        #                                               x15 = x15_stack
        movq    176(%rsp),%r15
        #                               x10_stack = x10
        movq    %rbp,168(%rsp)
        #                                               d = x11 + x15
        lea     (%r12,%r15),%rbp
        #                                               (uint32) d <<<= 7
        rol     $7,%ebp
        #                                               x3 ^= d
        xor     %rbp,%rsi
        #                                               d = x15 + x3
        lea     (%r15,%rsi),%rbp
        #                                               (uint32) d <<<= 9
        rol     $9,%ebp
        #                                               x7 ^= d
        xor     %rbp,%r8
        #                                               d = x3 + x7
        lea     (%rsi,%r8),%rbp
        #                                               (uint32) d <<<= 13
        rol     $13,%ebp
        #                                               x11 ^= d
        xor     %rbp,%r12
        #                                               d = x7 + x11
        lea     (%r8,%r12),%rbp
        #                                               (uint32) d <<<= 18
        rol     $18,%ebp
        #                                               x15 ^= d
        xor     %rbp,%r15
        #                                               x15_stack = x15
        movq    %r15,176(%rsp)
        #               x5 = x5_stack
        movq    160(%rsp),%r15
        # a = x3 + x0
        lea     (%rsi,%rdx),%rbp
        # (uint32) a <<<= 7
        rol     $7,%ebp
        # x1 ^= a
        xor     %rbp,%rdi
        #               b = x4 + x5
        lea     (%r9,%r15),%rbp
        #               (uint32) b <<<= 7
        rol     $7,%ebp
        #               x6 ^= b
        xor     %rbp,%rax
        # a = x0 + x1
        lea     (%rdx,%rdi),%rbp
        # (uint32) a <<<= 9
        rol     $9,%ebp
        # x2 ^= a
        xor     %rbp,%rcx
        #               b = x5 + x6
        lea     (%r15,%rax),%rbp
        #               (uint32) b <<<= 9
        rol     $9,%ebp
        #               x7 ^= b
        xor     %rbp,%r8
        # a = x1 + x2
        lea     (%rdi,%rcx),%rbp
        # (uint32) a <<<= 13
        rol     $13,%ebp
        # x3 ^= a
        xor     %rbp,%rsi
        #               b = x6 + x7
        lea     (%rax,%r8),%rbp
        #               (uint32) b <<<= 13
        rol     $13,%ebp
        #               x4 ^= b
        xor     %rbp,%r9
        # a = x2 + x3
        lea     (%rcx,%rsi),%rbp
        # (uint32) a <<<= 18
        rol     $18,%ebp
        # x0 ^= a
        xor     %rbp,%rdx
        #               b = x7 + x4
        lea     (%r8,%r9),%rbp
        #               (uint32) b <<<= 18
        rol     $18,%ebp
        #               x5 ^= b
        xor     %rbp,%r15
        #                               x10 = x10_stack
        movq    168(%rsp),%rbp
        #               x5_stack = x5
        movq    %r15,160(%rsp)
        #                               c = x9 + x10
        lea     (%r10,%rbp),%r15
        #                               (uint32) c <<<= 7
        rol     $7,%r15d
        #                               x11 ^= c
        xor     %r15,%r12
        #                               c = x10 + x11
        lea     (%rbp,%r12),%r15
        #                               (uint32) c <<<= 9
        rol     $9,%r15d
        #                               x8 ^= c
        xor     %r15,%r11
        #                               c = x11 + x8
        lea     (%r12,%r11),%r15
        #                               (uint32) c <<<= 13
        rol     $13,%r15d
        #                               x9 ^= c
        xor     %r15,%r10
        #                               c = x8 + x9
        lea     (%r11,%r10),%r15
        #                               (uint32) c <<<= 18
        rol     $18,%r15d
        #                               x10 ^= c
        xor     %r15,%rbp
        #                                               x15 = x15_stack
        movq    176(%rsp),%r15
        #                               x10_stack = x10
        movq    %rbp,168(%rsp)
        #                                               d = x14 + x15
        lea     (%rbx,%r15),%rbp
        #                                               (uint32) d <<<= 7
        rol     $7,%ebp
        #                                               x12 ^= d
        xor     %rbp,%r14
        #                                               d = x15 + x12
        lea     (%r15,%r14),%rbp
        #                                               (uint32) d <<<= 9
        rol     $9,%ebp
        #                                               x13 ^= d
        xor     %rbp,%r13
        #                                               d = x12 + x13
        lea     (%r14,%r13),%rbp
        #                                               (uint32) d <<<= 13
        rol     $13,%ebp
        #                                               x14 ^= d
        xor     %rbp,%rbx
        #                                               d = x13 + x14
        lea     (%r13,%rbx),%rbp
        #                                               (uint32) d <<<= 18
        rol     $18,%ebp
        #                                               x15 ^= d
        xor     %rbp,%r15
        #                                               x15_stack = x15
        movq    %r15,176(%rsp)
        #   i = i_backup
        movq    184(%rsp),%r15
        #                  unsigned>? i -= 4
        sub     $4,%r15
        # comment:fp stack unchanged by jump
        # goto mainloop if unsigned>
        ja      ._mainloop
        #   (uint32) x2 += j2
        addl    64(%rsp),%ecx
        #   x3 <<= 32
        shl     $32,%rsi
        #   x3 += j2
        addq    64(%rsp),%rsi
        #   (uint64) x3 >>= 32
        shr     $32,%rsi
        #   x3 <<= 32
        shl     $32,%rsi
        #   x2 += x3
        add     %rsi,%rcx
        #   (uint32) x6 += j6
        addl    80(%rsp),%eax
        #   x7 <<= 32
        shl     $32,%r8
        #   x7 += j6
        addq    80(%rsp),%r8
        #   (uint64) x7 >>= 32
        shr     $32,%r8
        #   x7 <<= 32
        shl     $32,%r8
        #   x6 += x7
        add     %r8,%rax
        #   (uint32) x8 += j8
        addl    88(%rsp),%r11d
        #   x9 <<= 32
        shl     $32,%r10
        #   x9 += j8
        addq    88(%rsp),%r10
        #   (uint64) x9 >>= 32
        shr     $32,%r10
        #   x9 <<= 32
        shl     $32,%r10
        #   x8 += x9
        add     %r10,%r11
        #   (uint32) x12 += j12
        addl    104(%rsp),%r14d
        #   x13 <<= 32
        shl     $32,%r13
        #   x13 += j12
        addq    104(%rsp),%r13
        #   (uint64) x13 >>= 32
        shr     $32,%r13
        #   x13 <<= 32
        shl     $32,%r13
        #   x12 += x13
        add     %r13,%r14
        #   (uint32) x0 += j0
        addl    56(%rsp),%edx
        #   x1 <<= 32
        shl     $32,%rdi
        #   x1 += j0
        addq    56(%rsp),%rdi
        #   (uint64) x1 >>= 32
        shr     $32,%rdi
        #   x1 <<= 32
        shl     $32,%rdi
        #   x0 += x1
        add     %rdi,%rdx
        #   x5 = x5_stack
        movq    160(%rsp),%rdi
        #   (uint32) x4 += j4
        addl    72(%rsp),%r9d
        #   x5 <<= 32
        shl     $32,%rdi
        #   x5 += j4
        addq    72(%rsp),%rdi
        #   (uint64) x5 >>= 32
        shr     $32,%rdi
        #   x5 <<= 32
        shl     $32,%rdi
        #   x4 += x5
        add     %rdi,%r9
        #   x10 = x10_stack
        movq    168(%rsp),%r8
        #   (uint32) x10 += j10
        addl    96(%rsp),%r8d
        #   x11 <<= 32
        shl     $32,%r12
        #   x11 += j10
        addq    96(%rsp),%r12
        #   (uint64) x11 >>= 32
        shr     $32,%r12
        #   x11 <<= 32
        shl     $32,%r12
        #   x10 += x11
        add     %r12,%r8
        #   x15 = x15_stack
        movq    176(%rsp),%rdi
        #   (uint32) x14 += j14
        addl    112(%rsp),%ebx
        #   x15 <<= 32
        shl     $32,%rdi
        #   x15 += j14
        addq    112(%rsp),%rdi
        #   (uint64) x15 >>= 32
        shr     $32,%rdi
        #   x15 <<= 32
        shl     $32,%rdi
        #   x14 += x15
        add     %rdi,%rbx
        #   out = out_backup
        movq    136(%rsp),%rdi
        #   m = m_backup
        movq    144(%rsp),%rsi
        #   x0 ^= *(uint64 *) (m + 0)
        xorq    0(%rsi),%rdx
        #   *(uint64 *) (out + 0) = x0
        movq    %rdx,0(%rdi)
        #   x2 ^= *(uint64 *) (m + 8)
        xorq    8(%rsi),%rcx
        #   *(uint64 *) (out + 8) = x2
        movq    %rcx,8(%rdi)
        #   x4 ^= *(uint64 *) (m + 16)
        xorq    16(%rsi),%r9
        #   *(uint64 *) (out + 16) = x4
        movq    %r9,16(%rdi)
        #   x6 ^= *(uint64 *) (m + 24)
        xorq    24(%rsi),%rax
        #   *(uint64 *) (out + 24) = x6
        movq    %rax,24(%rdi)
        #   x8 ^= *(uint64 *) (m + 32)
        xorq    32(%rsi),%r11
        #   *(uint64 *) (out + 32) = x8
        movq    %r11,32(%rdi)
        #   x10 ^= *(uint64 *) (m + 40)
        xorq    40(%rsi),%r8
        #   *(uint64 *) (out + 40) = x10
        movq    %r8,40(%rdi)
        #   x12 ^= *(uint64 *) (m + 48)
        xorq    48(%rsi),%r14
        #   *(uint64 *) (out + 48) = x12
        movq    %r14,48(%rdi)
        #   x14 ^= *(uint64 *) (m + 56)
        xorq    56(%rsi),%rbx
        #   *(uint64 *) (out + 56) = x14
        movq    %rbx,56(%rdi)
        #   bytes = bytes_backup
        movq    152(%rsp),%rdx
        #   in8 = j8
        movq    88(%rsp),%rcx
        #   in8 += 1
        add     $1,%rcx
        #   j8 = in8
        movq    %rcx,88(%rsp)
        #                          unsigned>? unsigned<? bytes - 64
        cmp     $64,%rdx
        # comment:fp stack unchanged by jump
        #   goto bytesatleast65 if unsigned>
        ja      ._bytesatleast65
        # comment:fp stack unchanged by jump
        #     goto bytesatleast64 if !unsigned<
        jae     ._bytesatleast64
        #       m = out
        mov     %rdi,%rsi
        #       out = ctarget
        movq    128(%rsp),%rdi
        #       i = bytes
        mov     %rdx,%rcx
        #       while (i) { *out++ = *m++; --i }
        rep     movsb
        # comment:fp stack unchanged by fallthrough
#     bytesatleast64:
._bytesatleast64:
        #     x = x_backup
        movq    120(%rsp),%rdi
        #     in8 = j8
        movq    88(%rsp),%rsi
        #     *(uint64 *) (x + 32) = in8
        movq    %rsi,32(%rdi)
        #     r11 = r11_stack
        movq    0(%rsp),%r11
        #     r12 = r12_stack
        movq    8(%rsp),%r12
        #     r13 = r13_stack
        movq    16(%rsp),%r13
        #     r14 = r14_stack
        movq    24(%rsp),%r14
        #     r15 = r15_stack
        movq    32(%rsp),%r15
        #     rbx = rbx_stack
        movq    40(%rsp),%rbx
        #     rbp = rbp_stack
        movq    48(%rsp),%rbp
        # comment:fp stack unchanged by fallthrough
#     done:
._done:
        #     leave
        add     %r11,%rsp
        mov     %rdi,%rax
        mov     %rsi,%rdx
        ret
#   bytesatleast65:
._bytesatleast65:
        #   bytes -= 64
        sub     $64,%rdx
        #   out += 64
        add     $64,%rdi
        #   m += 64
        add     $64,%rsi
        # comment:fp stack unchanged by jump
        # goto bytesatleast1
        jmp     ._bytesatleast1
# enter ECRYPT_keysetup
.text
.p2align 5
.globl ECRYPT_keysetup
ECRYPT_keysetup:
        mov     %rsp,%r11
        and     $31,%r11
        add     $256,%r11
        sub     %r11,%rsp
        #   k = arg2
        mov     %rsi,%rsi
        #   kbits = arg3
        mov     %rdx,%rdx
        #   x = arg1
        mov     %rdi,%rdi
        #   in0 = *(uint64 *) (k + 0)
        movq    0(%rsi),%r8
        #   in2 = *(uint64 *) (k + 8)
        movq    8(%rsi),%r9
        #   *(uint64 *) (x + 4) = in0
        movq    %r8,4(%rdi)
        #   *(uint64 *) (x + 12) = in2
        movq    %r9,12(%rdi)
        #                    unsigned<? kbits - 256
        cmp     $256,%rdx
        # comment:fp stack unchanged by jump
        #   goto kbits128 if unsigned<
        jb      ._kbits128
#   kbits256:
._kbits256:
        #     in10 = *(uint64 *) (k + 16)
        movq    16(%rsi),%rdx
        #     in12 = *(uint64 *) (k + 24)
        movq    24(%rsi),%rsi
        #     *(uint64 *) (x + 44) = in10
        movq    %rdx,44(%rdi)
        #     *(uint64 *) (x + 52) = in12
        movq    %rsi,52(%rdi)
        #     in0 = 1634760805
        mov     $1634760805,%rsi
        #     in4 = 857760878
        mov     $857760878,%rdx
        #     in10 = 2036477234
        mov     $2036477234,%rcx
        #     in14 = 1797285236
        mov     $1797285236,%r8
        #     *(uint32 *) (x + 0) = in0
        movl    %esi,0(%rdi)
        #     *(uint32 *) (x + 20) = in4
        movl    %edx,20(%rdi)
        #     *(uint32 *) (x + 40) = in10
        movl    %ecx,40(%rdi)
        #     *(uint32 *) (x + 60) = in14
        movl    %r8d,60(%rdi)
        # comment:fp stack unchanged by jump
        #   goto keysetupdone
        jmp     ._keysetupdone
#   kbits128:
._kbits128:
        #     in10 = *(uint64 *) (k + 0)
        movq    0(%rsi),%rdx
        #     in12 = *(uint64 *) (k + 8)
        movq    8(%rsi),%rsi
        #     *(uint64 *) (x + 44) = in10
        movq    %rdx,44(%rdi)
        #     *(uint64 *) (x + 52) = in12
        movq    %rsi,52(%rdi)
        #     in0 = 1634760805
        mov     $1634760805,%rsi
        #     in4 = 824206446
        mov     $824206446,%rdx
        #     in10 = 2036477238
        mov     $2036477238,%rcx
        #     in14 = 1797285236
        mov     $1797285236,%r8
        #     *(uint32 *) (x + 0) = in0
        movl    %esi,0(%rdi)
        #     *(uint32 *) (x + 20) = in4
        movl    %edx,20(%rdi)
        #     *(uint32 *) (x + 40) = in10
        movl    %ecx,40(%rdi)
        #     *(uint32 *) (x + 60) = in14
        movl    %r8d,60(%rdi)
#   keysetupdone:
._keysetupdone:
        # leave
        add     %r11,%rsp
        mov     %rdi,%rax
        mov     %rsi,%rdx
        ret
# enter ECRYPT_ivsetup
.text
.p2align 5
.globl ECRYPT_ivsetup
ECRYPT_ivsetup:
        mov     %rsp,%r11
        and     $31,%r11
        add     $256,%r11
        sub     %r11,%rsp
        #   iv = arg2
        mov     %rsi,%rsi
        #   x = arg1
        mov     %rdi,%rdi
        #   in6 = *(uint64 *) (iv + 0)
        movq    0(%rsi),%rsi
        #   in8 = 0
        mov     $0,%r8
        #   *(uint64 *) (x + 24) = in6
        movq    %rsi,24(%rdi)
        #   *(uint64 *) (x + 32) = in8
        movq    %r8,32(%rdi)
        # leave
        add     %r11,%rsp
        mov     %rdi,%rax
        mov     %rsi,%rdx
        ret

/* [<][>][^][v][top][bottom][index][help] */

[funini.com] -> [kei@sodan] -> Kernel Reading