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

```asm
<if_include_file>:
  endbr64
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  call   <strlen@plt>
  mov    $0x8,%edx
  lea    D5(%rip),%rsi
  mov    %rbp,%rdi
  mov    %eax,%ebx
  call   <strncmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L217
  mov    %rbp,%rdx
  jmp    L91
  nopl   0x0(%rax)
L191:
  add    $0x1,%rdx
  cmp    %eax,%ebx
  je     L76
L91:
  mov    %eax,%ecx
  add    $0x1,%eax
  cmpb   $0x20,(%rdx)
  jne    L191
  cmp    %eax,%ebx
  jle    L194
  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    L115
  cmp    $0x6,%r8d
  jbe    L115
  cmp    $0xe,%r8d
  jbe    L119
  mov    %edi,%r8d
  lea    0x0(%rbp,%rdx,1),%rsi
  xor    %edx,%edx
  shr    $0x4,%r8d
  shl    $0x4,%r8
  nopl   0x0(%rax,%rax,1)
L40:
  movdqu (%rsi,%rdx,1),%xmm0
  movups %xmm0,(%r12,%rdx,1)
  add    $0x10,%rdx
  cmp    %r8,%rdx
  jne    L40
  mov    %edi,%r8d
  and    $0xfffffff0,%r8d
  add    %r8d,%eax
  cmp    %r8d,%edi
  je     L194
  sub    %r8d,%edi
  lea    -0x1(%rdi),%edx
  cmp    $0x6,%edx
  jbe    L214
L111:
  mov    (%rsi,%r8,1),%rdx
  mov    %rdx,(%r12,%r8,1)
  mov    %edi,%edx
  and    $0xfffffff8,%edx
  add    %edx,%eax
  cmp    %edx,%edi
  je     L194
L214:
  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    L194
  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    L194
  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    L194
  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    L194
  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    L194
  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    L194
  movslq %eax,%rdx
  sub    %ecx,%eax
  movzbl 0x0(%rbp,%rdx,1),%edx
  cltq
  mov    %dl,-0x1(%r12,%rax,1)
L194:
  sub    %ecx,%ebx
  mov    %r12,%rdi
  movslq %ebx,%rbx
  movb   $0x0,-0x1(%r12,%rbx,1)
  call   <de_space@plt>
  mov    $0x1,%eax
L217:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L76:
  pop    %rbx
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
L115:
  mov    %r12,%rdi
  sub    %r11,%rdi
  jmp    L15
  nopw   0x0(%rax,%rax,1)
L58:
  add    $0x1,%rsi
L15:
  movzbl 0x0(%rbp,%rdx,1),%eax
  mov    %al,-0x1(%rdi,%rdx,1)
  mov    %rsi,%rdx
  cmp    %esi,%ebx
  jg     L58
  jmp    L194
L119:
  xor    %r8d,%r8d
  lea    0x0(%rbp,%rdx,1),%rsi
  jmp    L111
```

tool_calls: name: disassemble_data
arguments: data_tag: D5
type: string

tool: D5: #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;
}
```