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

```asm
<test_regexp>:
  endbr64
  push   %r12
  lea    D75(%rip),%rsi
  lea    D85(%rip),%r12
  push   %rbp
  lea    D141(%rip),%rbp
  mov    %rbp,%rdi
  sub    $0x8,%rsp
  call   <tstre@plt>
  mov    %rbp,%rsi
  mov    %rbp,%rdi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D64(%rip),%rsi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D39(%rip),%rsi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D43(%rip),%rsi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D83(%rip),%rsi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D103(%rip),%rsi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D71(%rip),%rsi
  call   <tstre@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <tstre@plt>
  mov    %r12,%rsi
  lea    D15(%rip),%rdi
  lea    D125(%rip),%r12
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D113(%rip),%rsi
  call   <tstre@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D135(%rip),%rbp
  call   <tstre@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <tstre@plt>
  lea    D129(%rip),%rsi
  lea    D155(%rip),%rdi
  call   <tstre@plt>
  mov    %rbp,%rdi
  lea    D2(%rip),%rsi
  call   <tstre@plt>
  add    $0x8,%rsp
  lea    D112(%rip),%rsi
  lea    D176(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    1050 <tstre@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D75
type: string
name: retrieve_data
arguments: data_label: D85
type: string
name: retrieve_data
arguments: data_label: D141
type: string
name: retrieve_data
arguments: data_label: D64
type: string
name: retrieve_data
arguments: data_label: D39
type: string
name: retrieve_data
arguments: data_label: D43
type: string
name: retrieve_data
arguments: data_label: D83
type: string
name: retrieve_data
arguments: data_label: D103
type: string
name: retrieve_data
arguments: data_label: D71
type: string
name: retrieve_data
arguments: data_label: D15
type: string
name: retrieve_data
arguments: data_label: D125
type: string
name: retrieve_data
arguments: data_label: D113
type: string
name: retrieve_data
arguments: data_label: D135
type: string
name: retrieve_data
arguments: data_label: D129
type: string
name: retrieve_data
arguments: data_label: D155
type: string
name: retrieve_data
arguments: data_label: D2
type: string
name: retrieve_data
arguments: data_label: D112
type: string
name: retrieve_data
arguments: data_label: D176
type: string

tool: D75: *

tool: D85: a*1?3

tool: D141: abc123

tool: D64: abc123*

tool: D39: aXc123

tool: D43: a?c123

tool: D83: abc*

tool: D103: *123

tool: D71: a*3

tool: D15: abc1X3

tool: D125: a*1?3*

tool: D113: a*1?4?

tool: D135: ab?123

tool: D129: ab\\123

tool: D155: ab\123

tool: D2: ab\?12*

tool: D112: st?sub*

tool: D176: st2sub1

assistant: ```c
void test_regexp(void) {
  tstre("abc123", "*");
  tstre("abc123", "abc123");
  tstre("abc123", "abc123*");
  tstre("abc123", "aXc123");
  tstre("abc123", "a?c123");
  tstre("abc123", "abc*");
  tstre("abc123", "*123");
  tstre("abc123", "a*3");
  tstre("abc123", "a*1?3");
  tstre("abc1X3", "a*1?3");
  tstre("abc123", "a*1?4?");
  tstre("abc123", "a*1?3*");
  tstre("ab?123", "a*1?3*");
  tstre("ab\\123", "ab\\\\123");
  tstre("ab?123", "ab\\?12*");
  tstre("st2sub1", "st?sub*");
}
```