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

```asm
<add_bias_and_relu_flatten>:
  endbr64
  mov    %rdi,%rax
  movslq %edx,%rdi
  test   %edi,%edi
  jle    L6
  cmp    $0x1,%ecx
  mov    %rax,%rdx
  lea    0x4(%rsi),%rcx
  je     L211
  sub    %rcx,%rdx
  cmp    $0x8,%rdx
  jbe    L66
  cmp    $0x1,%edi
  je     L66
  lea    -0x1(%rdi),%edx
  mov    %edi,%r8d
  cmp    $0x2,%edx
  jbe    L94
  mov    %edi,%ecx
  xor    %edx,%edx
  shr    $0x2,%ecx
  shl    $0x4,%rcx
  nopw   0x0(%rax,%rax,1)
L55:
  movups (%rax,%rdx,1),%xmm0
  movups (%rsi,%rdx,1),%xmm3
  addps  %xmm3,%xmm0
  movups %xmm0,(%rax,%rdx,1)
  add    $0x10,%rdx
  cmp    %rcx,%rdx
  jne    L55
  mov    %edi,%ecx
  and    $0xfffffffc,%ecx
  mov    %ecx,%edx
  cmp    %ecx,%edi
  je     L6
  sub    %ecx,%edi
  mov    %edi,%r8d
  cmp    $0x1,%edi
  je     L40
L97:
  lea    (%rax,%rcx,4),%rdi
  movq   (%rsi,%rcx,4),%xmm0
  mov    %r8d,%ecx
  movq   (%rdi),%xmm1
  and    $0xfffffffe,%ecx
  add    %ecx,%edx
  addps  %xmm1,%xmm0
  movlps %xmm0,(%rdi)
  cmp    %ecx,%r8d
  je     L6
L40:
  movslq %edx,%rdx
  lea    (%rax,%rdx,4),%rax
  movss  (%rax),%xmm0
  addss  (%rsi,%rdx,4),%xmm0
  movss  %xmm0,(%rax)
  ret
  nopw   0x0(%rax,%rax,1)
L211:
  sub    %rcx,%rdx
  cmp    $0x8,%rdx
  jbe    L41
  lea    -0x1(%rdi),%edx
  cmp    $0x2,%edx
  jbe    L41
  mov    %edi,%ecx
  xor    %edx,%edx
  pxor   %xmm2,%xmm2
  shr    $0x2,%ecx
  shl    $0x4,%rcx
L188:
  movups (%rax,%rdx,1),%xmm0
  movups (%rsi,%rdx,1),%xmm4
  addps  %xmm4,%xmm0
  movaps %xmm0,%xmm1
  cmpltps %xmm2,%xmm1
  andnps %xmm0,%xmm1
  movups %xmm1,(%rax,%rdx,1)
  add    $0x10,%rdx
  cmp    %rcx,%rdx
  jne    L188
  mov    %edi,%edx
  and    $0xfffffffc,%edx
  test   $0x3,%dil
  je     L6
  mov    %edx,%r9d
  pxor   %xmm1,%xmm1
  lea    0x0(,%r9,4),%rcx
  movss  (%rsi,%r9,4),%xmm0
  lea    (%rax,%rcx,1),%r8
  addss  (%r8),%xmm0
  comiss %xmm0,%xmm1
  movss  %xmm0,(%r8)
  ja     L60
L208:
  lea    0x1(%rdx),%r8d
  cmp    %r8d,%edi
  jle    L6
  lea    0x4(%rax,%rcx,1),%r8
  movss  0x4(%rsi,%rcx,1),%xmm0
  addss  (%r8),%xmm0
  comiss %xmm0,%xmm1
  movss  %xmm0,(%r8)
  ja     L48
L34:
  add    $0x2,%edx
  cmp    %edx,%edi
  jg     L124
L6:
  ret
L41:
  mov    %edi,%edi
  xor    %edx,%edx
  pxor   %xmm1,%xmm1
  jmp    L204
  nopw   0x0(%rax,%rax,1)
L165:
  add    $0x1,%rdx
  cmp    %rdi,%rdx
  je     L6
L204:
  movss  (%rax,%rdx,4),%xmm0
  addss  (%rsi,%rdx,4),%xmm0
  comiss %xmm0,%xmm1
  movss  %xmm0,(%rax,%rdx,4)
  jbe    L165
  movl   $0x0,(%rax,%rdx,4)
  jmp    L165
  xchg   %ax,%ax
L124:
  lea    0x8(%rax,%rcx,1),%rax
  movss  0x8(%rsi,%rcx,1),%xmm0
  addss  (%rax),%xmm0
  comiss %xmm0,%xmm1
  movss  %xmm0,(%rax)
  jbe    L6
  movl   $0x0,(%rax)
  ret
  nop
L66:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L249:
  movss  (%rax,%rdx,4),%xmm0
  addss  (%rsi,%rdx,4),%xmm0
  movss  %xmm0,(%rax,%rdx,4)
  add    $0x1,%rdx
  cmp    %rdx,%rdi
  jne    L249
  ret
  nopl   0x0(%rax)
L60:
  movl   $0x0,(%r8)
  jmp    L208
L48:
  movl   $0x0,(%r8)
  jmp    L34
L94:
  xor    %ecx,%ecx
  xor    %edx,%edx
  jmp    L97
```

assistant: ```c
void add_bias_and_relu_flatten(float *out, float *bs, int size, int relu) {
  int i;
  for (i = 0; i < size; i++) {
    out[i] += bs[i];
    if (relu == 1) {
      if (out[i] < 0)
        out[i] = 0.0;
    }
  }
}
```