user: 请从给定的汇编指令推导出C源代码:

```asm
<freeze>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  mov    %rdi,%rbx
  mov    %esi,%ebp
  mov    %edx,%r12d
  mov    %ecx,%r13d
  mov    %r8d,%r14d
  mov    %r9d,%esi
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rcx
  mov    $0xffffffed,%edx
  mov    $0x0,%edi
  call   <_subborrow_u51@plt>
  mov    %eax,%edi
  lea    0x4(%rsp),%rcx
  mov    $0xffffffff,%edx
  mov    %r14d,%esi
  call   <_subborrow_u51@plt>
  mov    %eax,%edi
  lea    0x8(%rsp),%rcx
  mov    $0xffffffff,%edx
  mov    %r13d,%esi
  call   <_subborrow_u51@plt>
  mov    %eax,%edi
  lea    0xc(%rsp),%rcx
  mov    $0xffffffff,%edx
  mov    %r12d,%esi
  call   <_subborrow_u51@plt>
  mov    %eax,%edi
  lea    0x10(%rsp),%rcx
  mov    $0xffffffff,%edx
  mov    %ebp,%esi
  call   <_subborrow_u51@plt>
  mov    %eax,%edi
  mov    $0xffffffff,%edx
  mov    $0x0,%esi
  call   <cmovznz64@plt>
  mov    %eax,%ebp
  lea    0x14(%rsp),%rcx
  mov    %eax,%edx
  and    $0xffffffed,%edx
  mov    (%rsp),%esi
  mov    $0x0,%edi
  call   <_addcarryx_u51@plt>
  mov    %eax,%edi
  lea    0x18(%rsp),%rcx
  mov    %ebp,%edx
  mov    0x4(%rsp),%esi
  call   <_addcarryx_u51@plt>
  mov    %eax,%edi
  lea    0x1c(%rsp),%rcx
  mov    %ebp,%edx
  mov    0x8(%rsp),%esi
  call   <_addcarryx_u51@plt>
  mov    %eax,%edi
  lea    0x20(%rsp),%rcx
  mov    %ebp,%edx
  mov    0xc(%rsp),%esi
  call   <_addcarryx_u51@plt>
  mov    %eax,%edi
  lea    0x24(%rsp),%rcx
  mov    %ebp,%edx
  mov    0x10(%rsp),%esi
  call   <_addcarryx_u51@plt>
  mov    0x24(%rsp),%eax
  mov    %eax,(%rbx)
  mov    0x20(%rsp),%eax
  mov    %eax,0x4(%rbx)
  mov    0x1c(%rsp),%eax
  mov    %eax,0x8(%rbx)
  mov    0x18(%rsp),%eax
  mov    %eax,0xc(%rbx)
  mov    0x14(%rsp),%eax
  mov    %eax,0x10(%rbx)
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L4
  add    $0x30,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L4:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void __attribute__((always_)) freeze(uint64_t *out, uint64_t x7, uint64_t x8, uint64_t x6, uint64_t x4, uint64_t x2) {
  uint64_t x10;
  uint8_t x11 = _subborrow_u51(0x0, x2, 0x7ffffffffffed, &x10);
  {
    uint64_t x13;
    uint8_t x14 = _subborrow_u51(x11, x4, 0x7ffffffffffff, &x13);
    {
      uint64_t x16;
      uint8_t x17 = _subborrow_u51(x14, x6, 0x7ffffffffffff, &x16);
      {
        uint64_t x19;
        uint8_t x20 = _subborrow_u51(x17, x8, 0x7ffffffffffff, &x19);
        {
          uint64_t x22;
          uint8_t x23 = _subborrow_u51(x20, x7, 0x7ffffffffffff, &x22);
          {
            uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
            {
              uint64_t x25 = (x24 & 0x7ffffffffffed);
              {
                uint64_t x27;
                uint8_t x28 = _addcarryx_u51(0x0, x10, x25, &x27);
                {
                  uint64_t x29 = (x24 & 0x7ffffffffffff);
                  {
                    uint64_t x31;
                    uint8_t x32 = _addcarryx_u51(x28, x13, x29, &x31);
                    {
                      uint64_t x33 = (x24 & 0x7ffffffffffff);
                      {
                        uint64_t x35;
                        uint8_t x36 = _addcarryx_u51(x32, x16, x33, &x35);
                        {
                          uint64_t x37 = (x24 & 0x7ffffffffffff);
                          {
                            uint64_t x39;
                            uint8_t x40 = _addcarryx_u51(x36, x19, x37, &x39);
                            {
                              uint64_t x41 = (x24 & 0x7ffffffffffff);
                              {
                                uint64_t x43;
                                uint8_t _ = _addcarryx_u51(x40, x22, x41, &x43);
                                out[0] = x43;
                                out[1] = x39;
                                out[2] = x35;
                                out[3] = x31;
                                out[4] = x27;
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```