user: 这段汇编代码用C语言表示是什么样的：

```asm
<comp128v3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x140,%rsp
  mov    %rdi,-0x128(%rbp)
  mov    %rsi,-0x130(%rbp)
  mov    %rdx,-0x138(%rbp)
  mov    %rcx,-0x140(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x110(%rbp),%rax
  mov    $0x40,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0xd0(%rbp),%rax
  mov    $0x40,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x90(%rbp),%rax
  mov    $0x40,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x50(%rbp),%rax
  mov    $0x40,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movl   $0x0,-0x114(%rbp)
  jmp    L45
L89:
  mov    $0xf,%eax
  sub    -0x114(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x128(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x114(%rbp),%eax
  cltq
  mov    %edx,-0x110(%rbp,%rax,4)
  mov    -0x114(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x128(%rbp),%rax
  add    %rax,%rdx
  mov    $0xf,%eax
  sub    -0x114(%rbp),%eax
  mov    (%rdx),%edx
  cltq
  mov    %edx,-0x110(%rbp,%rax,4)
  addl   $0x1,-0x114(%rbp)
L45:
  cmpl   $0x7,-0x114(%rbp)
  jle    L89
  movl   $0x0,-0x114(%rbp)
  jmp    L4
L13:
  mov    $0xf,%eax
  sub    -0x114(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x130(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x114(%rbp),%eax
  cltq
  mov    %edx,-0xd0(%rbp,%rax,4)
  mov    -0x114(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x130(%rbp),%rax
  add    %rax,%rdx
  mov    $0xf,%eax
  sub    -0x114(%rbp),%eax
  mov    (%rdx),%edx
  cltq
  mov    %edx,-0xd0(%rbp,%rax,4)
  addl   $0x1,-0x114(%rbp)
L4:
  cmpl   $0x7,-0x114(%rbp)
  jle    L13
  movl   $0x0,-0x114(%rbp)
  jmp    L24
L74:
  mov    -0x114(%rbp),%eax
  cltq
  mov    -0x110(%rbp,%rax,4),%edx
  mov    -0x114(%rbp),%eax
  cltq
  mov    -0xd0(%rbp,%rax,4),%eax
  xor    %eax,%edx
  mov    -0x114(%rbp),%eax
  cltq
  mov    %edx,-0x90(%rbp,%rax,4)
  addl   $0x1,-0x114(%rbp)
L24:
  cmpl   $0xf,-0x114(%rbp)
  jle    L74
  movl   $0x0,-0x114(%rbp)
  jmp    L50
L82:
  lea    -0xd0(%rbp),%rdx
  lea    -0x90(%rbp),%rcx
  lea    -0xd0(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <_comp128v23_internal@plt>
  addl   $0x1,-0x114(%rbp)
L50:
  cmpl   $0x7,-0x114(%rbp)
  jle    L82
  movl   $0x0,-0x114(%rbp)
  jmp    L20
L80:
  mov    $0xf,%eax
  sub    -0x114(%rbp),%eax
  cltq
  mov    -0xd0(%rbp,%rax,4),%edx
  mov    -0x114(%rbp),%eax
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x114(%rbp)
L20:
  cmpl   $0xf,-0x114(%rbp)
  jle    L80
  lea    -0x50(%rbp),%rcx
  add    $0x20,%rcx
  lea    -0x50(%rbp),%rax
  add    $0x10,%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memmove@plt>
  lea    -0x50(%rbp),%rcx
  mov    -0x138(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  lea    -0x50(%rbp),%rax
  add    $0x10,%rax
  mov    -0x140(%rbp),%rcx
  mov    $0x8,%edx
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <memcpy@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L39
  call   <__stack_chk_fail@plt>
L39:
  leave
  ret
```

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;
}
```