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

```asm
<intCompSimp>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  movsd  %xmm0,-0x20(%rbp)
  mov    %esi,-0x24(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <f@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  nop
  cmpl   $0x1,-0x24(%rbp)
  jne    L89
  movl   $0x1,-0xc(%rbp)
  jmp    L115
L81:
  mov    -0xc(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L29
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <f@plt>
  addsd  %xmm0,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L125
L29:
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <f@plt>
  movsd  D26(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L125:
  addl   $0x1,-0xc(%rbp)
L115:
  cmpl   $0x63,-0xc(%rbp)
  jle    L81
  mov    -0x18(%rbp),%rax
  add    $0x320,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <f@plt>
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movsd  D24(%rip),%xmm1
  divsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  jmp    L80
L121:
  movl   $0x1,-0xc(%rbp)
  jmp    L25
L8:
  mov    -0xc(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L63
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <g@plt>
  add    %eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  jmp    L86
L63:
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <g@plt>
  shl    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
L86:
  addl   $0x1,-0xc(%rbp)
L25:
  cmpl   $0x63,-0xc(%rbp)
  jle    L8
  mov    -0x18(%rbp),%rax
  add    $0x320,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <f@plt>
  movsd  -0x8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x20(%rbp),%xmm0
  movsd  D24(%rip),%xmm1
  divsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  jmp    L80
L89:
  nop
  cmpl   $0x2,-0x24(%rbp)
  je     L121
  jmp    L124
L80:
  movq   %xmm0,%rax
L124:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D26
type_infered: f32[2]
name: unpack_data
arguments: label: D24
type_infered: f32[2]

tool: {"D26": [0.0,2.25]}

tool: {"D24": [0.0,2.125]}

assistant: ```c
double intCompSimp(double *X, double h, int c) {
  double integral = f(X[0]);
  int i;
  while (c == 1) {
    for (i = 1; i < 100; i++) {
      if ((i % 2) == 0)
        integral += 2 * f(X[i]);
      else
        (integral += 4 * f(X[i]));
    }
    integral += f(X[100]);
    return (integral * (h / 3));
  }
  while (c == 2) {
    for (i = 1; i < 100; i++) {
      if ((i % 2) == 0)
        integral += 2 * g(X[i]);
      else
        (integral += 4 * g(X[i]));
    }
    integral += f(X[100]);
    return (integral * (h / 3));
  }
}
```