user: 请将以下的汇编代码转换成C语言代码:

```asm
<cmps>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movl   $0x0,-0x30(%rbp)
  jmp    L47
L12:
  movl   $0x0,-0x2c(%rbp)
  jmp    L79
L102:
  mov    -0x2c(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x40(%rbp)
  mov    -0x30(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <make@plt>
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  addl   $0x1,-0x2c(%rbp)
L79:
  cmpl   $0x1,-0x2c(%rbp)
  jle    L102
  addl   $0x1,-0x30(%rbp)
L47:
  cmpl   $0x1,-0x30(%rbp)
  jle    L12
  movl   $0x0,-0x30(%rbp)
  jmp    L125
L190:
  movl   $0x0,-0x2c(%rbp)
  jmp    L89
L149:
  mov    -0x2c(%rbp),%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    -0x30(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x7fff,%esi
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x20(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%ecx
  mov    $0x0,%edx
  mov    $0x7fff,%esi
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x10(%rbp)
  fldz
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  push   -0x18(%rbp)
  push   -0x20(%rbp)
  call   <cmp@plt>
  add    $0x20,%rsp
  fldz
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  push   -0x8(%rbp)
  push   -0x10(%rbp)
  call   <cmp@plt>
  add    $0x20,%rsp
  push   -0x18(%rbp)
  push   -0x20(%rbp)
  fldz
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  push   -0x8(%rbp)
  push   -0x10(%rbp)
  fldz
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  addl   $0x1,-0x2c(%rbp)
L89:
  cmpl   $0x3f,-0x2c(%rbp)
  jle    L149
  addl   $0x1,-0x30(%rbp)
L125:
  cmpl   $0x1,-0x30(%rbp)
  jle    L190
  movl   $0x0,-0x30(%rbp)
  jmp    L110
L132:
  movl   $0x0,-0x2c(%rbp)
  jmp    L33
L71:
  mov    -0x2c(%rbp),%eax
  sar    %eax
  mov    %eax,%esi
  mov    -0x2c(%rbp),%eax
  and    $0x1,%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x40(%rbp)
  mov    -0x30(%rbp),%eax
  sar    %eax
  mov    %eax,%esi
  mov    -0x30(%rbp),%eax
  and    $0x1,%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <make@plt>
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  addl   $0x1,-0x2c(%rbp)
L33:
  cmpl   $0x5,-0x2c(%rbp)
  jle    L71
  addl   $0x1,-0x30(%rbp)
L110:
  cmpl   $0x5,-0x30(%rbp)
  jle    L132
  movl   $0x0,-0x30(%rbp)
  jmp    L22
L162:
  movl   $0x0,-0x2c(%rbp)
  jmp    L109
L1:
  movl   $0x0,-0x28(%rbp)
  jmp    L66
L145:
  movl   $0x0,-0x24(%rbp)
  jmp    L70
L172:
  mov    -0x2c(%rbp),%esi
  mov    -0x30(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x40(%rbp)
  mov    -0x24(%rbp),%ecx
  mov    -0x28(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x30(%rbp),%eax
  mov    %eax,%edi
  call   <make@plt>
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  mov    -0x24(%rbp),%ecx
  mov    -0x28(%rbp),%edx
  mov    -0x2c(%rbp),%esi
  mov    -0x30(%rbp),%eax
  mov    %eax,%edi
  call   <make@plt>
  fstpt  -0x40(%rbp)
  mov    -0x2c(%rbp),%esi
  mov    -0x30(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <make@plt>
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  lea    -0x10(%rsp),%rsp
  fstpt  (%rsp)
  call   <cmp@plt>
  add    $0x20,%rsp
  addl   $0x1,-0x24(%rbp)
L70:
  cmpl   $0x1,-0x24(%rbp)
  jle    L172
  addl   $0x1,-0x28(%rbp)
L66:
  cmpl   $0x1,-0x28(%rbp)
  jle    L145
  addl   $0x1,-0x2c(%rbp)
L109:
  cmpl   $0x1,-0x2c(%rbp)
  jle    L1
  addl   $0x1,-0x30(%rbp)
L22:
  cmpl   $0x1,-0x30(%rbp)
  jle    L162
  nop
  nop
  leave
  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));
        }
      }
    }
  }
}
```