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

```asm
<fiat_p224_to_bytes>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x150,%rsp
  mov    %rdi,-0x148(%rbp)
  mov    %rsi,-0x150(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    %eax,-0x134(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    %eax,-0x130(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    %eax,-0x12c(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    %eax,-0x128(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    %eax,-0x124(%rbp)
  mov    -0x150(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %eax,-0x120(%rbp)
  mov    -0x150(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x11c(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x11c(%rbp),%eax
  cltq
  mov    %rax,-0xe0(%rbp)
  mov    -0x11c(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x118(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x118(%rbp),%eax
  cltq
  mov    %rax,-0xd8(%rbp)
  mov    -0x118(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x114(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x114(%rbp),%eax
  cltq
  mov    %rax,-0xd0(%rbp)
  mov    -0x114(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0xc8(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x120(%rbp),%eax
  cltq
  mov    %rax,-0xc0(%rbp)
  mov    -0x120(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x110(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x110(%rbp),%eax
  cltq
  mov    %rax,-0xb8(%rbp)
  mov    -0x110(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x10c(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x10c(%rbp),%eax
  cltq
  mov    %rax,-0xb0(%rbp)
  mov    -0x10c(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0xa8(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x124(%rbp),%eax
  cltq
  mov    %rax,-0xa0(%rbp)
  mov    -0x124(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x108(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x108(%rbp),%eax
  cltq
  mov    %rax,-0x98(%rbp)
  mov    -0x108(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x104(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x104(%rbp),%eax
  cltq
  mov    %rax,-0x90(%rbp)
  mov    -0x104(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0x88(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x128(%rbp),%eax
  cltq
  mov    %rax,-0x80(%rbp)
  mov    -0x128(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0x100(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x100(%rbp),%eax
  cltq
  mov    %rax,-0x78(%rbp)
  mov    -0x100(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xfc(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xfc(%rbp),%eax
  cltq
  mov    %rax,-0x70(%rbp)
  mov    -0xfc(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0x68(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x12c(%rbp),%eax
  cltq
  mov    %rax,-0x60(%rbp)
  mov    -0x12c(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xf8(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xf8(%rbp),%eax
  cltq
  mov    %rax,-0x58(%rbp)
  mov    -0xf8(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xf4(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xf4(%rbp),%eax
  cltq
  mov    %rax,-0x50(%rbp)
  mov    -0xf4(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0x48(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x130(%rbp),%eax
  cltq
  mov    %rax,-0x40(%rbp)
  mov    -0x130(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xf0(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xf0(%rbp),%eax
  cltq
  mov    %rax,-0x38(%rbp)
  mov    -0xf0(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xec(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xec(%rbp),%eax
  cltq
  mov    %rax,-0x30(%rbp)
  mov    -0xec(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0x28(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0x134(%rbp),%eax
  cltq
  mov    %rax,-0x20(%rbp)
  mov    -0x134(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xe8(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xe8(%rbp),%eax
  cltq
  mov    %rax,-0x18(%rbp)
  mov    -0xe8(%rbp),%eax
  sar    $0x8,%eax
  mov    %eax,-0xe4(%rbp)
  mov    $0xff,%edi
  call   <UINT8_C@plt>
  and    -0xe4(%rbp),%eax
  cltq
  mov    %rax,-0x10(%rbp)
  mov    -0xe4(%rbp),%eax
  sar    $0x8,%eax
  cltq
  mov    %rax,-0x8(%rbp)
  mov    -0x148(%rbp),%rax
  mov    -0xe0(%rbp),%rdx
  mov    %rdx,(%rax)
  mov    -0x148(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0xd8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0xd0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0xc8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x20(%rax),%rdx
  mov    -0xc0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x28(%rax),%rdx
  mov    -0xb8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x30(%rax),%rdx
  mov    -0xb0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x38(%rax),%rdx
  mov    -0xa8(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x40(%rax),%rdx
  mov    -0xa0(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x48(%rax),%rdx
  mov    -0x98(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x50(%rax),%rdx
  mov    -0x90(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x58(%rax),%rdx
  mov    -0x88(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x60(%rax),%rdx
  mov    -0x80(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x68(%rax),%rdx
  mov    -0x78(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x70(%rax),%rdx
  mov    -0x70(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x78(%rax),%rdx
  mov    -0x68(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x80(%rax),%rdx
  mov    -0x60(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x88(%rax),%rdx
  mov    -0x58(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x90(%rax),%rdx
  mov    -0x50(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0x98(%rax),%rdx
  mov    -0x48(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xa0(%rax),%rdx
  mov    -0x40(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xa8(%rax),%rdx
  mov    -0x38(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xb0(%rax),%rdx
  mov    -0x30(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xb8(%rax),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xc0(%rax),%rdx
  mov    -0x20(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xd0(%rax),%rdx
  mov    -0x10(%rbp),%rax
  mov    %rax,(%rdx)
  mov    -0x148(%rbp),%rax
  lea    0xd8(%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rax,(%rdx)
  nop
  leave
  ret
```

