user: Demonstrate the C code that generates the assembly output below:

```asm
<comp128v3>:
  endbr64
  push   %r15
  push   %r14
  mov    %rdx,%r14
  mov    $0x40,%edx
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  xor    %esi,%esi
  sub    $0x128,%rsp
  mov    %rdi,0x8(%rsp)
  lea    0x50(%rsp),%rbp
  lea    0x10(%rsp),%rdi
  lea    0x90(%rsp),%r12
  lea    0xd0(%rsp),%r15
  mov    %fs:0x28,%rax
  mov    %rax,0x118(%rsp)
  xor    %eax,%eax
  call   <memset@plt>
  mov    $0x40,%edx
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0x40,%edx
  xor    %esi,%esi
  mov    %r12,%rdi
  call   <memset@plt>
  mov    $0x40,%edx
  xor    %esi,%esi
  mov    %r15,%rdi
  call   <memset@plt>
  mov    0x8(%rsp),%r8
  movdqu (%rbx),%xmm1
  movdqu 0x30(%rbx),%xmm3
  movdqu 0x30(%r8),%xmm4
  movdqu (%r8),%xmm6
  pshufd $0x1b,%xmm1,%xmm0
  movdqu 0x20(%r8),%xmm2
  movdqu 0x10(%rbx),%xmm1
  pshufd $0x1b,%xmm3,%xmm3
  movaps %xmm0,0x80(%rsp)
  pshufd $0x1b,%xmm4,%xmm7
  movdqu 0x10(%r8),%xmm5
  pshufd $0x1b,%xmm6,%xmm4
  movaps %xmm3,0x50(%rsp)
  pshufd $0x1b,%xmm2,%xmm6
  movdqu 0x20(%rbx),%xmm2
  pxor   %xmm7,%xmm3
  pxor   %xmm4,%xmm0
  pshufd $0x1b,%xmm5,%xmm5
  pshufd $0x1b,%xmm1,%xmm1
  movaps %xmm7,0x10(%rsp)
  mov    $0x8,%ebx
  pshufd $0x1b,%xmm2,%xmm2
  movaps %xmm1,0x70(%rsp)
  pxor   %xmm5,%xmm1
  movaps %xmm2,0x60(%rsp)
  pxor   %xmm6,%xmm2
  movaps %xmm4,0x40(%rsp)
  movaps %xmm6,0x20(%rsp)
  movaps %xmm5,0x30(%rsp)
  movaps %xmm3,0x90(%rsp)
  movaps %xmm2,0xa0(%rsp)
  movaps %xmm1,0xb0(%rsp)
  movaps %xmm0,0xc0(%rsp)
L18:
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <_comp128v23_internal@plt>
  sub    $0x1,%ebx
  jne    L18
  lea    0xe0(%rsp),%rbp
  mov    $0x8,%edx
  lea    0xf0(%rsp),%rsi
  pshufd $0x1b,0x80(%rsp),%xmm0
  mov    %rbp,%rdi
  movaps %xmm0,0xd0(%rsp)
  pshufd $0x1b,0x70(%rsp),%xmm0
  movaps %xmm0,0xe0(%rsp)
  pshufd $0x1b,0x60(%rsp),%xmm0
  movaps %xmm0,0xf0(%rsp)
  pshufd $0x1b,0x50(%rsp),%xmm0
  movaps %xmm0,0x100(%rsp)
  call   <memmove@plt>
  mov    $0x4,%edx
  mov    %r15,%rsi
  mov    %r14,%rdi
  call   <memcpy@plt>
  mov    $0x8,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <memcpy@plt>
  mov    0x118(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L17
  add    $0x128,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L17:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) {
  uint8_t k_mix[16];
  uint8_t rand_mix[16];
  uint8_t katyvasz[16];
  uint8_t output[16];
  uint8_t i;
  memset(k_mix, 0, sizeof(k_mix));
  memset(rand_mix, 0, sizeof(rand_mix));
  memset(katyvasz, 0, sizeof(katyvasz));
  memset(output, 0, sizeof(output));
  for (i = 0; i < 8; i++) {
    k_mix[i] = ki[15 - i];
    k_mix[15 - i] = ki[i];
  }
  for (i = 0; i < 8; i++) {
    rand_mix[i] = rand[15 - i];
    rand_mix[15 - i] = rand[i];
  }
  for (i = 0; i < 16; i++) {
    katyvasz[i] = k_mix[i] ^ rand_mix[i];
  }
  for (i = 0; i < 8; i++) {
    _comp128v23_internal(rand_mix, katyvasz, rand_mix);
  }
  for (i = 0; i < 16; i++) {
    output[i] = rand_mix[15 - i];
  }
  memmove(output + 4, output + 8, 8);
  memcpy(sres, output, 4);
  memcpy(kc, output + 4, 8);
  return 0;
}
```