user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<aes128k128d>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %rdx,-0x68(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x44(%rbp)
  jmp    L33
L14:
  mov    -0x44(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x44(%rbp),%eax
  cltq
  mov    %dl,-0x20(%rbp,%rax,1)
  addl   $0x1,-0x44(%rbp)
L33:
  cmpl   $0xf,-0x44(%rbp)
  jle    L14
  movl   $0x0,-0x48(%rbp)
  jmp    L25
L0:
  cmpl   $0x0,-0x48(%rbp)
  jne    L67
  mov    -0x68(%rbp),%rdx
  mov    -0x60(%rbp),%rcx
  lea    -0x20(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <xor_128@plt>
  mov    -0x48(%rbp),%edx
  lea    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <next_key@plt>
  jmp    L35
L67:
  cmpl   $0xa,-0x48(%rbp)
  jne    L81
  lea    -0x40(%rbp),%rdx
  mov    -0x68(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <byte_sub@plt>
  lea    -0x30(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shift_row@plt>
  mov    -0x68(%rbp),%rdx
  lea    -0x20(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <xor_128@plt>
  jmp    L35
L81:
  lea    -0x40(%rbp),%rdx
  mov    -0x68(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <byte_sub@plt>
  lea    -0x30(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shift_row@plt>
  lea    -0x40(%rbp),%rdx
  lea    -0x30(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <mix_column@plt>
  lea    -0x40(%rbp),%rax
  lea    0x4(%rax),%rdx
  lea    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <mix_column@plt>
  lea    -0x40(%rbp),%rax
  lea    0x8(%rax),%rdx
  lea    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <mix_column@plt>
  lea    -0x40(%rbp),%rax
  lea    0xc(%rax),%rdx
  lea    -0x30(%rbp),%rax
  add    $0xc,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <mix_column@plt>
  mov    -0x68(%rbp),%rdx
  lea    -0x20(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <xor_128@plt>
  mov    -0x48(%rbp),%edx
  lea    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <next_key@plt>
L35:
  addl   $0x1,-0x48(%rbp)
L25:
  cmpl   $0xa,-0x48(%rbp)
  jle    L0
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L8
  call   <__stack_chk_fail@plt>
L8:
  leave
  ret
```

assistant: ```c
void aes128k128d(unsigned char *key, unsigned char *data, unsigned char *ciphertext) {
  int round;
  int i;
  unsigned char intermediatea[16];
  unsigned char intermediateb[16];
  unsigned char round_key[16];
  for (i = 0; i < 16; i++)
    round_key[i] = key[i];
  for (round = 0; round < 11; round++) {
    if (round == 0) {
      xor_128(round_key, data, ciphertext);
      next_key(round_key, round);
    } else if (round == 10) {
      byte_sub(ciphertext, intermediatea);
      shift_row(intermediatea, intermediateb);
      xor_128(intermediateb, round_key, ciphertext);
    } else {
      byte_sub(ciphertext, intermediatea);
      shift_row(intermediatea, intermediateb);
      mix_column(&intermediateb[0], &intermediatea[0]);
      mix_column(&intermediateb[4], &intermediatea[4]);
      mix_column(&intermediateb[8], &intermediatea[8]);
      mix_column(&intermediateb[12], &intermediatea[12]);
      xor_128(intermediatea, round_key, ciphertext);
      next_key(round_key, round);
    }
  }
}
```