user: What would the C source look like for the assembly code provided here:

```asm
<check_sum>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x40,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  call   <strlen@plt>
  cmp    $0x2,%eax
  je     L3
  sub    $0x3,%eax
  mov    %rbx,%rdi
  xor    %edx,%edx
  lea    0x1(%rbx,%rax,1),%rcx
  nopl   0x0(%rax,%rax,1)
L10:
  movzbl (%rdi),%eax
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L1
  mov    %edx,%esi
  movsbl %al,%eax
  add    $0x1,%edx
  mov    %eax,(%rsp,%rsi,4)
L1:
  add    $0x1,%rdi
  cmp    %rdi,%rcx
  jne    L10
L3:
  pshufd $0x1b,0x20(%rsp),%xmm10
  movdqa %xmm10,%xmm1
  movdqa D11(%rip),%xmm2
  pxor   %xmm3,%xmm3
  pslld  $0x1,%xmm1
  movdqa %xmm3,%xmm4
  movdqa %xmm3,%xmm8
  movdqa D7(%rip),%xmm6
  movdqa %xmm1,%xmm0
  pcmpgtd %xmm2,%xmm4
  movdqa %xmm1,%xmm7
  movdqa D23(%rip),%xmm5
  punpckldq %xmm1,%xmm0
  pcmpgtd %xmm6,%xmm7
  pcmpgtd %xmm0,%xmm8
  movdqa %xmm4,%xmm11
  movdqa %xmm4,%xmm12
  movdqa %xmm4,%xmm13
  pmuludq %xmm0,%xmm11
  pmuludq %xmm2,%xmm0
  movdqa %xmm7,%xmm9
  pmuludq %xmm2,%xmm8
  pcmpeqd %xmm3,%xmm7
  pand   %xmm5,%xmm9
  movdqa %xmm4,%xmm14
  paddq  %xmm11,%xmm8
  movdqa %xmm3,%xmm11
  psllq  $0x20,%xmm8
  paddq  %xmm8,%xmm0
  movdqa %xmm1,%xmm8
  punpckhdq %xmm1,%xmm8
  pcmpgtd %xmm8,%xmm11
  pmuludq %xmm8,%xmm12
  pmuludq %xmm2,%xmm8
  pmuludq %xmm2,%xmm11
  paddq  %xmm12,%xmm11
  pshufd $0x1b,0x10(%rsp),%xmm12
  psllq  $0x20,%xmm11
  paddq  %xmm11,%xmm8
  shufps $0xdd,%xmm8,%xmm0
  movdqa %xmm1,%xmm8
  psrad  $0x2,%xmm0
  psrad  $0x1f,%xmm8
  psubd  %xmm8,%xmm0
  movdqa %xmm0,%xmm8
  pslld  $0x2,%xmm8
  paddd  %xmm0,%xmm8
  movdqa %xmm1,%xmm0
  pslld  $0x1,%xmm8
  psubd  %xmm8,%xmm0
  movdqa D18(%rip),%xmm8
  paddd  %xmm8,%xmm0
  pand   %xmm9,%xmm0
  pandn  %xmm10,%xmm9
  movdqa %xmm3,%xmm10
  por    %xmm0,%xmm9
  movdqa %xmm7,%xmm0
  pand   %xmm5,%xmm0
  pand   %xmm0,%xmm1
  pandn  %xmm9,%xmm0
  movdqa %xmm0,%xmm7
  por    %xmm1,%xmm7
  movdqa %xmm12,%xmm1
  pslld  $0x1,%xmm1
  movdqa %xmm1,%xmm9
  movdqa %xmm1,%xmm0
  punpckldq %xmm1,%xmm9
  pcmpgtd %xmm6,%xmm0
  pcmpgtd %xmm9,%xmm10
  pmuludq %xmm9,%xmm13
  pmuludq %xmm2,%xmm9
  movdqa %xmm0,%xmm11
  pcmpeqd %xmm3,%xmm0
  pmuludq %xmm2,%xmm10
  pand   %xmm5,%xmm11
  pand   %xmm5,%xmm0
  paddq  %xmm13,%xmm10
  movdqa %xmm3,%xmm13
  psllq  $0x20,%xmm10
  paddq  %xmm10,%xmm9
  movdqa %xmm1,%xmm10
  punpckhdq %xmm1,%xmm10
  pcmpgtd %xmm10,%xmm13
  pmuludq %xmm10,%xmm14
  pmuludq %xmm2,%xmm10
  pmuludq %xmm2,%xmm13
  paddq  %xmm14,%xmm13
  psllq  $0x20,%xmm13
  paddq  %xmm13,%xmm10
  shufps $0xdd,%xmm10,%xmm9
  movdqa %xmm1,%xmm10
  psrad  $0x2,%xmm9
  psrad  $0x1f,%xmm10
  psubd  %xmm10,%xmm9
  movdqa %xmm9,%xmm10
  pslld  $0x2,%xmm10
  paddd  %xmm9,%xmm10
  movdqa %xmm1,%xmm9
  pand   %xmm0,%xmm1
  pslld  $0x1,%xmm10
  psubd  %xmm10,%xmm9
  pshufd $0x1b,(%rsp),%xmm10
  paddd  %xmm8,%xmm9
  pand   %xmm11,%xmm9
  pandn  %xmm12,%xmm11
  movdqa %xmm4,%xmm12
  por    %xmm9,%xmm11
  movdqa %xmm10,%xmm9
  pandn  %xmm11,%xmm0
  pslld  $0x1,%xmm9
  por    %xmm1,%xmm0
  movdqa %xmm9,%xmm1
  paddd  %xmm0,%xmm7
  pcmpgtd %xmm6,%xmm1
  movdqa %xmm9,%xmm0
  punpckldq %xmm9,%xmm0
  movdqa %xmm3,%xmm6
  pcmpgtd %xmm0,%xmm6
  pmuludq %xmm0,%xmm12
  pmuludq %xmm2,%xmm0
  movdqa %xmm1,%xmm11
  pcmpeqd %xmm3,%xmm1
  pand   %xmm5,%xmm11
  pmuludq %xmm2,%xmm6
  pand   %xmm5,%xmm1
  paddq  %xmm12,%xmm6
  movdqa %xmm3,%xmm12
  psllq  $0x20,%xmm6
  paddq  %xmm6,%xmm0
  movdqa %xmm9,%xmm6
  punpckhdq %xmm9,%xmm6
  pcmpgtd %xmm6,%xmm12
  pmuludq %xmm6,%xmm4
  pmuludq %xmm2,%xmm6
  pmuludq %xmm2,%xmm12
  paddq  %xmm4,%xmm12
  movdqa %xmm0,%xmm4
  movdqa %xmm9,%xmm0
  psllq  $0x20,%xmm12
  psrad  $0x1f,%xmm0
  paddq  %xmm12,%xmm6
  shufps $0xdd,%xmm6,%xmm4
  psrad  $0x2,%xmm4
  psubd  %xmm0,%xmm4
  movdqa %xmm9,%xmm0
  movdqa %xmm4,%xmm2
  pslld  $0x2,%xmm2
  paddd  %xmm4,%xmm2
  pslld  $0x1,%xmm2
  psubd  %xmm2,%xmm0
  movdqa %xmm9,%xmm2
  paddd  %xmm8,%xmm0
  pand   %xmm1,%xmm2
  pand   %xmm11,%xmm0
  pandn  %xmm10,%xmm11
  por    %xmm0,%xmm11
  pandn  %xmm11,%xmm1
  movdqa %xmm1,%xmm0
  por    %xmm2,%xmm0
  paddd  %xmm7,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x8,%xmm1
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  movd   %xmm0,%ecx
  movslq %eax,%rdx
  sar    $0x1f,%ecx
  imul   $0x66666667,%rdx,%rdx
  sar    $0x22,%rdx
  sub    %ecx,%edx
  lea    (%rdx,%rdx,4),%edx
  add    %edx,%edx
  sub    %eax,%edx
  lea    0xa(%rdx),%eax
  cmp    0x30(%rsp),%eax
  sete   %al
  movzbl %al,%eax
  mov    0x38(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L6
  add    $0x40,%rsp
  pop    %rbx
  ret
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D11
data_type: byte[16]
name: disassemble_data
arguments: label: D7
data_type: byte[16]
name: disassemble_data
arguments: label: D23
data_type: byte[16]
name: disassemble_data
arguments: label: D18
data_type: byte[16]

tool: {"D11": [0x67,0x66,0x66,0x66,0x67,0x66,0x66,0x66,0x67,0x66,0x66,0x66,0x67,0x66,0x66,0x66]}

tool: {"D7": [0x09,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x09,0x00,0x00,0x00]}

tool: {"D23": [0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00]}

tool: {"D18": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

assistant: ```c
int check_sum(char isbnnum[]) {
  int numbers[13];
  unsigned int len = strlen(isbnnum) - 2;
  for (unsigned int i = 0, k = 0; i < len; i++) {
    if (isbnnum[i] >= '0' && isbnnum[i] <= '9') {
      numbers[k] = isbnnum[i] - '0';
      k++;
    }
  }
  int sum = 0, cur_sum = 0;
  for (int i = 11; i >= 0; i--) {
    if (i % 2 != 0) {
      cur_sum = 2 * numbers[i];
      if (cur_sum > 9) {
        cur_sum = cur_sum % 10 + 1;
      }
    } else {
      cur_sum = numbers[i];
    }
    sum += cur_sum;
  }
  sum = 10 - (sum % 10);
  if (sum == numbers[12]) {
    return 1;
  } else {
    return 0;
  }
}
```