assistant: ```c
void fiat_p224_to_bytes(uint8_t out1[28], const uint32_t arg1[7]) {
  uint32_t x1;
  uint32_t x2;
  uint32_t x3;
  uint32_t x4;
  uint32_t x5;
  uint32_t x6;
  uint32_t x7;
  uint8_t x8;
  uint32_t x9;
  uint8_t x10;
  uint32_t x11;
  uint8_t x12;
  uint8_t x13;
  uint8_t x14;
  uint32_t x15;
  uint8_t x16;
  uint32_t x17;
  uint8_t x18;
  uint8_t x19;
  uint8_t x20;
  uint32_t x21;
  uint8_t x22;
  uint32_t x23;
  uint8_t x24;
  uint8_t x25;
  uint8_t x26;
  uint32_t x27;
  uint8_t x28;
  uint32_t x29;
  uint8_t x30;
  uint8_t x31;
  uint8_t x32;
  uint32_t x33;
  uint8_t x34;
  uint32_t x35;
  uint8_t x36;
  uint8_t x37;
  uint8_t x38;
  uint32_t x39;
  uint8_t x40;
  uint32_t x41;
  uint8_t x42;
  uint8_t x43;
  uint8_t x44;
  uint32_t x45;
  uint8_t x46;
  uint32_t x47;
  uint8_t x48;
  uint8_t x49;
  x1 = (arg1[6]);
  x2 = (arg1[5]);
  x3 = (arg1[4]);
  x4 = (arg1[3]);
  x5 = (arg1[2]);
  x6 = (arg1[1]);
  x7 = (arg1[0]);
  x8 = (uint8_t)(x7 & UINT8_C(0xff));
  x9 = (x7 >> 8);
  x10 = (uint8_t)(x9 & UINT8_C(0xff));
  x11 = (x9 >> 8);
  x12 = (uint8_t)(x11 & UINT8_C(0xff));
  x13 = (uint8_t)(x11 >> 8);
  x14 = (uint8_t)(x6 & UINT8_C(0xff));
  x15 = (x6 >> 8);
  x16 = (uint8_t)(x15 & UINT8_C(0xff));
  x17 = (x15 >> 8);
  x18 = (uint8_t)(x17 & UINT8_C(0xff));
  x19 = (uint8_t)(x17 >> 8);
  x20 = (uint8_t)(x5 & UINT8_C(0xff));
  x21 = (x5 >> 8);
  x22 = (uint8_t)(x21 & UINT8_C(0xff));
  x23 = (x21 >> 8);
  x24 = (uint8_t)(x23 & UINT8_C(0xff));
  x25 = (uint8_t)(x23 >> 8);
  x26 = (uint8_t)(x4 & UINT8_C(0xff));
  x27 = (x4 >> 8);
  x28 = (uint8_t)(x27 & UINT8_C(0xff));
  x29 = (x27 >> 8);
  x30 = (uint8_t)(x29 & UINT8_C(0xff));
  x31 = (uint8_t)(x29 >> 8);
  x32 = (uint8_t)(x3 & UINT8_C(0xff));
  x33 = (x3 >> 8);
  x34 = (uint8_t)(x33 & UINT8_C(0xff));
  x35 = (x33 >> 8);
  x36 = (uint8_t)(x35 & UINT8_C(0xff));
  x37 = (uint8_t)(x35 >> 8);
  x38 = (uint8_t)(x2 & UINT8_C(0xff));
  x39 = (x2 >> 8);
  x40 = (uint8_t)(x39 & UINT8_C(0xff));
  x41 = (x39 >> 8);
  x42 = (uint8_t)(x41 & UINT8_C(0xff));
  x43 = (uint8_t)(x41 >> 8);
  x44 = (uint8_t)(x1 & UINT8_C(0xff));
  x45 = (x1 >> 8);
  x46 = (uint8_t)(x45 & UINT8_C(0xff));
  x47 = (x45 >> 8);
  x48 = (uint8_t)(x47 & UINT8_C(0xff));
  x49 = (uint8_t)(x47 >> 8);
  out1[0] = x8;
  out1[1] = x10;
  out1[2] = x12;
  out1[3] = x13;
  out1[4] = x14;
  out1[5] = x16;
  out1[6] = x18;
  out1[7] = x19;
  out1[8] = x20;
  out1[9] = x22;
  out1[10] = x24;
  out1[11] = x25;
  out1[12] = x26;
  out1[13] = x28;
  out1[14] = x30;
  out1[15] = x31;
  out1[16] = x32;
  out1[17] = x34;
  out1[18] = x36;
  out1[19] = x37;
  out1[20] = x38;
  out1[21] = x40;
  out1[22] = x42;
  out1[23] = x43;
  out1[24] = x44;
  out1[25] = x46;
  out1[26] = x48;
  out1[27] = x49;
}
```