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

```asm
<main>:
  endbr64
  push   %r12
  xor    %eax,%eax
  push   %rbp
  push   %rbx
  xor    %ebx,%ebx
  call   <clock@plt>
  movss  D166(%rip),%xmm2
  movss  D95(%rip),%xmm3
  movsd  D200(%rip),%xmm1
  movsd  D33(%rip),%xmm4
  mov    %eax,%ebp
  nopl   0x0(%rax,%rax,1)
L7:
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebx,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  ucomisd %xmm1,%xmm0
  ja     L89
  ucomisd %xmm0,%xmm4
  ja     L89
L97:
  add    $0x1,%ebx
  cmp    $0xf4240,%ebx
  jne    L7
  xor    %eax,%eax
  xor    %r12d,%r12d
  call   <clock@plt>
  lea    D248(%rip),%rdi
  sub    %ebp,%eax
  mov    %eax,%esi
  mov    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <clock@plt>
  lea    D159(%rip),%rdi
  sub    %ebp,%eax
  mov    %eax,%esi
  add    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  mov    %eax,%ebp
  nopw   0x0(%rax,%rax,1)
L84:
  pxor   %xmm0,%xmm0
  movss  D106(%rip),%xmm1
  cvtsi2ss %r12d,%xmm0
  add    $0x1,%r12d
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  call   <atan2@plt>
  cmp    $0xf4240,%r12d
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  jne    L84
  xor    %eax,%eax
  call   <clock@plt>
  lea    D23(%rip),%rdi
  sub    %ebp,%eax
  xor    %ebp,%ebp
  mov    %eax,%esi
  add    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movss  D166(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movss  D95(%rip),%xmm3
  mov    %eax,%r12d
  jmp    L50
  nopw   0x0(%rax,%rax,1)
L127:
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebp,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  ucomisd %xmm0,%xmm1
  ja     L107
L50:
  add    $0x1,%ebp
  cmp    $0xf4240,%ebp
  jne    L127
  xor    %eax,%eax
  call   <clock@plt>
  lea    D260(%rip),%rdi
  sub    %r12d,%eax
  xor    %r12d,%r12d
  mov    %eax,%esi
  add    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  mov    %eax,%ebp
  nopw   0x0(%rax,%rax,1)
L60:
  pxor   %xmm1,%xmm1
  cvtsi2ss %r12d,%xmm1
  add    $0x1,%r12d
  mulss  %xmm2,%xmm1
  addss  %xmm3,%xmm1
  cvtss2sd %xmm1,%xmm1
  movapd %xmm1,%xmm0
  call   <pow@plt>
  cmp    $0xf4240,%r12d
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  jne    L60
  xor    %eax,%eax
  xor    %r12d,%r12d
  call   <clock@plt>
  lea    D261(%rip),%rdi
  sub    %ebp,%eax
  mov    %eax,%esi
  add    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movsd  D73(%rip),%xmm1
  movss  D166(%rip),%xmm2
  movss  D95(%rip),%xmm3
  mov    %eax,%ebp
  jmp    L146
  nopw   0x0(%rax,%rax,1)
L56:
  pxor   %xmm0,%xmm0
  cvtsi2ss %r12d,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  ucomisd %xmm1,%xmm0
  jae    L168
L146:
  add    $0x1,%r12d
  cmp    $0xf4240,%r12d
  jne    L56
  xor    %eax,%eax
  call   <clock@plt>
  lea    D380(%rip),%rdi
  sub    %ebp,%eax
  mov    %eax,%esi
  add    %eax,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <clock@plt>
  lea    D130(%rip),%rdi
  sub    %r12d,%eax
  mov    %eax,%esi
  lea    (%rbx,%rax,1),%ebp
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  mov    %eax,%ebx
  xor    %eax,%eax
  call   <clock@plt>
  lea    D341(%rip),%rdi
  sub    %ebx,%eax
  xor    %ebx,%ebx
  mov    %eax,%esi
  add    %eax,%ebp
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movss  D166(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movss  D95(%rip),%xmm3
  mov    %eax,%r12d
  jmp    L58
  xchg   %ax,%ax
L126:
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebx,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  ucomisd %xmm0,%xmm1
  jae    L88
L58:
  add    $0x1,%ebx
  cmp    $0xf4240,%ebx
  jne    L126
  xor    %eax,%eax
  xor    %ebx,%ebx
  call   <clock@plt>
  lea    D304(%rip),%rdi
  sub    %r12d,%eax
  mov    %eax,%esi
  add    %eax,%ebp
  call   <printf@plt>
  xor    %eax,%eax
  call   <clock@plt>
  movss  D166(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movss  D95(%rip),%xmm3
  mov    %eax,%r12d
  jmp    L77
  nopl   (%rax)
L192:
  pxor   %xmm0,%xmm0
  cvtsi2ss %ebx,%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm3,%xmm0
  cvtss2sd %xmm0,%xmm0
  ucomisd %xmm0,%xmm1
  jae    L191
L77:
  add    $0x1,%ebx
  cmp    $0xf4240,%ebx
  jne    L192
  xor    %eax,%eax
  call   <clock@plt>
  lea    D81(%rip),%rdi
  sub    %r12d,%eax
  add    %eax,%ebp
  mov    %eax,%esi
  call   <printf@plt>
  pop    %rbx
  mov    %ebp,%esi
  lea    D109(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    10f0 <printf@plt>
L89:
  call   <acos@plt>
  mov    D33(%rip),%rax
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  movq   %rax,%xmm4
  mov    D200(%rip),%rax
  movq   %rax,%xmm1
  jmp    L97
L107:
  call   <sqrt@plt>
  movss  D95(%rip),%xmm3
  pxor   %xmm1,%xmm1
  movss  D166(%rip),%xmm2
  jmp    L50
L191:
  call   <log10@plt>
  movss  D95(%rip),%xmm3
  pxor   %xmm1,%xmm1
  movss  D166(%rip),%xmm2
  jmp    L77
L88:
  call   <log@plt>
  movss  D95(%rip),%xmm3
  pxor   %xmm1,%xmm1
  movss  D166(%rip),%xmm2
  jmp    L58
L168:
  call   <exp@plt>
  mov    D73(%rip),%rax
  movss  D95(%rip),%xmm3
  movss  D166(%rip),%xmm2
  movq   %rax,%xmm1
  jmp    L146
```

