user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<ssim_end4>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x24(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L0
L7:
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    0xc(%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    0xc(%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    0xc(%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    0xc(%rax),%eax
  lea    (%rdx,%rax,1),%ecx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    0x8(%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  mov    0x8(%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rsi
  mov    -0x20(%rbp),%rax
  add    %rsi,%rax
  mov    0x8(%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rsi
  mov    -0x20(%rbp),%rax
  add    %rsi,%rax
  mov    0x8(%rax),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  mov    0x4(%rax),%esi
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rdi
  mov    -0x18(%rbp),%rax
  add    %rdi,%rax
  mov    0x4(%rax),%eax
  add    %eax,%esi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rdi
  mov    -0x20(%rbp),%rax
  add    %rdi,%rax
  mov    0x4(%rax),%eax
  add    %eax,%esi
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%rdi
  mov    -0x20(%rbp),%rax
  add    %rdi,%rax
  mov    0x4(%rax),%eax
  add    %eax,%esi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%rdi
  mov    -0x18(%rbp),%rax
  add    %rdi,%rax
  mov    (%rax),%edi
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r8
  mov    -0x18(%rbp),%rax
  add    %r8,%rax
  mov    (%rax),%eax
  add    %eax,%edi
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x4,%rax
  mov    %rax,%r8
  mov    -0x20(%rbp),%rax
  add    %r8,%rax
  mov    (%rax),%eax
  add    %eax,%edi
  mov    -0x4(%rbp),%eax
  cltq
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r8
  mov    -0x20(%rbp),%rax
  add    %r8,%rax
  mov    (%rax),%eax
  add    %edi,%eax
  mov    %eax,%edi
  call   <ssim_end1@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %rax,%xmm0
  movss  -0x8(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x8(%rbp)
  addl   $0x1,-0x4(%rbp)
L0:
  mov    -0x4(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L7
  movss  -0x8(%rbp),%xmm0
  leave
  ret
```

assistant: ```c
float ssim_end4(int sum0[5][4], int sum1[5][4], int width) {
  float ssim = 0.0;
  for (int i = 0; i < width; i++)
    ssim += ssim_end1(sum0[i][0] + sum0[i + 1][0] + sum1[i][0] + sum1[i + 1][0], sum0[i][1] + sum0[i + 1][1] + sum1[i][1] + sum1[i + 1][1], sum0[i][2] + sum0[i + 1][2] + sum1[i][2] + sum1[i + 1][2], sum0[i][3] + sum0[i + 1][3] + sum1[i][3] + sum1[i + 1][3]);
  return ssim;
}
```