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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x636261,-0xc(%rbp)
  lea    D91(%rip),%rax
  mov    %rax,%rsi
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <quick_search@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D127(%rip),%rax
  mov    %rax,%rsi
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <quick_search@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D44(%rip),%rax
  mov    %rax,%rsi
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <quick_search@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D63(%rip),%rax
  mov    %rax,%rsi
  lea    D152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <quick_search@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L9
  call   <__stack_chk_fail@plt>
L9:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D91
data_type: string
name: parse_data
arguments: tag: D152
data_type: string
name: parse_data
arguments: tag: D38
data_type: string
name: parse_data
arguments: tag: D28
data_type: string
name: parse_data
arguments: tag: D127
data_type: string
name: parse_data
arguments: tag: D44
data_type: string
name: parse_data
arguments: tag: D63
data_type: string

tool: D91: abcgaaabbbabbbc

tool: D152: TEXT: '%s'


tool: D38: PATTERN: '%s'


tool: 

tool: D127: accgaaabbbabbabc

tool: D44: accgaaabcbbabbab

tool: D63: abcgaaabcabcbababc

assistant: ```c
int main() {
  char P[] = "abc";
  {
    printf("TEXT: '%s'\n", "abcgaaabbbabbbc");
    printf("PATTERN: '%s'\n", P);
    quick_search("abcgaaabbbabbbc", P);
    puts("");
  };
  {
    printf("TEXT: '%s'\n", "accgaaabbbabbabc");
    printf("PATTERN: '%s'\n", P);
    quick_search("accgaaabbbabbabc", P);
    puts("");
  };
  {
    printf("TEXT: '%s'\n", "accgaaabcbbabbab");
    printf("PATTERN: '%s'\n", P);
    quick_search("accgaaabcbbabbab", P);
    puts("");
  };
  {
    printf("TEXT: '%s'\n", "abcgaaabcabcbababc");
    printf("PATTERN: '%s'\n", P);
    quick_search("abcgaaabcabcbababc", P);
    puts("");
  };
}
```