tool_calls: name: read_data
arguments: data_label: D166
type_infered: byte[4]
name: read_data
arguments: data_label: D95
type_infered: byte[4]
name: read_data
arguments: data_label: D200
type_infered: byte[8]
name: read_data
arguments: data_label: D33
type_infered: byte[8]
name: read_data
arguments: data_label: D248
type_infered: string
name: read_data
arguments: data_label: D159
type_infered: string
name: read_data
arguments: data_label: D106
type_infered: byte[4]
name: read_data
arguments: data_label: D23
type_infered: string
name: read_data
arguments: data_label: D260
type_infered: string
name: read_data
arguments: data_label: D261
type_infered: string
name: read_data
arguments: data_label: D73
type_infered: byte[8]
name: read_data
arguments: data_label: D380
type_infered: string
name: read_data
arguments: data_label: D130
type_infered: string
name: read_data
arguments: data_label: D341
type_infered: string
name: read_data
arguments: data_label: D304
type_infered: string
name: read_data
arguments: data_label: D81
type_infered: string
name: read_data
arguments: data_label: D109
type_infered: string

tool: {"D166": [0x00,0x00,0x20,0x41]}

tool: {"D95": [0x6d,0xe7,0xfb,0x3d]}

tool: {"D200": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D33": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xbf]}

tool: D248: acos %d


tool: D159: atan %d


tool: {"D106": [0x19,0x04,0x9e,0x3f]}

tool: D23: atan2 %d


tool: D260: sqrt %d


tool: D261: pow %d


tool: {"D73": [0x00,0x00,0x00,0x00,0x00,0x28,0x86,0x40]}

tool: D380: exp %d


tool: D130: sin %d


tool: D341: cos %d


tool: D304: log %d


tool: D81: log10 %d


tool: D109: overall %d


assistant: ```c
void main() {
  int i;
  clock_t time, overall = 0;
  double t;
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = acos(t);
  }
  time = clock() - time;
  overall += time;
  printf("acos %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = atan(t);
  }
  time = clock() - time;
  overall += time;
  printf("atan %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = atan2(t, 1.2345f);
  }
  time = clock() - time;
  overall += time;
  printf("atan2 %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = sqrt(t);
  }
  time = clock() - time;
  overall += time;
  printf("sqrt %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = pow(t, t);
  }
  time = clock() - time;
  overall += time;
  printf("pow %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = exp(t);
  }
  time = clock() - time;
  overall += time;
  printf("exp %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = sin(t);
  }
  time = clock() - time;
  overall += time;
  printf("sin %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = cos(t);
  }
  time = clock() - time;
  overall += time;
  printf("cos %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = log(t);
  }
  time = clock() - time;
  overall += time;
  printf("log %d\n", time);
  time = clock();
  for (i = 0; i < 1000000; i++) {
    t = i * 10.f + 0.123f;
    t = log10(t);
  }
  time = clock() - time;
  overall += time;
  printf("log10 %d\n", time);
  printf("overall %d\n", overall);
}
```