user: Please show me the C implementation that matches the assembly code listed below:

```asm
<print_head>:
  endbr64
  sub    $0x8,%rsp
  lea    D190(%rip),%rdi
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <printf@plt>
  lea    D159(%rip),%rdi
  call   <printf@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D53(%rip),%rdi
  call   <printf@plt>
  lea    D148(%rip),%rdi
  call   <printf@plt>
  lea    D175(%rip),%rdi
  call   <printf@plt>
  lea    D104(%rip),%rdi
  call   <printf@plt>
  lea    D36(%rip),%rdi
  call   <printf@plt>
  lea    D123(%rip),%rdi
  call   <printf@plt>
  lea    D28(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  lea    D77(%rip),%rdi
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  lea    D141(%rip),%rdi
  call   <printf@plt>
  lea    D105(%rip),%rdi
  call   <printf@plt>
  lea    D14(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdi
  call   <printf@plt>
  lea    D158(%rip),%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D190
type: string
name: extract_symbolic_data
arguments: label: D106
type: string
name: extract_symbolic_data
arguments: label: D159
type: string
name: extract_symbolic_data
arguments: label: D8
type: string
name: extract_symbolic_data
arguments: label: D53
type: string
name: extract_symbolic_data
arguments: label: D148
type: string
name: extract_symbolic_data
arguments: label: D175
type: string
name: extract_symbolic_data
arguments: label: D104
type: string
name: extract_symbolic_data
arguments: label: D36
type: string
name: extract_symbolic_data
arguments: label: D123
type: string
name: extract_symbolic_data
arguments: label: D28
type: string
name: extract_symbolic_data
arguments: label: D65
type: string
name: extract_symbolic_data
arguments: label: D77
type: string
name: extract_symbolic_data
arguments: label: D66
type: string
name: extract_symbolic_data
arguments: label: D141
type: string
name: extract_symbolic_data
arguments: label: D105
type: string
name: extract_symbolic_data
arguments: label: D14
type: string
name: extract_symbolic_data
arguments: label: D114
type: string
name: extract_symbolic_data
arguments: label: D158
type: string
name: extract_symbolic_data
arguments: label: D79
type: string

tool: D190: // ShaderTracker: Ridiculous shader summation sound engine


tool: D106: // Engine / Function Builder by Michael Moffitt (https://github.com/mikejmoffitt)


tool: D159: // Sound Generation Functions by Gerard Geer (https://github.com/gerard-geer)


tool: D8: // Waveform definitions



tool: D53: float saw(float t, float f, float a)


tool: D148: {
	return ((mod(t*0.5*f*0.31830989, 1.0)*2.0)-1.0)*a;
}



tool: D175: float sqr(float t, float f, float duty, float a)


tool: D104: {
	return step(duty, abs(saw(t,f * 0.5,1.0)))*a;
}



tool: D36: float tri(float t, float f, float a)


tool: D123: {
	return (((floor(abs(saw(t,f * 0.5,a))*16.0)*0.0625)*2.0)-1.0)*a;
}



tool: D28: float sine(float t, float f, float a)


tool: D65: {
	return sin(t*f)*a;
}



tool: D77: float noise(float t, float f, float a)


tool: D66: {
	return ((fract(sin(dot(vec2(t,f),vec2(12.9898,78.233)))*43758.5453)*2.0)-1.0)*a;
}



tool: D141: float l_decay(float t, float s, float l)


tool: D105: {
	return clamp(1.0-((t-s)/l), 0.0, 1.0);
}



tool: D14: float fm_bell(float t, float f, float a)


tool: D114: {
	f = f / 2.0;

tool: D158: 
	return a * sin(t * 2.0 * f + sin(5.0 * t * 2.0 * f));

tool: D79: 
}



assistant: ```c
void print_head(void) {
  printf("// ShaderTracker: Ridiculous shader summation sound engine\n");
  printf("// Engine / Function Builder by Michael Moffitt (https://github.com/mikejmoffitt)\n");
  printf("// Sound Generation Functions by Gerard Geer (https://github.com/gerard-geer)\n");
  printf("// Waveform definitions\n\n");
  printf("float saw(float t, float f, float a)\n");
  printf("{\n\treturn ((mod(t*0.5*f*0.31830989, 1.0)*2.0)-1.0)*a;\n}\n\n");
  printf("float sqr(float t, float f, float duty, float a)\n");
  printf("{\n\treturn step(duty, abs(saw(t,f * 0.5,1.0)))*a;\n}\n\n");
  printf("float tri(float t, float f, float a)\n");
  printf("{\n\treturn (((floor(abs(saw(t,f * 0.5,a))*16.0)*0.0625)*2.0)-1.0)*a;\n}\n\n");
  printf("float sine(float t, float f, float a)\n");
  printf("{\n\treturn sin(t*f)*a;\n}\n\n");
  printf("float noise(float t, float f, float a)\n");
  printf("{\n\treturn ((fract(sin(dot(vec2(t,f),vec2(12.9898,78.233)))*43758.5453)*2.0)-1.0)*a;\n}\n\n");
  printf("float l_decay(float t, float s, float l)\n");
  printf("{\n\treturn clamp(1.0-((t-s)/l), 0.0, 1.0);\n}\n\n");
  printf("float fm_bell(float t, float f, float a)\n");
  printf("{\n\tf = f / 2.0;");
  printf("\n\treturn a * sin(t * 2.0 * f + sin(5.0 * t * 2.0 * f));");
  printf("\n}\n\n");
}
```