user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %r15
  lea    D48(%rip),%r15
  push   %r14
  mov    $0x2c,%r14d
  push   %r13
  lea    D68(%rip),%r13
  push   %r12
  mov    $0xffff2c00,%r12d
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  jmp    L7
  xchg   %ax,%ax
L34:
  mov    %r14d,%esi
  xor    %eax,%eax
  movzbl %r8b,%r8d
  mov    %r13,%rdi
  shl    $0x8,%esi
  or     $0x7,%esi
  call   <printf@plt>
  cmp    $0xff,%r14d
  je     L21
L30:
  add    $0x1,%r14d
  add    $0x100,%r12d
L7:
  lea    -0x2c(%r14),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  D125(%rip),%xmm0
  movaps %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm1,0xc(%rsp)
  call   <sin@plt>
  mulss  D123(%rip),%xmm0
  addss  D123(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D146(%rip),%xmm0
  cvttsd2si %xmm0,%ebx
  movss  D24(%rip),%xmm0
  addss  0xc(%rsp),%xmm0
  call   <sin@plt>
  mulss  D123(%rip),%xmm0
  addss  D123(%rip),%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  D146(%rip),%xmm0
  cvttsd2si %xmm0,%ebp
  movss  D21(%rip),%xmm0
  addss  0xc(%rsp),%xmm0
  call   <sin@plt>
  mulss  D123(%rip),%xmm0
  movzbl %bl,%edx
  addss  D123(%rip),%xmm0
  movzbl %bpl,%ecx
  cvtss2sd %xmm0,%xmm0
  addsd  D146(%rip),%xmm0
  cvttsd2si %xmm0,%r8d
  cmp    $0xff,%r14d
  jbe    L34
  mov    %r12d,%esi
  xor    %eax,%eax
  movzbl %r8b,%r8d
  mov    %r13,%rdi
  or     $0x7,%esi
  call   <printf@plt>
  cmp    $0x12b,%r14d
  jne    L30
  mov    %r13,%rdi
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    $0x2c07,%esi
  xor    %eax,%eax
  call   <printf@plt>
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L21:
  mov    %r15,%rdi
  call   <puts@plt>
  mov    $0xff,%esi
  lea    D61(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L30
```

tool_calls: name: read_data
arguments: tag: D48
datatype: string
name: read_data
arguments: tag: D68
datatype: string
name: read_data
arguments: tag: D125
datatype: f32
name: read_data
arguments: tag: D123
datatype: f32
name: read_data
arguments: tag: D146
datatype: f64
name: read_data
arguments: tag: D24
datatype: f32
name: read_data
arguments: tag: D21
datatype: f32
name: read_data
arguments: tag: D61
datatype: string

tool: D48: .verticalPositionWrapped:

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


tool: D125: 0.3

tool: D123: 7

tool: D146: 0.5

tool: D24: 1

tool: D21: 2

tool: D61: 	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;
}
```