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

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x3130,%edx
  lea    D59(%rip),%rdi
  push   %r14
  push   %r13
  push   %r12
  xor    %r12d,%r12d
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    0x30(%rsp),%r14
  mov    $0x3634,%eax
  mov    %dx,0x17(%rsp)
  mov    %r14,%rsi
  movl   $0x33333339,0x2a(%rsp)
  mov    %ax,0x2e(%rsp)
  movl   $0x38353535,0x25(%rsp)
  movb   $0x33,0x29(%rsp)
  movl   $0x30313234,0x19(%rsp)
  movl   $0x2d383739,0x1d(%rsp)
  movl   $0x2d393739,0x21(%rsp)
  call   <scanf@plt>
  mov    %r14,%rdi
  call   <strlen@plt>
  movl   $0x0,0xc(%rsp)
  cmp    $0x11,%eax
  sete   %r12b
  xor    %ebx,%ebx
  xor    %r15d,%r15d
  xor    %r13d,%r13d
  xor    %ebp,%ebp
  jmp    L323
  nopl   (%rax)
L75:
  cmp    $0x2,%ebp
  jne    L317
  test   %dil,%dil
  cmovne %edx,%r15d
L317:
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  jbe    L46
  cmp    $0x20,%al
  je     L144
  cmp    $0xa,%al
  mov    $0x0,%eax
  cmovne %eax,%r12d
L144:
  add    $0x1,%rbx
L323:
  mov    %r14,%rdi
  call   <strlen@plt>
  cmp    %ebx,%eax
  jle    L389
  movzbl (%r14,%rbx,1),%eax
  test   %r15d,%r15d
  lea    0x1(%rbx),%edx
  sete   %dil
  cmp    $0x2d,%al
  jne    L75
  add    $0x1,%ebp
  cmp    $0x2,%ebp
  jne    L144
  test   %dil,%dil
  cmovne %edx,%r15d
  jmp    L144
  nopw   0x0(%rax,%rax,1)
L46:
  add    $0x1,%r13d
  cmp    $0xc,%r13d
  jg     L144
  movsbl %dl,%edx
  test   $0x1,%r13b
  je     L89
  add    %edx,0xc(%rsp)
  jmp    L144
  nopl   (%rax)
L389:
  cmp    $0x4,%ebp
  je     L283
  xor    %r12d,%r12d
L63:
  xor    %eax,%eax
  mov    $0x39,%edi
  lea    0x21(%rsp),%r9
  xor    %r8d,%r8d
  movzbl (%r14,%rax,1),%edx
  cmp    %dil,%dl
  je     L381
L123:
  cmp    (%rax,%r9,1),%dl
  cmovne %r8d,%r12d
L381:
  add    $0x1,%rax
  cmp    $0x4,%rax
  je     L192
L14:
  movzbl 0x1d(%rsp,%rax,1),%edi
  movzbl (%r14,%rax,1),%edx
  cmp    %dil,%dl
  jne    L123
  add    $0x1,%rax
  cmp    $0x4,%rax
  jne    L14
L192:
  test   %r12d,%r12d
  je     L25
  lea    D25(%rip),%rdi
  call   <printf@plt>
  movslq %r15d,%rax
  movzbl 0x30(%rsp,%rax,1),%eax
  cmp    $0x2d,%al
  je     L86
  lea    0x1(%r15),%edx
  xor    %edi,%edi
  xor    %r12d,%r12d
  xor    %ebp,%ebp
  movslq %edx,%rdx
  xor    %r11d,%r11d
  lea    0x2a(%rsp),%r10
  xor    %r9d,%r9d
  lea    0x25(%rsp),%rbx
  lea    0x19(%rsp),%r13
  lea    0x17(%rsp),%rcx
L137:
  cmp    %al,(%r10,%rdi,1)
  je     L363
  cmp    %al,(%rdi,%rbx,1)
  je     L173
  cmp    %al,(%rdi,%r13,1)
  je     L64
  cmp    %al,(%rdi,%rcx,1)
  je     L284
  nopl   0x0(%rax,%rax,1)
L67:
  movzbl (%r14,%rdx,1),%eax
  mov    %edx,%r8d
  add    $0x1,%rdi
  add    $0x1,%rdx
  cmp    $0x2d,%al
  jne    L137
  mov    %r8d,%eax
  sub    %r15d,%eax
  cmp    %r9d,%eax
  je     L86
  cmp    %r11d,%eax
  je     L311
  cmp    %ebp,%eax
  je     L306
  cmp    %r12d,%eax
  jne    L278
  lea    D56(%rip),%rdi
  call   <printf@plt>
  jmp    L278
  nop
