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

```asm
<kernel>:
  endbr64
  push   %r15
  mov    %rdi,%r9
  mov    %rsi,%r11
  lea    0x4(%rdi),%r15
  push   %r14
  xor    %r14d,%r14d
  push   %r13
  xor    %r13d,%r13d
  push   %r12
  lea    0x1000(%rsi),%r12
  push   %rbp
  push   %rbx
L19:
  lea    0x1f(%r14),%eax
  add    $0x1,%r14d
  mov    %r11,%rdx
  mov    %r15,%rdi
  mov    %r14d,%r10d
  and    $0x1f,%eax
  mov    $0x80,%r8d
  sub    %r13,%rdx
  and    $0x1f,%r10d
  shl    $0xc,%rax
  sub    %r13,%rdi
  sub    %r13,%r8
  shl    $0xc,%r10
  lea    0x4(%r9,%rax,1),%rsi
  add    %r13,%rax
  lea    0x4(%r9,%r10,1),%rcx
  add    %r13,%r10
  lea    (%r9,%r10,1),%rbx
  lea    (%r9,%rax,1),%r10
  jmp    L34
  nopl   0x0(%rax)
L51:
  mov    %rdx,%rax
  sub    %rdi,%rax
  cmp    $0x8,%rax
  jbe    L55
  movups -0x4(%rcx),%xmm1
  movups -0x4(%rdi),%xmm0
  movups -0x4(%rsi),%xmm2
  addps  %xmm1,%xmm0
  addps  %xmm2,%xmm0
  movups %xmm0,(%rdx)
  movups 0xc(%rcx),%xmm3
  movups 0xc(%rdi),%xmm0
  movups 0xc(%rsi),%xmm4
  addps  %xmm3,%xmm0
  addps  %xmm4,%xmm0
  movups %xmm0,0x10(%rdx)
  movups 0x1c(%rcx),%xmm5
  movups 0x1c(%rdi),%xmm0
  movups 0x1c(%rsi),%xmm6
  addps  %xmm5,%xmm0
  addps  %xmm6,%xmm0
  movups %xmm0,0x20(%rdx)
  movups 0x2c(%rcx),%xmm7
  movups 0x2c(%rdi),%xmm0
  movups 0x2c(%rsi),%xmm1
  addps  %xmm7,%xmm0
  addps  %xmm1,%xmm0
  movups %xmm0,0x30(%rdx)
  movups 0x3c(%rcx),%xmm2
  movups 0x3c(%rdi),%xmm0
  movups 0x3c(%rsi),%xmm3
  addps  %xmm2,%xmm0
  addps  %xmm3,%xmm0
  movups %xmm0,0x40(%rdx)
  movups 0x4c(%rdi),%xmm0
  movups 0x4c(%rcx),%xmm4
  movups 0x4c(%rsi),%xmm5
  addps  %xmm4,%xmm0
  addps  %xmm5,%xmm0
  movups %xmm0,0x50(%rdx)
  movups 0x5c(%rdi),%xmm0
  movups 0x5c(%rcx),%xmm6
  movups 0x5c(%rsi),%xmm7
  addps  %xmm6,%xmm0
  addps  %xmm7,%xmm0
  movups %xmm0,0x60(%rdx)
  movups 0x6c(%rdi),%xmm0
  movups 0x6c(%rcx),%xmm1
  movups 0x6c(%rsi),%xmm2
  addps  %xmm1,%xmm0
  addps  %xmm2,%xmm0
  movups %xmm0,0x70(%rdx)
L0:
  sub    $0xffffffffffffff80,%rdx
  sub    $0xffffffffffffff80,%rsi
  sub    $0xffffffffffffff80,%rcx
  sub    $0xffffffffffffff80,%rdi
  sub    $0xffffffffffffff80,%r8
  cmp    %r12,%rdx
  je     L48
L34:
  mov    %rdx,%rax
  sub    %rcx,%rax
  cmp    $0x8,%rax
  mov    %rdx,%rax
  seta   %bpl
  sub    %rsi,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%bpl
  jne    L51
L55:
  lea    -0x80(%r8),%rax
  nopl   0x0(%rax,%rax,1)
L54:
  movss  (%rbx,%rax,1),%xmm0
  addss  (%r9,%rax,1),%xmm0
  addss  (%r10,%rax,1),%xmm0
  movss  %xmm0,(%r11,%rax,1)
  add    $0x4,%rax
  cmp    %rax,%r8
  jne    L54
  jmp    L0
L48:
  lea    0x1000(%rdx),%r12
  sub    $0x1000,%r13
  cmp    $0x20,%r14d
  jne    L19
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void kernel(float *g1, float *g2) {
  int x, y, z;
  for (z = 0; z < 32; ++z) {
    int zp = ((z - 1) + 32) % 32;
    int zn = (z + 1) % 32;
    for (y = 0; y < 32; ++y) {
      int yp = ((y - 1) + 32) % 32;
      int yn = (y + 1) % 32;
      for (x = 0; x < 32; ++x) {
        int xp = ((x - 1) + 32) % 32;
        int xn = (x + 1) % 32;
        float v = g1[((x) + (y)*32 + (z)*32 * 32)] + g1[((x) + (y)*32 + (zn)*32 * 32)] + g1[((x) + (y)*32 + (zp)*32 * 32)];
        g2[((x) + (y)*32 + (z)*32 * 32)] = v;
      }
    }
  }
  return;
}
```