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

```asm
<aggiungi>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  mov    %r8,-0x30(%rbp)
  jmp    L222
L344:
  lea    -0x20(%rbp),%rdx
  lea    -0x1c(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sposta@plt>
L222:
  mov    -0x20(%rbp),%eax
  test   %eax,%eax
  js     L115
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  jne    L344
L115:
  mov    -0x20(%rbp),%eax
  test   %eax,%eax
  jns    L100
  mov    -0x24(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <verifica_somma@plt>
  test   %rax,%rax
  je     L351
  mov    $0x1,%eax
  jmp    L24
L351:
  mov    $0x0,%eax
  jmp    L24
L100:
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <ultimo@plt>
  test   %rax,%rax
  je     L327
  movl   $0x0,-0xc(%rbp)
  jmp    L184
L118:
  mov    -0x1c(%rbp),%eax
  cmp    $0x1,%eax
  jne    L186
  cmpl   $0x0,-0xc(%rbp)
  jne    L186
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x30,%eax
  mov    %eax,-0x8(%rbp)
L186:
  mov    -0x1c(%rbp),%eax
  cmp    $0x1,%eax
  jne    L84
  cmpl   $0x1,-0xc(%rbp)
  jne    L84
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  lea    0xa(%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x30,%eax
  mov    %eax,-0x8(%rbp)
L84:
  mov    -0x1c(%rbp),%eax
  cmp    $0x2,%eax
  jne    L94
  cmpl   $0x0,-0xc(%rbp)
  jne    L94
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x30,%eax
  mov    %eax,-0x8(%rbp)
L94:
  mov    -0x1c(%rbp),%eax
  cmp    $0x2,%eax
  jne    L389
  cmpl   $0x1,-0xc(%rbp)
  jne    L389
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  lea    0xa(%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x30,%eax
  mov    %eax,-0x8(%rbp)
L389:
  mov    -0x1c(%rbp),%eax
  cmp    $0x3,%eax
  jne    L162
  cmpl   $0x0,-0xc(%rbp)
  jne    L162
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  lea    (%rdx,%rax,1),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %ecx,%eax
  sub    $0x90,%eax
  mov    %eax,-0x8(%rbp)
L162:
  mov    -0x1c(%rbp),%eax
  cmp    $0x3,%eax
  jne    L281
  cmpl   $0x1,-0xc(%rbp)
  jne    L281
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rcx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rcx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  lea    (%rdx,%rax,1),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  add    %ecx,%eax
  lea    -0x90(%rax),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  sub    %eax,%edx
  mov    %edx,-0x8(%rbp)
L281:
  cmpl   $0x0,-0x8(%rbp)
  jle    L204
  cmpl   $0x9,-0x8(%rbp)
  jg     L204
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L204
  cmpl   $0x1,-0xc(%rbp)
  jne    L221
  mov    -0x20(%rbp),%eax
  test   %eax,%eax
  jne    L221
  mov    $0x0,%eax
  jmp    L24
L221:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x8(%rbp),%eax
  lea    0x30(%rax),%ecx
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
  cmpl   $0x1,-0xc(%rbp)
  jne    L188
  mov    -0x20(%rbp),%eax
  test   %eax,%eax
  jle    L188
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  sub    $0x1,%rax
  add    %rdx,%rax
  movb   $0x31,(%rax)
L188:
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x30(%rbp),%rdi
  mov    -0x24(%rbp),%ecx
  mov    -0x18(%rbp),%rax
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <aggiungi>
  cmp    $0x1,%eax
  jne    L73
  mov    $0x1,%eax
  jmp    L24
L73:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movb   $0x5f,(%rax)
  cmpl   $0x1,-0xc(%rbp)
  jne    L204
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  sub    $0x1,%rax
  add    %rdx,%rax
  movb   $0x30,(%rax)
L204:
  addl   $0x1,-0xc(%rbp)
L184:
  cmpl   $0x1,-0xc(%rbp)
  jle    L118
  mov    $0x0,%eax
  jmp    L24
L327:
  movl   $0x1,-0x4(%rbp)
  jmp    L218
L136:
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L81
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x1,(%rax)
  mov    -0x4(%rbp),%eax
  lea    0x30(%rax),%ecx
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%edx
  mov    -0x1c(%rbp),%esi
  mov    -0x30(%rbp),%rdi
  mov    -0x24(%rbp),%ecx
  mov    -0x18(%rbp),%rax
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <aggiungi>
  cmp    $0x1,%eax
  jne    L354
  mov    $0x1,%eax
  jmp    L24
L354:
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movl   $0x0,(%rax)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x20(%rbp),%eax
  cltq
  add    %rdx,%rax
  movb   $0x5f,(%rax)
L81:
  addl   $0x1,-0x4(%rbp)
L218:
  cmpl   $0x9,-0x4(%rbp)
  jle    L136
  mov    $0x0,%eax
L24:
  leave
  ret
```

assistant: ```c
int aggiungi(char **m, int r, int c, int n, int *preso) {
  while (c >= 0 && m[r][c] != '_')
    sposta(&r, &c);
  if (c < 0) {
    if (verifica_somma(m, n))
      return 1;
    return 0;
  }
  if (ultimo(m, c)) {
    int i, x;
    for (i = 0; i < 2; i++) {
      if (r == 1 && i == 0)
        x = m[3][c] - m[0][c] - m[2][c] + '0';
      if (r == 1 && i == 1)
        x = 10 + m[3][c] - m[0][c] - m[2][c] + '0';
      if (r == 2 && i == 0)
        x = m[3][c] - m[0][c] - m[1][c] + '0';
      if (r == 2 && i == 1)
        x = 10 + m[3][c] - m[0][c] - m[1][c] + '0';
      if (r == 3 && i == 0)
        x = m[0][c] + m[1][c] + m[2][c] - 3 * '0';
      if (r == 3 && i == 1)
        x = (m[0][c] + m[1][c] + m[2][c] - 3 * '0') % 10;
      if (x > 0 && x < 10 && !preso[x]) {
        if (i == 1 && c == 0)
          return 0;
        preso[x] = 1;
        m[r][c] = '0' + x;
        if (i == 1 && c > 0)
          m[0][c - 1] = '1';
        if (aggiungi(m, r, c, n, preso) == 1)
          return 1;
        else {
          preso[x] = 0;
          m[r][c] = '_';
          if (i == 1)
            m[0][c - 1] = '0';
        }
      }
    }
    return 0;
  } else {
    int i;
    for (i = 1; i < 10; i++) {
      if (!preso[i]) {
        preso[i] = 1;
        m[r][c] = '0' + i;
        if (aggiungi(m, r, c, n, preso) == 1)
          return 1;
        else {
          preso[i] = 0;
          m[r][c] = '_';
        }
      }
    }
    return 0;
  }
}
```