#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 */

/* Variables and functions */
int /*<<< orphan*/ cache_disable();
int /*<<< orphan*/ cache_enable();
scalar_t__ ddramtest1(int, double volatile *, int);
scalar_t__ ddramtest2(int, double volatile *, int);
scalar_t__ dtramtest(int, int, int, int, int);
int /*<<< orphan*/ fail(int);
int /*<<< orphan*/ flush();
int get_pid();
scalar_t__ idramtest(int, int);
scalar_t__ itramtest(int, int, int, int);
int /*<<< orphan*/ report_subtest(int);
int rsysreg(int);
cramtest() {
  volatile double mrl[8 * 1024 + 8];
  int i;
  int ilinesz, dlinesz, dbytes, ibytes, itmask, dtmask, isets, dsets;
  int icconf, dcconf, cachectrl;
  flush();
  cache_enable();
  icconf = rsysreg(8);
  dcconf = rsysreg(12);
  report_subtest(12 + (get_pid() << 4));
  isets = ((icconf >> 24) & 3) + 1;
  ilinesz = 1 << (((icconf >> 16) & 7) + 2);
  ibytes = (1 << (((icconf >> 20) & 15) + 10)) * isets;
  itmask = (ilinesz - 1) | (0x80000000 - ibytes);
  dsets = ((dcconf >> 24) & 3) + 1;
  dlinesz = 1 << (((dcconf >> 16) & 7) + 2);
  dbytes = (1 << (((dcconf >> 20) & 15) + 10)) * dsets;
  dtmask = (dlinesz - 1) | (0x80000000 - dbytes);
  do
    cachectrl = rsysreg(0);
  while (cachectrl & ((1 << 15) | (1 << 14)));
  if (ddramtest1(dbytes, mrl, 0x55555555))
    fail(1);
  if (ddramtest2(dbytes, mrl, 0xaaaaaaaa))
    fail(2);
  report_subtest(10 + (get_pid() << 4));
  cache_disable();
  if (dtramtest(dbytes, (0xaaaaaa00 & dtmask), dtmask, dlinesz, 0xaaaaaaaa))
    fail(3);
  if (dtramtest(dbytes, (0x55555500 & dtmask), dtmask, dlinesz, 0x55555555))
    fail(4);
  report_subtest(11 + (get_pid() << 4));
  if (idramtest(ibytes, 0x55555555))
    fail(5);
  if (idramtest(ibytes, 0xaaaaaaaa))
    fail(6);
  report_subtest(9 + (get_pid() << 4));
  if (itramtest(ibytes, itmask, ilinesz, 0xaaaaaaaa))
    fail(7);
  if (itramtest(ibytes, itmask, ilinesz, 0x55555555))
    fail(8);
  flush();
  cache_enable();
  return (0);
}


