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

```asm
<initialize>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x4b0,%rsp
  mov    %rdi,-0x478(%rbp)
  mov    %esi,-0x47c(%rbp)
  mov    %rdx,-0x488(%rbp)
  mov    %rcx,-0x490(%rbp)
  movss  %xmm0,-0x480(%rbp)
  mov    %r8,-0x498(%rbp)
  mov    %r9,-0x4a0(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x4a8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1,-0x460(%rbp)
  jmp    L185
L258:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L185:
  cmpl   $0xc,-0x460(%rbp)
  jle    L258
  movl   $0x0,-0x464(%rbp)
  jmp    L39
L119:
  mov    -0x464(%rbp),%eax
  cltq
  movss  D3(%rip),%xmm0
  movss  %xmm0,-0x410(%rbp,%rax,4)
  movl   $0x0,-0x460(%rbp)
  jmp    L228
L239:
  mov    -0x464(%rbp),%eax
  cltq
  movss  -0x410(%rbp,%rax,4),%xmm1
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x4a8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x460(%rbp),%eax
  cltq
  movss  (%rdx,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x464(%rbp),%eax
  cltq
  movss  %xmm0,-0x410(%rbp,%rax,4)
  addl   $0x1,-0x460(%rbp)
L228:
  cmpl   $0xc,-0x460(%rbp)
  jle    L239
  mov    -0x464(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x4a0(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm3
  movss  %xmm3,-0x4ac(%rbp)
  mov    -0x464(%rbp),%eax
  cltq
  mov    -0x410(%rbp,%rax,4),%eax
  movd   %eax,%xmm0
  call   <sqrt@plt>
  mulss  -0x4ac(%rbp),%xmm0
  mov    -0x464(%rbp),%eax
  cltq
  movss  %xmm0,-0x410(%rbp,%rax,4)
  addl   $0x1,-0x464(%rbp)
L39:
  mov    -0x464(%rbp),%eax
  cmp    0x18(%rbp),%eax
  jl     L119
  movl   $0x0,-0x460(%rbp)
  jmp    L140
L155:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x460(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x450(%rbp,%rax,4)
  movl   $0x0,-0x464(%rbp)
  jmp    L37
L107:
  mov    -0x460(%rbp),%eax
  cltq
  movss  -0x450(%rbp,%rax,4),%xmm1
  mov    -0x464(%rbp),%eax
  cltq
  movss  -0x410(%rbp,%rax,4),%xmm2
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x498(%rbp),%rax
  add    %rax,%rdx
  mov    -0x460(%rbp),%eax
  cltq
  movss  (%rdx,%rax,4),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  mov    -0x460(%rbp),%eax
  cltq
  movss  %xmm0,-0x450(%rbp,%rax,4)
  addl   $0x1,-0x464(%rbp)
L37:
  mov    -0x464(%rbp),%eax
  cmp    0x18(%rbp),%eax
  jl     L107
  addl   $0x1,-0x460(%rbp)
L140:
  cmpl   $0xc,-0x460(%rbp)
  jle    L155
  movl   $0x0,-0x464(%rbp)
  jmp    L27
L109:
  movl   $0x0,-0x460(%rbp)
  jmp    L48
L186:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rax,%rdx
  mov    -0x460(%rbp),%eax
  cltq
  movss  (%rdx,%rax,4),%xmm0
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L48:
  cmpl   $0xc,-0x460(%rbp)
  jle    L186
  addl   $0x1,-0x464(%rbp)
L27:
  mov    -0x464(%rbp),%eax
  cmp    -0x47c(%rbp),%eax
  jl     L109
  movl   $0x0,-0x460(%rbp)
  jmp    L176
L7:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x47c(%rbp),%xmm1
  divss  %xmm1,%xmm0
  mov    -0x460(%rbp),%eax
  cltq
  movss  -0x450(%rbp,%rax,4),%xmm1
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x490(%rbp),%rax
  add    %rdx,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L176:
  cmpl   $0xc,-0x460(%rbp)
  jle    L7
  mov    -0x478(%rbp),%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x46c(%rbp)
  movl   $0x0,-0x464(%rbp)
  jmp    L98
L21:
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movss  -0x46c(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L159
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  %xmm0,-0x46c(%rbp)
L159:
  addl   $0x1,-0x464(%rbp)
L98:
  mov    -0x464(%rbp),%eax
  cmp    -0x47c(%rbp),%eax
  jl     L21
  movss  -0x480(%rbp),%xmm0
  addss  -0x46c(%rbp),%xmm0
  movss  %xmm0,-0x454(%rbp)
  movl   $0x0,-0x45c(%rbp)
  movl   $0x0,-0x458(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x468(%rbp)
  movl   $0x0,-0x460(%rbp)
  jmp    L298
L254:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x488(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L298:
  cmpl   $0xc,-0x460(%rbp)
  jle    L254
  movl   $0x0,-0x464(%rbp)
  jmp    L124
L116:
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  movss  -0x454(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L135
  addl   $0x1,-0x45c(%rbp)
  movl   $0x0,-0x460(%rbp)
  jmp    L93
L76:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x488(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rax,%rdx
  mov    -0x460(%rbp),%eax
  cltq
  movss  (%rdx,%rax,4),%xmm0
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x488(%rbp),%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L93:
  cmpl   $0xc,-0x460(%rbp)
  jle    L76
  jmp    L34
L135:
  addl   $0x1,-0x458(%rbp)
  mov    -0x464(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x478(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  -0x468(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x468(%rbp)
L34:
  addl   $0x1,-0x464(%rbp)
L124:
  mov    -0x464(%rbp),%eax
  cmp    -0x47c(%rbp),%eax
  jl     L116
  movl   $0x0,-0x460(%rbp)
  jmp    L217
L13:
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x488(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x45c(%rbp),%xmm1
  mov    -0x460(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x488(%rbp),%rax
  add    %rdx,%rax
  divss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0x460(%rbp)
L217:
  cmpl   $0xc,-0x460(%rbp)
  jle    L13
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x458(%rbp),%xmm1
  movss  -0x468(%rbp),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x468(%rbp)
  movss  -0x468(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L123
  call   <__stack_chk_fail@plt>
L123:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D3
type_infered: f32

tool: D3: 1

assistant: ```c
float initialize(float data[][12 + 1], int num_frames, float *noise, float tilt[], float speech_threshold, float codebook[][12 + 1], float *prob, float var[][12 + 1], int ncodes) {
  float noise_ceiling, min, speech_power, codemean[12 + 1], localprob[256];
  int i, j, noise_frames, speech_frames;
  for (j = 1; j <= 12; j++)
    tilt[j] = 0.0;
  for (i = 0; i < ncodes; ++i) {
    localprob[i] = 1.0;
    for (j = 0; j <= 12; ++j)
      localprob[i] *= var[i][j];
    localprob[i] = prob[i] * sqrt(localprob[i]);
  }
  for (j = 0; j <= 12; ++j) {
    tilt[j] = 0;
    codemean[j] = 0;
    for (i = 0; i < ncodes; ++i)
      codemean[j] += localprob[i] * codebook[i][j];
  }
  for (i = 0; i < num_frames; ++i)
    for (j = 0; j <= 12; ++j)
      tilt[j] += data[i][j];
  for (j = 0; j <= 12; ++j)
    tilt[j] = tilt[j] / (float)num_frames - codemean[j];
  min = data[0][0];
  for (i = 0; i < num_frames; i++)
    if (data[i][0] < min)
      min = data[i][0];
  noise_ceiling = speech_threshold + min;
  noise_frames = 0;
  speech_frames = 0;
  speech_power = 0;
  for (j = 0; j <= 12; j++)
    noise[j] = 0.0;
  for (i = 0; i < num_frames; i++) {
    if (data[i][0] < noise_ceiling) {
      noise_frames++;
      for (j = 0; j <= 12; j++)
        noise[j] += data[i][j];
    } else {
      speech_frames++;
      speech_power += data[i][0];
    }
  }
  for (j = 0; j <= 12; j++)
    noise[j] /= noise_frames;
  speech_power /= speech_frames;
  return (speech_power);
}
```