// File: /workspace/github_c_makefile_star2_O0/mjosaarinen[P]brutus/crypto_aead/hs1sivv2/ref/encrypt.c
// Function: salsa20_wordtobyte
static void salsa20_wordtobyte(unsigned char output[64], uint32_t input[16])
{
  uint32_t i, x[16];

  for (i = 0;i < 16;++i) x[i] = input[i];
  for (i = HS1_SIV_CHACHA_RNDS;i != 0;i -= 2) {
    QUARTERROUND( 0, 4, 8,12)
    QUARTERROUND( 1, 5, 9,13)
    QUARTERROUND( 2, 6,10,14)
    QUARTERROUND( 3, 7,11,15)
    QUARTERROUND( 0, 5,10,15)
    QUARTERROUND( 1, 6,11,12)
    QUARTERROUND( 2, 7, 8,13)
    QUARTERROUND( 3, 4, 9,14)
  }
  for (i = 0;i < 16;++i) x[i] += input[i];
  for (i = 0;i < 16;++i) write32le((uint32_t *)(output + 4 * i),x[i]);
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movl $0x0, 0x44(%rsp)
cmpl $0x10, 0x44(%rsp)
jae 0x153d
movq 0x48(%rsp), %rax
movl 0x44(%rsp), %ecx
movl (%rax,%rcx,4), %ecx
movl 0x44(%rsp), %eax
movl %ecx, (%rsp,%rax,4)
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x1516
movl $0xc, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
je 0x1994
movl 0x10(%rsp), %eax
addl (%rsp), %eax
movl %eax, (%rsp)
movl 0x30(%rsp), %edi
xorl (%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x30(%rsp)
movl 0x30(%rsp), %eax
addl 0x20(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x10(%rsp), %edi
xorl 0x20(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %eax
addl (%rsp), %eax
movl %eax, (%rsp)
movl 0x30(%rsp), %edi
xorl (%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x30(%rsp)
movl 0x30(%rsp), %eax
addl 0x20(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x10(%rsp), %edi
xorl 0x20(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x10(%rsp)
movl 0x14(%rsp), %eax
addl 0x4(%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x34(%rsp), %edi
xorl 0x4(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addl 0x24(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x14(%rsp), %edi
xorl 0x24(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
addl 0x4(%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x34(%rsp), %edi
xorl 0x4(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addl 0x24(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x14(%rsp), %edi
xorl 0x24(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x14(%rsp)
movl 0x18(%rsp), %eax
addl 0x8(%rsp), %eax
movl %eax, 0x8(%rsp)
movl 0x38(%rsp), %edi
xorl 0x8(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x38(%rsp)
movl 0x38(%rsp), %eax
addl 0x28(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x18(%rsp), %edi
xorl 0x28(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x18(%rsp)
movl 0x18(%rsp), %eax
addl 0x8(%rsp), %eax
movl %eax, 0x8(%rsp)
movl 0x38(%rsp), %edi
xorl 0x8(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x38(%rsp)
movl 0x38(%rsp), %eax
addl 0x28(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x18(%rsp), %edi
xorl 0x28(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x18(%rsp)
movl 0x1c(%rsp), %eax
addl 0xc(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x3c(%rsp), %edi
xorl 0xc(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
addl 0x2c(%rsp), %eax
movl %eax, 0x2c(%rsp)
movl 0x1c(%rsp), %edi
xorl 0x2c(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x1c(%rsp)
movl 0x1c(%rsp), %eax
addl 0xc(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x3c(%rsp), %edi
xorl 0xc(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
addl 0x2c(%rsp), %eax
movl %eax, 0x2c(%rsp)
movl 0x1c(%rsp), %edi
xorl 0x2c(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x1c(%rsp)
movl 0x14(%rsp), %eax
addl (%rsp), %eax
movl %eax, (%rsp)
movl 0x3c(%rsp), %edi
xorl (%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
addl 0x28(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x14(%rsp), %edi
xorl 0x28(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
addl (%rsp), %eax
movl %eax, (%rsp)
movl 0x3c(%rsp), %edi
xorl (%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
addl 0x28(%rsp), %eax
movl %eax, 0x28(%rsp)
movl 0x14(%rsp), %edi
xorl 0x28(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x14(%rsp)
movl 0x18(%rsp), %eax
addl 0x4(%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x30(%rsp), %edi
xorl 0x4(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x30(%rsp)
movl 0x30(%rsp), %eax
addl 0x2c(%rsp), %eax
movl %eax, 0x2c(%rsp)
movl 0x18(%rsp), %edi
xorl 0x2c(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x18(%rsp)
movl 0x18(%rsp), %eax
addl 0x4(%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x30(%rsp), %edi
xorl 0x4(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x30(%rsp)
movl 0x30(%rsp), %eax
addl 0x2c(%rsp), %eax
movl %eax, 0x2c(%rsp)
movl 0x18(%rsp), %edi
xorl 0x2c(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x18(%rsp)
movl 0x1c(%rsp), %eax
addl 0x8(%rsp), %eax
movl %eax, 0x8(%rsp)
movl 0x34(%rsp), %edi
xorl 0x8(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addl 0x20(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x1c(%rsp), %edi
xorl 0x20(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x1c(%rsp)
movl 0x1c(%rsp), %eax
addl 0x8(%rsp), %eax
movl %eax, 0x8(%rsp)
movl 0x34(%rsp), %edi
xorl 0x8(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addl 0x20(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x1c(%rsp), %edi
xorl 0x20(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x1c(%rsp)
movl 0x10(%rsp), %eax
addl 0xc(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x38(%rsp), %edi
xorl 0xc(%rsp), %edi
movl $0x10, %esi
callq 0x30b0
movl %eax, 0x38(%rsp)
movl 0x38(%rsp), %eax
addl 0x24(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x10(%rsp), %edi
xorl 0x24(%rsp), %edi
movl $0xc, %esi
callq 0x30b0
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %eax
addl 0xc(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x38(%rsp), %edi
xorl 0xc(%rsp), %edi
movl $0x8, %esi
callq 0x30b0
movl %eax, 0x38(%rsp)
movl 0x38(%rsp), %eax
addl 0x24(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x10(%rsp), %edi
xorl 0x24(%rsp), %edi
movl $0x7, %esi
callq 0x30b0
movl %eax, 0x10(%rsp)
movl 0x44(%rsp), %eax
subl $0x2, %eax
movl %eax, 0x44(%rsp)
jmp 0x1545
movl $0x0, 0x44(%rsp)
cmpl $0x10, 0x44(%rsp)
jae 0x19c6
movq 0x48(%rsp), %rax
movl 0x44(%rsp), %ecx
movl (%rax,%rcx,4), %ecx
movl 0x44(%rsp), %eax
addl (%rsp,%rax,4), %ecx
movl %ecx, (%rsp,%rax,4)
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x199c
movl $0x0, 0x44(%rsp)
cmpl $0x10, 0x44(%rsp)
jae 0x19ff
movq 0x50(%rsp), %rdi
movl 0x44(%rsp), %eax
shll $0x2, %eax
movl %eax, %eax
addq %rax, %rdi
movl 0x44(%rsp), %eax
movl (%rsp,%rax,4), %esi
callq 0x2c10
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x19ce
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)