user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0x7c(%rbp)
  movl   $0x0,-0x78(%rbp)
  movl   $0x0,-0x60(%rbp)
  movl   $0x0,-0x74(%rbp)
  movl   $0x0,-0x70(%rbp)
  movl   $0x0,-0x5c(%rbp)
  movl   $0x0,-0x58(%rbp)
  movl   $0x0,-0x54(%rbp)
  movl   $0x0,-0x6c(%rbp)
  movl   $0x0,-0x68(%rbp)
  movl   $0x0,-0x64(%rbp)
  lea    -0x20(%rbp),%rax
  mov    %rax,%rsi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movzbl -0x20(%rbp),%eax
  cmp    $0x39,%al
  jne    L178
  movzbl -0x1f(%rbp),%eax
  cmp    $0x37,%al
  jne    L178
  movzbl -0x1e(%rbp),%eax
  cmp    $0x38,%al
  je     L108
L178:
  movzbl -0x20(%rbp),%eax
  cmp    $0x39,%al
  jne    L96
  movzbl -0x1f(%rbp),%eax
  cmp    $0x37,%al
  jne    L96
  movzbl -0x1e(%rbp),%eax
  cmp    $0x39,%al
  jne    L96
L108:
  movl   $0x1,-0x6c(%rbp)
  jmp    L183
L96:
  movl   $0x0,-0x6c(%rbp)
L183:
  lea    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x60(%rbp)
  movl   $0x0,-0x78(%rbp)
  jmp    L448
L66:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x20(%rbp,%rax,1),%eax
  cmp    $0x2f,%al
  jle    L388
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x20(%rbp,%rax,1),%eax
  cmp    $0x39,%al
  jg     L388
  addl   $0x1,-0x7c(%rbp)
L388:
  addl   $0x1,-0x78(%rbp)
