user: Please show me the C implementation that matches the assembly code listed below:

```asm
<add>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x7000(%rsp),%r11
L75:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L75
  sub    $0x580,%rsp
  mov    %rdi,-0x7568(%rbp)
  mov    %rsi,-0x7570(%rbp)
  mov    %rdx,-0x7578(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x7540(%rbp)
  movq   $0x0,-0x7538(%rbp)
  lea    -0x7530(%rbp),%rax
  mov    $0x2700,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movq   $0x0,-0x4e30(%rbp)
  movq   $0x0,-0x4e28(%rbp)
  lea    -0x4e20(%rbp),%rax
  mov    $0x2700,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x7568(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x754c(%rbp)
  mov    -0x7570(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x7548(%rbp)
  lea    -0x7540(%rbp),%rdx
  mov    -0x7568(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <rev@plt>
  lea    -0x4e30(%rbp),%rdx
  mov    -0x7570(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <rev@plt>
  mov    -0x7548(%rbp),%eax
  cmp    -0x754c(%rbp),%eax
  jle    L67
  mov    -0x7548(%rbp),%eax
  mov    %eax,-0x7558(%rbp)
  jmp    L55
L67:
  mov    -0x754c(%rbp),%eax
  mov    %eax,-0x7558(%rbp)
L55:
  movl   $0x0,-0x7554(%rbp)
  movl   $0x0,-0x7550(%rbp)
  jmp    L74
L97:
  mov    -0x7550(%rbp),%eax
  cltq
  movzbl -0x7540(%rbp,%rax,1),%eax
  test   %al,%al
  jne    L65
  mov    -0x7550(%rbp),%eax
  cltq
  movb   $0x30,-0x7540(%rbp,%rax,1)
  jmp    L6
L65:
  mov    -0x7550(%rbp),%eax
  cltq
  movzbl -0x4e30(%rbp,%rax,1),%eax
  test   %al,%al
  jne    L6
  mov    -0x7550(%rbp),%eax
  cltq
  movb   $0x30,-0x4e30(%rbp,%rax,1)
L6:
  mov    -0x7550(%rbp),%eax
  cltq
  movzbl -0x7540(%rbp,%rax,1),%eax
  movsbl %al,%eax
  lea    -0x30(%rax),%edx
  mov    -0x7550(%rbp),%eax
  cltq
  movzbl -0x4e30(%rbp,%rax,1),%eax
  movsbl %al,%eax
  add    %edx,%eax
  lea    -0x30(%rax),%edx
  mov    -0x7554(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x7544(%rbp)
  mov    -0x7544(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    %ecx,%eax
  add    $0x30,%eax
  mov    %eax,%edx
  mov    -0x7550(%rbp),%eax
  cltq
  mov    %dl,-0x2720(%rbp,%rax,1)
  mov    -0x7544(%rbp),%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,-0x7554(%rbp)
  addl   $0x1,-0x7550(%rbp)
L74:
  mov    -0x7550(%rbp),%eax
  cmp    -0x7558(%rbp),%eax
  jl     L97
  cmpl   $0x0,-0x7554(%rbp)
  jle    L41
  mov    -0x7554(%rbp),%eax
  add    $0x30,%eax
  mov    %eax,%edx
  mov    -0x7550(%rbp),%eax
  cltq
  mov    %dl,-0x2720(%rbp,%rax,1)
  addl   $0x1,-0x7550(%rbp)
L41:
  mov    -0x7550(%rbp),%eax
  cltq
  movb   $0x0,-0x2720(%rbp,%rax,1)
  mov    -0x7578(%rbp),%rdx
  lea    -0x2720(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <rev@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L37
  call   <__stack_chk_fail@plt>
L37:
  leave
  ret
```

assistant: ```c
int add(char *a, char *b, char *c) {
  char first[10000] = {}, second[10000] = {};
  char sumation[10000];
  int lens, lenf, tem, sum, carry, i;
  lenf = strlen(a);
  lens = strlen(b);
  rev(a, first);
  rev(b, second);
  if (lens > lenf)
    tem = lens;
  else
    tem = lenf;
  carry = 0;
  for (i = 0; i < tem; i++) {
    if (first[i] == '\0')
      first[i] = '0';
    else if (second[i] == '\0')
      second[i] = '0';
    sum = first[i] - '0' + second[i] - '0' + carry;
    sumation[i] = sum % 10 + '0';
    carry = sum / 10;
  }
  if (carry > 0) {
    sumation[i] = carry + '0';
    i++;
  }
  sumation[i] = '\0';
  rev(sumation, c);
  return 0;
}
```