user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<reference>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,-0x10(%rsp)
  test   %edx,%edx
  jle    L149
  mov    %ecx,%r15d
  test   %ecx,%ecx
  jle    L149
  mov    %rdi,%rbp
  lea    -0x1(%rcx),%edi
  movl   $0x1,-0x4(%rsp)
  mov    %edx,%eax
  mov    %edi,-0x8(%rsp)
  mov    %r8,%r14
  mov    $0xffffffff,%r12d
  movl   $0x0,-0x18(%rsp)
  jmp    L230
L198:
  test   %cl,%cl
  jne    L8
  cmp    $0xffffffff,%r13d
  je     L159
  cmp    %r13d,%eax
  jle    L159
  movslq %r11d,%rcx
  movss  0x0(%rbp,%rcx,4),%xmm0
  mulss  0x14(%r14),%xmm0
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
L159:
  cmp    %eax,-0x18(%rsp)
  jge    L257
  movss  0x0(%rbp,%r10,4),%xmm0
  mulss  0x10(%r14),%xmm0
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
L257:
  cmp    %eax,-0x4(%rsp)
  jge    L197
  mov    -0x4(%rsp),%ebx
  mov    %r13d,%r12d
  lea    (%rbx,%rdi,1),%edx
  movslq %edx,%rdx
  movss  0x0(%rbp,%rdx,4),%xmm0
  mulss  0xc(%r14),%xmm0
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
L142:
  addl   $0x1,-0x18(%rsp)
  mov    -0x18(%rsp),%ebx
  add    $0x1,%r12d
  addl   $0x1,-0x4(%rsp)
  cmp    %ebx,%eax
  je     L149
L230:
  mov    -0x18(%rsp),%ebx
  mov    %eax,%edi
  mov    %r12d,%r11d
  mov    $0xffffffff,%edx
  neg    %edi
  mov    %r12d,%r13d
  mov    %ebx,%r8d
  sub    %eax,%ebx
  mov    %ebx,%r9d
  lea    (%r12,%rax,1),%ebx
  sub    $0x1,%r9d
  nopl   (%rax)