L89:
  lea    (%rdx,%rdx,2),%eax
  add    %eax,0xc(%rsp)
  jmp    L144
L25:
  lea    D57(%rip),%rdi
  call   <printf@plt>
L278:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L52
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L363:
  add    $0x1,%r9d
  jmp    L67
L283:
  mov    0xc(%rsp),%eax
  mov    $0xa,%edi
  cltd
  idiv   %edi
  test   %edx,%edx
  je     L40
  sub    %edx,%edi
  mov    %edi,%edx
L40:
  movsbl 0x40(%rsp),%eax
  sub    $0x30,%eax
  cmp    %edx,%eax
  mov    $0x0,%eax
  cmovne %eax,%r12d
  jmp    L63
L173:
  add    $0x1,%r11d
  jmp    L67
L86:
  lea    D32(%rip),%rdi
  call   <printf@plt>
  jmp    L278
L284:
  add    $0x1,%r12d
  jmp    L67
L64:
  add    $0x1,%ebp
  jmp    L67
L311:
  lea    D50(%rip),%rdi
  call   <printf@plt>
  jmp    L278
L306:
  lea    D9(%rip),%rdi
  call   <printf@plt>
  jmp    L278
L52:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D59
type_guessed: string
name: extract_symbolic_data
arguments: label: D25
type_guessed: string
name: extract_symbolic_data
arguments: label: D56
type_guessed: string
name: extract_symbolic_data
arguments: label: D57
type_guessed: string
name: extract_symbolic_data
arguments: label: D32
type_guessed: string
name: extract_symbolic_data
arguments: label: D50
type_guessed: string
name: extract_symbolic_data
arguments: label: D9
type_guessed: string

tool: D59: %s

tool: D25: 1

tool: D56: 
Pyramid Books

tool: D57: 0

tool: D32: 
Bluebridge

tool: D50: 
Alyson Books

tool: D9: 
FUNimation Productions, Ltd.

assistant: ```c
int main() {
  char ISBN[20];
  int v = 1, d = 0, i = 0, count = 0, digit_check = 0, pub_ptr = 0;
  char pub1[6] = "933346", pub2[5] = "55583", pub3[4] = "4210", pub4[2] = "01";
  char ex1[4] = "978-", ex2[4] = "979-";
  int pub1_result, pub2_result, pub3_result, pub4_result;
  scanf("%s", ISBN);
  if (strlen(ISBN) != 17)
    v = 0;
  for (i = 0; i < strlen(ISBN); i++) {
    if (ISBN[i] == '-')
      d++;
    if (d == 2 && pub_ptr == 0)
      pub_ptr = i + 1;
    if ((ISBN[i] < '0' || ISBN[i] > '9') && ISBN[i] != '-' && ISBN[i] != '\n' && ISBN[i] != ' ')
      v = 0;
    else if (ISBN[i] >= '0' && ISBN[i] <= '9') {
      count++;
      if (count <= 12) {
        if (count % 2)
          digit_check = digit_check + (ISBN[i] - '0');
        else
          digit_check = digit_check + (ISBN[i] - '0') * 3;
      }
    }
  }
  if (d != 4)
    v = 0;
  else {
    digit_check = digit_check % 10;
    if (digit_check)
      digit_check = 10 - digit_check;
    if ((ISBN[16] - '0') != digit_check)
      v = 0;
  }
  for (i = 0; i < 4; i++) {
    if (ISBN[i] != ex1[i] && ISBN[i] != ex2[i])
      v = 0;
  }
  pub1_result = 0;
  pub2_result = 0;
  pub3_result = 0;
  pub4_result = 0;
  if (v) {
    printf("1");
    for (i = pub_ptr; ISBN[i] != '-'; i++) {
      if (ISBN[i] == pub1[i - pub_ptr]) {
        pub1_result++;
      } else if (ISBN[i] == pub2[i - pub_ptr]) {
        pub2_result++;
      } else if (ISBN[i] == pub3[i - pub_ptr]) {
        pub3_result++;
      } else if (ISBN[i] == pub4[i - pub_ptr]) {
        pub4_result++;
      }
    }
    if (i - pub_ptr == pub1_result) {
      printf("\nBluebridge");
    } else if (i - pub_ptr == pub2_result) {
      printf("\nAlyson Books");
    } else if (i - pub_ptr == pub3_result) {
      printf("\nFUNimation Productions, Ltd.");
    } else if (i - pub_ptr == pub4_result) {
      printf("\nPyramid Books");
    }
  } else
    printf("0");
}
```