L448:
  mov    -0x78(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jl     L66
  cmpl   $0xd,-0x7c(%rbp)
  jne    L364
  movl   $0x1,-0x68(%rbp)
  jmp    L11
L364:
  movl   $0x0,-0x68(%rbp)
L11:
  movl   $0x0,-0x7c(%rbp)
  movl   $0x0,-0x78(%rbp)
  jmp    L373
L259:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x20(%rbp,%rax,1),%eax
  cmp    $0x2d,%al
  je     L246
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x20(%rbp,%rax,1),%eax
  movsbl %al,%eax
  lea    -0x30(%rax),%edx
  mov    -0x7c(%rbp),%eax
  cltq
  mov    %edx,-0x50(%rbp,%rax,4)
  addl   $0x1,-0x7c(%rbp)
L246:
  addl   $0x1,-0x78(%rbp)
L373:
  mov    -0x78(%rbp),%eax
  cmp    -0x60(%rbp),%eax
  jl     L259
  movl   $0x0,-0x78(%rbp)
  jmp    L418
L338:
  mov    -0x78(%rbp),%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%eax
  add    %eax,-0x74(%rbp)
  addl   $0x2,-0x78(%rbp)
L418:
  cmpl   $0xa,-0x78(%rbp)
  jle    L338
  movl   $0x1,-0x78(%rbp)
  jmp    L343
L128:
  mov    -0x78(%rbp),%eax
  cltq
  mov    -0x50(%rbp,%rax,4),%eax
  add    %eax,-0x70(%rbp)
  addl   $0x2,-0x78(%rbp)
L343:
  cmpl   $0xb,-0x78(%rbp)
  jle    L128
  mov    -0x70(%rbp),%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  mov    %eax,-0x5c(%rbp)
  mov    -0x74(%rbp),%edx
  mov    -0x5c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x58(%rbp)
  mov    -0x58(%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
  sub    %eax,%edx
  mov    %edx,-0x54(%rbp)
  mov    -0x20(%rbp),%edx
  mov    $0xa,%eax
  sub    -0x54(%rbp),%eax
  cmp    %eax,%edx
  jne    L440
  movl   $0x1,-0x64(%rbp)
  jmp    L447
L440:
  movl   $0x0,-0x64(%rbp)
L447:
  cmpl   $0x1,-0x6c(%rbp)
  jne    L18
  cmpl   $0x1,-0x68(%rbp)
  jne    L18
  cmpl   $0x1,-0x64(%rbp)
  jne    L18
  lea    D54(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movzbl -0x1a(%rbp),%eax
  cmp    $0x39,%al
  jne    L150
  movzbl -0x19(%rbp),%eax
  cmp    $0x33,%al
  jne    L150
  movzbl -0x18(%rbp),%eax
  cmp    $0x33,%al
  jne    L150
  movzbl -0x17(%rbp),%eax
  cmp    $0x33,%al
  jne    L150
  movzbl -0x16(%rbp),%eax
  cmp    $0x34,%al
  jne    L150
  movzbl -0x15(%rbp),%eax
  cmp    $0x36,%al
  jne    L150
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L150:
  movzbl -0x1a(%rbp),%eax
  cmp    $0x35,%al
  jne    L222
  movzbl -0x19(%rbp),%eax
  cmp    $0x35,%al
  jne    L222
  movzbl -0x18(%rbp),%eax
  cmp    $0x35,%al
  jne    L222
  movzbl -0x17(%rbp),%eax
  cmp    $0x38,%al
  jne    L222
  movzbl -0x16(%rbp),%eax
  cmp    $0x33,%al
  jne    L222
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L222:
  movzbl -0x1a(%rbp),%eax
  cmp    $0x34,%al
  jne    L221
  movzbl -0x19(%rbp),%eax
  cmp    $0x32,%al
  jne    L221
  movzbl -0x18(%rbp),%eax
  cmp    $0x31,%al
  jne    L221
  movzbl -0x17(%rbp),%eax
  cmp    $0x30,%al
  jne    L221
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L221:
  movzbl -0x1a(%rbp),%eax
  cmp    $0x30,%al
  jne    L232
  movzbl -0x19(%rbp),%eax
  cmp    $0x31,%al
  jne    L232
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L232
L18:
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L87
L232:
  nop
L87:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L125
  call   <__stack_chk_fail@plt>
L125:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D1
data_type: string
name: retrieve_data
arguments: tag: D54
data_type: string
name: retrieve_data
arguments: tag: D62
data_type: string
name: retrieve_data
arguments: tag: D11
data_type: string
name: retrieve_data
arguments: tag: D45
data_type: string
name: retrieve_data
arguments: tag: D17
data_type: string
name: retrieve_data
arguments: tag: D31
data_type: string

tool: D1: %s

tool: D54: 1


tool: D62: Bluebridge


tool: D11: Alyson Books


tool: D45: FUNimation Productions, Ltd.


tool: D17: Pyramid Books


tool: D31: 0


assistant: ```c
int main() {
  char isbn13[20] = {0};
  int arr[12];
  int count = 0;
  int counter = 0;
  int lenght = 0;
  int sum1 = 0;
  int sum2 = 0;
  int sum3 = 0;
  int suma = 0;
  int supp = 0;
  int help = 0;
  int helper = 0;
  int helpp = 0;
  scanf("%s", isbn13);
  if ((isbn13[0] == '9' && isbn13[1] == '7' && isbn13[2] == '8') || (isbn13[0] == '9' && isbn13[1] == '7' && isbn13[2] == '9')) {
    help = 1;
  } else {
    help = 0;
  }
  lenght = strlen(isbn13);
  for (counter = 0; counter < lenght; counter++) {
    if (isbn13[counter] >= 48 && isbn13[counter] <= 57) {
      count++;
    }
  }
  if (count == 13) {
    helper = 1;
  } else {
    helper = 0;
  }
  count = 0;
  for (counter = 0; counter < lenght; counter++) {
    if (isbn13[counter] != '-') {
      arr[count] = (isbn13[counter] - 48);
      count++;
    }
  }
  for (counter = 0; counter <= 10; counter = counter + 2) {
    sum1 = sum1 + arr[counter];
  }
  for (counter = 1; counter <= 11; counter = counter + 2) {
    sum2 = sum2 + arr[counter];
  }
  sum3 = sum2 * 3;
  suma = sum1 + sum3;
  supp = suma % 10;
  if (arr[12] == 10 - supp) {
    helpp = 1;
  } else {
    helpp = 0;
  }
  if (help == 1 && helper == 1 && helpp == 1) {
    printf("1\n");
    if (isbn13[6] == '9' && isbn13[7] == '3' && isbn13[8] == '3' && isbn13[9] == '3' && isbn13[10] == '4' && isbn13[11] == '6')
      printf("Bluebridge\n");
    if (isbn13[6] == '5' && isbn13[7] == '5' && isbn13[8] == '5' && isbn13[9] == '8' && isbn13[10] == '3')
      printf("Alyson Books\n");
    if (isbn13[6] == '4' && isbn13[7] == '2' && isbn13[8] == '1' && isbn13[9] == '0')
      printf("FUNimation Productions, Ltd.\n");
    if (isbn13[6] == '0' && isbn13[7] == '1')
      printf("Pyramid Books\n");
  } else {
    printf("0\n");
  }
  return 0;
}
```