user: Translate the below assembly code into C programming language:

```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
  call   <random@plt>
  mov    %eax,%ebx
  mov    $0x0,%esi
  lea    D33(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x14,%esi
  lea    D649(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D192(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  cmp    $0xc,%ebx
  sete   %sil
  movzbl %sil,%esi
  lea    D759(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  lea    0x14(%rsp),%rbp
  prefetcht0 0x0(%rbp)
  mov    $0x0,%esi
  lea    D107(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  prefetcht0 0x0(%rbp)
  mov    $0x0,%esi
  lea    D322(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  prefetchnta 0x0(%rbp)
  mov    $0x0,%esi
  lea    D2(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    D316(%rip),%rax
  movq   %rax,%xmm0
  lea    D359(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  mov    D316(%rip),%rax
  movq   %rax,%xmm0
  lea    D445(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  flds   0x1137(%rip)        # 2528 <_fini+0x83c>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <q@plt>
  mov    D316(%rip),%rax
  movq   %rax,%xmm0
  lea    D609(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  mov    D316(%rip),%rax
  movq   %rax,%xmm0
  lea    D121(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  flds   0x10d9(%rip)        # 2528 <_fini+0x83c>
  fstpt  0x10(%rsp)
  mov    0x10(%rsp),%rax
  mov    0x18(%rsp),%edx
  push   %rdx
  push   %rax
  lea    D296(%rip),%rdi
  mov    $0x0,%eax
  call   <q@plt>
  add    $0x20,%rsp
  mov    $0x2,%esi
  lea    D689(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x2,%esi
  lea    D0(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x2,%esi
  lea    D864(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    D628(%rip),%rax
  movq   %rax,%xmm0
  lea    D577(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  mov    D628(%rip),%rax
  movq   %rax,%xmm0
  lea    D341(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  flds   0x1037(%rip)        # 252c <_fini+0x840>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  lea    D733(%rip),%rdi
  mov    $0x0,%eax
  call   <q@plt>
  movsd  D452(%rip),%xmm0
  lea    D701(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  movsd  D312(%rip),%xmm0
  lea    D551(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  movsd  D755(%rip),%xmm0
  lea    D651(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  push   $0x7fff
  push   $0xa
  movl   $0xc0000000,0x4(%rsp)
  lea    D511(%rip),%rdi
  mov    $0x0,%eax
  call   <q@plt>
  add    $0x20,%rsp
  movsd  D35(%rip),%xmm0
  lea    D760(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  mov    $0x0,%esi
  lea    D824(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D687(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D346(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D365(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x1,%esi
  lea    D349(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D127(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D416(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D352(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D786(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%esi
  neg    %esi
  cmovs  %ebx,%esi
  lea    D205(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  bsr    %ebx,%esi
  xor    $0x1f,%esi
  lea    D459(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  movslq %ebx,%rbp
  bsr    %rbp,%rsi
  xor    $0x3f,%esi
  lea    D301(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  bsr    %rbp,%rsi
  xor    $0x3f,%esi
  lea    D505(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  xor    %r13d,%r13d
  tzcnt  %ebx,%r13d
  mov    %r13d,%esi
  lea    D699(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  xor    %r12d,%r12d
  tzcnt  %rbp,%r12
  mov    %r12d,%esi
  lea    D560(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12d,%esi
  lea    D668(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  bsf    %ebx,%esi
  mov    $0xffffffff,%esi
  cmovne %r13d,%esi
  add    $0x1,%esi
  lea    D418(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0xffffffffffffffff,%r13
  bsf    %rbp,%rax
  cmove  %r13,%rax
  lea    0x1(%rax),%esi
  lea    D252(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  bsf    %rbp,%rax
  cmove  %r13,%rax
  lea    0x1(%rax),%esi
  lea    D854(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%eax
  shr    $0x10,%eax
  xor    %ebx,%eax
  xor    %ah,%al
  setnp  %sil
  movzbl %sil,%esi
  lea    D885(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %rbp,%r12
  shr    $0x20,%r12
  xor    %ebx,%r12d
  mov    %r12d,%r13d
  shr    $0x10,%r13d
  mov    %r12d,%eax
  xor    %r13d,%eax
  xor    %ah,%al
  setnp  %sil
  movzbl %sil,%esi
  lea    D670(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12d,%eax
  xor    %r13d,%eax
  xor    %ah,%al
  setnp  %sil
  movzbl %sil,%esi
  lea    D723(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  call   <__popcountdi2>
  mov    %eax,%esi
  lea    D599(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %rbp,%rdi
  call   <__popcountdi2>
  mov    %eax,%r12d
  mov    %eax,%esi
  lea    D448(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12d,%esi
  lea    D508(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  movsd  D325(%rip),%xmm0
  call   <__powidf2>
  lea    D681(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  mov    %ebx,%edi
  movss  D171(%rip),%xmm0
  call   <__powisf2>
  cvtss2sd %xmm0,%xmm0
  lea    D686(%rip),%rdi
  mov    $0x1,%eax
  call   <q@plt>
  flds   0xcb7(%rip)        # 2530 <_fini+0x844>
  fstpt  (%rsp)
  mov    (%rsp),%rax
  mov    0x8(%rsp),%edx
  push   %rdx
  push   %rax
  mov    %ebx,%edi
  call   <__powixf2>
  fstpt  (%rsp)
  lea    D523(%rip),%rdi
  mov    $0x0,%eax
  call   <q@plt>
  mov    $0x0,%eax
  call   <random@plt>
  mov    %eax,%r12d
  movl   $0x6c6c6548,0x28(%rsp)
  movw   $0x6f,0x2c(%rsp)
  lea    0x28(%rsp),%r14
  lea    0x2e(%rsp),%r13
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <strcat@plt>
  mov    $0x0,%esi
  lea    D474(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D470(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  movslq %r12d,%r12
  mov    %r12,%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <strncat@plt>
  mov    $0x0,%esi
  lea    D876(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D266(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D514(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <strcpy@plt>
  mov    $0x0,%esi
  lea    D743(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12,%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <strncpy@plt>
  mov    $0x0,%esi
  lea    D421(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D244(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D852(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0x0,%esi
  lea    D618(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12,%rcx
  mov    $0xa,%edx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <__mempcpy_chk@plt>
  mov    $0x0,%esi
  lea    D506(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12,%rcx
  mov    $0xa,%edx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <__strncpy_chk@plt>
  mov    $0x0,%esi
  lea    D779(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %r12,%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <__strcpy_chk@plt>
  mov    $0x0,%esi
  lea    D865(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  movb   $0x0,0x2e(%rsp)
  mov    %r12,%rdx
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <__strcat_chk@plt>
  mov    $0x0,%esi
  lea    D562(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D216(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D354(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D719(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    $0xa,%esi
  lea    D807(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%esi
  rol    $0x8,%si
  movzwl %si,%esi
  lea    D87(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%esi
  bswap  %esi
  lea    D538(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %rbp,%rsi
  bswap  %rsi
  lea    D732(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <__builtin_bitreverse8@plt>
  mov    %eax,%esi
  lea    D596(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <__builtin_bitreverse16@plt>
  mov    %eax,%esi
  lea    D535(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <__builtin_bitreverse32@plt>
  mov    %eax,%esi
  lea    D667(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <__builtin_bitreverse64@plt>
  mov    %eax,%esi
  lea    D429(%rip),%rdi
  mov    $0x0,%eax
  call   <p@plt>
  ud2
```

