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

```asm
<set_gap_penalties>:
  endbr64
  mov    %edx,%r8d
  lea    0x1(%rsi),%edx
  movaps %xmm0,%xmm3
  mov    %ecx,%r9d
  mov    %edx,%ecx
  pxor   %xmm4,%xmm4
  pxor   %xmm7,%xmm7
  cvtss2sd %xmm3,%xmm3
  shl    $0x6,%ecx
  cvtsi2ss %r8d,%xmm7
  movslq %ecx,%rcx
  shl    $0x2,%rcx
  lea    (%rdi,%rcx,1),%rax
  movups (%rax),%xmm1
  movaps %xmm7,%xmm8
  shufps $0xe0,%xmm8,%xmm8
  movaps %xmm1,%xmm0
  movaps %xmm1,%xmm2
  addss  %xmm4,%xmm0
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x10(%rax),%xmm1
  movaps %xmm1,%xmm2
  addss  %xmm1,%xmm0
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x20(%rax),%xmm1
  movaps %xmm1,%xmm2
  addss  %xmm1,%xmm0
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  movups 0x30(%rax),%xmm1
  movaps %xmm1,%xmm2
  addss  %xmm1,%xmm0
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  movups 0x40(%rax),%xmm2
  movaps %xmm2,%xmm5
  addss  %xmm1,%xmm0
  movaps %xmm2,%xmm1
  unpckhps %xmm2,%xmm5
  addss  %xmm0,%xmm1
  movaps %xmm2,%xmm0
  shufps $0x55,%xmm2,%xmm0
  shufps $0xff,%xmm2,%xmm2
  addss  %xmm0,%xmm1
  movq   0x50(%rdi,%rcx,1),%xmm0
  addss  %xmm5,%xmm1
  movq   0xdc(%rax),%xmm5
  mulps  %xmm8,%xmm5
  addss  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2ss %r9d,%xmm2
  addss  %xmm0,%xmm1
  shufps $0xe5,%xmm0,%xmm0
  cvtss2sd %xmm2,%xmm2
  addss  %xmm1,%xmm0
  addss  0x58(%rax),%xmm0
  movsd  D7(%rip),%xmm1
  cvtss2sd %xmm0,%xmm0
  subsd  %xmm1,%xmm0
  divsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm0,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  mulps  %xmm6,%xmm5
  movlps %xmm5,0x6c(%rax)
  movss  0xe4(%rax),%xmm5
  mulss  %xmm7,%xmm5
  mulss  %xmm0,%xmm5
  movss  %xmm5,0x74(%rax)
  test   %edx,%edx
  je     L14
  mov    %edx,%ecx
  mov    %rax,%rdx
  shl    $0x8,%rcx
  sub    %rcx,%rdx
  nop
L5:
  movups -0x100(%rax),%xmm0
  sub    $0x100,%rax
  movss  0x50(%rax),%xmm9
  movaps %xmm0,%xmm6
  movaps %xmm0,%xmm5
  addss  %xmm4,%xmm6
  shufps $0x55,%xmm0,%xmm5
  addss  %xmm5,%xmm6
  movaps %xmm0,%xmm5
  unpckhps %xmm0,%xmm5
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm6,%xmm5
  addss  %xmm0,%xmm5
  movups 0x10(%rax),%xmm0
  movaps %xmm0,%xmm6
  addss  %xmm5,%xmm6
  movaps %xmm0,%xmm5
  shufps $0x55,%xmm0,%xmm5
  addss  %xmm5,%xmm6
  movaps %xmm0,%xmm5
  unpckhps %xmm0,%xmm5
  shufps $0xff,%xmm0,%xmm0
  addss  %xmm5,%xmm6
  movups 0x20(%rax),%xmm5
  addss  %xmm0,%xmm6
  movaps %xmm5,%xmm0
  shufps $0x55,%xmm5,%xmm0
  addss  %xmm5,%xmm6
  addss  %xmm6,%xmm0
  movaps %xmm5,%xmm6
  unpckhps %xmm5,%xmm6
  shufps $0xff,%xmm5,%xmm5
  addss  %xmm6,%xmm0
  addss  %xmm5,%xmm0
  movups 0x30(%rax),%xmm5
  movaps %xmm5,%xmm6
  addss  %xmm5,%xmm0
  shufps $0x55,%xmm5,%xmm6
  addss  %xmm6,%xmm0
  movaps %xmm5,%xmm6
  unpckhps %xmm5,%xmm6
  shufps $0xff,%xmm5,%xmm5
  addss  %xmm6,%xmm0
  addss  %xmm5,%xmm0
  movups 0x40(%rax),%xmm5
  movaps %xmm5,%xmm6
  addss  %xmm5,%xmm0
  shufps $0x55,%xmm5,%xmm6
  addss  %xmm0,%xmm6
  movaps %xmm5,%xmm0
  unpckhps %xmm5,%xmm0
  shufps $0xff,%xmm5,%xmm5
  addss  %xmm6,%xmm0
  addss  %xmm0,%xmm5
  movss  0x54(%rax),%xmm0
  addss  %xmm9,%xmm5
  addss  %xmm5,%xmm0
  addss  0x58(%rax),%xmm0
  movq   0xdc(%rax),%xmm5
  mulps  %xmm8,%xmm5
  cvtss2sd %xmm0,%xmm0
  subsd  %xmm1,%xmm0
  divsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movaps %xmm0,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  mulps  %xmm6,%xmm5
  movlps %xmm5,0x6c(%rax)
  movss  0xe4(%rax),%xmm5
  mulss  %xmm7,%xmm5
  mulss  %xmm0,%xmm5
  movss  %xmm5,0x74(%rax)
  cmp    %rdx,%rax
  jne    L5
L14:
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D7
data_type: f64

tool: D7: 1

assistant: ```c
void set_gap_penalties(float *prof, int len, int nsip, float strength, int nsip_c) {
  int i;
  int j;
  float res = (float)nsip_c;
  float local_res = 0;
  float w = 0.0;
  prof += (64 * (len + 1));
  local_res = 0;
  for (j = 0; j < 23; j++) {
    local_res += prof[j];
  }
  w = 1.0 + (((local_res - 1.0) / res) * strength);
  prof[27] = prof[55] * nsip * w;
  prof[28] = prof[56] * nsip * w;
  prof[29] = prof[57] * nsip * w;
  i = len + 1;
  while (i--) {
    prof -= 64;
    local_res = 0;
    for (j = 0; j < 23; j++) {
      local_res += prof[j];
    }
    w = 1.0 + (((local_res - 1.0) / res) * strength);
    prof[27] = prof[55] * nsip * w;
    prof[28] = prof[56] * nsip * w;
    prof[29] = prof[57] * nsip * w;
  }
}
```