user: 请将以下的汇编代码转换成C语言代码:

```asm
<wildcards_aux>:
  endbr64
  push   %r15
  lea    (%rdi,%rsi,1),%rdx
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x38,%rsp
  movzbl (%rdx),%eax
  sub    %rsi,%rdx
  test   %al,%al
  jne    L150
  jmp    L724
  nopl   0x0(%rax,%rax,1)
L632:
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  je     L724
L150:
  lea    (%rdx,%rbx,1),%r13
  cmp    $0x3f,%al
  jne    L632
  lea    0x0(%rbp,%rbx,1),%r15
  movb   $0x30,0x0(%r13)
  mov    %rbx,%r12
  movzbl (%r15),%eax
  mov    %r15,%rcx
  sub    %rbx,%rcx
  test   %al,%al
  jne    L553
  jmp    L86
  nopl   0x0(%rax)
L501:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L86
L553:
  lea    (%rcx,%r12,1),%rdx
  cmp    $0x3f,%al
  jne    L501
  lea    0x0(%rbp,%r12,1),%rcx
  movb   $0x30,(%rdx)
  mov    %r12,%r14
  movzbl (%rcx),%eax
  mov    %rcx,%rsi
  sub    %r12,%rsi
  test   %al,%al
  jne    L654
  jmp    L648
  nopw   0x0(%rax,%rax,1)
L652:
  add    $0x1,%r14
  movzbl 0x0(%rbp,%r14,1),%eax
  test   %al,%al
  je     L648
L654:
  lea    (%rsi,%r14,1),%r8
  cmp    $0x3f,%al
  jne    L652
  lea    0x0(%rbp,%r14,1),%r9
  movb   $0x30,(%r8)
  mov    %r14,%rsi
  movzbl (%r9),%eax
  mov    %r9,%rdi
  sub    %r14,%rdi
  test   %al,%al
  jne    L452
  jmp    L174
  nopl   0x0(%rax)
L659:
  add    $0x1,%rsi
  movzbl 0x0(%rbp,%rsi,1),%eax
  test   %al,%al
  je     L174
L452:
  lea    (%rdi,%rsi,1),%r10
  cmp    $0x3f,%al
  jne    L659
  movb   $0x30,(%r10)
  mov    %rbp,%rdi
  mov    %rdx,0x28(%rsp)
  mov    %r8,0x20(%rsp)
  mov    %r9,0x18(%rsp)
  mov    %rcx,0x10(%rsp)
  mov    %r10,(%rsp)
  mov    %rsi,0x8(%rsp)
  call   <wildcards_aux>
  mov    (%rsp),%r10
  mov    0x8(%rsp),%rsi
  mov    %rbp,%rdi
  movb   $0x31,(%r10)
  call   <wildcards_aux>
  mov    (%rsp),%r10
  mov    0x28(%rsp),%rdx
  mov    0x20(%rsp),%r8
  mov    0x18(%rsp),%r9
  movb   $0x3f,(%r10)
  mov    0x10(%rsp),%rcx
L279:
  movb   $0x31,(%r8)
  movzbl (%r9),%eax
  sub    %r14,%r9
  test   %al,%al
  jne    L404
  jmp    L733
  nopw   0x0(%rax,%rax,1)
L684:
  add    $0x1,%r14
  movzbl 0x0(%rbp,%r14,1),%eax
  test   %al,%al
  je     L733
L404:
  lea    (%r9,%r14,1),%r10
  cmp    $0x3f,%al
  jne    L684
  movb   $0x30,(%r10)
  mov    %r14,%rsi
  mov    %rbp,%rdi
  mov    %rdx,0x18(%rsp)
  mov    %r8,0x10(%rsp)
  mov    %rcx,0x8(%rsp)
  mov    %r10,(%rsp)
  call   <wildcards_aux>
  mov    (%rsp),%r10
  mov    %r14,%rsi
  mov    %rbp,%rdi
  movb   $0x31,(%r10)
  call   <wildcards_aux>
  mov    (%rsp),%r10
  mov    0x18(%rsp),%rdx
  mov    0x10(%rsp),%r8
  mov    0x8(%rsp),%rcx
  movb   $0x3f,(%r10)
L228:
  movb   $0x3f,(%r8)
L217:
  movb   $0x31,(%rdx)
  movzbl (%rcx),%eax
  sub    %r12,%rcx
  test   %al,%al
  jne    L14
  jmp    L283
  nopl   0x0(%rax)
L61:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L283
L14:
  lea    (%rcx,%r12,1),%r8
  cmp    $0x3f,%al
  jne    L61
  lea    0x0(%rbp,%r12,1),%rcx
  movb   $0x30,(%r8)
  mov    %r12,%r14
  movzbl (%rcx),%eax
  mov    %rcx,%rsi
  sub    %r12,%rsi
  test   %al,%al
  jne    L565
  jmp    L735
  nopl   0x0(%rax,%rax,1)
L428:
  add    $0x1,%r14
  movzbl 0x0(%rbp,%r14,1),%eax
  test   %al,%al
  je     L735
L565:
  lea    (%rsi,%r14,1),%r9
  cmp    $0x3f,%al
  jne    L428
  movb   $0x30,(%r9)
  mov    %r14,%rsi
  mov    %rbp,%rdi
  mov    %rdx,0x18(%rsp)
  mov    %r8,0x10(%rsp)
  mov    %rcx,0x8(%rsp)
  mov    %r9,(%rsp)
  call   <wildcards_aux>
  mov    (%rsp),%r9
  mov    %r14,%rsi
  mov    %rbp,%rdi
  movb   $0x31,(%r9)
  call   <wildcards_aux>
  mov    (%rsp),%r9
  mov    0x18(%rsp),%rdx
  mov    0x10(%rsp),%r8
  mov    0x8(%rsp),%rcx
  movb   $0x3f,(%r9)
L676:
  movb   $0x31,(%r8)
  movzbl (%rcx),%eax
  sub    %r12,%rcx
  test   %al,%al
  jne    L81
  jmp    L543
  nopl   0x0(%rax)
L226:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L543
L81:
  lea    (%rcx,%r12,1),%r14
  cmp    $0x3f,%al
  jne    L226
  movb   $0x30,(%r14)
  mov    %r12,%rsi
  mov    %rbp,%rdi
  mov    %rdx,0x8(%rsp)
  mov    %r8,(%rsp)
  call   <wildcards_aux>
  movb   $0x31,(%r14)
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <wildcards_aux>
  movb   $0x3f,(%r14)
  mov    0x8(%rsp),%rdx
  mov    (%rsp),%r8
L524:
  movb   $0x3f,(%r8)
L230:
  movb   $0x3f,(%rdx)
  jmp    L389
  nopw   0x0(%rax,%rax,1)
L724:
  add    $0x38,%rsp
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <printf@plt>
  nopl   (%rax)
L86:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  call   <printf@plt>
L389:
  movb   $0x31,0x0(%r13)
  movzbl (%r15),%eax
  mov    %r15,%rdx
  sub    %rbx,%rdx
  test   %al,%al
  jne    L476
  jmp    L612
  nopw   0x0(%rax,%rax,1)
L529:
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  je     L612
L476:
  lea    (%rdx,%rbx,1),%r14
  cmp    $0x3f,%al
  jne    L529
  lea    0x0(%rbp,%rbx,1),%rdx
  movb   $0x30,(%r14)
  mov    %rbx,%r12
  movzbl (%rdx),%eax
  mov    %rdx,%rsi
  sub    %rbx,%rsi
  test   %al,%al
  jne    L561
  jmp    L265
  nopw   0x0(%rax,%rax,1)
L713:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L265
L561:
  lea    (%rsi,%r12,1),%rcx
  cmp    $0x3f,%al
  jne    L713
  lea    0x0(%rbp,%r12,1),%r8
  movb   $0x30,(%rcx)
  mov    %r12,%r15
  movzbl (%r8),%eax
  mov    %r8,%rsi
  sub    %r12,%rsi
  test   %al,%al
  jne    L245
  jmp    L574
  nopl   0x0(%rax,%rax,1)
L1:
  add    $0x1,%r15
  movzbl 0x0(%rbp,%r15,1),%eax
  test   %al,%al
  je     L574
L245:
  lea    (%rsi,%r15,1),%r9
  cmp    $0x3f,%al
  jne    L1
  movb   $0x30,(%r9)
  mov    %r15,%rsi
  mov    %rbp,%rdi
  mov    %rcx,0x18(%rsp)
  mov    %r8,0x10(%rsp)
  mov    %rdx,0x8(%rsp)
  mov    %r9,(%rsp)
  call   <wildcards_aux>
  mov    (%rsp),%r9
  mov    %r15,%rsi
  mov    %rbp,%rdi
  movb   $0x31,(%r9)
  call   <wildcards_aux>
  mov    (%rsp),%r9
  mov    0x18(%rsp),%rcx
  mov    0x10(%rsp),%r8
  mov    0x8(%rsp),%rdx
  movb   $0x3f,(%r9)
L613:
  movb   $0x31,(%rcx)
  movzbl (%r8),%eax
  mov    %r8,%rsi
  sub    %r12,%rsi
  test   %al,%al
  jne    L290
  jmp    L573
  nopl   0x0(%rax)
L329:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L573
L290:
  lea    (%rsi,%r12,1),%r15
  cmp    $0x3f,%al
  jne    L329
  movb   $0x30,(%r15)
  mov    %r12,%rsi
  mov    %rbp,%rdi
  mov    %rcx,0x8(%rsp)
  mov    %rdx,(%rsp)
  call   <wildcards_aux>
  movb   $0x31,(%r15)
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <wildcards_aux>
  movb   $0x3f,(%r15)
  mov    0x8(%rsp),%rcx
  mov    (%rsp),%rdx
L184:
  movb   $0x3f,(%rcx)
L432:
  movb   $0x31,(%r14)
  movzbl (%rdx),%eax
  sub    %rbx,%rdx
  test   %al,%al
  jne    L167
  jmp    L33
  nopl   0x0(%rax)
L239:
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  je     L33
L167:
  lea    (%rdx,%rbx,1),%r15
  cmp    $0x3f,%al
  jne    L239
  lea    0x0(%rbp,%rbx,1),%rdx
  movb   $0x30,(%r15)
  mov    %rbx,%r12
  movzbl (%rdx),%eax
  mov    %rdx,%rsi
  sub    %rbx,%rsi
  test   %al,%al
  jne    L690
  jmp    L172
  nop
L693:
  add    $0x1,%r12
  movzbl 0x0(%rbp,%r12,1),%eax
  test   %al,%al
  je     L172
L690:
  lea    (%rsi,%r12,1),%rcx
  cmp    $0x3f,%al
  jne    L693
  movb   $0x30,(%rcx)
  mov    %r12,%rsi
  mov    %rbp,%rdi
  mov    %rdx,0x8(%rsp)
  mov    %rcx,(%rsp)
  call   <wildcards_aux>
  mov    (%rsp),%rcx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  movb   $0x31,(%rcx)
  call   <wildcards_aux>
  mov    (%rsp),%rcx
  mov    0x8(%rsp),%rdx
  movb   $0x3f,(%rcx)
L695:
  movb   $0x31,(%r15)
  movzbl (%rdx),%eax
  sub    %rbx,%rdx
  test   %al,%al
  jne    L734
  jmp    L557
  nopw   0x0(%rax,%rax,1)
L41:
  add    $0x1,%rbx
  movzbl 0x0(%rbp,%rbx,1),%eax
  test   %al,%al
  je     L557
L734:
  lea    (%rdx,%rbx,1),%r12
  cmp    $0x3f,%al
  jne    L41
  movb   $0x30,(%r12)
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <wildcards_aux>
  movb   $0x31,(%r12)
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <wildcards_aux>
  movb   $0x3f,(%r12)
L256:
  movb   $0x3f,(%r15)
L229:
  movb   $0x3f,(%r14)
  jmp    L369
L612:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  call   <printf@plt>
L369:
  movb   $0x3f,0x0(%r13)
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L33:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  call   <printf@plt>
  jmp    L229
  nopl   0x0(%rax)
L265:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rdx
  jmp    L432
  nopl   0x0(%rax)
L648:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,0x8(%rsp)
  mov    %rcx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rcx
  mov    0x8(%rsp),%rdx
  jmp    L217
  cs nopw 0x0(%rax,%rax,1)
L283:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rdx
  jmp    L230
L573:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rcx,0x8(%rsp)
  mov    %rdx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rdx
  mov    0x8(%rsp),%rcx
  jmp    L184
L735:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,0x10(%rsp)
  mov    %r8,0x8(%rsp)
  mov    %rcx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rcx
  mov    0x8(%rsp),%r8
  mov    0x10(%rsp),%rdx
  jmp    L676
L733:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,0x10(%rsp)
  mov    %r8,0x8(%rsp)
  mov    %rcx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rcx
  mov    0x8(%rsp),%r8
  mov    0x10(%rsp),%rdx
  jmp    L228
L174:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,0x18(%rsp)
  mov    %r8,0x10(%rsp)
  mov    %r9,0x8(%rsp)
  mov    %rcx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rcx
  mov    0x8(%rsp),%r9
  mov    0x10(%rsp),%r8
  mov    0x18(%rsp),%rdx
  jmp    L279
L557:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  call   <printf@plt>
  jmp    L256
L172:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rdx
  jmp    L695
L543:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rdx,0x8(%rsp)
  mov    %r8,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%r8
  mov    0x8(%rsp),%rdx
  jmp    L524
L574:
  mov    %rbp,%rsi
  lea    D88(%rip),%rdi
  mov    %rcx,0x10(%rsp)
  mov    %r8,0x8(%rsp)
  mov    %rdx,(%rsp)
  call   <printf@plt>
  mov    (%rsp),%rdx
  mov    0x8(%rsp),%r8
  mov    0x10(%rsp),%rcx
  jmp    L613
```

tool_calls: name: parse_data
arguments: data_tag: D88
type: string

tool: D88: %s


assistant: ```c
void wildcards_aux(char *str, size_t str_i) {
  if (str[str_i] == '\0') {
    printf("%s\n", str);
    return;
  }
  if (str[str_i] != '?') {
    wildcards_aux(str, str_i + 1);
  } else {
    str[str_i] = '0';
    wildcards_aux(str, str_i);
    str[str_i] = '1';
    wildcards_aux(str, str_i);
    str[str_i] = '?';
  }
}
```