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

```asm
<addHighbandEnergies>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,-0x30(%rsp)
  mov    %rdx,-0x18(%rsp)
  test   %r8d,%r8d
  jle    L2
  mov    %ecx,%r12d
  mov    %r8d,%r13d
  lea    -0x1(%rcx),%r14d
  test   %ecx,%ecx
  jle    L111
  lea    (%r9,%r8,2),%eax
  mov    %rdi,%r10
  mov    %r9d,%ebx
  mov    %r9d,%edi
  mov    %eax,-0x1c(%rsp)
  lea    -0x1(%rcx),%eax
  xor    %r15d,%r15d
  xor    %r9d,%r9d
  mov    %rax,-0x28(%rsp)
  mov    %rax,%r14
  mov    -0x30(%rsp),%rax
  mov    %rax,-0x38(%rsp)
  add    $0x4,%rax
  mov    %rax,-0x10(%rsp)
L122:
  mov    -0x28(%rsp),%rax
  mov    -0x10(%rsp),%rsi
  mov    -0x18(%rsp),%r11
  add    %r15,%rax
  lea    (%rsi,%rax,4),%rbp
  mov    -0x38(%rsp),%rsi
  nopl   0x0(%rax,%rax,1)
L114:
  movl   $0x0,(%rsi)
  movzbl (%r11),%edx
  movzbl 0x1(%r11),%eax
  cmp    %al,%dl
  jae    L102
  test   %ebx,%ebx
  jle    L102
  sub    $0x1,%eax
  movzbl %dl,%r8d
  sub    %edx,%eax
  lea    0x0(,%r8,4),%rcx
  lea    0x1(%r8,%rax,1),%r8
  shl    $0x2,%r8
  nopl   0x0(%rax)
L180:
  movss  (%rsi),%xmm0
  mov    %r9d,%eax
  nopw   0x0(%rax,%rax,1)
L216:
  mov    %eax,%edx
  add    $0x1,%eax
  sar    %edx
  movslq %edx,%rdx
  mov    (%r10,%rdx,8),%rdx
  addss  (%rdx,%rcx,1),%xmm0
  movss  %xmm0,(%rsi)
  cmp    %edi,%eax
  jne    L216
  add    $0x4,%rcx
  cmp    %r8,%rcx
  jne    L180
L102:
  add    $0x4,%rsi
  add    $0x1,%r11
  cmp    %rbp,%rsi
  jne    L114
  addq   $0x6c,-0x38(%rsp)
  add    $0x2,%r9d
  add    $0x2,%edi
  add    $0x1b,%r15
  cmp    -0x1c(%rsp),%edi
  jne    L122
L111:
  lea    -0x1(%r13),%edx
  mov    -0x30(%rsp),%rax
  mov    %r12d,%edi
  movss  D10(%rip),%xmm0
  lea    (%rdx,%rdx,2),%rdx
  and    $0xfffffffc,%edi
  lea    (%rdx,%rdx,8),%rdx
  lea    0x6c(%rax,%rdx,4),%r8
  mov    %r12d,%edx
  shr    $0x2,%edx
L99:
  test   %r12d,%r12d
  jle    L159
  cmp    $0x2,%r14d
  jbe    L146
  movups (%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x1,%edx
  jbe    L225
  movups 0x10(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x2,%edx
  je     L225
  movups 0x20(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x3,%edx
  je     L225
  movups 0x30(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x4,%edx
  je     L225
  movups 0x40(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x5,%edx
  je     L225
  movups 0x50(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x6,%edx
  je     L225
  movups 0x60(%rax),%xmm1
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm2,%xmm0
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    $0x7,%edx
  je     L225
  xor    %ecx,%ecx
L59:
  mov    %rcx,%rsi
  add    $0x1,%rcx
  shl    $0x4,%rsi
  movups 0x70(%rax,%rsi,1),%xmm1
  lea    0x7(%rcx),%esi
  addss  %xmm1,%xmm0
  movaps %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm2
  addss  %xmm0,%xmm2
  movaps %xmm1,%xmm0
  unpckhps %xmm1,%xmm0
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cmp    %edx,%esi
  jb     L59
L225:
  mov    %edi,%ecx
  cmp    %r12d,%edi
  je     L159
L215:
  movslq %ecx,%rsi
  lea    0x1(%rcx),%r9d
  lea    (%rax,%rsi,4),%rsi
  addss  (%rsi),%xmm0
  cmp    %r12d,%r9d
  jge    L159
  add    $0x2,%ecx
  addss  0x4(%rsi),%xmm0
  cmp    %r12d,%ecx
  jge    L159
  addss  0x8(%rsi),%xmm0
L159:
  add    $0x6c,%rax
  cmp    %r8,%rax
  jne    L99
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L146:
  xor    %ecx,%ecx
  jmp    L215
L2:
  pop    %rbx
  movss  D10(%rip),%xmm0
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: data_label: D10
type: f32

tool: D10: 1

assistant: ```c
float addHighbandEnergies(float **Energies, float EnergiesM[16][27], unsigned char *freqBandTable, int nSfb, int sbrSlots, int timeStep) {
  int i, j, k, slotIn, slotOut;
  int li, ui;
  float nrgTotal = 1.0;
  ;
  ;
  ;
  for (slotOut = 0; slotOut < sbrSlots; slotOut++) {
    ;
    slotIn = 2 * slotOut;
    ;
    ;
    for (j = 0; j < nSfb; j++) {
      ;
      EnergiesM[slotOut][j] = 0;
      ;
      li = freqBandTable[j];
      ui = freqBandTable[j + 1];
      ;
      for (k = li; k < ui; k++) {
        ;
        ;
        for (i = 0; i < timeStep; i++) {
          ;
          ;
          EnergiesM[slotOut][j] += Energies[(slotIn + i) / 2][k];
        }
      }
    }
  };
  for (slotOut = 0; slotOut < sbrSlots; slotOut++) {
    ;
    ;
    for (j = 0; j < nSfb; j++) {
      ;
      nrgTotal += EnergiesM[slotOut][j];
    }
  };
  return (nrgTotal);
}
```