tool_calls: name: disassemble_data
arguments: data_label: D33
datatype: string
name: disassemble_data
arguments: data_label: D649
datatype: string
name: disassemble_data
arguments: data_label: D192
datatype: string
name: disassemble_data
arguments: data_label: D759
datatype: string
name: disassemble_data
arguments: data_label: D107
datatype: string
name: disassemble_data
arguments: data_label: D322
datatype: string
name: disassemble_data
arguments: data_label: D2
datatype: string
name: disassemble_data
arguments: data_label: D316
datatype: byte[8]
name: disassemble_data
arguments: data_label: D359
datatype: string
name: disassemble_data
arguments: data_label: D445
datatype: string
name: disassemble_data
arguments: data_label: D340
datatype: string
name: disassemble_data
arguments: data_label: D609
datatype: string
name: disassemble_data
arguments: data_label: D121
datatype: string
name: disassemble_data
arguments: data_label: D296
datatype: string
name: disassemble_data
arguments: data_label: D689
datatype: string
name: disassemble_data
arguments: data_label: D0
datatype: string
name: disassemble_data
arguments: data_label: D864
datatype: string
name: disassemble_data
arguments: data_label: D628
datatype: byte[8]
name: disassemble_data
arguments: data_label: D577
datatype: string
name: disassemble_data
arguments: data_label: D341
datatype: string
name: disassemble_data
arguments: data_label: D733
datatype: string
name: disassemble_data
arguments: data_label: D452
datatype: byte[8]
name: disassemble_data
arguments: data_label: D701
datatype: string
name: disassemble_data
arguments: data_label: D312
datatype: byte[8]
name: disassemble_data
arguments: data_label: D551
datatype: string
name: disassemble_data
arguments: data_label: D755
datatype: f32[2]
name: disassemble_data
arguments: data_label: D651
datatype: string
name: disassemble_data
arguments: data_label: D511
datatype: string
name: disassemble_data
arguments: data_label: D35
datatype: byte[8]
name: disassemble_data
arguments: data_label: D760
datatype: string
name: disassemble_data
arguments: data_label: D824
datatype: string
name: disassemble_data
arguments: data_label: D687
datatype: string
name: disassemble_data
arguments: data_label: D346
datatype: string
name: disassemble_data
arguments: data_label: D365
datatype: string
name: disassemble_data
arguments: data_label: D349
datatype: string
name: disassemble_data
arguments: data_label: D127
datatype: string
name: disassemble_data
arguments: data_label: D416
datatype: string
name: disassemble_data
arguments: data_label: D352
datatype: string
name: disassemble_data
arguments: data_label: D786
datatype: string
name: disassemble_data
arguments: data_label: D205
datatype: string
name: disassemble_data
arguments: data_label: D459
datatype: string
name: disassemble_data
arguments: data_label: D301
datatype: string
name: disassemble_data
arguments: data_label: D505
datatype: string
name: disassemble_data
arguments: data_label: D699
datatype: string
name: disassemble_data
arguments: data_label: D560
datatype: string
name: disassemble_data
arguments: data_label: D668
datatype: string
name: disassemble_data
arguments: data_label: D418
datatype: string
name: disassemble_data
arguments: data_label: D252
datatype: string
name: disassemble_data
arguments: data_label: D854
datatype: string
name: disassemble_data
arguments: data_label: D885
datatype: string
name: disassemble_data
arguments: data_label: D670
datatype: string
name: disassemble_data
arguments: data_label: D723
datatype: string
name: disassemble_data
arguments: data_label: D599
datatype: string
name: disassemble_data
arguments: data_label: D448
datatype: string
name: disassemble_data
arguments: data_label: D508
datatype: string
name: disassemble_data
arguments: data_label: D325
datatype: f32[2]
name: disassemble_data
arguments: data_label: D681
datatype: string
name: disassemble_data
arguments: data_label: D171
datatype: byte[4]
name: disassemble_data
arguments: data_label: D686
datatype: string
name: disassemble_data
arguments: data_label: D523
datatype: string
name: disassemble_data
arguments: data_label: D474
datatype: string
name: disassemble_data
arguments: data_label: D470
datatype: string
name: disassemble_data
arguments: data_label: D876
datatype: string
name: disassemble_data
arguments: data_label: D266
datatype: string
name: disassemble_data
arguments: data_label: D514
datatype: string
name: disassemble_data
arguments: data_label: D743
datatype: string
name: disassemble_data
arguments: data_label: D421
datatype: string
name: disassemble_data
arguments: data_label: D244
datatype: string
name: disassemble_data
arguments: data_label: D852
datatype: string
name: disassemble_data
arguments: data_label: D618
datatype: string
name: disassemble_data
arguments: data_label: D506
datatype: string
name: disassemble_data
arguments: data_label: D779
datatype: string
name: disassemble_data
arguments: data_label: D865
datatype: string
name: disassemble_data
arguments: data_label: D562
datatype: string
name: disassemble_data
arguments: data_label: D216
datatype: string
name: disassemble_data
arguments: data_label: D354
datatype: string
name: disassemble_data
arguments: data_label: D719
datatype: string
name: disassemble_data
arguments: data_label: D807
datatype: string
name: disassemble_data
arguments: data_label: D87
datatype: string
name: disassemble_data
arguments: data_label: D538
datatype: string
name: disassemble_data
arguments: data_label: D732
datatype: string
name: disassemble_data
arguments: data_label: D596
datatype: string
name: disassemble_data
arguments: data_label: D535
datatype: string
name: disassemble_data
arguments: data_label: D667
datatype: string
name: disassemble_data
arguments: data_label: D429
datatype: string

