user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %r15
  pxor   %xmm0,%xmm0
  lea    D38(%rip),%rdi
  push   %r14
  xor    %r14d,%r14d
  push   %r13
  xor    %r13d,%r13d
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rbx
  movl   $0x0,0x20(%rsp)
  mov    %rbx,%rsi
  movaps %xmm0,0x10(%rsp)
  mov    %rbx,%r12
  call   <scanf@plt>
  movl   $0x0,0xc(%rsp)
  jmp    L107
  nopw   0x0(%rax,%rax,1)
L10:
  cmpb   $0x2d,(%r12)
  je     L6
L254:
  add    $0x1,%r13d
  add    $0x1,%r12
L107:
  mov    %rbx,%rdi
  call   <strlen@plt>
  cmp    %r13d,%eax
  jle    L13
  cmpl   $0x2,0xc(%rsp)
  jne    L10
  movsbl -0x1(%r12),%eax
  cmp    $0x2d,%al
  je     L141
  mov    %r12,%rdx
L226:
  lea    (%r14,%r14,4),%ecx
  add    $0x1,%rdx
  lea    -0x30(%rax,%rcx,2),%r14d
  movsbl -0x1(%rdx),%eax
  cmp    $0x2d,%al
  jne    L226
L141:
  cmpb   $0x2d,(%r12)
  movl   $0x3,0xc(%rsp)
  jne    L254
  nopl   0x0(%rax)
L6:
  addl   $0x1,0xc(%rsp)
  mov    %r12,%rbp
  mov    %r13d,%r15d
  jmp    L85
  nopl   (%rax)
L68:
  movzbl 0x0(%rbp),%eax
  add    $0x1,%r15d
  mov    %al,-0x1(%rbp)
L85:
  mov    %rbx,%rdi
  add    $0x1,%rbp
  call   <strlen@plt>
  cmp    %r15d,%eax
  jg     L68
  jmp    L254
  cs nopw 0x0(%rax,%rax,1)
L13:
  mov    %rbx,%rdi
  xor    %r13d,%r13d
  call   <strlen@plt>
  cmpb   $0x39,0x10(%rsp)
  mov    %eax,%r12d
  je     L274
  cmpb   $0x37,0x11(%rsp)
  je     L274
  movzbl 0x12(%rsp),%eax
  xor    %r13d,%r13d
  sub    $0x38,%eax
  cmp    $0x1,%al
  seta   %r13b
L274:
  xor    %r15d,%r15d
  xor    %ebp,%ebp
  jmp    L150
  nopl   0x0(%rax)
L153:
  movsbl (%rbx,%r15,1),%eax
  add    $0x2,%r15
  lea    -0x30(%rbp,%rax,1),%ebp
L150:
  mov    %rbx,%rdi
  call   <strlen@plt>
  sub    $0x1,%eax
  cmp    %r15d,%eax
  jg     L153
  mov    $0x1,%r15d
  jmp    L250
  nopl   (%rax)
L152:
  movsbl (%rbx,%r15,1),%eax
  add    $0x2,%r15
  lea    -0x90(%rax,%rax,2),%eax
  add    %eax,%ebp
L250:
  mov    %rbx,%rdi
  call   <strlen@plt>
  sub    $0x1,%eax
  cmp    %r15d,%eax
  jg     L152
  movslq %ebp,%rax
  mov    %ebp,%edx
  imul   $0x66666667,%rax,%rax
  sar    $0x1f,%edx
  sar    $0x22,%rax
  sub    %edx,%eax
  lea    (%rax,%rax,4),%eax
  add    %eax,%eax
  sub    %ebp,%eax
  lea    0xa(%rax),%edx
  movsbl 0x1c(%rsp),%eax
  sub    $0x30,%eax
  cmp    %eax,%edx
  je     L224
L18:
  lea    D28(%rip),%rdi
  call   <printf@plt>
L122:
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L166
  add    $0x38,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L224:
  xor    %eax,%eax
  cmp    $0xd,%r12d
  setne  %al
  or     %r13d,%eax
  jne    L18
  lea    D47(%rip),%rdi
  call   <printf@plt>
  cmp    $0xd91f,%r14d
  je     L88
  jg     L104
  cmp    $0x1,%r14d
  je     L168
  cmp    $0x1072,%r14d
  jne    L122
  lea    D41(%rip),%rdi
  call   <printf@plt>
  jmp    L122
L104:
  cmp    $0xe3de2,%r14d
  jne    L122
  lea    D65(%rip),%rdi
  call   <printf@plt>
  jmp    L122
L168:
  lea    D0(%rip),%rdi
  call   <printf@plt>
  jmp    L122
L88:
  lea    D48(%rip),%rdi
  call   <printf@plt>
  jmp    L122
L166:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D38
type: string
name: extract_symbolic_data
arguments: data_tag: D28
type: string
name: extract_symbolic_data
arguments: data_tag: D47
type: string
name: extract_symbolic_data
arguments: data_tag: D41
type: string
name: extract_symbolic_data
arguments: data_tag: D65
type: string
name: extract_symbolic_data
arguments: data_tag: D0
type: string
name: extract_symbolic_data
arguments: data_tag: D48
type: string

tool: D38: %20[^
]

tool: D28: 0

tool: D47: 1

tool: D41: 
FUNimation Productions, Ltd.

tool: D65: 
Bluebridge

tool: D0: 
Pyramid Books

tool: D48: 
Alyson Books

assistant: ```c
int main() {
  char isbn[20] = {0};
  int i, j, a = 0, b = 0, c = 0, d = 0, sum = 0, s = 0, k = 0;
  scanf("%20[^\n]", isbn);
  for (i = 0; i < strlen(isbn); i++) {
    if (d == 2) {
      for (s = i - 1; isbn[s] != '-'; s++)
        k = k * 10 + (isbn[s] - 48);
      d++;
    }
    if (isbn[i] == '-') {
      d++;
      for (j = i; j < strlen(isbn); j++)
        isbn[j] = isbn[j + 1];
    }
  }
  if (strlen(isbn) != 13)
    a = 1;
  if (isbn[0] != '9' && isbn[1] != '7' && isbn[2] != '8' && isbn[2] != '9')
    b = 1;
  for (i = 0; i < strlen(isbn) - 1; i += 2)
    sum += isbn[i] - 48;
  for (i = 1; i < strlen(isbn) - 1; i += 2)
    sum = sum + 3 * (isbn[i] - 48);
  if ((10 - sum % 10) != isbn[12] - 48)
    c = 1;
  if (a == 1 || b == 1 || c == 1)
    printf("0");
  else {
    printf("1");
    switch (k) {
    case 933346:
      printf("\nBluebridge");
      break;
    case 55583:
      printf("\nAlyson Books");
      break;
    case 4210:
      printf("\nFUNimation Productions, Ltd.");
      break;
    case 01:
      printf("\nPyramid Books");
      break;
    }
  }
  return 0;
}
```