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

```asm
<carried_add_9>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  mov    %rdi,-0x10(%rbp)
  mov    %rsi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  mov    %rcx,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  mov    -0x18(%rbp),%rsi
  mov    -0x20(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    %rsi,%rbx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  sub    $0x8,%rbx
  sub    $0x8,%rcx
  sub    $0x8,%rdx
  mov    %rax,%r8
  xor    %rax,%rax
  adc    (%rcx),%r8
  setb   %al
  mov    %rax,%r9
  adc    (%rdx),%r8
  mov    %r8,(%rbx)
  setb   %al
  or     %r9,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
unsigned long long carried_add_9(unsigned long long carry, unsigned long long *res, unsigned long long *a1, unsigned long long *a2) {
  asm("mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      "sub  $0x0008,  %%rbx;"
      "sub  $0x0008,  %%rcx;"
      "sub  $0x0008,  %%rdx;"
      "mov  %%rax,   %%r8;"
      "xor  %%rax,   %%rax;"
      "adc  (%%rcx), %%r8;"
      "setc %%al;"
      "mov  %%rax,    %%r9;"
      "adc  (%%rdx), %%r8;"
      "mov  %%r8,    (%%rbx);"
      "setc %%al;"
      "or   %%r9,    %%rax;"
      : "=a"(carry)
      : "a"(carry), "b"(res), "c"(a1), "d"(a2));
  return carry;
}
```