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

```asm
<parse_config_file>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  lea    -0x7(%rdi,%rsi,1),%r13
  push   %r12
  push   %rbp
  lea    (%rdi,%rsi,1),%rbp
  push   %rbx
  lea    -0x3(%rdi,%rsi,1),%rbx
  sub    $0x8,%rsp
  cmp    %rbx,%rdi
  ja     L117
  mov    %rdi,%r15
  nopl   0x0(%rax)
L130:
  movsbl (%r15),%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L208
  cmpb   $0x5f,(%r15)
  jne    L265
  cmp    %r13,%r15
  jae    L179
  cmpb   $0x5f,0x6(%r15)
  jne    L179
L256:
  mov    $0x6,%edx
  lea    D15(%rip),%rsi
  mov    %r15,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L74
  mov    $0x6,%edx
  lea    D8(%rip),%rsi
  mov    %r15,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L74
  mov    $0x6,%edx
  lea    D1(%rip),%rsi
  mov    %r15,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L114
L74:
  mov    $0x7,%r12d
  jmp    L153
  nopl   0x0(%rax)
L208:
  cmp    %r13,%r15
  jae    L114
  cmpb   $0x5f,0x6(%r15)
  je     L256
L114:
  cmpb   $0x49,(%r15)
  jne    L179
  cmpb   $0x46,0x1(%r15)
  jne    L179
  cmpb   $0x5f,0x2(%r15)
  je     L93
L179:
  cmp    %rbx,%r15
  ja     L265
  nopl   (%rax)
L79:
  movsbl (%r15),%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L216
  cmpb   $0x5f,(%r15)
  jne    L265
L216:
  add    $0x1,%r15
  cmp    %r15,%rbx
  jae    L79
L265:
  add    $0x1,%r15
  cmp    %r15,%rbx
  jae    L130
L117:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L93:
  mov    $0x3,%r12d
L153:
  add    %r15,%r12
  mov    %rbp,%r14
  mov    %r12,%r15
  cmp    %rbp,%r12
  jae    L265
  nopl   0x0(%rax)
L102:
  movsbl (%r15),%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L26
  cmpb   $0x5f,(%r15)
  jne    L22
L26:
  add    $0x1,%r15
  cmp    %rbp,%r15
  jne    L102
L55:
  mov    %r14d,%esi
  mov    %r12,%r15
  mov    %r12,%rdi
  sub    %r12d,%esi
  add    $0x1,%r15
  call   <use_config@plt>
  cmp    %r15,%rbx
  jae    L130
  jmp    L117
L22:
  cmp    %r15,%r12
  je     L265
  mov    %r15,%r14
  jmp    L55
```

tool_calls: name: retrieve_data
arguments: data_tag: D15
type_infered: string
name: retrieve_data
arguments: data_tag: D8
type_infered: string
name: retrieve_data
arguments: data_tag: D1
type_infered: string

tool: D15: CONFIG

tool: D8: ENABLE

tool: D1: IF_NOT

assistant: ```c
void parse_config_file(char *map, size_t len) {
  char *end_3 = map + len - 3;
  char *end_7 = map + len - 7;
  char *p = map;
  char *q;
  int off;
  for (; p <= end_3; p++) {
    if (!(isalnum(*p) || *p == '_'))
      continue;
    if (p < end_7 && p[6] == '_') {
      if (!memcmp(p, "CONFIG", 6))
        goto conf7;
      if (!memcmp(p, "ENABLE", 6))
        goto conf7;
      if (!memcmp(p, "IF_NOT", 6))
        goto conf7;
    }
    if (p[0] == 'I' && p[1] == 'F' && p[2] == '_') {
      off = 3;
      goto conf;
    }
    while (p <= end_3 && (isalnum(*p) || *p == '_'))
      p++;
    continue;
  conf7:
    off = 7;
  conf:
    p += off;
    for (q = p; q < end_3 + 3; q++) {
      if (!(isalnum(*q) || *q == '_'))
        break;
    }
    if (q != p) {
      use_config(p, q - p);
    }
  }
}
```