L193:
  cmp    %edx,%r15d
  movslq %r8d,%r10
  lea    0x2(%rdx),%r12d
  mov    %edi,-0x14(%rsp)
  setg   %cl
  cmp    $0xffffffff,%edx
  setne  %sil
  add    %eax,%edi
  and    %esi,%ecx
  mov    -0x10(%rsp),%rsi
  lea    (%rsi,%r10,4),%rsi
  cmp    %r12d,%r15d
  jle    L198
  test   %cl,%cl
  jne    L277
  cmp    $0xffffffff,%r13d
  je     L32
  cmp    %r13d,%eax
  jle    L32
  movslq %r11d,%rcx
  movss  0x0(%rbp,%rcx,4),%xmm0
  mulss  0x14(%r14),%xmm0
  movslq %ebx,%rcx
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%rcx,4),%xmm1
  mulss  0x8(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L32:
  lea    (%r8,%rax,1),%ecx
  cmp    %eax,-0x18(%rsp)
  jge    L140
  movss  0x0(%rbp,%r10,4),%xmm0
  mulss  0x10(%r14),%xmm0
  movslq %ecx,%r10
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%r10,4),%xmm1
  mulss  0x4(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L140:
  cmp    %eax,-0x4(%rsp)
  jge    L258
  add    $0x1,%r8d
  movslq %r8d,%r8
  movss  0x0(%rbp,%r8,4),%xmm0
  mulss  0xc(%r14),%xmm0
  addss  (%rsi),%xmm0
L180:
  lea    0x2(%rbx),%r8d
  movss  %xmm0,(%rsi)
  movslq %r8d,%r8
  movss  0x0(%rbp,%r8,4),%xmm1
  mulss  (%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L258:
  add    $0x1,%edx
  mov    %ecx,%r8d
  add    %eax,%r9d
  add    %eax,%r11d
  add    %eax,%ebx
  cmp    -0x8(%rsp),%edx
  jne    L193
  mov    %r13d,%r12d
  jmp    L142
  nopl   0x0(%rax,%rax,1)
L277:
  cmp    $0xffffffff,%r13d
  je     L202
  cmp    %r13d,%eax
  jle    L202
  movslq %r9d,%rcx
  movss  0x0(%rbp,%rcx,4),%xmm1
  mulss  0x20(%r14),%xmm1
  movslq %r11d,%rcx
  addss  (%rsi),%xmm1
  movss  %xmm1,(%rsi)
  movss  0x0(%rbp,%rcx,4),%xmm0
  mulss  0x14(%r14),%xmm0
  movslq %ebx,%rcx
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%rcx,4),%xmm1
  mulss  0x8(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L202:
  lea    (%r8,%rax,1),%ecx
  cmp    %eax,-0x18(%rsp)
  jge    L27
  lea    0x1(%r9),%r12d
  movslq %r12d,%r12
  movss  0x0(%rbp,%r12,4),%xmm1
  mulss  0x1c(%r14),%xmm1
  addss  (%rsi),%xmm1
  movss  %xmm1,(%rsi)
  movss  0x0(%rbp,%r10,4),%xmm0
  movslq %ecx,%r10
  mulss  0x10(%r14),%xmm0
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%r10,4),%xmm1
  mulss  0x4(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L27:
  cmp    %eax,-0x4(%rsp)
  jge    L258
  lea    0x2(%r9),%r10d
  add    $0x1,%r8d
  movslq %r10d,%r10
  movslq %r8d,%r8
  movss  0x0(%rbp,%r10,4),%xmm1
  mulss  0x18(%r14),%xmm1
  addss  (%rsi),%xmm1
  movss  %xmm1,(%rsi)
  movss  0x0(%rbp,%r8,4),%xmm0
  mulss  0xc(%r14),%xmm0
  addss  %xmm1,%xmm0
  jmp    L180
  xchg   %ax,%ax
L8:
  cmp    $0xffffffff,%r13d
  je     L217
  cmp    %r13d,%eax
  jle    L217
  movslq %r9d,%rcx
  movss  0x0(%rbp,%rcx,4),%xmm0
  mulss  0x20(%r14),%xmm0
  movslq %r11d,%rcx
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%rcx,4),%xmm1
  mulss  0x14(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L217:
  cmp    %eax,-0x18(%rsp)
  jge    L276
  lea    0x1(%r9),%ecx
  movslq %ecx,%rcx
  movss  0x0(%rbp,%rcx,4),%xmm0
  mulss  0x1c(%r14),%xmm0
  addss  (%rsi),%xmm0
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%r10,4),%xmm1
  mulss  0x10(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
L276:
  cmp    %eax,-0x4(%rsp)
  jge    L197
  mov    -0x4(%rsp),%ebx
  mov    -0x14(%rsp),%edx
  mov    %r13d,%r12d
  add    %ebx,%edx
  movslq %edx,%rdx
  movss  0x0(%rbp,%rdx,4),%xmm0
  mulss  0x18(%r14),%xmm0
  lea    (%rbx,%rdi,1),%edx
  addss  (%rsi),%xmm0
  movslq %edx,%rdx
  movss  %xmm0,(%rsi)
  movss  0x0(%rbp,%rdx,4),%xmm1
  mulss  0xc(%r14),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rsi)
  jmp    L142
L197:
  lea    (%r8,%rax,1),%ecx
  jmp    L258
L149:
  pop    %rbx
  mov    $0x1,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
int reference(float *in, float *out, int data_size_X, int data_size_Y, float *kernel) {
  int kern_cent_X = (3 - 1) / 2;
  int kern_cent_Y = (3 - 1) / 2;
  for (int x = 0; x < data_size_X; x++) {
    for (int y = 0; y < data_size_Y; y++) {
      for (int i = -kern_cent_X; i <= kern_cent_X; i++) {
        for (int j = -kern_cent_Y; j <= kern_cent_Y; j++) {
          if (x + i > -1 && x + i < data_size_X && y + j > -1 && y + j < data_size_Y) {
            out[x + y * data_size_X] += kernel[(kern_cent_X - i) + (kern_cent_Y - j) * 3] * in[(x + i) + (y + j) * data_size_X];
          }
        }
      }
    }
  }
  return 1;
}
```