#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ numericalRevisions;
typedef int /*<<< orphan*/ bitFieldRevisions;

/* Variables and functions */
int /*<<< orphan*/ printRevisionTable(int *, int);
int main(void) {
  int numericalRevisions[] = {
      0x000000, 0x000001, 0x000002, 0x000003, 0x000004, 0x000005,
      0x000006, 0x000007, 0x000008, 0x000009, 0x00000A, 0x00000B,
      0x00000C, 0x00000D, 0x00000E, 0x00000F, 0x000010, 0x000011,
      0x000012, 0x000013, 0x000014, 0x000015,
  };
  printRevisionTable(numericalRevisions, sizeof(numericalRevisions) /
                                             sizeof(numericalRevisions[0]));
  int bitFieldRevisions[] = {
      0x900021, 0x900092, 0x900093, 0x920093, 0x9000C1,
      0xA01041, 0xA21041, 0xA22042, 0xA02082, 0xA22082,
      0xA32082, 0xA020A0, 0xA220A0, 0xA020D3, 0xB03111,
  };
  printRevisionTable(bitFieldRevisions,
                     sizeof(bitFieldRevisions) / sizeof(bitFieldRevisions[0]));
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x60(%rbp),%rdi
lea    0xec3(%rip),%rsi
mov    $0x58,%edx
call   1040 <memcpy@plt>
lea    -0x60(%rbp),%rdi
mov    $0x16,%esi
call   1030 <printRevisionTable@plt>
lea    -0xa0(%rbp),%rdi
lea    0xefd(%rip),%rsi
mov    $0x3c,%edx
call   1040 <memcpy@plt>
lea    -0xa0(%rbp),%rdi
mov    $0xf,%esi
call   1030 <printRevisionTable@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x98,%rsp
mov    0xf32(%rip),%rax
mov    %rax,0x90(%rsp)
movaps 0xf13(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xef4(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xebc(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xea0(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
lea    0x40(%rsp),%rdi
mov    $0x16,%esi
call   1030 <printRevisionTable@plt>
movups 0xf11(%rip),%xmm0
movups %xmm0,0x2c(%rsp)
movaps 0xef9(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xedd(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xec1(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    %rsp,%rdi
mov    $0xf,%esi
call   1030 <printRevisionTable@plt>
xor    %eax,%eax
add    $0x98,%rsp
ret

LLVM IR (-O0):
@__const.main.numericalRevisions = [22 x i32] [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21]
@__const.main.bitFieldRevisions = [15 x i32] [i32 9437217, i32 9437330, i32 9437331, i32 9568403, i32 9437377, i32 10489921, i32 10620993, i32 10625090, i32 10494082, i32 10625154, i32 10690690, i32 10494112, i32 10625184, i32 10494163, i32 11546897]
define i32 @main() {
%1 = alloca i32
%2 = alloca [22 x i32]
%3 = alloca [15 x i32]
store i32 0, i32* %1
%4 = bitcast [22 x i32]* %2 to i8*
%5 = getelementptr inbounds [22 x i32], [22 x i32]* %2, i64 0, i64 0
%6 = call i32 @printRevisionTable(i32* %5, i32 22)
%7 = bitcast [15 x i32]* %3 to i8*
%8 = getelementptr inbounds [15 x i32], [15 x i32]* %3, i64 0, i64 0
%9 = call i32 @printRevisionTable(i32* %8, i32 15)
ret i32 0
}

LLVM IR (-O2):
@__const.main.numericalRevisions = [22 x i32] [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21]
@__const.main.bitFieldRevisions = [15 x i32] [i32 9437217, i32 9437330, i32 9437331, i32 9568403, i32 9437377, i32 10489921, i32 10620993, i32 10625090, i32 10494082, i32 10625154, i32 10690690, i32 10494112, i32 10625184, i32 10494163, i32 11546897]
define i32 @main() {
%1 = alloca [22 x i32]
%2 = alloca [15 x i32]
%3 = bitcast [22 x i32]* %1 to i8*
%4 = getelementptr inbounds [22 x i32], [22 x i32]* %1, i64 0, i64 0
%5 = call i32 @printRevisionTable(i32* %4, i32 22)
%6 = bitcast [15 x i32]* %2 to i8*
%7 = getelementptr inbounds [15 x i32], [15 x i32]* %2, i64 0, i64 0
%8 = call i32 @printRevisionTable(i32* %7, i32 15)
ret i32 0
}