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

```asm
<WriteBitmapText>:
  endbr64
  push   %rbp
  mov    %rsi,%rcx
  mov    %rsi,%rbp
  mov    $0x4,%edx
  push   %rbx
  mov    $0x1,%esi
  mov    %rdi,%rbx
  lea    D3(%rip),%rdi
  sub    $0x8,%rsp
  call   <fwrite@plt>
  movzbl (%rbx),%eax
  cmp    $0x2a,%al
  je     L224
  cmp    $0x2e,%al
  je     L287
L262:
  movzbl 0x1(%rbx),%eax
  cmp    $0x2a,%al
  je     L145
  cmp    $0x2e,%al
  je     L21
L336:
  movzbl 0x2(%rbx),%eax
  cmp    $0x2a,%al
  je     L248
  cmp    $0x2e,%al
  je     L150
L342:
  movzbl 0x3(%rbx),%eax
  cmp    $0x2a,%al
  je     L285
  cmp    $0x2e,%al
  je     L379
L153:
  movzbl 0x4(%rbx),%eax
  cmp    $0x2a,%al
  je     L159
  cmp    $0x2e,%al
  je     L161
L32:
  movzbl 0x5(%rbx),%eax
  cmp    $0x2a,%al
  je     L350
  cmp    $0x2e,%al
  je     L323
L7:
  movzbl 0x6(%rbx),%eax
  cmp    $0x2a,%al
  je     L295
  cmp    $0x2e,%al
  je     L351
L281:
  movzbl 0x7(%rbx),%eax
  cmp    $0x2a,%al
  je     L151
  cmp    $0x2e,%al
  je     L170
L162:
  movzbl 0x8(%rbx),%eax
  cmp    $0x2a,%al
  je     L254
  cmp    $0x2e,%al
  je     L203
L11:
  movzbl 0x9(%rbx),%eax
  mov    %rbp,%rsi
  mov    $0x58,%edi
  cmp    $0x2a,%al
  je     L280
  cmp    $0x2e,%al
  je     L152
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nop
L152:
  mov    $0x5f,%edi
L280:
  call   <fputc@plt>
  add    $0x8,%rsp
  mov    %rbp,%rsi
  mov    $0x20,%edi
  pop    %rbx
  pop    %rbp
  jmp    1060 <fputc@plt>
  nopl   (%rax)
L254:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L11
  nopl   0x0(%rax)
L151:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L162
  nop
L295:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L281
  nop
L350:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L7
  nop
L159:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L32
  nop
L285:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L153
  nop
L248:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L342
  nop
L145:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L336
  nop
L224:
  mov    %rbp,%rsi
  mov    $0x58,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L262
  nop
L287:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L262
  nop
L379:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L153
  nop
L161:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L32
  nop
L21:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L336
  nop
L150:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L342
  nop
L170:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L162
  nop
L203:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L11
  nop
L323:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L7
  nop
L351:
  mov    %rbp,%rsi
  mov    $0x5f,%edi
  call   <fputc@plt>
  mov    %rbp,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L281
```

tool_calls: name: retrieve_data
arguments: data_tag: D3
data_type: string

tool: D3: s   

assistant: ```c
void WriteBitmapText(char *str, FILE *out) {
  fputs("s   ", out);
  for (int j = 0; j < 10; j++) {
    if (str[j] == '*') {
      fputc('X', out);
      fputc(' ', out);
    } else if (str[j] == '.') {
      fputc('_', out);
      fputc(' ', out);
    }
  }
  return;
}
```