user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  lea    0x14(%rsp),%rbx
  prefetcht0 (%rbx)
  prefetcht0 (%rbx)
  prefetchnta (%rbx)
  call   <random@plt>
  xor    %esi,%esi
  lea    D773(%rip),%rdi
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <p@plt>
  mov    $0x14,%esi
  xor    %eax,%eax
  movslq %ebp,%rbx
  lea    D825(%rip),%rdi
  call   <p@plt>
  mov    $0x1,%esi
  lea    D434(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  cmp    $0xc,%ebp
  lea    D840(%rip),%rdi
  sete   %sil
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D523(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D717(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D872(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  movsd  D30(%rip),%xmm0
  mov    $0x1,%eax
  lea    D55(%rip),%rdi
  call   <q@plt>
  mov    D30(%rip),%rax
  lea    D141(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <q@plt>
  flds   0x12b7(%rip)        # 2528 <_fini+0xa5c>
  sub    $0x10,%rsp
  xor    %eax,%eax
  lea    D125(%rip),%rdi
  fstpt  (%rsp)
  call   <q@plt>
  mov    D30(%rip),%rax
  lea    D467(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <q@plt>
  mov    D30(%rip),%rax
  lea    D706(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <q@plt>
  fldt   0x127a(%rip)        # 2540 <_fini+0xa74>
  sub    $0x10,%rsp
  xor    %eax,%eax
  lea    D749(%rip),%rdi
  fstpt  (%rsp)
  call   <q@plt>
  add    $0x20,%rsp
  mov    $0x2,%esi
  xor    %eax,%eax
  lea    D12(%rip),%rdi
  call   <p@plt>
  mov    $0x2,%esi
  lea    D163(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0x2,%esi
  lea    D512(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  movsd  D378(%rip),%xmm0
  mov    $0x1,%eax
  lea    D49(%rip),%rdi
  call   <q@plt>
  mov    D378(%rip),%rax
  lea    D276(%rip),%rdi
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <q@plt>
  flds   0x11d8(%rip)        # 252c <_fini+0xa60>
  lea    D107(%rip),%rdi
  fstpt  (%rsp)
  mov    0x8(%rsp),%edx
  mov    (%rsp),%rax
  push   %rdx
  push   %rax
  xor    %eax,%eax
  call   <q@plt>
  movsd  D531(%rip),%xmm0
  mov    $0x1,%eax
  lea    D822(%rip),%rdi
  call   <q@plt>
  movsd  D690(%rip),%xmm0
  mov    $0x1,%eax
  lea    D0(%rip),%rdi
  call   <q@plt>
  movsd  D638(%rip),%xmm0
  mov    $0x1,%eax
  lea    D325(%rip),%rdi
  call   <q@plt>
  push   $0x7fff
  movabs $0xc00000000000000a,%rax
  lea    D839(%rip),%rdi
  push   %rax
  xor    %eax,%eax
  call   <q@plt>
  add    $0x20,%rsp
  mov    $0x1,%eax
  movsd  D834(%rip),%xmm0
  lea    D818(%rip),%rdi
  call   <q@plt>
  xor    %esi,%esi
  lea    D312(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D643(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D541(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D520(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D136(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D251(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D198(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D478(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D373(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%esi
  lea    D188(%rip),%rdi
  neg    %esi
  cmovs  %ebp,%esi
  xor    %eax,%eax
  call   <p@plt>
  bsr    %ebp,%esi
  lea    D794(%rip),%rdi
  xor    %eax,%eax
  xor    $0x1f,%esi
  call   <p@plt>
  bsr    %rbx,%rsi
  lea    D398(%rip),%rdi
  xor    %eax,%eax
  xor    $0x3f,%esi
  call   <p@plt>
  bsr    %rbx,%rsi
  xor    %r13d,%r13d
  xor    %eax,%eax
  tzcnt  %ebp,%r13d
  xor    $0x3f,%esi
  lea    D816(%rip),%rdi
  xor    %r12d,%r12d
  call   <p@plt>
  tzcnt  %rbx,%r12
  mov    %r13d,%esi
  xor    %eax,%eax
  lea    D881(%rip),%rdi
  call   <p@plt>
  mov    %r12d,%esi
  lea    D801(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %r12d,%esi
  lea    D167(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  bsf    %ebp,%esi
  mov    $0xffffffff,%esi
  mov    %rbx,%r12
  cmovne %r13d,%esi
  lea    D721(%rip),%rdi
  xor    %eax,%eax
  mov    $0xffffffffffffffff,%r13
  add    $0x1,%esi
  call   <p@plt>
  bsf    %rbx,%rax
  lea    D713(%rip),%rdi
  cmove  %r13,%rax
  lea    0x1(%rax),%esi
  xor    %eax,%eax
  call   <p@plt>
  bsf    %rbx,%rax
  lea    D88(%rip),%rdi
  cmove  %r13,%rax
  lea    0x1(%rax),%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%eax
  xor    %esi,%esi
  lea    D775(%rip),%rdi
  shr    $0x10,%eax
  xor    %ebp,%eax
  xor    %ah,%al
  setnp  %sil
  shr    $0x20,%r12
  xor    %eax,%eax
  call   <p@plt>
  xor    %ebp,%r12d
  xor    %esi,%esi
  lea    D542(%rip),%rdi
  mov    %r12d,%r13d
  mov    %r12d,%eax
  shr    $0x10,%r13d
  xor    %r13d,%eax
  xor    %ah,%al
  setnp  %sil
  xor    %eax,%eax
  call   <p@plt>
  mov    %r12d,%eax
  xor    %esi,%esi
  lea    D783(%rip),%rdi
  xor    %r13d,%eax
  xor    %ah,%al
  setnp  %sil
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%edi
  call   <__popcountdi2>
  lea    D789(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %rbx,%rdi
  bswap  %rbx
  call   <__popcountdi2>
  lea    D753(%rip),%rdi
  mov    %eax,%r12d
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %r12d,%esi
  lea    D653(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  movsd  D642(%rip),%xmm0
  mov    %ebp,%edi
  call   <__powidf2>
  lea    D288(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  movss  D426(%rip),%xmm0
  mov    %ebp,%edi
  call   <__powisf2>
  lea    D407(%rip),%rdi
  mov    $0x1,%eax
  cvtss2sd %xmm0,%xmm0
  call   <q@plt>
  flds   0xec0(%rip)        # 2530 <_fini+0xa64>
  mov    %ebp,%edi
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  call   <__powixf2>
  lea    D122(%rip),%rdi
  xor    %eax,%eax
  lea    0x28(%rsp),%r14
  fstpt  (%rsp)
  lea    0x2e(%rsp),%r13
  call   <q@plt>
  xor    %eax,%eax
  call   <random@plt>
  mov    $0x6f,%edx
  mov    %r14,%rsi
  mov    %r13,%rdi
  mov    %dx,0x2c(%rsp)
  movslq %eax,%r12
  movl   $0x6c6c6548,0x28(%rsp)
  call   <strcat@plt>
  xor    %esi,%esi
  lea    D433(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D455(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %r12,%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <strncat@plt>
  xor    %esi,%esi
  lea    D99(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D154(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D310(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D470(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D553(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D120(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D172(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D259(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %r12,%rcx
  mov    $0xa,%edx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <__mempcpy_chk@plt>
  xor    %esi,%esi
  lea    D186(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D738(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D62(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %esi,%esi
  lea    D867(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  xor    %eax,%eax
  mov    $0xa,%esi
  lea    D877(%rip),%rdi
  call   <p@plt>
  mov    $0xa,%esi
  lea    D366(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D701(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D232(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%esi
  lea    D855(%rip),%rdi
  xor    %eax,%eax
  rol    $0x8,%si
  movzwl %si,%esi
  call   <p@plt>
  mov    %ebp,%esi
  lea    D875(%rip),%rdi
  xor    %eax,%eax
  bswap  %esi
  call   <p@plt>
  mov    %rbx,%rsi
  lea    D506(%rip),%rdi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <__builtin_bitreverse8@plt>
  lea    D334(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <__builtin_bitreverse16@plt>
  lea    D626(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <__builtin_bitreverse32@plt>
  lea    D64(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  mov    %ebp,%edi
  xor    %eax,%eax
  call   <__builtin_bitreverse64@plt>
  lea    D776(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <p@plt>
  ud2
```

tool_calls: name: disassemble_data
arguments: data_tag: D773
type_infered: string
name: disassemble_data
arguments: data_tag: D825
type_infered: string
name: disassemble_data
arguments: data_tag: D434
type_infered: string
name: disassemble_data
arguments: data_tag: D840
type_infered: string
name: disassemble_data
arguments: data_tag: D523
type_infered: string
name: disassemble_data
arguments: data_tag: D717
type_infered: string
name: disassemble_data
arguments: data_tag: D872
type_infered: string
name: disassemble_data
arguments: data_tag: D30
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D55
type_infered: string
name: disassemble_data
arguments: data_tag: D141
type_infered: string
name: disassemble_data
arguments: data_tag: D125
type_infered: string
name: disassemble_data
arguments: data_tag: D467
type_infered: string
name: disassemble_data
arguments: data_tag: D706
type_infered: string
name: disassemble_data
arguments: data_tag: D749
type_infered: string
name: disassemble_data
arguments: data_tag: D12
type_infered: string
name: disassemble_data
arguments: data_tag: D163
type_infered: string
name: disassemble_data
arguments: data_tag: D512
type_infered: string
name: disassemble_data
arguments: data_tag: D378
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D49
type_infered: string
name: disassemble_data
arguments: data_tag: D276
type_infered: string
name: disassemble_data
arguments: data_tag: D107
type_infered: string
name: disassemble_data
arguments: data_tag: D531
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D822
type_infered: string
name: disassemble_data
arguments: data_tag: D690
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D0
type_infered: string
name: disassemble_data
arguments: data_tag: D638
type_infered: f32[2]
name: disassemble_data
arguments: data_tag: D325
type_infered: string
name: disassemble_data
arguments: data_tag: D839
type_infered: string
name: disassemble_data
arguments: data_tag: D834
type_infered: byte[8]
name: disassemble_data
arguments: data_tag: D818
type_infered: string
name: disassemble_data
arguments: data_tag: D312
type_infered: string
name: disassemble_data
arguments: data_tag: D643
type_infered: string
name: disassemble_data
arguments: data_tag: D541
type_infered: string
name: disassemble_data
arguments: data_tag: D520
type_infered: string
name: disassemble_data
arguments: data_tag: D136
type_infered: string
name: disassemble_data
arguments: data_tag: D251
type_infered: string
name: disassemble_data
arguments: data_tag: D198
type_infered: string
name: disassemble_data
arguments: data_tag: D478
type_infered: string
name: disassemble_data
arguments: data_tag: D373
type_infered: string
name: disassemble_data
arguments: data_tag: D188
type_infered: string
name: disassemble_data
arguments: data_tag: D794
type_infered: string
name: disassemble_data
arguments: data_tag: D398
type_infered: string
name: disassemble_data
arguments: data_tag: D816
type_infered: string
name: disassemble_data
arguments: data_tag: D881
type_infered: string
name: disassemble_data
arguments: data_tag: D801
type_infered: string
name: disassemble_data
arguments: data_tag: D167
type_infered: string
name: disassemble_data
arguments: data_tag: D721
type_infered: string
name: disassemble_data
arguments: data_tag: D713
type_infered: string
name: disassemble_data
arguments: data_tag: D88
type_infered: string
name: disassemble_data
arguments: data_tag: D775
type_infered: string
name: disassemble_data
arguments: data_tag: D542
type_infered: string
name: disassemble_data
arguments: data_tag: D783
type_infered: string
name: disassemble_data
arguments: data_tag: D789
type_infered: string
name: disassemble_data
arguments: data_tag: D753
type_infered: string
name: disassemble_data
arguments: data_tag: D653
type_infered: string
name: disassemble_data
arguments: data_tag: D642
type_infered: f32[2]
name: disassemble_data
arguments: data_tag: D288
type_infered: string
name: disassemble_data
arguments: data_tag: D426
type_infered: byte[4]
name: disassemble_data
arguments: data_tag: D407
type_infered: string
name: disassemble_data
arguments: data_tag: D122
type_infered: string
name: disassemble_data
arguments: data_tag: D433
type_infered: string
name: disassemble_data
arguments: data_tag: D455
type_infered: string
name: disassemble_data
arguments: data_tag: D99
type_infered: string
name: disassemble_data
arguments: data_tag: D154
type_infered: string
name: disassemble_data
arguments: data_tag: D310
type_infered: string
name: disassemble_data
arguments: data_tag: D470
type_infered: string
name: disassemble_data
arguments: data_tag: D553
type_infered: string
name: disassemble_data
arguments: data_tag: D120
type_infered: string
name: disassemble_data
arguments: data_tag: D172
type_infered: string
name: disassemble_data
arguments: data_tag: D259
type_infered: string
name: disassemble_data
arguments: data_tag: D186
type_infered: string
name: disassemble_data
arguments: data_tag: D738
type_infered: string
name: disassemble_data
arguments: data_tag: D62
type_infered: string
name: disassemble_data
arguments: data_tag: D867
type_infered: string
name: disassemble_data
arguments: data_tag: D877
type_infered: string
name: disassemble_data
arguments: data_tag: D366
type_infered: string
name: disassemble_data
arguments: data_tag: D701
type_infered: string
name: disassemble_data
arguments: data_tag: D232
type_infered: string
name: disassemble_data
arguments: data_tag: D855
type_infered: string
name: disassemble_data
arguments: data_tag: D875
type_infered: string
name: disassemble_data
arguments: data_tag: D506
type_infered: string
name: disassemble_data
arguments: data_tag: D334
type_infered: string
name: disassemble_data
arguments: data_tag: D626
type_infered: string
name: disassemble_data
arguments: data_tag: D64
type_infered: string
name: disassemble_data
arguments: data_tag: D776
type_infered: string

tool: D773: types_compatible_p(int, float)

tool: D825: choose_expr(0, 10, 20)

tool: D434: constant_p(sizeof(10))

tool: D840: expect(N == 12, 0)

tool: D523: prefetch(&N)

tool: D717: prefetch(&N, 1)

tool: D872: prefetch(&N, 1, 0)

tool: {"D30": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f]}

tool: D55: huge_val()

tool: D141: huge_valf()

tool: D125: huge_vall()

tool: D467: inf()

tool: D706: inff()

tool: D749: infl()

tool: D12: fpclassify(0, 1, 2, 3, 4, 1.0)

tool: D163: fpclassify(0, 1, 2, 3, 4, 1.0f)

tool: D512: fpclassify(0, 1, 2, 3, 4, 1.0l)

tool: {"D378": [0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x7f]}

tool: D49: nan("")

tool: D276: nanf("")

tool: D107: nanl("")

tool: {"D531": [0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0x7f]}

tool: D822: nans("")

tool: {"D690": [0x0a,0x00,0x00,0x00,0x00,0x00,0xf8,0x7f]}

tool: D0: nan("10")

tool: {"D638": [2.0,null]}

tool: D325: nanf("10")

tool: D839: nanl("10")

tool: {"D834": [0x0a,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f]}

tool: D818: nans("10")

tool: D312: isgreater(1., 2.)

tool: D643: isgreaterequal(1., 2.)

tool: D541: isless(1., 2.)

tool: D520: islessequal(1., 2.)

tool: D136: islessgreater(1., 2.)

tool: D251: isunordered(1., 2.)

tool: D198: isinf(1.)

tool: D478: isinf_sign(1.)

tool: D373: isnan(1.)

tool: D188: abs(N)

tool: D794: clz(N)

tool: D398: clzl(N)

tool: D816: clzll(N)

tool: D881: ctz(N)

tool: D801: ctzl(N)

tool: D167: ctzll(N)

tool: D721: ffs(N)

tool: D713: ffsl(N)

tool: D88: ffsll(N)

tool: D775: parity(N)

tool: D542: parityl(N)

tool: D783: parityll(N)

tool: D789: popcount(N)

tool: D753: popcountl(N)

tool: D653: popcountll(N)

tool: {"D642": [2.0,1.899999976158142]}

tool: D288: powi(1.2f, N)

tool: {"D426": [0x9a,0x99,0x99,0x3f]}

tool: D407: powif(1.2f, N)

tool: D122: powil(1.2f, N)

tool: D433: strcat(s0, s1)

tool: D455: strcmp(s0, s1)

tool: D99: strncat(s0, s1, n)

tool: D154: strchr(s0, s1[0])

tool: D310: strrchr(s0, s1[0])

tool: D470: strcpy(s0, s1)

tool: D553: strncpy(s0, s1, n)

tool: D120: __memset_chk(s0, 0, sizeof s0, n)

tool: D172: __memcpy_chk(s0, s1, sizeof s0, n)

tool: D259: __memmove_chk(s0, s1, sizeof s0, n)

tool: D186: __mempcpy_chk(s0, s1, sizeof s0, n)

tool: D738: __strncpy_chk(s0, s1, sizeof s0, n)

tool: D62: __strcpy_chk(s0, s1, n)

tool: D867: __strcat_chk(s0, s1, n)

tool: D877: object_size(s0, 0)

tool: D366: object_size(s0, 1)

tool: D701: object_size(s0, 2)

tool: D232: object_size(s0, 3)

tool: D855: bswap16(N)

tool: D875: bswap32(N)

tool: D506: bswap64(N)

tool: D334: bitreverse8(N)

tool: D626: bitreverse16(N)

tool: D64: bitreverse32(N)

tool: D776: bitreverse64(N)

assistant: ```c
int main() {
  int N = random();
  p("types_compatible_p"
    "(int, float)",
    __builtin_types_compatible_p(int, float));
  p("choose_expr"
    "(0, 10, 20)",
    __builtin_choose_expr(0, 10, 20));
  p("constant_p"
    "(sizeof(10))",
    __builtin_constant_p(sizeof(10)));
  p("expect"
    "(N == 12, 0)",
    __builtin_expect(N == 12, 0));
  p("prefetch"
    "(&N)",
    (__builtin_prefetch(&N), 0));
  p("prefetch"
    "(&N, 1)",
    (__builtin_prefetch(&N, 1), 0));
  p("prefetch"
    "(&N, 1, 0)",
    (__builtin_prefetch(&N, 1, 0), 0));
  q("huge_val"
    "()",
    __builtin_huge_val());
  q("huge_valf"
    "()",
    __builtin_huge_valf());
  q("huge_vall"
    "()",
    __builtin_huge_vall());
  q("inf"
    "()",
    __builtin_inf());
  q("inff"
    "()",
    __builtin_inff());
  q("infl"
    "()",
    __builtin_infl());
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0));
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0f)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0f));
  p("fpclassify"
    "(0, 1, 2, 3, 4, 1.0l)",
    __builtin_fpclassify(0, 1, 2, 3, 4, 1.0l));
  q("nan"
    "(\"\")",
    __builtin_nan(""));
  q("nanf"
    "(\"\")",
    __builtin_nanf(""));
  q("nanl"
    "(\"\")",
    __builtin_nanl(""));
  q("nans"
    "(\"\")",
    __builtin_nans(""));
  q("nan"
    "(\"10\")",
    __builtin_nan("10"));
  q("nanf"
    "(\"10\")",
    __builtin_nanf("10"));
  q("nanl"
    "(\"10\")",
    __builtin_nanl("10"));
  q("nans"
    "(\"10\")",
    __builtin_nans("10"));
  p("isgreater"
    "(1., 2.)",
    __builtin_isgreater(1., 2.));
  p("isgreaterequal"
    "(1., 2.)",
    __builtin_isgreaterequal(1., 2.));
  p("isless"
    "(1., 2.)",
    __builtin_isless(1., 2.));
  p("islessequal"
    "(1., 2.)",
    __builtin_islessequal(1., 2.));
  p("islessgreater"
    "(1., 2.)",
    __builtin_islessgreater(1., 2.));
  p("isunordered"
    "(1., 2.)",
    __builtin_isunordered(1., 2.));
  p("isinf"
    "(1.)",
    __builtin_isinf(1.));
  p("isinf_sign"
    "(1.)",
    __builtin_isinf_sign(1.));
  p("isnan"
    "(1.)",
    __builtin_isnan(1.));
  p("abs"
    "(N)",
    __builtin_abs(N));
  p("clz"
    "(N)",
    __builtin_clz(N));
  p("clzl"
    "(N)",
    __builtin_clzl(N));
  p("clzll"
    "(N)",
    __builtin_clzll(N));
  p("ctz"
    "(N)",
    __builtin_ctz(N));
  p("ctzl"
    "(N)",
    __builtin_ctzl(N));
  p("ctzll"
    "(N)",
    __builtin_ctzll(N));
  p("ffs"
    "(N)",
    __builtin_ffs(N));
  p("ffsl"
    "(N)",
    __builtin_ffsl(N));
  p("ffsll"
    "(N)",
    __builtin_ffsll(N));
  p("parity"
    "(N)",
    __builtin_parity(N));
  p("parityl"
    "(N)",
    __builtin_parityl(N));
  p("parityll"
    "(N)",
    __builtin_parityll(N));
  p("popcount"
    "(N)",
    __builtin_popcount(N));
  p("popcountl"
    "(N)",
    __builtin_popcountl(N));
  p("popcountll"
    "(N)",
    __builtin_popcountll(N));
  q("powi"
    "(1.2f, N)",
    __builtin_powi(1.2f, N));
  q("powif"
    "(1.2f, N)",
    __builtin_powif(1.2f, N));
  q("powil"
    "(1.2f, N)",
    __builtin_powil(1.2f, N));
  int a, b, n = random();
  char s0[10], s1[] = "Hello";
  p("strcat"
    "(s0, s1)",
    (__builtin_strcat(s0, s1), 0));
  p("strcmp"
    "(s0, s1)",
    (__builtin_strcmp(s0, s1), 0));
  p("strncat"
    "(s0, s1, n)",
    (__builtin_strncat(s0, s1, n), 0));
  p("strchr"
    "(s0, s1[0])",
    (__builtin_strchr(s0, s1[0]), 0));
  p("strrchr"
    "(s0, s1[0])",
    (__builtin_strrchr(s0, s1[0]), 0));
  p("strcpy"
    "(s0, s1)",
    (__builtin_strcpy(s0, s1), 0));
  p("strncpy"
    "(s0, s1, n)",
    (__builtin_strncpy(s0, s1, n), 0));
  p("__memset_chk"
    "(s0, 0, sizeof s0, n)",
    (__builtin___memset_chk(s0, 0, sizeof s0, n), 0));
  p("__memcpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___memcpy_chk(s0, s1, sizeof s0, n), 0));
  p("__memmove_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___memmove_chk(s0, s1, sizeof s0, n), 0));
  p("__mempcpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___mempcpy_chk(s0, s1, sizeof s0, n), 0));
  p("__strncpy_chk"
    "(s0, s1, sizeof s0, n)",
    (__builtin___strncpy_chk(s0, s1, sizeof s0, n), 0));
  p("__strcpy_chk"
    "(s0, s1, n)",
    (__builtin___strcpy_chk(s0, s1, n), 0));
  s0[0] = 0;
  p("__strcat_chk"
    "(s0, s1, n)",
    (__builtin___strcat_chk(s0, s1, n), 0));
  p("object_size"
    "(s0, 0)",
    __builtin_object_size(s0, 0));
  p("object_size"
    "(s0, 1)",
    __builtin_object_size(s0, 1));
  p("object_size"
    "(s0, 2)",
    __builtin_object_size(s0, 2));
  p("object_size"
    "(s0, 3)",
    __builtin_object_size(s0, 3));
  p("bswap16"
    "(N)",
    __builtin_bswap16(N));
  p("bswap32"
    "(N)",
    __builtin_bswap32(N));
  p("bswap64"
    "(N)",
    __builtin_bswap64(N));
  p("bitreverse8"
    "(N)",
    __builtin_bitreverse8(N));
  p("bitreverse16"
    "(N)",
    __builtin_bitreverse16(N));
  p("bitreverse32"
    "(N)",
    __builtin_bitreverse32(N));
  p("bitreverse64"
    "(N)",
    __builtin_bitreverse64(N));
  p("trap"
    "()",
    (__builtin_trap(), 0));
  r("extract_return_addr"
    "(&N)",
    __builtin_extract_return_addr(&N));
  p("signbit"
    "(1.0)",
    __builtin_signbit(1.0));
  return 0;
}
```