user: What would the C source look like for the assembly code provided here:

```asm
<round_64>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  movabs $0x31e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10000,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L154
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L154
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L154
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L614
L154:
  call   <abort@plt>
L614:
  movabs $0x31e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10001,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L692
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L692
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L692
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L123
L692:
  call   <abort@plt>
L123:
  movabs $0x31e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10002,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L573
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L573
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L573
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L96
L573:
  call   <abort@plt>
L96:
  movabs $0x31e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10003,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L432
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L432
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L432
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L98
L432:
  call   <abort@plt>
L98:
  movabs $0x31e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10004,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L484
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L484
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L484
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L85
L484:
  call   <abort@plt>
L85:
  movabs $0x32038d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x16345785d8a0031,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L285
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L285
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L285
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L138
L285:
  call   <abort@plt>
L138:
  movabs $0x32038d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x16345785d8a0033,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L644
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L644
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L644
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L106
L644:
  call   <abort@plt>
L106:
  movabs $0x31e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10006,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L261
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L261
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L261
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L401
L261:
  call   <abort@plt>
L401:
  movabs $0x31e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10007,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L680
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L680
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L680
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L516
L680:
  call   <abort@plt>
L516:
  movabs $0x31e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10008,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L392
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L392
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L392
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L648
L392:
  call   <abort@plt>
L648:
  movabs $0x31e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc10009,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L238
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L238
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L238
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L723
L238:
  call   <abort@plt>
L723:
  movabs $0x31e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0x2386f26fc1000a,%rax
  mov    %rax,-0x28(%rbp)
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatunsdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x40(%rbp)
  mov    %rbx,-0x38(%rbp)
  mov    %rbx,-0x30(%rbp)
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L94
  lea    -0x40(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L94
  lea    -0x40(%rbp),%rcx
  lea    -0x38(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L94
  lea    -0x40(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L77
L94:
  call   <abort@plt>
L77:
  movabs $0xb1e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903f0000,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L25
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L495
L25:
  call   <abort@plt>
L495:
  movabs $0xb1e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903effff,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L45
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L619
L45:
  call   <abort@plt>
L619:
  movabs $0xb1e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efffe,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L13
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L147
L13:
  call   <abort@plt>
L147:
  movabs $0xb1e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efffd,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L450
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L595
L450:
  call   <abort@plt>
L595:
  movabs $0xb1e38d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efffc,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L616
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L713
L616:
  call   <abort@plt>
L713:
  movabs $0xb2038d7ea4c68000,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xfe9cba87a275ffcf,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L230
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L48
L230:
  call   <abort@plt>
L48:
  movabs $0xb2038d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xfe9cba87a275ffcd,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L647
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L308
L647:
  call   <abort@plt>
L308:
  movabs $0xb1e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efffa,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L37
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L251
L37:
  call   <abort@plt>
L251:
  movabs $0xb1e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efff9,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L366
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L712
L366:
  call   <abort@plt>
L712:
  movabs $0xb1e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efff8,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L371
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L75
L371:
  call   <abort@plt>
L75:
  movabs $0xb1e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efff7,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L171
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L137
L171:
  call   <abort@plt>
L137:
  movabs $0xb1e38d7ea4c68001,%rbx
  mov    %rbx,-0x58(%rbp)
  movabs $0xffdc790d903efff6,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <__bid_floatdidd@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x50(%rbp)
  mov    %rbx,-0x48(%rbp)
  lea    -0x50(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  jne    L727
  lea    -0x48(%rbp),%rcx
  lea    -0x58(%rbp),%rax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcmp@plt>
  test   %eax,%eax
  je     L694
L727:
  call   <abort@plt>
L694:
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L359
  call   <__stack_chk_fail@plt>
L359:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void round_64(void) {
  volatile _Decimal64 x, a, b, c, d, e, f, g, h;
  volatile int si;
  volatile unsigned int ui;
  volatile long long sll;
  volatile unsigned long long ull;
  x = 10000000000000000.DD;
  sll = 10000000000000000LL;
  ull = 10000000000000000ULL;
  b = sll;
  d = ull;
  f = 10000000000000000LL;
  g = 10000000000000000ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000001.DD;
  sll = 10000000000000001LL;
  ull = 10000000000000001ULL;
  b = sll;
  d = ull;
  f = 10000000000000001LL;
  g = 10000000000000001ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000002.DD;
  sll = 10000000000000002LL;
  ull = 10000000000000002ULL;
  b = sll;
  d = ull;
  f = 10000000000000002LL;
  g = 10000000000000002ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000003.DD;
  sll = 10000000000000003LL;
  ull = 10000000000000003ULL;
  b = sll;
  d = ull;
  f = 10000000000000003LL;
  g = 10000000000000003ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000004.DD;
  sll = 10000000000000004LL;
  ull = 10000000000000004ULL;
  b = sll;
  d = ull;
  f = 10000000000000004LL;
  g = 10000000000000004ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 100000000000000049.DD;
  sll = 100000000000000049LL;
  ull = 100000000000000049ULL;
  b = sll;
  d = ull;
  f = 100000000000000049LL;
  g = 100000000000000049ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 100000000000000051.DD;
  sll = 100000000000000051LL;
  ull = 100000000000000051ULL;
  b = sll;
  d = ull;
  f = 100000000000000051LL;
  g = 100000000000000051ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000006.DD;
  sll = 10000000000000006LL;
  ull = 10000000000000006ULL;
  b = sll;
  d = ull;
  f = 10000000000000006LL;
  g = 10000000000000006ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000007.DD;
  sll = 10000000000000007LL;
  ull = 10000000000000007ULL;
  b = sll;
  d = ull;
  f = 10000000000000007LL;
  g = 10000000000000007ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000008.DD;
  sll = 10000000000000008LL;
  ull = 10000000000000008ULL;
  b = sll;
  d = ull;
  f = 10000000000000008LL;
  g = 10000000000000008ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000009.DD;
  sll = 10000000000000009LL;
  ull = 10000000000000009ULL;
  b = sll;
  d = ull;
  f = 10000000000000009LL;
  g = 10000000000000009ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = 10000000000000010.DD;
  sll = 10000000000000010LL;
  ull = 10000000000000010ULL;
  b = sll;
  d = ull;
  f = 10000000000000010LL;
  g = 10000000000000010ULL;
  if ((__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&d, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&f, (void *)&d, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&g, (void *)&d, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000000.DD;
  sll = -10000000000000000LL;
  a = sll;
  b = -10000000000000000LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000001.DD;
  sll = -10000000000000001LL;
  a = sll;
  b = -10000000000000001LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000002.DD;
  sll = -10000000000000002LL;
  a = sll;
  b = -10000000000000002LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000003.DD;
  sll = -10000000000000003LL;
  a = sll;
  b = -10000000000000003LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000004.DD;
  sll = -10000000000000004LL;
  a = sll;
  b = -10000000000000004LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -100000000000000049.DD;
  sll = -100000000000000049LL;
  a = sll;
  b = -100000000000000049LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -100000000000000051.DD;
  sll = -100000000000000051LL;
  a = sll;
  b = -100000000000000051LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000006.DD;
  sll = -10000000000000006LL;
  a = sll;
  b = -10000000000000006LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000007.DD;
  sll = -10000000000000007LL;
  a = sll;
  b = -10000000000000007LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000008.DD;
  sll = -10000000000000008LL;
  a = sll;
  b = -10000000000000008LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000009.DD;
  sll = -10000000000000009LL;
  a = sll;
  b = -10000000000000009LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
  x = -10000000000000010.DD;
  sll = -10000000000000010LL;
  a = sll;
  b = -10000000000000010LL;
  if ((__builtin_memcmp((void *)&x, (void *)&a, sizeof(_Decimal64)) != 0) || (__builtin_memcmp((void *)&x, (void *)&b, sizeof(_Decimal64)) != 0))
    __builtin_abort();
  ;
}
```