x86 assembly (clang, -O0):
<cramtest>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10070,%rsp
mov    $0x0,%al
call   1030 <flush@plt>
mov    $0x0,%al
call   1050 <cache_enable@plt>
mov    $0x8,%edi
call   1040 <rsysreg@plt>
mov    %eax,-0x10068(%rbp)
mov    $0xc,%edi
call   1040 <rsysreg@plt>
mov    %eax,-0x1006c(%rbp)
mov    $0x0,%al
call   10d0 <get_pid@plt>
mov    %eax,%edi
shl    $0x4,%edi
add    $0xc,%edi
call   1060 <report_subtest@plt>
mov    -0x10068(%rbp),%eax
sar    $0x18,%eax
and    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x10060(%rbp)
mov    -0x10068(%rbp),%ecx
sar    $0x10,%ecx
and    $0x7,%ecx
add    $0x2,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x10048(%rbp)
mov    -0x10068(%rbp),%ecx
sar    $0x14,%ecx
and    $0xf,%ecx
add    $0xa,%ecx
mov    $0x1,%eax
shl    %cl,%eax
imul   -0x10060(%rbp),%eax
mov    %eax,-0x10054(%rbp)
mov    -0x10048(%rbp),%eax
sub    $0x1,%eax
mov    $0x80000000,%ecx
sub    -0x10054(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x10058(%rbp)
mov    -0x1006c(%rbp),%eax
sar    $0x18,%eax
and    $0x3,%eax
add    $0x1,%eax
mov    %eax,-0x10064(%rbp)
mov    -0x1006c(%rbp),%ecx
sar    $0x10,%ecx
and    $0x7,%ecx
add    $0x2,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x1004c(%rbp)
mov    -0x1006c(%rbp),%ecx
sar    $0x14,%ecx
and    $0xf,%ecx
add    $0xa,%ecx
mov    $0x1,%eax
shl    %cl,%eax
imul   -0x10064(%rbp),%eax
mov    %eax,-0x10050(%rbp)
mov    -0x1004c(%rbp),%eax
sub    $0x1,%eax
mov    $0x80000000,%ecx
sub    -0x10050(%rbp),%ecx
or     %ecx,%eax
mov    %eax,-0x1005c(%rbp)
xor    %edi,%edi
call   1040 <rsysreg@plt>
mov    %eax,-0x10070(%rbp)
mov    -0x10070(%rbp),%eax
and    $0xc000,%eax
cmp    $0x0,%eax
jne    12ed <cramtest+0x12d>
mov    -0x10050(%rbp),%edi
lea    -0x10040(%rbp),%rsi
mov    $0x55555555,%edx
call   10e0 <ddramtest1@plt>
cmp    $0x0,%rax
je     1339 <cramtest+0x179>
mov    $0x1,%edi
call   1070 <fail@plt>
mov    -0x10050(%rbp),%edi
lea    -0x10040(%rbp),%rsi
mov    $0xaaaaaaaa,%edx
call   10a0 <ddramtest2@plt>
cmp    $0x0,%rax
je     1364 <cramtest+0x1a4>
mov    $0x2,%edi
call   1070 <fail@plt>
mov    $0x0,%al
call   10d0 <get_pid@plt>
mov    %eax,%edi
shl    $0x4,%edi
add    $0xa,%edi
call   1060 <report_subtest@plt>
mov    $0x0,%al
call   1080 <cache_disable@plt>
mov    -0x10050(%rbp),%edi
mov    -0x1005c(%rbp),%esi
and    $0xaaaaaa00,%esi
mov    -0x1005c(%rbp),%edx
mov    -0x1004c(%rbp),%ecx
mov    $0xaaaaaaaa,%r8d
call   10c0 <dtramtest@plt>
cmp    $0x0,%rax
je     13bc <cramtest+0x1fc>
mov    $0x3,%edi
call   1070 <fail@plt>
mov    -0x10050(%rbp),%edi
mov    -0x1005c(%rbp),%esi
and    $0x55555500,%esi
mov    -0x1005c(%rbp),%edx
mov    -0x1004c(%rbp),%ecx
mov    $0x55555555,%r8d
call   10c0 <dtramtest@plt>
cmp    $0x0,%rax
je     13f9 <cramtest+0x239>
mov    $0x4,%edi
call   1070 <fail@plt>
mov    $0x0,%al
call   10d0 <get_pid@plt>
mov    %eax,%edi
shl    $0x4,%edi
add    $0xb,%edi
call   1060 <report_subtest@plt>
mov    -0x10054(%rbp),%edi
mov    $0x55555555,%esi
call   10b0 <idramtest@plt>
cmp    $0x0,%rax
je     1431 <cramtest+0x271>
mov    $0x5,%edi
call   1070 <fail@plt>
mov    -0x10054(%rbp),%edi
mov    $0xaaaaaaaa,%esi
call   10b0 <idramtest@plt>
cmp    $0x0,%rax
je     1455 <cramtest+0x295>
mov    $0x6,%edi
call   1070 <fail@plt>
mov    $0x0,%al
call   10d0 <get_pid@plt>
mov    %eax,%edi
shl    $0x4,%edi
add    $0x9,%edi
call   1060 <report_subtest@plt>
mov    -0x10054(%rbp),%edi
mov    -0x10058(%rbp),%esi
mov    -0x10048(%rbp),%edx
mov    $0xaaaaaaaa,%ecx
call   1090 <itramtest@plt>
cmp    $0x0,%rax
je     1499 <cramtest+0x2d9>
mov    $0x7,%edi
call   1070 <fail@plt>
mov    -0x10054(%rbp),%edi
mov    -0x10058(%rbp),%esi
mov    -0x10048(%rbp),%edx
mov    $0x55555555,%ecx
call   1090 <itramtest@plt>
cmp    $0x0,%rax
je     14c9 <cramtest+0x309>
mov    $0x8,%edi
call   1070 <fail@plt>
mov    $0x0,%al
call   1030 <flush@plt>
mov    $0x0,%al
call   1050 <cache_enable@plt>
xor    %eax,%eax
add    $0x10070,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cramtest>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10058,%rsp
xor    %eax,%eax
call   1030 <flush@plt>
xor    %eax,%eax
call   1050 <cache_enable@plt>
mov    $0x8,%edi
call   1040 <rsysreg@plt>
mov    %eax,%ebp
mov    $0xc,%edi
call   1040 <rsysreg@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   10d0 <get_pid@plt>
shl    $0x4,%eax
lea    0xc(%rax),%edi
call   1060 <report_subtest@plt>
mov    %ebp,%eax
shr    $0x18,%eax
and    $0x3,%eax
add    $0x1,%eax
mov    %ebp,%r14d
shr    $0x10,%r14d
and    $0x7,%r14d
shr    $0x14,%ebp
and    $0xf,%bpl
mov    $0x400,%r12d
mov    $0x400,%edx
mov    %ebp,%ecx
shl    %cl,%edx
imul   %eax,%edx
mov    $0x80000000,%r15d
mov    $0x80000000,%eax
mov    %edx,0xc(%rsp)
sub    %edx,%eax
mov    %eax,0x8(%rsp)
mov    %ebx,%eax
shr    $0x18,%eax
and    $0x3,%eax
add    $0x1,%eax
mov    %ebx,%ebp
shr    $0x14,%ebx
and    $0xf,%bl
mov    %ebx,%ecx
shl    %cl,%r12d
shr    $0x10,%ebp
and    $0x7,%ebp
imul   %eax,%r12d
sub    %r12d,%r15d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xor    %edi,%edi
call   1040 <rsysreg@plt>
test   $0xc000,%eax
jne    1280 <cramtest+0xc0>
mov    $0x4,%r13d
mov    %r14d,%ecx
mov    $0x4,%r14d
shl    %cl,%r14d
mov    %ebp,%ecx
shl    %cl,%r13d
lea    -0x1(%r13),%ebx
lea    0x10(%rsp),%rsi
mov    %r12d,%edi
mov    $0x55555555,%edx
call   10e0 <ddramtest1@plt>
test   %rax,%rax
je     12ca <cramtest+0x10a>
mov    $0x1,%edi
call   1070 <fail@plt>
or     %ebx,%r15d
lea    0x10(%rsp),%rsi
mov    %r12d,%edi
mov    $0xaaaaaaaa,%edx
call   10a0 <ddramtest2@plt>
test   %rax,%rax
mov    0xc(%rsp),%ebp
je     12f2 <cramtest+0x132>
mov    $0x2,%edi
call   1070 <fail@plt>
xor    %eax,%eax
call   10d0 <get_pid@plt>
shl    $0x4,%eax
lea    0xa(%rax),%edi
call   1060 <report_subtest@plt>
xor    %eax,%eax
call   1080 <cache_disable@plt>
mov    %r15d,%esi
and    $0xaaaaaa00,%esi
mov    %r12d,%edi
mov    %r15d,%edx
mov    %r13d,%ecx
mov    $0xaaaaaaaa,%r8d
call   10c0 <dtramtest@plt>
test   %rax,%rax
je     1337 <cramtest+0x177>
mov    $0x3,%edi
call   1070 <fail@plt>
mov    %r15d,%esi
and    $0x55555500,%esi
mov    %r12d,%edi
mov    %r15d,%edx
mov    %r13d,%ecx
mov    $0x55555555,%r8d
call   10c0 <dtramtest@plt>
test   %rax,%rax
je     1363 <cramtest+0x1a3>
mov    $0x4,%edi
call   1070 <fail@plt>
lea    -0x1(%r14),%ebx
xor    %eax,%eax
call   10d0 <get_pid@plt>
shl    $0x4,%eax
lea    0xb(%rax),%edi
call   1060 <report_subtest@plt>
mov    %ebp,%edi
mov    $0x55555555,%esi
call   10b0 <idramtest@plt>
test   %rax,%rax
je     1394 <cramtest+0x1d4>
mov    $0x5,%edi
call   1070 <fail@plt>
mov    0x8(%rsp),%eax
or     %ebx,%eax
mov    %eax,%ebx
mov    %ebp,%edi
mov    $0xaaaaaaaa,%esi
call   10b0 <idramtest@plt>
test   %rax,%rax
je     13b7 <cramtest+0x1f7>
mov    $0x6,%edi
call   1070 <fail@plt>
xor    %eax,%eax
call   10d0 <get_pid@plt>
shl    $0x4,%eax
lea    0x9(%rax),%edi
call   1060 <report_subtest@plt>
mov    %ebp,%edi
mov    %ebx,%esi
mov    %r14d,%edx
mov    $0xaaaaaaaa,%ecx
call   1090 <itramtest@plt>
test   %rax,%rax
je     13e9 <cramtest+0x229>
mov    $0x7,%edi
call   1070 <fail@plt>
mov    %ebp,%edi
mov    %ebx,%esi
mov    %r14d,%edx
mov    $0x55555555,%ecx
call   1090 <itramtest@plt>
test   %rax,%rax
je     1409 <cramtest+0x249>
mov    $0x8,%edi
call   1070 <fail@plt>
xor    %eax,%eax
call   1030 <flush@plt>
xor    %eax,%eax
call   1050 <cache_enable@plt>
xor    %eax,%eax
add    $0x10058,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @cramtest() {
%1 = alloca [8200 x double]
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = call i32 (...) @flush()
%15 = call i32 (...) @cache_enable()
%16 = call i32 @rsysreg(i32 8)
store i32 %16, i32* %11
%17 = call i32 @rsysreg(i32 12)
store i32 %17, i32* %12
%18 = call i32 (...) @get_pid()
%19 = shl i32 %18, 4
%20 = add nsw i32 12, %19
%21 = call i32 @report_subtest(i32 %20)
%22 = load i32, i32* %11
%23 = ashr i32 %22, 24
%24 = and i32 %23, 3
%25 = add nsw i32 %24, 1
store i32 %25, i32* %9
%26 = load i32, i32* %11
%27 = ashr i32 %26, 16
%28 = and i32 %27, 7
%29 = add nsw i32 %28, 2
%30 = shl i32 1, %29
store i32 %30, i32* %3
%31 = load i32, i32* %11
%32 = ashr i32 %31, 20
%33 = and i32 %32, 15
%34 = add nsw i32 %33, 10
%35 = shl i32 1, %34
%36 = load i32, i32* %9
%37 = mul nsw i32 %35, %36
store i32 %37, i32* %6
%38 = load i32, i32* %3
%39 = sub nsw i32 %38, 1
%40 = load i32, i32* %6
%41 = sub i32 -2147483648, %40
%42 = or i32 %39, %41
store i32 %42, i32* %7
%43 = load i32, i32* %12
%44 = ashr i32 %43, 24
%45 = and i32 %44, 3
%46 = add nsw i32 %45, 1
store i32 %46, i32* %10
%47 = load i32, i32* %12
%48 = ashr i32 %47, 16
%49 = and i32 %48, 7
%50 = add nsw i32 %49, 2
%51 = shl i32 1, %50
store i32 %51, i32* %4
%52 = load i32, i32* %12
%53 = ashr i32 %52, 20
%54 = and i32 %53, 15
%55 = add nsw i32 %54, 10
%56 = shl i32 1, %55
%57 = load i32, i32* %10
%58 = mul nsw i32 %56, %57
store i32 %58, i32* %5
%59 = load i32, i32* %4
%60 = sub nsw i32 %59, 1
%61 = load i32, i32* %5
%62 = sub i32 -2147483648, %61
%63 = or i32 %60, %62
store i32 %63, i32* %8
br label %64
64: ; preds = %66, %0
%65 = call i32 @rsysreg(i32 0)
store i32 %65, i32* %13
br label %66
66: ; preds = %64
%67 = load i32, i32* %13
%68 = and i32 %67, 49152
%69 = icmp ne i32 %68, 0
br i1 %69, label %64, label %70
70: ; preds = %66
%71 = load i32, i32* %5
%72 = getelementptr inbounds [8200 x double], [8200 x double]* %1, i64 0, i64 0
%73 = call i64 @ddramtest1(i32 %71, double* %72, i32 1431655765)
%74 = icmp ne i64 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %70
%76 = call i32 @fail(i32 1)
br label %77
77: ; preds = %75, %70
%78 = load i32, i32* %5
%79 = getelementptr inbounds [8200 x double], [8200 x double]* %1, i64 0, i64 0
%80 = call i64 @ddramtest2(i32 %78, double* %79, i32 -1431655766)
%81 = icmp ne i64 %80, 0
br i1 %81, label %82, label %84
82: ; preds = %77
%83 = call i32 @fail(i32 2)
br label %84
84: ; preds = %82, %77
%85 = call i32 (...) @get_pid()
%86 = shl i32 %85, 4
%87 = add nsw i32 10, %86
%88 = call i32 @report_subtest(i32 %87)
%89 = call i32 (...) @cache_disable()
%90 = load i32, i32* %5
%91 = load i32, i32* %8
%92 = and i32 -1431655936, %91
%93 = load i32, i32* %8
%94 = load i32, i32* %4
%95 = call i64 @dtramtest(i32 %90, i32 %92, i32 %93, i32 %94, i32 -1431655766)
%96 = icmp ne i64 %95, 0
br i1 %96, label %97, label %99
97: ; preds = %84
%98 = call i32 @fail(i32 3)
br label %99
99: ; preds = %97, %84
%100 = load i32, i32* %5
%101 = load i32, i32* %8
%102 = and i32 1431655680, %101
%103 = load i32, i32* %8
%104 = load i32, i32* %4
%105 = call i64 @dtramtest(i32 %100, i32 %102, i32 %103, i32 %104, i32 1431655765)
%106 = icmp ne i64 %105, 0
br i1 %106, label %107, label %109
107: ; preds = %99
%108 = call i32 @fail(i32 4)
br label %109
109: ; preds = %107, %99
%110 = call i32 (...) @get_pid()
%111 = shl i32 %110, 4
%112 = add nsw i32 11, %111
%113 = call i32 @report_subtest(i32 %112)
%114 = load i32, i32* %6
%115 = call i64 @idramtest(i32 %114, i32 1431655765)
%116 = icmp ne i64 %115, 0
br i1 %116, label %117, label %119
117: ; preds = %109
%118 = call i32 @fail(i32 5)
br label %119
119: ; preds = %117, %109
%120 = load i32, i32* %6
%121 = call i64 @idramtest(i32 %120, i32 -1431655766)
%122 = icmp ne i64 %121, 0
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = call i32 @fail(i32 6)
br label %125
125: ; preds = %123, %119
%126 = call i32 (...) @get_pid()
%127 = shl i32 %126, 4
%128 = add nsw i32 9, %127
%129 = call i32 @report_subtest(i32 %128)
%130 = load i32, i32* %6
%131 = load i32, i32* %7
%132 = load i32, i32* %3
%133 = call i64 @itramtest(i32 %130, i32 %131, i32 %132, i32 -1431655766)
%134 = icmp ne i64 %133, 0
br i1 %134, label %135, label %137
135: ; preds = %125
%136 = call i32 @fail(i32 7)
br label %137
137: ; preds = %135, %125
%138 = load i32, i32* %6
%139 = load i32, i32* %7
%140 = load i32, i32* %3
%141 = call i64 @itramtest(i32 %138, i32 %139, i32 %140, i32 1431655765)
%142 = icmp ne i64 %141, 0
br i1 %142, label %143, label %145
143: ; preds = %137
%144 = call i32 @fail(i32 8)
br label %145
145: ; preds = %143, %137
%146 = call i32 (...) @flush()
%147 = call i32 (...) @cache_enable()
ret i32 0
}

LLVM IR (-O2):
define i32 @cramtest() {
%1 = alloca [8200 x double]
%2 = bitcast [8200 x double]* %1 to i8*
%3 = tail call i32 (...) @flush()
%4 = tail call i32 (...) @cache_enable()
%5 = tail call i32 @rsysreg(i32 8)
%6 = tail call i32 @rsysreg(i32 12)
%7 = tail call i32 (...) @get_pid()
%8 = shl i32 %7, 4
%9 = or i32 %8, 12
%10 = tail call i32 @report_subtest(i32 %9)
%11 = lshr i32 %5, 24
%12 = and i32 %11, 3
%13 = add nuw nsw i32 %12, 1
%14 = lshr i32 %5, 16
%15 = and i32 %14, 7
%16 = lshr i32 %5, 20
%17 = and i32 %16, 15
%18 = shl nuw nsw i32 1024, %17
%19 = mul nuw nsw i32 %18, %13
%20 = sub nuw i32 -2147483648, %19
%21 = lshr i32 %6, 24
%22 = and i32 %21, 3
%23 = add nuw nsw i32 %22, 1
%24 = lshr i32 %6, 16
%25 = and i32 %24, 7
%26 = lshr i32 %6, 20
%27 = and i32 %26, 15
%28 = shl nuw nsw i32 1024, %27
%29 = mul nuw nsw i32 %28, %23
%30 = sub nuw i32 -2147483648, %29
br label %31
31: ; preds = %31, %0
%32 = tail call i32 @rsysreg(i32 0)
%33 = and i32 %32, 49152
%34 = icmp eq i32 %33, 0
br i1 %34, label %35, label %31
35: ; preds = %31
%36 = shl nuw nsw i32 4, %15
%37 = add nsw i32 %36, -1
%38 = or i32 %20, %37
%39 = shl nuw nsw i32 4, %25
%40 = add nsw i32 %39, -1
%41 = or i32 %30, %40
%42 = getelementptr inbounds [8200 x double], [8200 x double]* %1, i64 0, i64 0
%43 = call i64 @ddramtest1(i32 %29, double* %42, i32 1431655765)
%44 = icmp eq i64 %43, 0
br i1 %44, label %47, label %45
45: ; preds = %35
%46 = call i32 @fail(i32 1)
br label %47
47: ; preds = %45, %35
%48 = call i64 @ddramtest2(i32 %29, double* %42, i32 -1431655766)
%49 = icmp eq i64 %48, 0
br i1 %49, label %52, label %50
50: ; preds = %47
%51 = call i32 @fail(i32 2)
br label %52
52: ; preds = %50, %47
%53 = call i32 (...) @get_pid()
%54 = shl i32 %53, 4
%55 = or i32 %54, 10
%56 = call i32 @report_subtest(i32 %55)
%57 = call i32 (...) @cache_disable()
%58 = and i32 %41, -1431655936
%59 = call i64 @dtramtest(i32 %29, i32 %58, i32 %41, i32 %39, i32 -1431655766)
%60 = icmp eq i64 %59, 0
br i1 %60, label %63, label %61
61: ; preds = %52
%62 = call i32 @fail(i32 3)
br label %63
63: ; preds = %61, %52
%64 = and i32 %41, 1431655680
%65 = call i64 @dtramtest(i32 %29, i32 %64, i32 %41, i32 %39, i32 1431655765)
%66 = icmp eq i64 %65, 0
br i1 %66, label %69, label %67
67: ; preds = %63
%68 = call i32 @fail(i32 4)
br label %69
69: ; preds = %67, %63
%70 = call i32 (...) @get_pid()
%71 = shl i32 %70, 4
%72 = or i32 %71, 11
%73 = call i32 @report_subtest(i32 %72)
%74 = call i64 @idramtest(i32 %19, i32 1431655765)
%75 = icmp eq i64 %74, 0
br i1 %75, label %78, label %76
76: ; preds = %69
%77 = call i32 @fail(i32 5)
br label %78
78: ; preds = %76, %69
%79 = call i64 @idramtest(i32 %19, i32 -1431655766)
%80 = icmp eq i64 %79, 0
br i1 %80, label %83, label %81
81: ; preds = %78
%82 = call i32 @fail(i32 6)
br label %83
83: ; preds = %81, %78
%84 = call i32 (...) @get_pid()
%85 = shl i32 %84, 4
%86 = or i32 %85, 9
%87 = call i32 @report_subtest(i32 %86)
%88 = call i64 @itramtest(i32 %19, i32 %38, i32 %36, i32 -1431655766)
%89 = icmp eq i64 %88, 0
br i1 %89, label %92, label %90
90: ; preds = %83
%91 = call i32 @fail(i32 7)
br label %92
92: ; preds = %90, %83
%93 = call i64 @itramtest(i32 %19, i32 %38, i32 %36, i32 1431655765)
%94 = icmp eq i64 %93, 0
br i1 %94, label %97, label %95
95: ; preds = %92
%96 = call i32 @fail(i32 8)
br label %97
97: ; preds = %95, %92
%98 = call i32 (...) @flush()
%99 = call i32 (...) @cache_enable()
ret i32 0
}