user: Converte this assembly snippet into its equivalent C code:

```asm
<fflr_circuit>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <float_as_uint@plt>
  mov    %eax,%ebx
  mov    $0x17,%edx
  mov    $0x1e,%esi
  mov    %eax,%edi
  call   <bits@plt>
  lea    -0x7f(%rax),%r12d
  mov    $0x8,%edx
  mov    $0x8,%esi
  mov    %r12d,%edi
  call   <bits@plt>
  mov    $0x0,%ebp
  cmp    $0x1,%eax
  jne    L12
L55:
  mov    $0x7fffff,%edi
  call   <UINT32_C@plt>
  mov    %ebp,%ecx
  shr    %cl,%eax
  mov    %eax,%r13d
  mov    $0x0,%edx
  mov    $0x1e,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  mov    %r13d,%ebp
  not    %ebp
  and    %eax,%ebp
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  test   %eax,%eax
  jne    L74
L27:
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  test   %eax,%eax
  je     L32
  mov    $0x17,%edx
  mov    $0x1e,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  test   %eax,%eax
  jne    L39
L32:
  mov    $0x8,%edx
  mov    $0x8,%esi
  mov    %r12d,%edi
  call   <bits@plt>
  cmp    $0x1,%eax
  je     L61
L39:
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  cmp    $0x1,%eax
  je     L67
L73:
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  shl    $0x1f,%eax
  mov    %eax,%edi
  or     %ebp,%edi
L44:
  call   <uint_as_float@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L12:
  mov    $0x5,%edx
  mov    $0x7,%esi
  mov    %r12d,%edi
  call   <bits@plt>
  mov    $0x1f,%ebp
  test   %eax,%eax
  jne    L55
  mov    $0x0,%edx
  mov    $0x4,%esi
  mov    %r12d,%edi
  call   <bits@plt>
  mov    %eax,%ebp
  jmp    L55
L74:
  mov    $0x0,%edx
  mov    $0x1e,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  cmp    %ebp,%eax
  je     L27
  lea    0x0(%r13,%r13,1),%eax
  xor    %r13d,%eax
  xor    $0x1,%eax
  add    %eax,%ebp
  jmp    L27
L61:
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  mov    %eax,%ebx
  mov    $0x0,%edx
  mov    $0x16,%esi
  mov    %ebp,%edi
  call   <bits@plt>
  shl    $0x1f,%ebx
  mov    %ebx,%edi
  or     %eax,%edi
  jmp    L44
L67:
  mov    $0x8,%edx
  mov    $0x8,%esi
  mov    %r12d,%edi
  call   <bits@plt>
  cmp    $0x1,%eax
  jne    L73
  mov    $0x1f,%edx
  mov    $0x1f,%esi
  mov    %ebx,%edi
  call   <bits@plt>
  mov    %eax,%ebx
  mov    $0x0,%edx
  mov    $0x16,%esi
  mov    %ebp,%edi
  call   <bits@plt>
  shl    $0x1f,%ebx
  or     %eax,%ebx
  or     $0x3f800000,%ebx
  mov    %ebx,%edi
  jmp    L44
```

assistant: ```c
float fflr_circuit(float f) {
  uint32_t fu = float_as_uint(f);
  unsigned int len, len_raw;
  uint32_t x_mask, incr;
  uint32_t f_masked, f_incr;
  uint32_t f_out;
  len_raw = bits(fu, 30, 23) - 0x7F;
  len = bits(len_raw, 8, 8) == 1 ? 0 : bits(len_raw, 7, 5) != 0 ? 31 : bits(len_raw, 4, 0);
  x_mask = UINT32_C(0x007FFFFF) >> len;
  incr = (x_mask << 1) ^ 1 ^ x_mask;
  f_masked = bits(fu, 30, 0) & ~x_mask;
  f_incr = f_masked + incr;
  f_out = (bits(fu, 31, 31) == 0 || bits(fu, 30, 0) == f_masked) ? f_masked : f_incr;
  uint32_t ret = (bits(fu, 31, 31) == 0 || bits(fu, 30, 23) == 0) && bits(len_raw, 8, 8) == 1 ? bits(fu, 31, 31) << 31 | 0x00 << 23 | bits(f_out, 22, 0) : bits(fu, 31, 31) == 1 && bits(len_raw, 8, 8) == 1 ? bits(fu, 31, 31) << 31 | 0x7F << 23 | bits(f_out, 22, 0) : bits(fu, 31, 31) << 31 | f_out;
  return uint_as_float(ret);
}
```