user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  movabs $0x314000000007a125,%r12
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  movabs $0xb14000000007a125,%rbp
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  movabs $0x31c0000000000000,%rbx
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <eedtr@plt>
  movdqa D408(%rip),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  movdqa D104(%rip),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <eextr@plt>
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <esdtr@plt>
  movdqa D408(%rip),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  movdqa D104(%rip),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <esxtr@plt>
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  movabs $0x31a0000000000000,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <ltdtr@plt>
  movdqa D408(%rip),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  movdqa D104(%rip),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  movdqa D54(%rip),%xmm0
  mov    $0x1,%eax
  call   <ltxtr@plt>
  mov    $0xa,%edi
  movabs $0x3120011f71fa78f1,%r13
  movq   %r13,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  mov    $0x2,%edi
  movabs $0xb120011f71fa78f1,%r12
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  mov    $0x2,%edi
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  mov    $0x2,%edi
  movabs $0xb1c0000000000000,%rbp
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <sldt@plt>
  mov    $0x5,%edi
  movq   %r13,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  mov    $0x2,%edi
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  mov    $0x2,%edi
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  mov    $0x2,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <srdt@plt>
  mov    $0xa,%edi
  movdqa D194(%rip),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0x2,%edi
  movdqa D374(%rip),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0x2,%edi
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0x2,%edi
  movdqa D21(%rip),%xmm0
  mov    $0x1,%eax
  call   <slxt@plt>
  mov    $0xa,%edi
  movdqa D194(%rip),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x2,%edi
  movdqa D374(%rip),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x2,%edi
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x2,%edi
  movdqa D21(%rip),%xmm0
  mov    $0x1,%eax
  call   <srxt@plt>
  mov    $0x187,%edi
  movabs $0x31000000004c4b45,%r12
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x188,%edi
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x189,%edi
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x187,%edi
  movabs $0xb1000000004c4b45,%r12
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x188,%edi
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x189,%edi
  movq   %r12,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x189,%edi
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x189,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x189,%edi
  movabs $0x31c0000000000001,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <iedtr@plt>
  mov    $0x1819,%edi
  movdqa D396(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181a,%edi
  movdqa D396(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181b,%edi
  movdqa D396(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x1819,%edi
  movdqa D133(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181a,%edi
  movdqa D133(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181b,%edi
  movdqa D133(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181b,%edi
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181b,%edi
  movdqa D21(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  mov    $0x181b,%edi
  movdqa D367(%rip),%xmm0
  mov    $0x1,%eax
  call   <iextr@plt>
  movabs $0x3160000000000001,%rbp
  movq   %rbp,%xmm1
  movabs $0x3100000000212162,%rax
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  mov    %rbp,%r13
  movq   %rbp,%xmm1
  movabs $0xb100000000212162,%rbp
  movq   %rbp,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movq   %rbx,%xmm1
  movq   %rbp,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movq   %r13,%xmm1
  movq   %rbx,%xmm0
  mov    $0x2,%eax
  call   <quantize64@plt>
  movdqa D342(%rip),%xmm1
  movdqa D339(%rip),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  movdqa D342(%rip),%xmm1
  movdqa D337(%rip),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  movdqa D395(%rip),%xmm1
  movdqa D339(%rip),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  movdqa D342(%rip),%xmm1
  movdqa D21(%rip),%xmm0
  mov    $0x2,%eax
  call   <quantize128@plt>
  mov    $0x3,%edi
  movabs $0x3100000000212e86,%rbp
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x4,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x5,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x3,%edi
  movabs $0xb100000000212e86,%rbp
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x4,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x5,%edi
  movq   %rbp,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x0,%edi
  movq   %rbx,%xmm0
  mov    $0x1,%eax
  call   <reround64@plt>
  mov    $0x3,%edi
  movdqa D280(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x4,%edi
  movdqa D280(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x5,%edi
  movdqa D280(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x3,%edi
  movdqa D210(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x4,%edi
  movdqa D210(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x5,%edi
  movdqa D210(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x0,%edi
  movdqa D395(%rip),%xmm0
  mov    $0x1,%eax
  call   <reround128@plt>
  mov    $0x0,%eax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: read_data
arguments: label: D408
type_guessed: byte[16]
name: read_data
arguments: label: D104
type_guessed: byte[16]
name: read_data
arguments: label: D395
type_guessed: byte[16]
name: read_data
arguments: label: D54
type_guessed: byte[16]
name: read_data
arguments: label: D194
type_guessed: byte[16]
name: read_data
arguments: label: D374
type_guessed: byte[16]
name: read_data
arguments: label: D21
type_guessed: byte[16]
name: read_data
arguments: label: D396
type_guessed: byte[16]
name: read_data
arguments: label: D133
type_guessed: byte[16]
name: read_data
arguments: label: D367
type_guessed: byte[16]
name: read_data
arguments: label: D342
type_guessed: byte[16]
name: read_data
arguments: label: D339
type_guessed: byte[16]
name: read_data
arguments: label: D337
type_guessed: byte[16]
name: read_data
arguments: label: D280
type_guessed: byte[16]
name: read_data
arguments: label: D210
type_guessed: byte[16]

tool: {"D408": [0x25,0xa1,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x30]}

tool: {"D104": [0x25,0xa1,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xb0]}

tool: {"D395": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x30]}

tool: {"D54": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x30]}

tool: {"D194": [0xf1,0x78,0xfa,0x71,0x1f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x30]}

tool: {"D374": [0xf1,0x78,0xfa,0x71,0x1f,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0xb0]}

tool: {"D21": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xb0]}

tool: {"D396": [0x45,0x4b,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x30]}

tool: {"D133": [0x45,0x4b,0x4c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xb0]}

tool: {"D367": [0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x30]}

tool: {"D342": [0xd9,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x30]}

tool: {"D339": [0xe2,0xc4,0x87,0xee,0x23,0xab,0x5d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x30]}

tool: {"D337": [0xe2,0xc4,0x87,0xee,0x23,0xab,0x5d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xb0]}

tool: {"D280": [0x86,0x2e,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x30]}

tool: {"D210": [0x86,0x2e,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0xb0]}

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;
}
```