user: 下面的汇编指令对应的C源代码是什么:

```asm
<jambu_dec_aut_partial>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%r10d
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%r9d
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%r8d
  mov    -0x28(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%edi
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x28(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0x28(%rbp),%rax
  add    $0x6,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0x28(%rbp),%rax
  add    $0x7,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  push   %r10
  push   %r9
  push   %r8
  push   %rdi
  push   %rsi
  push   %rcx
  push   %rdx
  push   %rax
  push   $0x0
  push   $0x0
  mov    $0x0,%r9d
  mov    $0x0,%r8d
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <_mm_set_epi8@plt>
  add    $0x50,%rsp
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <aes_enc_128@plt>
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <_mm_srli_si128@plt>
  mov    %eax,%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <_mm_storel_epi64@plt>
  mov    -0x20(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movb   $0x80,(%rax)
  mov    -0x40(%rbp),%rax
  mov    %eax,%edx
  mov    $0x7,%eax
  sub    %edx,%eax
  mov    %eax,%edx
  mov    -0x40(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x20(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%r8d
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%edi
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%r9d
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%r10d
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rax),%eax
  movzbl %al,%ecx
  mov    -0x20(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rax),%eax
  movzbl %al,%edx
  mov    -0x20(%rbp),%rax
  add    $0x6,%rax
  movzbl (%rax),%eax
  movzbl %al,%esi
  mov    -0x20(%rbp),%rax
  add    $0x7,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  push   $0x0
  push   $0x0
  push   $0x0
  push   $0x0
  push   $0x0
  push   $0x0
  push   $0x0
  push   $0x0
  push   %r8
  push   %rdi
  mov    %r10d,%r8d
  mov    %eax,%edi
  call   <_mm_set_epi8@plt>
  add    $0x50,%rsp
  mov    %eax,-0x4(%rbp)
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x4(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x30(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_mm_xor_si128@plt>
  mov    -0x38(%rbp),%rdx
  mov    %eax,(%rdx)
  nop
  leave
  ret
```

assistant: ```c
void jambu_dec_aut_partial(__m128i *key, unsigned char *plaintextblk, const unsigned char *ciphertextblk, __m128i *stateS, __m128i *stateR, unsigned long len) {
  __m128i msgtmp = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, ciphertextblk[7], ciphertextblk[6], ciphertextblk[5], ciphertextblk[4], ciphertextblk[3], ciphertextblk[2], ciphertextblk[1], ciphertextblk[0]);
  __m128i tmp;
  aes_enc_128(stateS, key);
  *stateS = _mm_xor_si128(*stateS, _mm_srli_si128(*stateR, 8));
  tmp = _mm_xor_si128(msgtmp, *stateS);
  _mm_storel_epi64((__m128i *)plaintextblk, tmp);
  plaintextblk[len] = 0x80;
  memset(plaintextblk + (len + 1), 0, 7 - len);
  tmp = _mm_set_epi8(plaintextblk[7], plaintextblk[6], plaintextblk[5], plaintextblk[4], plaintextblk[3], plaintextblk[2], plaintextblk[1], plaintextblk[0], 0, 0, 0, 0, 0, 0, 0, 0);
  *stateS = _mm_xor_si128(*stateS, tmp);
  *stateR = _mm_xor_si128(*stateS, *stateR);
}
```