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

```asm
<sum>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x31,-0x4(%rbp)
  jmp    L34
L35:
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%ecx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x20(%rbp),%rax
  add    %rsi,%rax
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    $0x9,%eax
  jle    L39
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rsi
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%edi
  sar    $0x1f,%edi
  sub    %edi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rsi)
  jmp    L32
L39:
  movl   $0x0,-0x8(%rbp)
L32:
  subl   $0x1,-0x4(%rbp)
L34:
  cmpl   $0x0,-0x4(%rbp)
  jns    L35
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    -0x8(%rbp),%edx
  add    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%ecx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%esi
  mov    %edx,%eax
  sub    %esi,%eax
  lea    (%rcx,%rax,1),%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x20(%rbp),%rax
  lea    0x4(%rax),%rsi
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%edi
  sar    $0x1f,%edi
  sub    %edi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rsi)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void sum(int *arr1, int *sum_arr) {
  int temp = 0, i;
  for (i = 49; i >= 0; i--) {
    sum_arr[i + 2] += arr1[i] + temp;
    if (sum_arr[i + 2] > 9) {
      temp = sum_arr[i + 2] / 10;
      sum_arr[i + 2] = sum_arr[i + 2] % 10;
    } else {
      temp = 0;
    }
  }
  sum_arr[1] += temp;
  sum_arr[0] += sum_arr[1] / 10;
  sum_arr[1] = sum_arr[1] % 10;
}
```