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

```asm
<set_bnd_box>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%r8d
  mov    %rdx,%rax
  test   %edi,%edi
  jle    L27
  mov    %esi,%r11d
  lea    0x2(%rdi),%r9d
  imul   %r9d,%edi
  mov    %edi,-0x8(%rsp)
  lea    0x3(%r8),%esi
  lea    (%r8,%r9,1),%edi
  lea    -0x1(%r8),%ecx
  mov    %ecx,-0x4(%rsp)
  lea    0x1(%r8),%r13d
  mov    $0x1,%ecx
  lea    0x1(%r8),%r14d
  movss  D15(%rip),%xmm2
  mov    %r9d,%r15d
  movaps %xmm2,%xmm1
  jmp    L19
L59:
  mov    %r15d,%edx
  lea    -0x1(%rsi),%ebx
  movslq %ebx,%rbx
  movslq %esi,%rbp
  movss  (%rax,%rbp,4),%xmm0
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax,%rbx,4)
  mov    %r14d,%ebx
  lea    (%r8,%rsi,1),%ebp
  movslq %ebp,%rbp
  mov    -0x4(%rsp),%r12d
  add    %esi,%r12d
  movslq %r12d,%r12
  movss  (%rax,%r12,4),%xmm0
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax,%rbp,4)
L51:
  lea    (%r10,%rdx,1),%ebp
  movslq %ebp,%rbp
  movss  (%rax,%rbp,4),%xmm0
  movss  %xmm0,(%rax,%rcx,4)
  mov    %r8d,%ebp
  imul   %edx,%ebp
  add    %r10d,%ebp
  movslq %ebp,%rbp
  movss  (%rax,%rbp,4),%xmm0
L55:
  imul   %ebx,%edx
  add    %r10d,%edx
  movslq %edx,%rdx
  movss  %xmm0,(%rax,%rdx,4)
  add    $0x1,%rcx
  add    %r9d,%esi
  add    %r9d,%edi
  cmp    %r13,%rcx
  je     L27
L19:
  mov    %ecx,%edx
  mov    %ecx,%r10d
  cmp    $0x1,%r11d
  je     L59
  movslq %esi,%rbx
  movss  (%rax,%rbx,4),%xmm0
  mov    %edi,%ebx
  sub    %r8d,%ebx
  movslq %ebx,%rbx
  movss  %xmm0,(%rax,%rbx,4)
  movslq %edi,%rbx
  movss  (%rax,%rbx,4),%xmm0
  mov    %r14d,%ebx
  lea    0x1(%rdi),%ebp
  movslq %ebp,%rbp
  movss  %xmm0,(%rax,%rbp,4)
  cmp    $0x2,%r11d
  jne    L48
  lea    (%r9,%rcx,1),%ebp
  movslq %ebp,%rbp
  movss  (%rax,%rbp,4),%xmm0
  xorps  %xmm2,%xmm0
  movss  %xmm0,(%rax,%rcx,4)
  add    -0x8(%rsp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  xorps  %xmm2,%xmm0
  mov    %r9d,%edx
  jmp    L55
L48:
  mov    %r9d,%edx
  jmp    L51
L27:
  lea    0x2(%r8),%esi
  movslq %esi,%r9
  movss  (%rax,%r9,4),%xmm0
  addss  0x4(%rax),%xmm0
  movss  D1(%rip),%xmm1
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  lea    0x1(%r8),%ecx
  mov    %esi,%edx
  imul   %ecx,%edx
  mov    %edx,%edi
  sub    %esi,%edi
  movslq %edx,%r11
  lea    0x1(%rdx),%r10d
  movslq %r10d,%r10
  movslq %edi,%rbx
  movss  (%rax,%r10,4),%xmm0
  addss  (%rax,%rbx,4),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rax,%r11,4)
  add    %ecx,%esi
  movslq %esi,%rsi
  movss  (%rax,%rsi,4),%xmm0
  addss  -0x8(%rax,%r9,4),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax,%r9,4)
  lea    (%rcx,%rdx,1),%esi
  movslq %esi,%rsi
  add    %r8d,%edx
  movslq %edx,%rdx
  add    %edi,%ecx
  movslq %ecx,%rcx
  movss  (%rax,%rdx,4),%xmm0
  addss  (%rax,%rcx,4),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,(%rax,%rsi,4)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: data_label: D15
type: byte[4]
name: parse_data
arguments: data_label: D1
type: byte[4]

tool: {"D15": [0x00,0x00,0x00,0x80]}

tool: {"D1": [0x00,0x00,0x00,0x3f]}

assistant: ```c
void set_bnd_box(int N, int b, float *x) {
  int i;
  for (i = 1; i <= N; i++) {
    x[((0) + (N + 2) * (i))] = b == 1 ? -x[((1) + (N + 2) * (i))] : x[((1) + (N + 2) * (i))];
    x[((N + 1) + (N + 2) * (i))] = b == 1 ? -x[((N) + (N + 2) * (i))] : x[((N) + (N + 2) * (i))];
    x[((i) + (N + 2) * (0))] = b == 2 ? -x[((i) + (N + 2) * (1))] : x[((i) + (N + 2) * (1))];
    x[((i) + (N + 2) * (N + 1))] = b == 2 ? -x[((i) + (N + 2) * (N))] : x[((i) + (N + 2) * (N))];
  }
  x[((0) + (N + 2) * (0))] = 0.5f * (x[((1) + (N + 2) * (0))] + x[((0) + (N + 2) * (1))]);
  x[((0) + (N + 2) * (N + 1))] = 0.5f * (x[((1) + (N + 2) * (N + 1))] + x[((0) + (N + 2) * (N))]);
  x[((N + 1) + (N + 2) * (0))] = 0.5f * (x[((N) + (N + 2) * (0))] + x[((N + 1) + (N + 2) * (1))]);
  x[((N + 1) + (N + 2) * (N + 1))] = 0.5f * (x[((N) + (N + 2) * (N + 1))] + x[((N + 1) + (N + 2) * (N))]);
}
```