user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  mov    $0x2d,%r13d
  mov    $0x2c,%ebx
  jmp    L43
L48:
  movzbl %r12b,%ecx
  movzbl %bpl,%edx
  mov    %ebx,%esi
  shl    $0x8,%esi
  sub    $0x10000,%esi
  or     $0x7,%esi
  movzbl %r8b,%r8d
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmp    $0x12b,%r13d
  jg     L46
L0:
  add    $0x1,%ebx
  add    $0x1,%r13d
L43:
  lea    -0x2c(%rbx),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  D105(%rip),%xmm0
  pxor   %xmm2,%xmm2
  movss  %xmm0,0xc(%rsp)
  addss  %xmm0,%xmm2
  movaps %xmm2,%xmm0
  call   <sin@plt>
  mulss  D92(%rip),%xmm0
  addss  D92(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D91(%rip),%xmm0
  cvttsd2si %xmm0,%ebp
  movss  0xc(%rsp),%xmm0
  addss  D101(%rip),%xmm0
  call   <sin@plt>
  mulss  D92(%rip),%xmm0
  addss  D92(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D91(%rip),%xmm0
  cvttsd2si %xmm0,%r12d
  movss  0xc(%rsp),%xmm0
  addss  D18(%rip),%xmm0
  call   <sin@plt>
  mulss  D92(%rip),%xmm0
  addss  D92(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D91(%rip),%xmm0
  cvttsd2si %xmm0,%r8d
  cmp    $0xff,%ebx
  jg     L48
  movzbl %r12b,%ecx
  movzbl %bpl,%edx
  mov    %ebx,%esi
  shl    $0x8,%esi
  or     $0x7,%esi
  movzbl %r8b,%r8d
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  cmp    $0xff,%ebx
  jne    L0
  lea    D146(%rip),%rdi
  call   <puts@plt>
  mov    $0xff,%esi
  lea    D124(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L0
L46:
  lea    -0xff(%rbx),%esi
  shl    $0x8,%esi
  or     $0x7,%esi
  mov    $0x0,%r8d
  mov    $0x0,%ecx
  mov    $0x0,%edx
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: read_data
arguments: tag: D139
type: string
name: read_data
arguments: tag: D105
type: f32
name: read_data
arguments: tag: D92
type: f32
name: read_data
arguments: tag: D91
type: f64
name: read_data
arguments: tag: D101
type: f32
name: read_data
arguments: tag: D18
type: f32
name: read_data
arguments: tag: D146
type: string
name: read_data
arguments: tag: D124
type: string

tool: D139: 	dc.w $%x,$fffe
	dc.w COLOR00,$%x%x%x


tool: D105: 0.3

tool: D92: 7

tool: D91: 0.5

tool: D101: 1

tool: D18: 2

tool: D146: .verticalPositionWrapped:

tool: D124: 	dc.w $%xdf,$fffe


assistant: ```c
int main(int argc, char **argv) {
  float frequencyr = 0.3, frequencyg = 0.3, frequencyb = 0.3;
  float basePhase = 0;
  float phase1 = basePhase + 0, phase2 = basePhase + 1, phase3 = basePhase + 2;
  float center = 0x7;
  float width = 0x7;
  int startLine = 0x2c;
  int screenHeight = 256;
  int endLine = startLine + screenHeight;
  int startHpos = 6;
  int i, line;
  for (i = 0, line = startLine; line < endLine; ++i, ++line) {
    unsigned char r = (sin(frequencyr * i + phase1) * width + center) + 0.5;
    unsigned char g = (sin(frequencyg * i + phase2) * width + center) + 0.5;
    unsigned char b = (sin(frequencyb * i + phase3) * width + center) + 0.5;
    if (line <= 255) {
      printf("\tdc.w $%x,$fffe\n\tdc.w COLOR00,$%x%x%x\n", line << 8 | startHpos | 1, r, g, b);
      if (line == 255) {
        printf(".verticalPositionWrapped:\n");
        printf("\tdc.w $%xdf,$fffe\n", line);
      }
    } else {
      printf("\tdc.w $%x,$fffe\n\tdc.w COLOR00,$%x%x%x\n", (line - 256) << 8 | startHpos | 1, r, g, b);
    }
  }
  printf("\tdc.w $%x,$fffe\n\tdc.w COLOR00,$%x%x%x\n", (line - 256) << 8 | startHpos | 1, 0, 0, 0);
  return 0;
}
```