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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  sub    $0xd0,%rsp
  movabs $0x314000000007a125,%rax
  mov    %rax,-0x38(%rbp)
  mov    $0x7a125,%eax
  movabs $0x3038000000000000,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  movabs $0x31c0000000000000,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  mov    -0x30(%rbp),%r12
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,%r13
  mov    %r12,-0xf0(%rbp)
  mov    %r13,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  movabs $0x31c0000000000000,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  mov    -0x30(%rbp),%r14
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,%r15
  mov    %r14,-0xf0(%rbp)
  mov    %r15,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  movabs $0x31a0000000000000,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    %rax,-0xf0(%rbp)
  mov    %rdx,-0xe8(%rbp)
  movdqa -0xf0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  mov    $0x0,%eax
  movabs $0x303e000000000000,%rdx
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  movabs $0x3120011f71fa78f1,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    $0xa,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  movabs $0x31c0000000000000,%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  movabs $0xb1c0000000000000,%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  mov    -0x38(%rbp),%rax
  mov    $0x5,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  movabs $0x31c0000000000000,%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  movabs $0xb1c0000000000000,%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  movabs $0x11f71fa78f1,%rax
  movabs $0x3036000000000000,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0xa,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x58(%rbp)
  mov    $0x2,%edi
  movdqa -0x60(%rbp),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    $0x2,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0x0,%eax
  movabs $0xb040000000000000,%rdx
  mov    $0x2,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0xa,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    $0x2,%edi
  movdqa -0x70(%rbp),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    $0x2,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x0,%eax
  movabs $0xb040000000000000,%rdx
  mov    $0x2,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  movabs $0x31000000004c4b45,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    $0x187,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    -0x38(%rbp),%rax
  mov    $0x188,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    -0x38(%rbp),%rax
  mov    $0x189,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x187,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x188,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x189,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0x31c0000000000000,%rax
  mov    $0x189,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0xb1c0000000000000,%rax
  mov    $0x189,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  movabs $0x31c0000000000001,%rax
  mov    $0x189,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x4c4b45,%eax
  movabs $0x3034000000000000,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x1819,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x181a,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x181b,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  mov    $0x1819,%edi
  movdqa -0x80(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x90(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x181a,%edi
  movdqa -0x90(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0xa0(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0x98(%rbp)
  mov    $0x181b,%edi
  movdqa -0xa0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    $0x181b,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x0,%eax
  movabs $0xb040000000000000,%rdx
  mov    $0x181b,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x1,%eax
  movabs $0x3040000000000000,%rdx
  mov    $0x181b,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  movabs $0x3100000000212162,%rax
  mov    %rax,-0x38(%rbp)
  movabs $0x3160000000000001,%rdx
  mov    -0x38(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  movabs $0x3160000000000001,%rdx
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  movabs $0x31c0000000000000,%rdx
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movabs $0x3160000000000001,%rdx
  movabs $0x31c0000000000000,%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movabs $0x5dab23ee87c4e2,%rax
  movabs $0x3034000000000000,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    $0x59d9,%r14d
  movabs $0x303c000000000000,%r15
  mov    %r14,-0x50(%rbp)
  mov    %r15,-0x48(%rbp)
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  movdqa -0x50(%rbp),%xmm1
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  mov    %r14,-0x50(%rbp)
  mov    %r15,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm1
  movdqa -0xb0(%rbp),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  movdqa -0x50(%rbp),%xmm1
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  mov    %r14,-0x50(%rbp)
  mov    %r15,-0x48(%rbp)
  mov    $0x0,%eax
  movabs $0xb040000000000000,%rdx
  movdqa -0x50(%rbp),%xmm1
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  movabs $0x3100000000212e86,%rax
  mov    %rax,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    -0x38(%rbp),%rax
  mov    $0x4,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    -0x38(%rbp),%rax
  mov    $0x5,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x4,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  movabs $0x8000000000000000,%rax
  xor    -0x38(%rbp),%rax
  mov    $0x5,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  movabs $0x31c0000000000000,%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x212e86,%eax
  movabs $0x3034000000000000,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x3,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x4,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    -0x30(%rbp),%rax
  mov    -0x28(%rbp),%rdx
  mov    $0x5,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0xc0(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  mov    $0x3,%edi
  movdqa -0xc0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0xd0(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0xc8(%rbp)
  mov    $0x4,%edi
  movdqa -0xd0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,-0xe0(%rbp)
  movabs $0x8000000000000000,%rax
  xor    -0x28(%rbp),%rax
  mov    %rax,-0xd8(%rbp)
  mov    $0x5,%edi
  movdqa -0xe0(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x0,%eax
  movabs $0x3040000000000000,%rdx
  mov    $0x0,%edi
  mov    %rax,-0x50(%rbp)
  mov    %rdx,-0x48(%rbp)
  movdqa -0x50(%rbp),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x0,%eax
  add    $0xd0,%rsp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

assistant: ```c
int main() {
  _Decimal64 d64 = 50.0005DD;
  _Decimal128 d128 = 50.0005DL;
  eedtr(d64);
  eedtr(-d64);
  eedtr(0.DD);
  eextr(d128);
  eextr(-d128);
  eextr(0.DL);
  esdtr(d64);
  esdtr(-d64);
  esdtr(0.DD);
  esxtr(d128);
  esxtr(-d128);
  esxtr(0.DL);
  ltdtr(d64);
  ltdtr(-d64);
  ltdtr(0.0DD);
  ltxtr(d128);
  ltxtr(-d128);
  ltxtr(0.0DL);
  d64 = 12345678.54321DD;
  sldt(d64, 10);
  sldt(-d64, 2);
  sldt(0.DD, 2);
  sldt(-0.DD, 2);
  srdt(d64, 5);
  srdt(-d64, 2);
  srdt(0.DD, 2);
  srdt(-0.DD, 2);
  d128 = 12345678.54321DL;
  slxt(d128, 10);
  slxt(-d128, 2);
  slxt(0.DL, 2);
  slxt(-0.DL, 2);
  srxt(d128, 10);
  srxt(-d128, 2);
  srxt(0.DL, 2);
  srxt(-0.DL, 2);
  d64 = 5.000005DD;
  iedtr(d64, 391);
  iedtr(d64, 392);
  iedtr(d64, 393);
  iedtr(-d64, 391);
  iedtr(-d64, 392);
  iedtr(-d64, 393);
  iedtr(0.DD, 393);
  iedtr(-0.DD, 393);
  iedtr(1.DD, 393);
  d128 = 5.000005DL;
  iextr(d128, 6169);
  iextr(d128, 6170);
  iextr(d128, 6171);
  iextr(-d128, 6169);
  iextr(-d128, 6170);
  iextr(-d128, 6171);
  iextr(0.DL, 6171);
  iextr(-0.DL, 6171);
  iextr(1.DL, 6171);
  d64 = 2.171234DD;
  quantize64(d64, 0.001DD);
  quantize64(-d64, 0.001DD);
  quantize64(-d64, 0.DD);
  quantize64(0.DD, 0.001DD);
  d128 = 26365343648.171234DL;
  quantize128(d128, 230.01DL);
  quantize128(-d128, 230.01DL);
  quantize128(d128, 0.DL);
  quantize128(-0.DL, 230.01DL);
  d64 = 2.174598DD;
  reround64(d64, 3);
  reround64(d64, 4);
  reround64(d64, 5);
  reround64(-d64, 3);
  reround64(-d64, 4);
  reround64(-d64, 5);
  reround64(0.DD, 0);
  d128 = 2.174598DL;
  reround128(d128, 3);
  reround128(d128, 4);
  reround128(d128, 5);
  reround128(-d128, 3);
  reround128(-d128, 4);
  reround128(-d128, 5);
  reround128(0.DL, 0);
  return 0;
}
```