user: Converte this assembly snippet into its equivalent C code:

```asm
<test_regexp>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D22(%rip),%rsi
  lea    D31(%rip),%rbx
  mov    %rbx,%rdi
  call   <tstre@plt>
  mov    %rbx,%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D99(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D21(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D82(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D166(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D66(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D172(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D71(%rip),%rbp
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  mov    %rbp,%rsi
  lea    D156(%rip),%rdi
  call   <tstre@plt>
  lea    D168(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D51(%rip),%rbp
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  mov    %rbp,%rsi
  lea    D153(%rip),%rbx
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D165(%rip),%rsi
  lea    D179(%rip),%rdi
  call   <tstre@plt>
  lea    D155(%rip),%rsi
  mov    %rbx,%rdi
  call   <tstre@plt>
  lea    D151(%rip),%rsi
  lea    D108(%rip),%rdi
  call   <tstre@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D22
type_guessed: string
name: extract_symbolic_data
arguments: label: D31
type_guessed: string
name: extract_symbolic_data
arguments: label: D99
type_guessed: string
name: extract_symbolic_data
arguments: label: D21
type_guessed: string
name: extract_symbolic_data
arguments: label: D82
type_guessed: string
name: extract_symbolic_data
arguments: label: D166
type_guessed: string
name: extract_symbolic_data
arguments: label: D66
type_guessed: string
name: extract_symbolic_data
arguments: label: D172
type_guessed: string
name: extract_symbolic_data
arguments: label: D71
type_guessed: string
name: extract_symbolic_data
arguments: label: D156
type_guessed: string
name: extract_symbolic_data
arguments: label: D168
type_guessed: string
name: extract_symbolic_data
arguments: label: D51
type_guessed: string
name: extract_symbolic_data
arguments: label: D153
type_guessed: string
name: extract_symbolic_data
arguments: label: D165
type_guessed: string
name: extract_symbolic_data
arguments: label: D179
type_guessed: string
name: extract_symbolic_data
arguments: label: D155
type_guessed: string
name: extract_symbolic_data
arguments: label: D151
type_guessed: string
name: extract_symbolic_data
arguments: label: D108
type_guessed: string

tool: D22: *

tool: D31: abc123

tool: D99: abc123*

tool: D21: aXc123

tool: D82: a?c123

tool: D166: abc*

tool: D66: *123

tool: D172: a*3

tool: D71: a*1?3

tool: D156: abc1X3

tool: D168: a*1?4?

tool: D51: a*1?3*

tool: D153: ab?123

tool: D165: ab\\123

tool: D179: ab\123

tool: D155: ab\?12*

tool: D151: st?sub*

tool: D108: 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*");
}
```