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

```asm
<cmps>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  sub    $0x28,%rsp
L152:
  xor    %ebx,%ebx
L52:
  xor    %ecx,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  mov    %ebx,%edi
  call   <make@plt>
  xor    %ecx,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  fstpt  (%rsp)
  mov    %ebp,%edi
  call   <make@plt>
  fldt   (%rsp)
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  cmp    $0x1,%ebx
  jne    L51
  cmp    $0x1,%ebp
  je     L83
  mov    $0x1,%ebp
  jmp    L152
  nopw   0x0(%rax,%rax,1)
L51:
  mov    $0x1,%ebx
  jmp    L52
L83:
  xor    %ebp,%ebp
  mov    $0x1,%r13d
L57:
  xor    %ebx,%ebx
  nopl   0x0(%rax)
L87:
  mov    %ebx,%ecx
  mov    %r13d,%r12d
  mov    $0x7fff,%esi
  mov    %ebp,%edi
  shl    %cl,%r12d
  xor    %ecx,%ecx
  add    $0x1,%ebx
  mov    %r12d,%edx
  call   <make@plt>
  mov    %r12d,%ecx
  xor    %edx,%edx
  mov    $0x7fff,%esi
  fstpt  (%rsp)
  mov    %ebp,%edi
  call   <make@plt>
  fstpt  0x10(%rsp)
  push   $0x0
  push   $0x0
  push   0x18(%rsp)
  push   0x18(%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  push   $0x0
  push   $0x0
  push   0x28(%rsp)
  push   0x28(%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  push   0x8(%rsp)
  push   0x8(%rsp)
  push   $0x0
  push   $0x0
  call   <cmp@plt>
  add    $0x20,%rsp
  push   0x18(%rsp)
  push   0x18(%rsp)
  push   $0x0
  push   $0x0
  call   <cmp@plt>
  add    $0x20,%rsp
  cmp    $0x40,%ebx
  jne    L87
  cmp    $0x1,%ebp
  je     L111
  mov    $0x1,%ebp
  jmp    L57
L111:
  xor    %r13d,%r13d
  nopl   0x0(%rax,%rax,1)
L143:
  mov    %r13d,%r12d
  mov    %r13d,%ebp
  xor    %ebx,%ebx
  sar    %r12d
  and    $0x1,%ebp
  xchg   %ax,%ax
L40:
  mov    %ebx,%esi
  mov    %ebx,%edi
  xor    %ecx,%ecx
  xor    %edx,%edx
  sar    %esi
  and    $0x1,%edi
  add    $0x1,%ebx
  call   <make@plt>
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    %r12d,%esi
  fstpt  (%rsp)
  mov    %ebp,%edi
  call   <make@plt>
  fldt   (%rsp)
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  cmp    $0x6,%ebx
  jne    L40
  add    $0x1,%r13d
  cmp    $0x6,%r13d
  jne    L143
  xor    %ebp,%ebp
L79:
  xor    %ebx,%ebx
L70:
  xor    %r13d,%r13d
  xor    %r12d,%r12d
L56:
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    %ebx,%esi
  mov    %ebp,%edi
  call   <make@plt>
  mov    %r12d,%ecx
  mov    %r13d,%edx
  mov    %ebx,%esi
  fstpt  (%rsp)
  mov    %ebp,%edi
  call   <make@plt>
  fldt   (%rsp)
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  mov    %r12d,%ecx
  mov    %r13d,%edx
  mov    %ebx,%esi
  mov    %ebp,%edi
  call   <make@plt>
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    %ebx,%esi
  fstpt  (%rsp)
  mov    %ebp,%edi
  call   <make@plt>
  fldt   (%rsp)
  sub    $0x20,%rsp
  fstpt  0x10(%rsp)
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  cmp    $0x1,%r12d
  jne    L25
  cmp    $0x1,%r13d
  je     L20
  mov    $0x1,%r13d
  xor    %r12d,%r12d
  jmp    L56
  nopl   0x0(%rax)
L25:
  mov    $0x1,%r12d
  jmp    L56
  nopl   0x0(%rax,%rax,1)
L20:
  cmp    $0x1,%ebx
  je     L9
  mov    $0x1,%ebx
  jmp    L70
  nop
L9:
  cmp    $0x1,%ebp
  je     L97
  mov    $0x1,%ebp
  jmp    L79
L97:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

assistant: ```c
void cmps(void) {
  int i, j;
  for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
      cmp(make(i, 0, 0, 0), make(j, 0, 0, 0));
  for (i = 0; i < 2; i++) {
    for (j = 0; j < 64; j++) {
      long double f1 = make(i, 32767, (uint64_t)1 << j, 0);
      long double f2 = make(i, 32767, 0, (uint64_t)1 << j);
      cmp(f1, 0);
      cmp(f2, 0);
      cmp(0, f1);
      cmp(0, f2);
    }
  }
  for (i = 0; i < 6; i++)
    for (j = 0; j < 6; j++)
      cmp(make(i & 1, i >> 1, 0, 0), make(j & 1, j >> 1, 0, 0));
  for (i = 0; i < 2; i++) {
    for (j = 0; j < 2; j++) {
      int a, b;
      for (a = 0; a < 2; a++) {
        for (b = 0; b < 2; b++) {
          cmp(make(i, j, a, b), make(i, j, 0, 0));
          cmp(make(i, j, 0, 0), make(i, j, a, b));
        }
      }
    }
  }
}
```