tool: D33: types_compatible_p(int, float)

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

tool: D192: constant_p(sizeof(10))

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

tool: D107: prefetch(&N)

tool: D322: prefetch(&N, 1)

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

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

tool: D359: huge_val()

tool: D445: huge_valf()

tool: D340: huge_vall()

tool: D609: inf()

tool: D121: inff()

tool: D296: infl()

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

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

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

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

tool: D577: nan("")

tool: D341: nanf("")

tool: D733: nanl("")

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

tool: D701: nans("")

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

tool: D551: nan("10")

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

tool: D651: nanf("10")

tool: D511: nanl("10")

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

tool: D760: nans("10")

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

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

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

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

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

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

tool: D416: isinf(1.)

tool: D352: isinf_sign(1.)

tool: D786: isnan(1.)

tool: D205: abs(N)

tool: D459: clz(N)

tool: D301: clzl(N)

tool: D505: clzll(N)

tool: D699: ctz(N)

tool: D560: ctzl(N)

tool: D668: ctzll(N)

tool: D418: ffs(N)

tool: D252: ffsl(N)

tool: D854: ffsll(N)

tool: D885: parity(N)

tool: D670: parityl(N)

tool: D723: parityll(N)

tool: D599: popcount(N)

tool: D448: popcountl(N)

tool: D508: popcountll(N)

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

tool: D681: powi(1.2f, N)

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

tool: D686: powif(1.2f, N)

tool: D523: powil(1.2f, N)

tool: D474: strcat(s0, s1)

tool: D470: strcmp(s0, s1)

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

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

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

tool: D743: strcpy(s0, s1)

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

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

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

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

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

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

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

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

tool: D216: object_size(s0, 0)

tool: D354: object_size(s0, 1)

tool: D719: object_size(s0, 2)

tool: D807: object_size(s0, 3)

tool: D87: bswap16(N)

tool: D538: bswap32(N)

tool: D732: bswap64(N)

tool: D596: bitreverse8(N)

tool: D535: bitreverse16(N)

tool: D667: bitreverse32(N)

tool: D429: 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;
}
```