// File: /workspace/github_c_makefile_star2_O0/skeeto[P]enchive/src/chacha.c
// Function: chacha_keysetup
void
chacha_keysetup(chacha_ctx *x, const uint8_t *k, uint32_t kbits)
{
  const char *constants;

  x->input[4] = U8TO32_LITTLE(k + 0);
  x->input[5] = U8TO32_LITTLE(k + 4);
  x->input[6] = U8TO32_LITTLE(k + 8);
  x->input[7] = U8TO32_LITTLE(k + 12);
  if (kbits == 256) { /* recommended */
    k += 16;
    constants = sigma;
  } else { /* kbits == 128 */
    constants = tau;
  }
  x->input[8] = U8TO32_LITTLE(k + 0);
  x->input[9] = U8TO32_LITTLE(k + 4);
  x->input[10] = U8TO32_LITTLE(k + 8);
  x->input[11] = U8TO32_LITTLE(k + 12);
  x->input[0] = U8TO32_LITTLE(constants + 0);
  x->input[1] = U8TO32_LITTLE(constants + 4);
  x->input[2] = U8TO32_LITTLE(constants + 8);
  x->input[3] = U8TO32_LITTLE(constants + 12);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x1(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x2(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x3(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x5(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x6(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x7(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x9(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xa(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xb(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0xd(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xe(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xf(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x1c(%rax)
cmpl $0x100, -0x14(%rbp)     # imm = 0x100
jne 0x6998
movq -0x10(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x10(%rbp)
leaq 0x56ce(%rip), %rax      # 0xc060
movq %rax, -0x20(%rbp)
jmp 0x69a3
leaq 0x56d1(%rip), %rax      # 0xc070
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x1(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x2(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x3(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x5(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x6(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0x7(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rax
movzbl 0x8(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0x9(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xa(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xb(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %ecx
movq -0x10(%rbp), %rax
movzbl 0xd(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xe(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x10(%rbp), %rax
movzbl 0xf(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
movq -0x20(%rbp), %rax
movsbl 0x1(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0x2(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0x3(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rax
movsbl 0x4(%rax), %ecx
movq -0x20(%rbp), %rax
movsbl 0x5(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0x6(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0x7(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rax
movsbl 0x8(%rax), %ecx
movq -0x20(%rbp), %rax
movsbl 0x9(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0xa(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0xb(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rax
movsbl 0xc(%rax), %ecx
movq -0x20(%rbp), %rax
movsbl 0xd(%rax), %eax
shll $0x8, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0xe(%rax), %eax
shll $0x10, %eax
orl %eax, %ecx
movq -0x20(%rbp), %rax
movsbl 0xf(%rax), %eax
shll $0x18, %eax
orl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)