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

```asm
<jambu_enc_aut_msg_partial>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    %rcx,-0x50(%rbp)
  mov    %r8,-0x58(%rbp)
  mov    %r9d,-0x5c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x5c(%rbp),%edx
  mov    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  mov    -0x5c(%rbp),%eax
  movl   $0x80,-0x30(%rbp,%rax,4)
  mov    $0x7,%eax
  sub    -0x5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x5c(%rbp),%eax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rcx
  lea    -0x30(%rbp),%rax
  add    %rcx,%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x50(%rbp),%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <AESEncrypt@plt>
  mov    -0x50(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x58(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x50(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x50(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x50(%rbp),%rax
  add    $0x4,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x50(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  lea    -0x30(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x50(%rbp),%rax
  add    $0x8,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x50(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  lea    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x50(%rbp),%rax
  add    $0xc,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x50(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x58(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x50(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x58(%rbp),%rax
  add    $0x4,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x50(%rbp),%rax
  mov    (%rax),%edx
  lea    -0x30(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x48(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x50(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  lea    -0x30(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%rax
  add    $0x4,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  leave
  ret
```

assistant: ```c
void jambu_enc_aut_msg_partial(const unsigned int *rk, const uint8_t *plaintextblk, uint8_t *ciphertextblk, unsigned int *stateS, unsigned int *stateR, unsigned int len) {
  uint8_t p[8];
  memcpy(p, plaintextblk, len);
  p[len] = 0x80;
  memset(p + len + 1, 0, 7 - len);
  AESEncrypt(rk, stateS);
  stateS[0] ^= stateR[0];
  stateS[1] ^= stateR[1];
  stateS[2] ^= ((unsigned int *)p)[0];
  stateS[3] ^= ((unsigned int *)p)[1];
  stateR[0] ^= stateS[2];
  stateR[1] ^= stateS[3];
  ((unsigned int *)ciphertextblk)[0] = stateS[0] ^ ((unsigned int *)p)[0];
  ((unsigned int *)ciphertextblk)[1] = stateS[1] ^ ((unsigned int *)p)[1];
  return;
}
```