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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x70(%rbp)
  movl   $0x0,-0x6c(%rbp)
  movl   $0x0,-0x60(%rbp)
  movl   $0x0,-0x5c(%rbp)
  movl   $0x0,-0x58(%rbp)
  movl   $0x0,-0x54(%rbp)
  movl   $0x0,-0x68(%rbp)
  movl   $0x0,-0x64(%rbp)
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x6c(%rbp)
  cmpl   $0xb,-0x6c(%rbp)
  jle    L314
  addl   $0x1,-0x64(%rbp)
  jmp    L314
L652:
  mov    -0x70(%rbp),%eax
  cltq
  movzbl -0x14(%rbp,%rax,1),%eax
  movsbl %al,%eax
  lea    -0x30(%rax),%edx
  mov    -0x70(%rbp),%eax
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x70(%rbp)
L314:
  mov    -0x70(%rbp),%eax
  cmp    -0x6c(%rbp),%eax
  jl     L652
  movl   $0x0,-0x70(%rbp)
  mov    -0x50(%rbp),%eax
  test   %eax,%eax
  jne    L458
  mov    -0x4c(%rbp),%eax
  test   %eax,%eax
  jne    L458
  mov    -0x48(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x6c(%rbp)
  cmpl   $0x0,-0x6c(%rbp)
  jle    L538
  cmpl   $0xc,-0x6c(%rbp)
  jle    L461
L538:
  cmpl   $0x28,-0x6c(%rbp)
  jle    L43
  cmpl   $0x34,-0x6c(%rbp)
  jg     L43
L461:
  movl   $0x0,-0x70(%rbp)
  jmp    L458
L43:
  addl   $0x1,-0x64(%rbp)
L458:
  mov    -0x50(%rbp),%eax
  test   %eax,%eax
  je     L477
  mov    -0x4c(%rbp),%eax
  test   %eax,%eax
  je     L477
  mov    -0x48(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x6c(%rbp)
  cmpl   $0x0,-0x6c(%rbp)
  jle    L471
  cmpl   $0xc,-0x6c(%rbp)
  jle    L84
L471:
  cmpl   $0x14,-0x6c(%rbp)
  jle    L165
  cmpl   $0x20,-0x6c(%rbp)
  jle    L84
L165:
  cmpl   $0x28,-0x6c(%rbp)
  jle    L410
  cmpl   $0x34,-0x6c(%rbp)
  jg     L410
L84:
  movl   $0x0,-0x70(%rbp)
  jmp    L477
L410:
  addl   $0x1,-0x64(%rbp)
L477:
  mov    -0x40(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x3c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x60(%rbp)
  cmpl   $0x1,-0x6c(%rbp)
  je     L455
  cmpl   $0x3,-0x6c(%rbp)
  je     L455
  cmpl   $0x5,-0x6c(%rbp)
  je     L455
  cmpl   $0x7,-0x6c(%rbp)
  je     L455
  cmpl   $0x8,-0x6c(%rbp)
  je     L455
  cmpl   $0xa,-0x6c(%rbp)
  je     L455
  cmpl   $0xc,-0x6c(%rbp)
  je     L455
  cmpl   $0x15,-0x6c(%rbp)
  je     L455
  cmpl   $0x17,-0x6c(%rbp)
  je     L455
  cmpl   $0x19,-0x6c(%rbp)
  je     L455
  cmpl   $0x1b,-0x6c(%rbp)
  je     L455
  cmpl   $0x1c,-0x6c(%rbp)
  je     L455
  cmpl   $0x1e,-0x6c(%rbp)
  je     L455
  cmpl   $0x20,-0x6c(%rbp)
  je     L455
  cmpl   $0x29,-0x6c(%rbp)
  je     L455
  cmpl   $0x2b,-0x6c(%rbp)
  je     L455
  cmpl   $0x2d,-0x6c(%rbp)
  je     L455
  cmpl   $0x2f,-0x6c(%rbp)
  je     L455
  cmpl   $0x30,-0x6c(%rbp)
  je     L455
  cmpl   $0x32,-0x6c(%rbp)
  je     L455
  cmpl   $0x34,-0x6c(%rbp)
  jne    L118
L455:
  cmpl   $0x1f,-0x60(%rbp)
  jle    L118
  addl   $0x1,-0x64(%rbp)
L118:
  cmpl   $0x4,-0x6c(%rbp)
  je     L65
  cmpl   $0x6,-0x6c(%rbp)
  je     L65
  cmpl   $0x9,-0x6c(%rbp)
  je     L65
  cmpl   $0xb,-0x6c(%rbp)
  je     L65
  cmpl   $0x18,-0x6c(%rbp)
  je     L65
  cmpl   $0x1a,-0x6c(%rbp)
  je     L65
  cmpl   $0x1d,-0x6c(%rbp)
  je     L65
  cmpl   $0x1f,-0x6c(%rbp)
  je     L65
  cmpl   $0x2c,-0x6c(%rbp)
  je     L65
  cmpl   $0x2e,-0x6c(%rbp)
  je     L65
  cmpl   $0x31,-0x6c(%rbp)
  je     L65
  cmpl   $0x33,-0x6c(%rbp)
  jne    L99
L65:
  cmpl   $0x1e,-0x60(%rbp)
  jle    L99
  addl   $0x1,-0x64(%rbp)
L99:
  mov    -0x50(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x5c(%rbp),%eax
  cltd
  shr    $0x1e,%edx
  add    %edx,%eax
  and    $0x3,%eax
  sub    %edx,%eax
  mov    %eax,-0x58(%rbp)
  cmpl   $0x0,-0x58(%rbp)
  jne    L689
  cmpl   $0x2,-0x6c(%rbp)
  je     L428
  cmpl   $0x16,-0x6c(%rbp)
  je     L428
  cmpl   $0x2a,-0x6c(%rbp)
  jne    L689
L428:
  cmpl   $0x1d,-0x60(%rbp)
  jle    L689
  addl   $0x1,-0x64(%rbp)
L689:
  cmpl   $0x0,-0x58(%rbp)
  je     L90
  cmpl   $0x2,-0x6c(%rbp)
  je     L276
  cmpl   $0x16,-0x6c(%rbp)
  je     L276
  cmpl   $0x2a,-0x6c(%rbp)
  jne    L90
L276:
  cmpl   $0x1c,-0x60(%rbp)
  jle    L90
  addl   $0x1,-0x64(%rbp)
L90:
  cmpl   $0x0,-0x5c(%rbp)
  jne    L115
  cmpl   $0x0,-0x6c(%rbp)
  jle    L115
  cmpl   $0xc,-0x6c(%rbp)
  jg     L115
  cmpl   $0x1c,-0x60(%rbp)
  jle    L115
  addl   $0x1,-0x64(%rbp)
L115:
  mov    -0x50(%rbp),%edx
  mov    -0x4c(%rbp),%eax
  add    %eax,%eax
  add    %eax,%edx
  mov    -0x48(%rbp),%eax
  shl    $0x2,%eax
  add    %edx,%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x44(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%ecx
  mov    -0x40(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  add    %eax,%ecx
  mov    -0x3c(%rbp),%edx
  mov    %edx,%eax
  shl    $0x3,%eax
  add    %edx,%eax
  add    %eax,%ecx
  mov    -0x38(%rbp),%edx
  mov    %edx,%eax
  shl    $0x3,%eax
  sub    %edx,%eax
  add    %eax,%ecx
  mov    -0x34(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    %eax,%ecx
  mov    -0x30(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  mov    %eax,-0x54(%rbp)
  mov    -0x54(%rbp),%edx
  movslq %edx,%rax
  imul   $0x2e8ba2e9,%rax,%rax
  shr    $0x20,%rax
  sar    %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
  add    %ecx,%eax
  sub    %eax,%edx
  mov    %edx,-0x68(%rbp)
  cmpl   $0xa,-0x68(%rbp)
  jne    L351
  movl   $0x0,-0x68(%rbp)
L351:
  mov    -0x2c(%rbp),%eax
  cmp    %eax,-0x68(%rbp)
  je     L96
  addl   $0x1,-0x64(%rbp)
L96:
  cmpl   $0x0,-0x64(%rbp)
  jne    L657
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L131
L657:
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L131:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L405
  call   <__stack_chk_fail@plt>
L405:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D0
type_guessed: string
name: parse_data
arguments: data_label: D29
type_guessed: string
name: parse_data
arguments: data_label: D3
type_guessed: string

tool: D0: %s

tool: D29: 1

tool: D3: 0

assistant: ```c
int main() {
  int arr[12];
  char string[12];
  int i = 0, x = 0, y = 0, z = 0, k = 0, sum = 0, del = 0, Error = 0;
  scanf("%s", string);
  x = strlen(string);
  if (x > 11) {
    Error++;
  }
  while (i < x) {
    arr[i] = string[i] - '0';
    i++;
  }
  i = 0;
  if (arr[0] == 0 && arr[1] == 0) {
    x = (arr[2] * 10) + arr[3];
    if ((x >= 1 && x <= 12) || (x >= 41 && x <= 52)) {
      i = 0;
    } else {
      Error++;
    }
  }
  if (arr[0] != 0 && arr[1] != 0) {
    x = (arr[2] * 10) + arr[3];
    if ((x >= 1 && x <= 12) || (x >= 21 && x <= 32) || (x >= 41 && x <= 52)) {
      i = 0;
    } else {
      Error++;
    }
  }
  y = (arr[4] * 10) + arr[5];
  if (x == 1 || x == 3 || x == 5 || x == 7 || x == 8 || x == 10 || x == 12 || x == 21 || x == 23 || x == 25 || x == 27 || x == 28 || x == 30 || x == 32 || x == 41 || x == 43 || x == 45 || x == 47 || x == 48 || x == 50 || x == 52) {
    if (y > 31) {
      Error++;
    }
  }
  if (x == 4 || x == 6 || x == 9 || x == 11 || x == 24 || x == 26 || x == 29 || x == 31 || x == 44 || x == 46 || x == 49 || x == 51) {
    if (y > 30) {
      Error++;
    }
  }
  z = (arr[0] * 10) + arr[1];
  k = z % 4;
  if (k == 0) {
    if (x == 2 || x == 22 || x == 42) {
      if (y > 29) {
        Error++;
      }
    }
  }
  if (k != 0) {
    if (x == 2 || x == 22 || x == 42) {
      if (y > 28) {
        Error++;
      }
    }
  }
  if (z == 0 && x >= 1 && x <= 12) {
    if (x == 2 || x == 22 || 42) {
      if (y > 28) {
        Error++;
      }
    }
  }
  sum = (arr[0] * 2) + (arr[1] * 4) + (arr[2] * 8) + (arr[3] * 5) + (arr[4] * 10) + (arr[5] * 9) + (arr[6] * 7) + (arr[7] * 3) + (arr[8] * 6);
  del = sum % 11;
  if (del == 10) {
    del = 0;
  }
  if (arr[9] != del) {
    Error++;
  }
  if (Error == 0) {
    printf("1");
  } else {
    printf("0");
  }
  return 0;
}
```