user: Please show me the C implementation that matches the assembly code listed below:

```asm
<if_include_file>:
  endbr64
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  call   <strlen@plt>
  mov    $0x8,%edx
  lea    D3(%rip),%rsi
  mov    %rbp,%rdi
  mov    %eax,%ebx
  call   <strncmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L216
  mov    %rbp,%rdx
  jmp    L57
  nopl   0x0(%rax)
L121:
  add    $0x1,%rdx
  cmp    %eax,%ebx
  je     L132
L57:
  mov    %eax,%ecx
  add    $0x1,%eax
  cmpb   $0x20,(%rdx)
  jne    L121
  cmp    %eax,%ebx
  jle    L29
  movslq %eax,%rdx
  mov    %ebx,%edi
  mov    %r12,%r9
  movslq %ecx,%r11
  lea    0x1(%rdx),%rsi
  sub    %eax,%edi
  lea    0x0(%rbp,%rsi,1),%r10
  lea    -0x1(%rdi),%r8d
  sub    %r10,%r9
  cmp    $0xe,%r9
  jbe    L149
  cmp    $0x6,%r8d
  jbe    L149
  cmp    $0xe,%r8d
  jbe    L174
  mov    %edi,%r8d
  lea    0x0(%rbp,%rdx,1),%rsi
  xor    %edx,%edx
  shr    $0x4,%r8d
  shl    $0x4,%r8
  nopl   0x0(%rax,%rax,1)
L11:
  movdqu (%rsi,%rdx,1),%xmm0
  movups %xmm0,(%r12,%rdx,1)
  add    $0x10,%rdx
  cmp    %r8,%rdx
  jne    L11
  mov    %edi,%r8d
  and    $0xfffffff0,%r8d
  add    %r8d,%eax
  cmp    %r8d,%edi
  je     L29
  sub    %r8d,%edi
  lea    -0x1(%rdi),%edx
  cmp    $0x6,%edx
  jbe    L185
L160:
  mov    (%rsi,%r8,1),%rdx
  mov    %rdx,(%r12,%r8,1)
  mov    %edi,%edx
  and    $0xfffffff8,%edx
  add    %edx,%eax
  cmp    %edx,%edi
  je     L29
L185:
  movslq %eax,%rdx
  movzbl 0x0(%rbp,%rdx,1),%esi
  mov    %eax,%edx
  sub    %ecx,%edx
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  lea    0x1(%rax),%edx
  cmp    %edx,%ebx
  jle    L29
  movslq %edx,%rsi
  sub    %ecx,%edx
  movzbl 0x0(%rbp,%rsi,1),%esi
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  lea    0x2(%rax),%edx
  cmp    %edx,%ebx
  jle    L29
  movslq %edx,%rsi
  sub    %ecx,%edx
  movzbl 0x0(%rbp,%rsi,1),%esi
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  lea    0x3(%rax),%edx
  cmp    %edx,%ebx
  jle    L29
  movslq %edx,%rsi
  sub    %ecx,%edx
  movzbl 0x0(%rbp,%rsi,1),%esi
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  lea    0x4(%rax),%edx
  cmp    %edx,%ebx
  jle    L29
  movslq %edx,%rsi
  sub    %ecx,%edx
  movzbl 0x0(%rbp,%rsi,1),%esi
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  lea    0x5(%rax),%edx
  cmp    %edx,%ebx
  jle    L29
  movslq %edx,%rsi
  sub    %ecx,%edx
  add    $0x6,%eax
  movzbl 0x0(%rbp,%rsi,1),%esi
  movslq %edx,%rdx
  mov    %sil,-0x1(%r12,%rdx,1)
  cmp    %eax,%ebx
  jle    L29
  movslq %eax,%rdx
  sub    %ecx,%eax
  movzbl 0x0(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,-0x1(%r12,%rax,1)
L29:
  sub    %ecx,%ebx
  mov    %r12,%rdi
  movslq %ebx,%rbx
  movb   $0x0,-0x1(%r12,%rbx,1)
  call   <de_space@plt>
  mov    $0x1,%eax
L216:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L132:
  pop    %rbx
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
L149:
  mov    %r12,%rdi
  sub    %r11,%rdi
  jmp    L92
  nopw   0x0(%rax,%rax,1)
L3:
  add    $0x1,%rsi
L92:
  movzbl 0x0(%rbp,%rdx,1),%eax
  mov    %al,-0x1(%rdi,%rdx,1)
  mov    %rsi,%rdx
  cmp    %esi,%ebx
  jg     L3
  jmp    L29
L174:
  xor    %r8d,%r8d
  lea    0x0(%rbp,%rdx,1),%rsi
  jmp    L160
```

tool_calls: name: read_data
arguments: data_label: D3
datatype: string

tool: D3: #include

assistant: ```c
int if_include_file(char *old, char *nf) {
  int i = 0, j = 0;
  int n = strlen(old);
  char c;
  if (strncmp(old, "#include", 8) == 0) {
    while (1) {
      c = old[i];
      if (c == ' ')
        break;
      i++;
      if (i == n)
        return 0;
    }
    for (j = i + 1; j < n; j++)
      nf[j - i - 1] = old[j];
    nf[n - i - 1] = 0;
    de_space(nf);
    return 1;
  }
  return 0;
}
```