grtc_test(int paddr, int buffersize) {
  report_device(0x01031000);
  struct grtc_reg {
    volatile unsigned long grr;
    volatile unsigned long gcr;
    volatile unsigned long pmr;
    volatile unsigned long sir;
    volatile unsigned long far;
    volatile unsigned long clcwr1;
    volatile unsigned long clcwr2;
    volatile unsigned long phir;
    volatile unsigned long cor;
    volatile unsigned long str;
    volatile unsigned long asr;
    volatile unsigned long rrp;
    volatile unsigned long rwp;
    volatile unsigned long dummy0;
    volatile unsigned long dummy1;
    volatile unsigned long dummy2;
    volatile unsigned long dummy3;
    volatile unsigned long dummy4;
    volatile unsigned long dummy5;
    volatile unsigned long dummy6;
    volatile unsigned long dummy7;
    volatile unsigned long dummy8;
    volatile unsigned long dummy9;
    volatile unsigned long dummy10;
    volatile unsigned long pimsr;
    volatile unsigned long pimr;
    volatile unsigned long pisr;
    volatile unsigned long pir;
    volatile unsigned long imr;
    volatile unsigned long picr;
  };
  struct grtc_reg *ltc = (struct grtc_reg *)(paddr);
  report_subtest(0x0);
  int SEB = 0x55;
  int SRST = 1;
  ltc->grr = (SEB << 24) | (SRST);
  int PSS = 0;
  int NRZM = 0;
  int PSR = 0;
  ltc->gcr = (SEB << 24) | (PSS << 12) | (NRZM << 11) | (PSR << 10);
  int MASK = 0;
  ltc->pmr = MASK;
  int CWTY = 0;
  int VNUM = 0;
  int STAF = 0;
  int CIE = 0;
  int VCI = 0;
  int NRFA = 0;
  int NBLO = 0;
  int LOUT = 0;
  int WAIT = 0;
  int RTMI = 0;
  int FBCO = 0;
  int RTYPE = 0;
  int RVAL = 0;
  volatile long int framememory[buffersize / 4];
  long int framememorybase;
  framememorybase = (long int)&framememory[0];
  framememorybase = framememorybase & 0xFFFFFC00;
  framememorybase = framememorybase + 0x400;
  int BUFST = (framememorybase >> 10) & 0x003FFFFF;
  int RXLEN = (buffersize / 1024 - 1) & 0x3FF;
  ltc->asr = (BUFST << 10) | (RXLEN);
  int PCS = 0;
  int POV = 0;
  int PRBF = 0;
  int PCR = 0;
  int PFAR = 0;
  int PBLO = 0;
  int PRFA = 0;
  int CRST = 0;
  int RE = 1;
  ltc->cor = (SEB << 24) | (CRST << 9) | (RE);
  report_subtest(0x1);
  report_subtest(0x2);
  while ((ltc->pir & 0x40) != 0x40)
    ;
  volatile int *memoryrx;
  memoryrx = (int *)framememorybase;
  if (0x10010500 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0xC0000000 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0x00000700 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0x00000100 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0x02000300 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0x04000500 != *memoryrx)
    fail(1);
  memoryrx++;
  if (0x3700C500 != *memoryrx)
    fail(1);
  memoryrx++;
  NRZM = 1;
  PSR = 0;
  ltc->gcr = (SEB << 24) | (PSS << 12) | (NRZM << 11) | (PSR << 10);
  report_subtest(0x3);
  while ((ltc->pir & 0x40) != 0x40)
    ;
  if (0x00021001 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x0500C000 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x01000000 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x0E000000 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x01000200 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x03000400 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x05000600 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x07000800 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x09000A00 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0x0B000C00 != *memoryrx)
    fail(2);
  memoryrx++;
  if (0xC7005F00 != *memoryrx)
    fail(2);
  memoryrx++;
  NRZM = 0;
  PSR = 1;
  ltc->gcr = (SEB << 24) | (PSS << 12) | (NRZM << 11) | (PSR << 10);
  report_subtest(0x4);
  while ((ltc->pir & 0x40) != 0x40)
    ;
  if (0x00021001 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x0500C000 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x02000000 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x15000000 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x01000200 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x03000400 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x05000600 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x07000800 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x09000A00 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x0B000C00 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x0D000E00 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x0F001000 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x11001200 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0x13007D00 != *memoryrx)
    fail(3);
  memoryrx++;
  if (0xBC000002 != *memoryrx)
    fail(3);
  memoryrx++;
  NRZM = 1;
  PSR = 1;
  ltc->gcr = (SEB << 24) | (PSS << 12) | (NRZM << 11) | (PSR << 10);
  report_subtest(0x5);
  while ((ltc->pir & 0x40) != 0x40)
    ;
  if (0x10010500 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0xC0000300 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x00001C00 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x00000100 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x02000300 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x04000500 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x06000700 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x08000900 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x0A000B00 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x0C000D00 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x0E000F00 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x10001100 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x12001300 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x14001500 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x16001700 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x18001900 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x1A004B00 != *memoryrx)
    fail(4);
  memoryrx++;
  if (0x11000002 != *memoryrx)
    fail(4);
  memoryrx++;
  int RXWRPR = (int)memoryrx;
  if (ltc->rwp != RXWRPR)
    fail(5);
  report_subtest(0x6);
}


x86 assembly (clang, -O0):
<grtc_test>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
xor    %eax,%eax
mov    %eax,-0xc4(%rbp)
mov    %al,-0xbd(%rbp)
mov    $0x1031000,%edi
call   1030 <report_device@plt>
mov    -0xc4(%rbp),%edi
mov    -0xbd(%rbp),%al
movslq -0x8(%rbp),%rcx
mov    %rcx,-0x18(%rbp)
call   1040 <report_subtest@plt>
movl   $0x55,-0x1c(%rbp)
movl   $0x1,-0x20(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0x20(%rbp),%ecx
or     %ecx,%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0x24(%rbp),%ecx
shl    $0xc,%ecx
or     %ecx,%eax
mov    -0x28(%rbp),%ecx
shl    $0xb,%ecx
or     %ecx,%eax
mov    -0x2c(%rbp),%ecx
shl    $0xa,%ecx
or     %ecx,%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x8(%rax)
movl   $0x0,-0x30(%rbp)
movslq -0x30(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x10(%rax)
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
movl   $0x0,-0x58(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x0,-0x60(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,%ecx
add    $0x3,%ecx
test   %eax,%eax
cmovs  %ecx,%eax
sar    $0x2,%eax
mov    %eax,%ecx
mov    %rsp,%rax
mov    %rax,-0x70(%rbp)
lea    0xf(,%rcx,8),%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rax
sub    %rdx,%rax
mov    %rax,%rsp
mov    %rcx,-0x78(%rbp)
mov    %rax,-0x80(%rbp)
movabs $0xfffffc00,%rax
and    -0x80(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
add    $0x400,%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
sar    $0xa,%rax
and    $0x3fffff,%rax
mov    %eax,-0x84(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x400,%ecx
cltd
idiv   %ecx
sub    $0x1,%eax
and    $0x3ff,%eax
mov    %eax,-0x88(%rbp)
mov    -0x84(%rbp),%eax
shl    $0xa,%eax
or     -0x88(%rbp),%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x50(%rax)
movl   $0x0,-0x8c(%rbp)
movl   $0x0,-0x90(%rbp)
movl   $0x0,-0x94(%rbp)
movl   $0x0,-0x98(%rbp)
movl   $0x0,-0x9c(%rbp)
movl   $0x0,-0xa0(%rbp)
movl   $0x0,-0xa4(%rbp)
movl   $0x0,-0xa8(%rbp)
movl   $0x1,-0xac(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0xa8(%rbp),%ecx
shl    $0x9,%ecx
or     %ecx,%eax
or     -0xac(%rbp),%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x40(%rax)
mov    $0x1,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    -0x18(%rbp),%rax
mov    0xd8(%rax),%rax
and    $0x40,%rax
cmp    $0x40,%rax
je     1390 <grtc_test+0x260>
jmp    1372 <grtc_test+0x242>
mov    -0x80(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x10010500,%eax
cmp    %ecx,%eax
je     13bd <grtc_test+0x28d>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xc0000000,%eax
cmp    %ecx,%eax
je     13f1 <grtc_test+0x2c1>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x700,%eax
cmp    %ecx,%eax
je     1425 <grtc_test+0x2f5>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x100,%eax
cmp    %ecx,%eax
je     1459 <grtc_test+0x329>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x2000300,%eax
cmp    %ecx,%eax
je     148d <grtc_test+0x35d>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x4000500,%eax
cmp    %ecx,%eax
je     14c1 <grtc_test+0x391>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x3700c500,%eax
cmp    %ecx,%eax
je     14f5 <grtc_test+0x3c5>
mov    $0x1,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
movl   $0x1,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0x24(%rbp),%ecx
shl    $0xc,%ecx
or     %ecx,%eax
mov    -0x28(%rbp),%ecx
shl    $0xb,%ecx
or     %ecx,%eax
mov    -0x2c(%rbp),%ecx
shl    $0xa,%ecx
or     %ecx,%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    $0x3,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    -0x18(%rbp),%rax
mov    0xd8(%rax),%rax
and    $0x40,%rax
cmp    $0x40,%rax
je     1568 <grtc_test+0x438>
jmp    154a <grtc_test+0x41a>
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x21001,%eax
cmp    %ecx,%eax
je     158a <grtc_test+0x45a>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x500c000,%eax
cmp    %ecx,%eax
je     15be <grtc_test+0x48e>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x1000000,%eax
cmp    %ecx,%eax
je     15f2 <grtc_test+0x4c2>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xe000000,%eax
cmp    %ecx,%eax
je     1626 <grtc_test+0x4f6>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x1000200,%eax
cmp    %ecx,%eax
je     165a <grtc_test+0x52a>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x3000400,%eax
cmp    %ecx,%eax
je     168e <grtc_test+0x55e>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x5000600,%eax
cmp    %ecx,%eax
je     16c2 <grtc_test+0x592>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x7000800,%eax
cmp    %ecx,%eax
je     16f6 <grtc_test+0x5c6>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x9000a00,%eax
cmp    %ecx,%eax
je     172a <grtc_test+0x5fa>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xb000c00,%eax
cmp    %ecx,%eax
je     175e <grtc_test+0x62e>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xc7005f00,%eax
cmp    %ecx,%eax
je     1792 <grtc_test+0x662>
mov    $0x2,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0x24(%rbp),%ecx
shl    $0xc,%ecx
or     %ecx,%eax
mov    -0x28(%rbp),%ecx
shl    $0xb,%ecx
or     %ecx,%eax
mov    -0x2c(%rbp),%ecx
shl    $0xa,%ecx
or     %ecx,%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    $0x4,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    -0x18(%rbp),%rax
mov    0xd8(%rax),%rax
and    $0x40,%rax
cmp    $0x40,%rax
je     1805 <grtc_test+0x6d5>
jmp    17e7 <grtc_test+0x6b7>
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x21001,%eax
cmp    %ecx,%eax
je     1827 <grtc_test+0x6f7>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x500c000,%eax
cmp    %ecx,%eax
je     185b <grtc_test+0x72b>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x2000000,%eax
cmp    %ecx,%eax
je     188f <grtc_test+0x75f>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x15000000,%eax
cmp    %ecx,%eax
je     18c3 <grtc_test+0x793>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x1000200,%eax
cmp    %ecx,%eax
je     18f7 <grtc_test+0x7c7>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x3000400,%eax
cmp    %ecx,%eax
je     192b <grtc_test+0x7fb>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x5000600,%eax
cmp    %ecx,%eax
je     195f <grtc_test+0x82f>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x7000800,%eax
cmp    %ecx,%eax
je     1993 <grtc_test+0x863>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x9000a00,%eax
cmp    %ecx,%eax
je     19c7 <grtc_test+0x897>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xb000c00,%eax
cmp    %ecx,%eax
je     19fb <grtc_test+0x8cb>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xd000e00,%eax
cmp    %ecx,%eax
je     1a2f <grtc_test+0x8ff>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xf001000,%eax
cmp    %ecx,%eax
je     1a63 <grtc_test+0x933>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x11001200,%eax
cmp    %ecx,%eax
je     1a97 <grtc_test+0x967>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x13007d00,%eax
cmp    %ecx,%eax
je     1acb <grtc_test+0x99b>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xbc000002,%eax
cmp    %ecx,%eax
je     1aff <grtc_test+0x9cf>
mov    $0x3,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
movl   $0x1,-0x28(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x18,%eax
mov    -0x24(%rbp),%ecx
shl    $0xc,%ecx
or     %ecx,%eax
mov    -0x28(%rbp),%ecx
shl    $0xb,%ecx
or     %ecx,%eax
mov    -0x2c(%rbp),%ecx
shl    $0xa,%ecx
or     %ecx,%eax
movslq %eax,%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,0x8(%rax)
mov    $0x5,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    -0x18(%rbp),%rax
mov    0xd8(%rax),%rax
and    $0x40,%rax
cmp    $0x40,%rax
je     1b72 <grtc_test+0xa42>
jmp    1b54 <grtc_test+0xa24>
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x10010500,%eax
cmp    %ecx,%eax
je     1b94 <grtc_test+0xa64>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xc0000300,%eax
cmp    %ecx,%eax
je     1bc8 <grtc_test+0xa98>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x1c00,%eax
cmp    %ecx,%eax
je     1bfc <grtc_test+0xacc>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x100,%eax
cmp    %ecx,%eax
je     1c30 <grtc_test+0xb00>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x2000300,%eax
cmp    %ecx,%eax
je     1c64 <grtc_test+0xb34>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x4000500,%eax
cmp    %ecx,%eax
je     1c98 <grtc_test+0xb68>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x6000700,%eax
cmp    %ecx,%eax
je     1ccc <grtc_test+0xb9c>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x8000900,%eax
cmp    %ecx,%eax
je     1d00 <grtc_test+0xbd0>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xa000b00,%eax
cmp    %ecx,%eax
je     1d34 <grtc_test+0xc04>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xc000d00,%eax
cmp    %ecx,%eax
je     1d68 <grtc_test+0xc38>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0xe000f00,%eax
cmp    %ecx,%eax
je     1d9c <grtc_test+0xc6c>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x10001100,%eax
cmp    %ecx,%eax
je     1dd0 <grtc_test+0xca0>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x12001300,%eax
cmp    %ecx,%eax
je     1e04 <grtc_test+0xcd4>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x14001500,%eax
cmp    %ecx,%eax
je     1e38 <grtc_test+0xd08>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x16001700,%eax
cmp    %ecx,%eax
je     1e6c <grtc_test+0xd3c>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x18001900,%eax
cmp    %ecx,%eax
je     1ea0 <grtc_test+0xd70>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x1a004b00,%eax
cmp    %ecx,%eax
je     1ed4 <grtc_test+0xda4>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    (%rax),%ecx
mov    $0x11000002,%eax
cmp    %ecx,%eax
je     1f08 <grtc_test+0xdd8>
mov    $0x4,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    -0xb8(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
mov    %eax,-0xbc(%rbp)
mov    -0x18(%rbp),%rax
mov    0x60(%rax),%rax
movslq -0xbc(%rbp),%rcx
cmp    %rcx,%rax
je     1f4b <grtc_test+0xe1b>
mov    $0x5,%edi
mov    $0x0,%al
call   1050 <fail@plt>
mov    $0x6,%edi
mov    $0x0,%al
call   1040 <report_subtest@plt>
mov    -0x70(%rbp),%rax
mov    %rax,%rsp
mov    -0x4(%rbp),%eax
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<grtc_test>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %esi,%r15d
mov    %edi,%r14d
mov    $0x1031000,%edi
xor    %eax,%eax
call   1030 <report_device@plt>
movslq %r14d,%rbx
xor    %edi,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
movq   $0x55000001,(%rbx)
movq   $0x55000000,0x8(%rbx)
55
lea    0x3(%r15),%ecx
lea    0x3ff(%r15),%eax
test   %r15d,%r15d
cmovns %r15d,%ecx
cmovns %r15d,%eax
movq   $0x0,0x10(%rbx)
sar    $0x2,%ecx
lea    0xf(,%rcx,8),%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%r14
sub    %rcx,%r14
mov    %r14,%rsp
and    $0xfffffc00,%r14d
add    $0x400,%r14
shr    $0xa,%eax
add    $0xffffffff,%eax
and    $0x3ff,%eax
or     %r14d,%eax
cltq
mov    %rax,0x50(%rbx)
movq   $0x55000001,0x40(%rbx)
55
mov    $0x1,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
nop
testq  $0x40,0xd8(%rbx)
je     11e0 <grtc_test+0xb0>
mov    (%r14),%eax
cmp    $0x10010500,%eax
je     1203 <grtc_test+0xd3>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x4(%r14),%eax
cmp    $0xc0000000,%eax
je     121a <grtc_test+0xea>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x8(%r14),%eax
cmp    $0x700,%eax
je     1231 <grtc_test+0x101>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xc(%r14),%eax
cmp    $0x100,%eax
je     1248 <grtc_test+0x118>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x10(%r14),%eax
cmp    $0x2000300,%eax
je     125f <grtc_test+0x12f>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x14(%r14),%eax
cmp    $0x4000500,%eax
je     1276 <grtc_test+0x146>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x18(%r14),%eax
cmp    $0x3700c500,%eax
je     128d <grtc_test+0x15d>
mov    $0x1,%edi
xor    %eax,%eax
call   1050 <fail@plt>
movq   $0x55000800,0x8(%rbx)
55
mov    $0x3,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
testq  $0x40,0xd8(%rbx)
je     12b0 <grtc_test+0x180>
mov    0x1c(%r14),%eax
cmp    $0x21001,%eax
je     12d4 <grtc_test+0x1a4>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x20(%r14),%eax
cmp    $0x500c000,%eax
je     12eb <grtc_test+0x1bb>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x24(%r14),%eax
cmp    $0x1000000,%eax
je     1302 <grtc_test+0x1d2>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x28(%r14),%eax
cmp    $0xe000000,%eax
je     1319 <grtc_test+0x1e9>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x2c(%r14),%eax
cmp    $0x1000200,%eax
je     1330 <grtc_test+0x200>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x30(%r14),%eax
cmp    $0x3000400,%eax
je     1347 <grtc_test+0x217>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x34(%r14),%eax
cmp    $0x5000600,%eax
je     135e <grtc_test+0x22e>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x38(%r14),%eax
cmp    $0x7000800,%eax
je     1375 <grtc_test+0x245>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x3c(%r14),%eax
cmp    $0x9000a00,%eax
je     138c <grtc_test+0x25c>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x40(%r14),%eax
cmp    $0xb000c00,%eax
je     13a3 <grtc_test+0x273>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x44(%r14),%eax
cmp    $0xc7005f00,%eax
je     13ba <grtc_test+0x28a>
mov    $0x2,%edi
xor    %eax,%eax
call   1050 <fail@plt>
movq   $0x55000400,0x8(%rbx)
55
mov    $0x4,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
xchg   %ax,%ax
testq  $0x40,0xd8(%rbx)
je     13d0 <grtc_test+0x2a0>
mov    0x48(%r14),%eax
cmp    $0x21001,%eax
je     13f4 <grtc_test+0x2c4>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x4c(%r14),%eax
cmp    $0x500c000,%eax
je     140b <grtc_test+0x2db>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x50(%r14),%eax
cmp    $0x2000000,%eax
je     1422 <grtc_test+0x2f2>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x54(%r14),%eax
cmp    $0x15000000,%eax
je     1439 <grtc_test+0x309>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x58(%r14),%eax
cmp    $0x1000200,%eax
je     1450 <grtc_test+0x320>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x5c(%r14),%eax
cmp    $0x3000400,%eax
je     1467 <grtc_test+0x337>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x60(%r14),%eax
cmp    $0x5000600,%eax
je     147e <grtc_test+0x34e>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x64(%r14),%eax
cmp    $0x7000800,%eax
je     1495 <grtc_test+0x365>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x68(%r14),%eax
cmp    $0x9000a00,%eax
je     14ac <grtc_test+0x37c>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x6c(%r14),%eax
cmp    $0xb000c00,%eax
je     14c3 <grtc_test+0x393>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x70(%r14),%eax
cmp    $0xd000e00,%eax
je     14da <grtc_test+0x3aa>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x74(%r14),%eax
cmp    $0xf001000,%eax
je     14f1 <grtc_test+0x3c1>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x78(%r14),%eax
cmp    $0x11001200,%eax
je     1508 <grtc_test+0x3d8>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x7c(%r14),%eax
cmp    $0x13007d00,%eax
je     151f <grtc_test+0x3ef>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x80(%r14),%eax
cmp    $0xbc000002,%eax
je     1539 <grtc_test+0x409>
mov    $0x3,%edi
xor    %eax,%eax
call   1050 <fail@plt>
movq   $0x55000c00,0x8(%rbx)
55
mov    $0x5,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
nopl   (%rax)
testq  $0x40,0xd8(%rbx)
je     1550 <grtc_test+0x420>
mov    0x84(%r14),%eax
cmp    $0x10010500,%eax
je     1577 <grtc_test+0x447>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x88(%r14),%eax
cmp    $0xc0000300,%eax
je     1591 <grtc_test+0x461>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x8c(%r14),%eax
cmp    $0x1c00,%eax
je     15ab <grtc_test+0x47b>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x90(%r14),%eax
cmp    $0x100,%eax
je     15c5 <grtc_test+0x495>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x94(%r14),%eax
cmp    $0x2000300,%eax
je     15df <grtc_test+0x4af>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x98(%r14),%eax
cmp    $0x4000500,%eax
je     15f9 <grtc_test+0x4c9>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0x9c(%r14),%eax
cmp    $0x6000700,%eax
je     1613 <grtc_test+0x4e3>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xa0(%r14),%eax
cmp    $0x8000900,%eax
je     162d <grtc_test+0x4fd>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xa4(%r14),%eax
cmp    $0xa000b00,%eax
je     1647 <grtc_test+0x517>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xa8(%r14),%eax
cmp    $0xc000d00,%eax
je     1661 <grtc_test+0x531>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xac(%r14),%eax
cmp    $0xe000f00,%eax
je     167b <grtc_test+0x54b>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xb0(%r14),%eax
cmp    $0x10001100,%eax
je     1695 <grtc_test+0x565>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xb4(%r14),%eax
cmp    $0x12001300,%eax
je     16af <grtc_test+0x57f>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xb8(%r14),%eax
cmp    $0x14001500,%eax
je     16c9 <grtc_test+0x599>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xbc(%r14),%eax
cmp    $0x16001700,%eax
je     16e3 <grtc_test+0x5b3>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xc0(%r14),%eax
cmp    $0x18001900,%eax
je     16fd <grtc_test+0x5cd>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xc4(%r14),%eax
cmp    $0x1a004b00,%eax
je     1717 <grtc_test+0x5e7>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    0xc8(%r14),%eax
cmp    $0x11000002,%eax
je     1731 <grtc_test+0x601>
mov    $0x4,%edi
xor    %eax,%eax
call   1050 <fail@plt>
add    $0xcc,%r14d
mov    0x60(%rbx),%rax
movslq %r14d,%rcx
cmp    %rcx,%rax
je     1750 <grtc_test+0x620>
mov    $0x5,%edi
xor    %eax,%eax
call   1050 <fail@plt>
mov    $0x6,%edi
xor    %eax,%eax
call   1040 <report_subtest@plt>
lea    -0x18(%rbp),%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.grtc_reg = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 }
define i32 @grtc_test(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca %struct.grtc_reg*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i8*
%27 = alloca i64
%28 = alloca i64
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32*
%41 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
%42 = call i32 (i32, ...) bitcast (i32 (...)* @report_device to i32 (i32, ...)*)(i32 16977920)
%43 = load i32, i32* %4
%44 = sext i32 %43 to i64
%45 = inttoptr i64 %44 to %struct.grtc_reg*
store %struct.grtc_reg* %45, %struct.grtc_reg** %6
%46 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 0)
store i32 85, i32* %7
store i32 1, i32* %8
%47 = load i32, i32* %7
%48 = shl i32 %47, 24
%49 = load i32, i32* %8
%50 = or i32 %48, %49
%51 = sext i32 %50 to i64
%52 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%53 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %52, i32 0, i32 0
store volatile i64 %51, i64* %53
store i32 0, i32* %9
store i32 0, i32* %10
store i32 0, i32* %11
%54 = load i32, i32* %7
%55 = shl i32 %54, 24
%56 = load i32, i32* %9
%57 = shl i32 %56, 12
%58 = or i32 %55, %57
%59 = load i32, i32* %10
%60 = shl i32 %59, 11
%61 = or i32 %58, %60
%62 = load i32, i32* %11
%63 = shl i32 %62, 10
%64 = or i32 %61, %63
%65 = sext i32 %64 to i64
%66 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%67 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %66, i32 0, i32 1
store volatile i64 %65, i64* %67
store i32 0, i32* %12
%68 = load i32, i32* %12
%69 = sext i32 %68 to i64
%70 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%71 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %70, i32 0, i32 2
store volatile i64 %69, i64* %71
store i32 0, i32* %13
store i32 0, i32* %14
store i32 0, i32* %15
store i32 0, i32* %16
store i32 0, i32* %17
store i32 0, i32* %18
store i32 0, i32* %19
store i32 0, i32* %20
store i32 0, i32* %21
store i32 0, i32* %22
store i32 0, i32* %23
store i32 0, i32* %24
store i32 0, i32* %25
%72 = load i32, i32* %5
%73 = sdiv i32 %72, 4
%74 = zext i32 %73 to i64
%75 = call i8* @llvm.stacksave()
store i8* %75, i8** %26
%76 = alloca i64, i64 %74
store i64 %74, i64* %27
%77 = getelementptr inbounds i64, i64* %76, i64 0
%78 = ptrtoint i64* %77 to i64
store i64 %78, i64* %28
%79 = load i64, i64* %28
%80 = and i64 %79, 4294966272
store i64 %80, i64* %28
%81 = load i64, i64* %28
%82 = add nsw i64 %81, 1024
store i64 %82, i64* %28
%83 = load i64, i64* %28
%84 = ashr i64 %83, 10
%85 = and i64 %84, 4194303
%86 = trunc i64 %85 to i32
store i32 %86, i32* %29
%87 = load i32, i32* %5
%88 = sdiv i32 %87, 1024
%89 = sub nsw i32 %88, 1
%90 = and i32 %89, 1023
store i32 %90, i32* %30
%91 = load i32, i32* %29
%92 = shl i32 %91, 10
%93 = load i32, i32* %30
%94 = or i32 %92, %93
%95 = sext i32 %94 to i64
%96 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%97 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %96, i32 0, i32 10
store volatile i64 %95, i64* %97
store i32 0, i32* %31
store i32 0, i32* %32
store i32 0, i32* %33
store i32 0, i32* %34
store i32 0, i32* %35
store i32 0, i32* %36
store i32 0, i32* %37
store i32 0, i32* %38
store i32 1, i32* %39
%98 = load i32, i32* %7
%99 = shl i32 %98, 24
%100 = load i32, i32* %38
%101 = shl i32 %100, 9
%102 = or i32 %99, %101
%103 = load i32, i32* %39
%104 = or i32 %102, %103
%105 = sext i32 %104 to i64
%106 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%107 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %106, i32 0, i32 8
store volatile i64 %105, i64* %107
%108 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 1)
%109 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 2)
br label %110
110: ; preds = %116, %2
%111 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%112 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %111, i32 0, i32 27
%113 = load volatile i64, i64* %112
%114 = and i64 %113, 64
%115 = icmp ne i64 %114, 64
br i1 %115, label %116, label %117
116: ; preds = %110
br label %110
117: ; preds = %110
%118 = load i64, i64* %28
%119 = inttoptr i64 %118 to i32*
store i32* %119, i32** %40
%120 = load i32*, i32** %40
%121 = load volatile i32, i32* %120
%122 = icmp ne i32 268502272, %121
br i1 %122, label %123, label %125
123: ; preds = %117
%124 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %125
125: ; preds = %123, %117
%126 = load i32*, i32** %40
%127 = getelementptr inbounds i32, i32* %126, i32 1
store i32* %127, i32** %40
%128 = load i32*, i32** %40
%129 = load volatile i32, i32* %128
%130 = icmp ne i32 -1073741824, %129
br i1 %130, label %131, label %133
131: ; preds = %125
%132 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %133
133: ; preds = %131, %125
%134 = load i32*, i32** %40
%135 = getelementptr inbounds i32, i32* %134, i32 1
store i32* %135, i32** %40
%136 = load i32*, i32** %40
%137 = load volatile i32, i32* %136
%138 = icmp ne i32 1792, %137
br i1 %138, label %139, label %141
139: ; preds = %133
%140 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %141
141: ; preds = %139, %133
%142 = load i32*, i32** %40
%143 = getelementptr inbounds i32, i32* %142, i32 1
store i32* %143, i32** %40
%144 = load i32*, i32** %40
%145 = load volatile i32, i32* %144
%146 = icmp ne i32 256, %145
br i1 %146, label %147, label %149
147: ; preds = %141
%148 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %149
149: ; preds = %147, %141
%150 = load i32*, i32** %40
%151 = getelementptr inbounds i32, i32* %150, i32 1
store i32* %151, i32** %40
%152 = load i32*, i32** %40
%153 = load volatile i32, i32* %152
%154 = icmp ne i32 33555200, %153
br i1 %154, label %155, label %157
155: ; preds = %149
%156 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %157
157: ; preds = %155, %149
%158 = load i32*, i32** %40
%159 = getelementptr inbounds i32, i32* %158, i32 1
store i32* %159, i32** %40
%160 = load i32*, i32** %40
%161 = load volatile i32, i32* %160
%162 = icmp ne i32 67110144, %161
br i1 %162, label %163, label %165
163: ; preds = %157
%164 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %165
165: ; preds = %163, %157
%166 = load i32*, i32** %40
%167 = getelementptr inbounds i32, i32* %166, i32 1
store i32* %167, i32** %40
%168 = load i32*, i32** %40
%169 = load volatile i32, i32* %168
%170 = icmp ne i32 922797312, %169
br i1 %170, label %171, label %173
171: ; preds = %165
%172 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %173
173: ; preds = %171, %165
%174 = load i32*, i32** %40
%175 = getelementptr inbounds i32, i32* %174, i32 1
store i32* %175, i32** %40
store i32 1, i32* %10
store i32 0, i32* %11
%176 = load i32, i32* %7
%177 = shl i32 %176, 24
%178 = load i32, i32* %9
%179 = shl i32 %178, 12
%180 = or i32 %177, %179
%181 = load i32, i32* %10
%182 = shl i32 %181, 11
%183 = or i32 %180, %182
%184 = load i32, i32* %11
%185 = shl i32 %184, 10
%186 = or i32 %183, %185
%187 = sext i32 %186 to i64
%188 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%189 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %188, i32 0, i32 1
store volatile i64 %187, i64* %189
%190 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 3)
br label %191
191: ; preds = %197, %173
%192 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%193 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %192, i32 0, i32 27
%194 = load volatile i64, i64* %193
%195 = and i64 %194, 64
%196 = icmp ne i64 %195, 64
br i1 %196, label %197, label %198
197: ; preds = %191
br label %191
198: ; preds = %191
%199 = load i32*, i32** %40
%200 = load volatile i32, i32* %199
%201 = icmp ne i32 135169, %200
br i1 %201, label %202, label %204
202: ; preds = %198
%203 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %204
204: ; preds = %202, %198
%205 = load i32*, i32** %40
%206 = getelementptr inbounds i32, i32* %205, i32 1
store i32* %206, i32** %40
%207 = load i32*, i32** %40
%208 = load volatile i32, i32* %207
%209 = icmp ne i32 83935232, %208
br i1 %209, label %210, label %212
210: ; preds = %204
%211 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %212
212: ; preds = %210, %204
%213 = load i32*, i32** %40
%214 = getelementptr inbounds i32, i32* %213, i32 1
store i32* %214, i32** %40
%215 = load i32*, i32** %40
%216 = load volatile i32, i32* %215
%217 = icmp ne i32 16777216, %216
br i1 %217, label %218, label %220
218: ; preds = %212
%219 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %220
220: ; preds = %218, %212
%221 = load i32*, i32** %40
%222 = getelementptr inbounds i32, i32* %221, i32 1
store i32* %222, i32** %40
%223 = load i32*, i32** %40
%224 = load volatile i32, i32* %223
%225 = icmp ne i32 234881024, %224
br i1 %225, label %226, label %228
226: ; preds = %220
%227 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %228
228: ; preds = %226, %220
%229 = load i32*, i32** %40
%230 = getelementptr inbounds i32, i32* %229, i32 1
store i32* %230, i32** %40
%231 = load i32*, i32** %40
%232 = load volatile i32, i32* %231
%233 = icmp ne i32 16777728, %232
br i1 %233, label %234, label %236
234: ; preds = %228
%235 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %236
236: ; preds = %234, %228
%237 = load i32*, i32** %40
%238 = getelementptr inbounds i32, i32* %237, i32 1
store i32* %238, i32** %40
%239 = load i32*, i32** %40
%240 = load volatile i32, i32* %239
%241 = icmp ne i32 50332672, %240
br i1 %241, label %242, label %244
242: ; preds = %236
%243 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %244
244: ; preds = %242, %236
%245 = load i32*, i32** %40
%246 = getelementptr inbounds i32, i32* %245, i32 1
store i32* %246, i32** %40
%247 = load i32*, i32** %40
%248 = load volatile i32, i32* %247
%249 = icmp ne i32 83887616, %248
br i1 %249, label %250, label %252
250: ; preds = %244
%251 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %252
252: ; preds = %250, %244
%253 = load i32*, i32** %40
%254 = getelementptr inbounds i32, i32* %253, i32 1
store i32* %254, i32** %40
%255 = load i32*, i32** %40
%256 = load volatile i32, i32* %255
%257 = icmp ne i32 117442560, %256
br i1 %257, label %258, label %260
258: ; preds = %252
%259 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %260
260: ; preds = %258, %252
%261 = load i32*, i32** %40
%262 = getelementptr inbounds i32, i32* %261, i32 1
store i32* %262, i32** %40
%263 = load i32*, i32** %40
%264 = load volatile i32, i32* %263
%265 = icmp ne i32 150997504, %264
br i1 %265, label %266, label %268
266: ; preds = %260
%267 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %268
268: ; preds = %266, %260
%269 = load i32*, i32** %40
%270 = getelementptr inbounds i32, i32* %269, i32 1
store i32* %270, i32** %40
%271 = load i32*, i32** %40
%272 = load volatile i32, i32* %271
%273 = icmp ne i32 184552448, %272
br i1 %273, label %274, label %276
274: ; preds = %268
%275 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %276
276: ; preds = %274, %268
%277 = load i32*, i32** %40
%278 = getelementptr inbounds i32, i32* %277, i32 1
store i32* %278, i32** %40
%279 = load i32*, i32** %40
%280 = load volatile i32, i32* %279
%281 = icmp ne i32 -956276992, %280
br i1 %281, label %282, label %284
282: ; preds = %276
%283 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %284
284: ; preds = %282, %276
%285 = load i32*, i32** %40
%286 = getelementptr inbounds i32, i32* %285, i32 1
store i32* %286, i32** %40
store i32 0, i32* %10
store i32 1, i32* %11
%287 = load i32, i32* %7
%288 = shl i32 %287, 24
%289 = load i32, i32* %9
%290 = shl i32 %289, 12
%291 = or i32 %288, %290
%292 = load i32, i32* %10
%293 = shl i32 %292, 11
%294 = or i32 %291, %293
%295 = load i32, i32* %11
%296 = shl i32 %295, 10
%297 = or i32 %294, %296
%298 = sext i32 %297 to i64
%299 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%300 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %299, i32 0, i32 1
store volatile i64 %298, i64* %300
%301 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 4)
br label %302
302: ; preds = %308, %284
%303 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%304 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %303, i32 0, i32 27
%305 = load volatile i64, i64* %304
%306 = and i64 %305, 64
%307 = icmp ne i64 %306, 64
br i1 %307, label %308, label %309
308: ; preds = %302
br label %302
309: ; preds = %302
%310 = load i32*, i32** %40
%311 = load volatile i32, i32* %310
%312 = icmp ne i32 135169, %311
br i1 %312, label %313, label %315
313: ; preds = %309
%314 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %315
315: ; preds = %313, %309
%316 = load i32*, i32** %40
%317 = getelementptr inbounds i32, i32* %316, i32 1
store i32* %317, i32** %40
%318 = load i32*, i32** %40
%319 = load volatile i32, i32* %318
%320 = icmp ne i32 83935232, %319
br i1 %320, label %321, label %323
321: ; preds = %315
%322 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %323
323: ; preds = %321, %315
%324 = load i32*, i32** %40
%325 = getelementptr inbounds i32, i32* %324, i32 1
store i32* %325, i32** %40
%326 = load i32*, i32** %40
%327 = load volatile i32, i32* %326
%328 = icmp ne i32 33554432, %327
br i1 %328, label %329, label %331
329: ; preds = %323
%330 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %331
331: ; preds = %329, %323
%332 = load i32*, i32** %40
%333 = getelementptr inbounds i32, i32* %332, i32 1
store i32* %333, i32** %40
%334 = load i32*, i32** %40
%335 = load volatile i32, i32* %334
%336 = icmp ne i32 352321536, %335
br i1 %336, label %337, label %339
337: ; preds = %331
%338 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %339
339: ; preds = %337, %331
%340 = load i32*, i32** %40
%341 = getelementptr inbounds i32, i32* %340, i32 1
store i32* %341, i32** %40
%342 = load i32*, i32** %40
%343 = load volatile i32, i32* %342
%344 = icmp ne i32 16777728, %343
br i1 %344, label %345, label %347
345: ; preds = %339
%346 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %347
347: ; preds = %345, %339
%348 = load i32*, i32** %40
%349 = getelementptr inbounds i32, i32* %348, i32 1
store i32* %349, i32** %40
%350 = load i32*, i32** %40
%351 = load volatile i32, i32* %350
%352 = icmp ne i32 50332672, %351
br i1 %352, label %353, label %355
353: ; preds = %347
%354 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %355
355: ; preds = %353, %347
%356 = load i32*, i32** %40
%357 = getelementptr inbounds i32, i32* %356, i32 1
store i32* %357, i32** %40
%358 = load i32*, i32** %40
%359 = load volatile i32, i32* %358
%360 = icmp ne i32 83887616, %359
br i1 %360, label %361, label %363
361: ; preds = %355
%362 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %363
363: ; preds = %361, %355
%364 = load i32*, i32** %40
%365 = getelementptr inbounds i32, i32* %364, i32 1
store i32* %365, i32** %40
%366 = load i32*, i32** %40
%367 = load volatile i32, i32* %366
%368 = icmp ne i32 117442560, %367
br i1 %368, label %369, label %371
369: ; preds = %363
%370 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %371
371: ; preds = %369, %363
%372 = load i32*, i32** %40
%373 = getelementptr inbounds i32, i32* %372, i32 1
store i32* %373, i32** %40
%374 = load i32*, i32** %40
%375 = load volatile i32, i32* %374
%376 = icmp ne i32 150997504, %375
br i1 %376, label %377, label %379
377: ; preds = %371
%378 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %379
379: ; preds = %377, %371
%380 = load i32*, i32** %40
%381 = getelementptr inbounds i32, i32* %380, i32 1
store i32* %381, i32** %40
%382 = load i32*, i32** %40
%383 = load volatile i32, i32* %382
%384 = icmp ne i32 184552448, %383
br i1 %384, label %385, label %387
385: ; preds = %379
%386 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %387
387: ; preds = %385, %379
%388 = load i32*, i32** %40
%389 = getelementptr inbounds i32, i32* %388, i32 1
store i32* %389, i32** %40
%390 = load i32*, i32** %40
%391 = load volatile i32, i32* %390
%392 = icmp ne i32 218107392, %391
br i1 %392, label %393, label %395
393: ; preds = %387
%394 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %395
395: ; preds = %393, %387
%396 = load i32*, i32** %40
%397 = getelementptr inbounds i32, i32* %396, i32 1
store i32* %397, i32** %40
%398 = load i32*, i32** %40
%399 = load volatile i32, i32* %398
%400 = icmp ne i32 251662336, %399
br i1 %400, label %401, label %403
401: ; preds = %395
%402 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %403
403: ; preds = %401, %395
%404 = load i32*, i32** %40
%405 = getelementptr inbounds i32, i32* %404, i32 1
store i32* %405, i32** %40
%406 = load i32*, i32** %40
%407 = load volatile i32, i32* %406
%408 = icmp ne i32 285217280, %407
br i1 %408, label %409, label %411
409: ; preds = %403
%410 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %411
411: ; preds = %409, %403
%412 = load i32*, i32** %40
%413 = getelementptr inbounds i32, i32* %412, i32 1
store i32* %413, i32** %40
%414 = load i32*, i32** %40
%415 = load volatile i32, i32* %414
%416 = icmp ne i32 318799104, %415
br i1 %416, label %417, label %419
417: ; preds = %411
%418 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %419
419: ; preds = %417, %411
%420 = load i32*, i32** %40
%421 = getelementptr inbounds i32, i32* %420, i32 1
store i32* %421, i32** %40
%422 = load i32*, i32** %40
%423 = load volatile i32, i32* %422
%424 = icmp ne i32 -1140850686, %423
br i1 %424, label %425, label %427
425: ; preds = %419
%426 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %427
427: ; preds = %425, %419
%428 = load i32*, i32** %40
%429 = getelementptr inbounds i32, i32* %428, i32 1
store i32* %429, i32** %40
store i32 1, i32* %10
store i32 1, i32* %11
%430 = load i32, i32* %7
%431 = shl i32 %430, 24
%432 = load i32, i32* %9
%433 = shl i32 %432, 12
%434 = or i32 %431, %433
%435 = load i32, i32* %10
%436 = shl i32 %435, 11
%437 = or i32 %434, %436
%438 = load i32, i32* %11
%439 = shl i32 %438, 10
%440 = or i32 %437, %439
%441 = sext i32 %440 to i64
%442 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%443 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %442, i32 0, i32 1
store volatile i64 %441, i64* %443
%444 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 5)
br label %445
445: ; preds = %451, %427
%446 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%447 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %446, i32 0, i32 27
%448 = load volatile i64, i64* %447
%449 = and i64 %448, 64
%450 = icmp ne i64 %449, 64
br i1 %450, label %451, label %452
451: ; preds = %445
br label %445
452: ; preds = %445
%453 = load i32*, i32** %40
%454 = load volatile i32, i32* %453
%455 = icmp ne i32 268502272, %454
br i1 %455, label %456, label %458
456: ; preds = %452
%457 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %458
458: ; preds = %456, %452
%459 = load i32*, i32** %40
%460 = getelementptr inbounds i32, i32* %459, i32 1
store i32* %460, i32** %40
%461 = load i32*, i32** %40
%462 = load volatile i32, i32* %461
%463 = icmp ne i32 -1073741056, %462
br i1 %463, label %464, label %466
464: ; preds = %458
%465 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %466
466: ; preds = %464, %458
%467 = load i32*, i32** %40
%468 = getelementptr inbounds i32, i32* %467, i32 1
store i32* %468, i32** %40
%469 = load i32*, i32** %40
%470 = load volatile i32, i32* %469
%471 = icmp ne i32 7168, %470
br i1 %471, label %472, label %474
472: ; preds = %466
%473 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %474
474: ; preds = %472, %466
%475 = load i32*, i32** %40
%476 = getelementptr inbounds i32, i32* %475, i32 1
store i32* %476, i32** %40
%477 = load i32*, i32** %40
%478 = load volatile i32, i32* %477
%479 = icmp ne i32 256, %478
br i1 %479, label %480, label %482
480: ; preds = %474
%481 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %482
482: ; preds = %480, %474
%483 = load i32*, i32** %40
%484 = getelementptr inbounds i32, i32* %483, i32 1
store i32* %484, i32** %40
%485 = load i32*, i32** %40
%486 = load volatile i32, i32* %485
%487 = icmp ne i32 33555200, %486
br i1 %487, label %488, label %490
488: ; preds = %482
%489 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %490
490: ; preds = %488, %482
%491 = load i32*, i32** %40
%492 = getelementptr inbounds i32, i32* %491, i32 1
store i32* %492, i32** %40
%493 = load i32*, i32** %40
%494 = load volatile i32, i32* %493
%495 = icmp ne i32 67110144, %494
br i1 %495, label %496, label %498
496: ; preds = %490
%497 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %498
498: ; preds = %496, %490
%499 = load i32*, i32** %40
%500 = getelementptr inbounds i32, i32* %499, i32 1
store i32* %500, i32** %40
%501 = load i32*, i32** %40
%502 = load volatile i32, i32* %501
%503 = icmp ne i32 100665088, %502
br i1 %503, label %504, label %506
504: ; preds = %498
%505 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %506
506: ; preds = %504, %498
%507 = load i32*, i32** %40
%508 = getelementptr inbounds i32, i32* %507, i32 1
store i32* %508, i32** %40
%509 = load i32*, i32** %40
%510 = load volatile i32, i32* %509
%511 = icmp ne i32 134220032, %510
br i1 %511, label %512, label %514
512: ; preds = %506
%513 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %514
514: ; preds = %512, %506
%515 = load i32*, i32** %40
%516 = getelementptr inbounds i32, i32* %515, i32 1
store i32* %516, i32** %40
%517 = load i32*, i32** %40
%518 = load volatile i32, i32* %517
%519 = icmp ne i32 167774976, %518
br i1 %519, label %520, label %522
520: ; preds = %514
%521 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %522
522: ; preds = %520, %514
%523 = load i32*, i32** %40
%524 = getelementptr inbounds i32, i32* %523, i32 1
store i32* %524, i32** %40
%525 = load i32*, i32** %40
%526 = load volatile i32, i32* %525
%527 = icmp ne i32 201329920, %526
br i1 %527, label %528, label %530
528: ; preds = %522
%529 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %530
530: ; preds = %528, %522
%531 = load i32*, i32** %40
%532 = getelementptr inbounds i32, i32* %531, i32 1
store i32* %532, i32** %40
%533 = load i32*, i32** %40
%534 = load volatile i32, i32* %533
%535 = icmp ne i32 234884864, %534
br i1 %535, label %536, label %538
536: ; preds = %530
%537 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %538
538: ; preds = %536, %530
%539 = load i32*, i32** %40
%540 = getelementptr inbounds i32, i32* %539, i32 1
store i32* %540, i32** %40
%541 = load i32*, i32** %40
%542 = load volatile i32, i32* %541
%543 = icmp ne i32 268439808, %542
br i1 %543, label %544, label %546
544: ; preds = %538
%545 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %546
546: ; preds = %544, %538
%547 = load i32*, i32** %40
%548 = getelementptr inbounds i32, i32* %547, i32 1
store i32* %548, i32** %40
%549 = load i32*, i32** %40
%550 = load volatile i32, i32* %549
%551 = icmp ne i32 301994752, %550
br i1 %551, label %552, label %554
552: ; preds = %546
%553 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %554
554: ; preds = %552, %546
%555 = load i32*, i32** %40
%556 = getelementptr inbounds i32, i32* %555, i32 1
store i32* %556, i32** %40
%557 = load i32*, i32** %40
%558 = load volatile i32, i32* %557
%559 = icmp ne i32 335549696, %558
br i1 %559, label %560, label %562
560: ; preds = %554
%561 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %562
562: ; preds = %560, %554
%563 = load i32*, i32** %40
%564 = getelementptr inbounds i32, i32* %563, i32 1
store i32* %564, i32** %40
%565 = load i32*, i32** %40
%566 = load volatile i32, i32* %565
%567 = icmp ne i32 369104640, %566
br i1 %567, label %568, label %570
568: ; preds = %562
%569 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %570
570: ; preds = %568, %562
%571 = load i32*, i32** %40
%572 = getelementptr inbounds i32, i32* %571, i32 1
store i32* %572, i32** %40
%573 = load i32*, i32** %40
%574 = load volatile i32, i32* %573
%575 = icmp ne i32 402659584, %574
br i1 %575, label %576, label %578
576: ; preds = %570
%577 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %578
578: ; preds = %576, %570
%579 = load i32*, i32** %40
%580 = getelementptr inbounds i32, i32* %579, i32 1
store i32* %580, i32** %40
%581 = load i32*, i32** %40
%582 = load volatile i32, i32* %581
%583 = icmp ne i32 436226816, %582
br i1 %583, label %584, label %586
584: ; preds = %578
%585 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %586
586: ; preds = %584, %578
%587 = load i32*, i32** %40
%588 = getelementptr inbounds i32, i32* %587, i32 1
store i32* %588, i32** %40
%589 = load i32*, i32** %40
%590 = load volatile i32, i32* %589
%591 = icmp ne i32 285212674, %590
br i1 %591, label %592, label %594
592: ; preds = %586
%593 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %594
594: ; preds = %592, %586
%595 = load i32*, i32** %40
%596 = getelementptr inbounds i32, i32* %595, i32 1
store i32* %596, i32** %40
%597 = load i32*, i32** %40
%598 = ptrtoint i32* %597 to i32
store i32 %598, i32* %41
%599 = load %struct.grtc_reg*, %struct.grtc_reg** %6
%600 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %599, i32 0, i32 12
%601 = load volatile i64, i64* %600
%602 = load i32, i32* %41
%603 = sext i32 %602 to i64
%604 = icmp ne i64 %601, %603
br i1 %604, label %605, label %607
605: ; preds = %594
%606 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 5)
br label %607
607: ; preds = %605, %594
%608 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 6)
%609 = load i8*, i8** %26
%610 = load i32, i32* %3
ret i32 %610
}

LLVM IR (-O2):
%struct.grtc_reg = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 }
define i32 @grtc_test(i32 %0, i32 %1) {
%3 = tail call i32 (i32, ...) bitcast (i32 (...)* @report_device to i32 (i32, ...)*)(i32 16977920)
%4 = sext i32 %0 to i64
%5 = inttoptr i64 %4 to %struct.grtc_reg*
%6 = tail call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 0)
%7 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 0
store volatile i64 1426063361, i64* %7
%8 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 1
store volatile i64 1426063360, i64* %8
%9 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 2
store volatile i64 0, i64* %9
%10 = sdiv i32 %1, 4
%11 = zext i32 %10 to i64
%12 = alloca i64, i64 %11
%13 = ptrtoint i64* %12 to i64
%14 = and i64 %13, 4294966272
%15 = add nuw nsw i64 %14, 1024
%16 = trunc i64 %15 to i32
%17 = sdiv i32 %1, 1024
%18 = add nsw i32 %17, 1023
%19 = and i32 %18, 1023
%20 = or i32 %19, %16
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 10
store volatile i64 %21, i64* %22
%23 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 8
store volatile i64 1426063361, i64* %23
%24 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 1)
%25 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 2)
%26 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 27
br label %27
27: ; preds = %27, %2
%28 = load volatile i64, i64* %26
%29 = and i64 %28, 64
%30 = icmp eq i64 %29, 0
br i1 %30, label %27, label %31
31: ; preds = %27
%32 = inttoptr i64 %15 to i32*
%33 = load volatile i32, i32* %32
%34 = icmp eq i32 %33, 268502272
br i1 %34, label %37, label %35
35: ; preds = %31
%36 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %37
37: ; preds = %35, %31
%38 = getelementptr inbounds i32, i32* %32, i64 1
%39 = load volatile i32, i32* %38
%40 = icmp eq i32 %39, -1073741824
br i1 %40, label %43, label %41
41: ; preds = %37
%42 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %43
43: ; preds = %41, %37
%44 = getelementptr inbounds i32, i32* %32, i64 2
%45 = load volatile i32, i32* %44
%46 = icmp eq i32 %45, 1792
br i1 %46, label %49, label %47
47: ; preds = %43
%48 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %49
49: ; preds = %47, %43
%50 = getelementptr inbounds i32, i32* %32, i64 3
%51 = load volatile i32, i32* %50
%52 = icmp eq i32 %51, 256
br i1 %52, label %55, label %53
53: ; preds = %49
%54 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %55
55: ; preds = %53, %49
%56 = getelementptr inbounds i32, i32* %32, i64 4
%57 = load volatile i32, i32* %56
%58 = icmp eq i32 %57, 33555200
br i1 %58, label %61, label %59
59: ; preds = %55
%60 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %61
61: ; preds = %59, %55
%62 = getelementptr inbounds i32, i32* %32, i64 5
%63 = load volatile i32, i32* %62
%64 = icmp eq i32 %63, 67110144
br i1 %64, label %67, label %65
65: ; preds = %61
%66 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %67
67: ; preds = %65, %61
%68 = getelementptr inbounds i32, i32* %32, i64 6
%69 = load volatile i32, i32* %68
%70 = icmp eq i32 %69, 922797312
br i1 %70, label %73, label %71
71: ; preds = %67
%72 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 1)
br label %73
73: ; preds = %71, %67
store volatile i64 1426065408, i64* %8
%74 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 3)
br label %75
75: ; preds = %75, %73
%76 = load volatile i64, i64* %26
%77 = and i64 %76, 64
%78 = icmp eq i64 %77, 0
br i1 %78, label %75, label %79
79: ; preds = %75
%80 = getelementptr inbounds i32, i32* %32, i64 7
%81 = load volatile i32, i32* %80
%82 = icmp eq i32 %81, 135169
br i1 %82, label %85, label %83
83: ; preds = %79
%84 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %85
85: ; preds = %83, %79
%86 = getelementptr inbounds i32, i32* %32, i64 8
%87 = load volatile i32, i32* %86
%88 = icmp eq i32 %87, 83935232
br i1 %88, label %91, label %89
89: ; preds = %85
%90 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %91
91: ; preds = %89, %85
%92 = getelementptr inbounds i32, i32* %32, i64 9
%93 = load volatile i32, i32* %92
%94 = icmp eq i32 %93, 16777216
br i1 %94, label %97, label %95
95: ; preds = %91
%96 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %97
97: ; preds = %95, %91
%98 = getelementptr inbounds i32, i32* %32, i64 10
%99 = load volatile i32, i32* %98
%100 = icmp eq i32 %99, 234881024
br i1 %100, label %103, label %101
101: ; preds = %97
%102 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %103
103: ; preds = %101, %97
%104 = getelementptr inbounds i32, i32* %32, i64 11
%105 = load volatile i32, i32* %104
%106 = icmp eq i32 %105, 16777728
br i1 %106, label %109, label %107
107: ; preds = %103
%108 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %109
109: ; preds = %107, %103
%110 = getelementptr inbounds i32, i32* %32, i64 12
%111 = load volatile i32, i32* %110
%112 = icmp eq i32 %111, 50332672
br i1 %112, label %115, label %113
113: ; preds = %109
%114 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %115
115: ; preds = %113, %109
%116 = getelementptr inbounds i32, i32* %32, i64 13
%117 = load volatile i32, i32* %116
%118 = icmp eq i32 %117, 83887616
br i1 %118, label %121, label %119
119: ; preds = %115
%120 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %121
121: ; preds = %119, %115
%122 = getelementptr inbounds i32, i32* %32, i64 14
%123 = load volatile i32, i32* %122
%124 = icmp eq i32 %123, 117442560
br i1 %124, label %127, label %125
125: ; preds = %121
%126 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %127
127: ; preds = %125, %121
%128 = getelementptr inbounds i32, i32* %32, i64 15
%129 = load volatile i32, i32* %128
%130 = icmp eq i32 %129, 150997504
br i1 %130, label %133, label %131
131: ; preds = %127
%132 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %133
133: ; preds = %131, %127
%134 = getelementptr inbounds i32, i32* %32, i64 16
%135 = load volatile i32, i32* %134
%136 = icmp eq i32 %135, 184552448
br i1 %136, label %139, label %137
137: ; preds = %133
%138 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %139
139: ; preds = %137, %133
%140 = getelementptr inbounds i32, i32* %32, i64 17
%141 = load volatile i32, i32* %140
%142 = icmp eq i32 %141, -956276992
br i1 %142, label %145, label %143
143: ; preds = %139
%144 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 2)
br label %145
145: ; preds = %143, %139
store volatile i64 1426064384, i64* %8
%146 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 4)
br label %147
147: ; preds = %147, %145
%148 = load volatile i64, i64* %26
%149 = and i64 %148, 64
%150 = icmp eq i64 %149, 0
br i1 %150, label %147, label %151
151: ; preds = %147
%152 = getelementptr inbounds i32, i32* %32, i64 18
%153 = load volatile i32, i32* %152
%154 = icmp eq i32 %153, 135169
br i1 %154, label %157, label %155
155: ; preds = %151
%156 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %157
157: ; preds = %155, %151
%158 = getelementptr inbounds i32, i32* %32, i64 19
%159 = load volatile i32, i32* %158
%160 = icmp eq i32 %159, 83935232
br i1 %160, label %163, label %161
161: ; preds = %157
%162 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %163
163: ; preds = %161, %157
%164 = getelementptr inbounds i32, i32* %32, i64 20
%165 = load volatile i32, i32* %164
%166 = icmp eq i32 %165, 33554432
br i1 %166, label %169, label %167
167: ; preds = %163
%168 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %169
169: ; preds = %167, %163
%170 = getelementptr inbounds i32, i32* %32, i64 21
%171 = load volatile i32, i32* %170
%172 = icmp eq i32 %171, 352321536
br i1 %172, label %175, label %173
173: ; preds = %169
%174 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %175
175: ; preds = %173, %169
%176 = getelementptr inbounds i32, i32* %32, i64 22
%177 = load volatile i32, i32* %176
%178 = icmp eq i32 %177, 16777728
br i1 %178, label %181, label %179
179: ; preds = %175
%180 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %181
181: ; preds = %179, %175
%182 = getelementptr inbounds i32, i32* %32, i64 23
%183 = load volatile i32, i32* %182
%184 = icmp eq i32 %183, 50332672
br i1 %184, label %187, label %185
185: ; preds = %181
%186 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %187
187: ; preds = %185, %181
%188 = getelementptr inbounds i32, i32* %32, i64 24
%189 = load volatile i32, i32* %188
%190 = icmp eq i32 %189, 83887616
br i1 %190, label %193, label %191
191: ; preds = %187
%192 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %193
193: ; preds = %191, %187
%194 = getelementptr inbounds i32, i32* %32, i64 25
%195 = load volatile i32, i32* %194
%196 = icmp eq i32 %195, 117442560
br i1 %196, label %199, label %197
197: ; preds = %193
%198 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %199
199: ; preds = %197, %193
%200 = getelementptr inbounds i32, i32* %32, i64 26
%201 = load volatile i32, i32* %200
%202 = icmp eq i32 %201, 150997504
br i1 %202, label %205, label %203
203: ; preds = %199
%204 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %205
205: ; preds = %203, %199
%206 = getelementptr inbounds i32, i32* %32, i64 27
%207 = load volatile i32, i32* %206
%208 = icmp eq i32 %207, 184552448
br i1 %208, label %211, label %209
209: ; preds = %205
%210 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %211
211: ; preds = %209, %205
%212 = getelementptr inbounds i32, i32* %32, i64 28
%213 = load volatile i32, i32* %212
%214 = icmp eq i32 %213, 218107392
br i1 %214, label %217, label %215
215: ; preds = %211
%216 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %217
217: ; preds = %215, %211
%218 = getelementptr inbounds i32, i32* %32, i64 29
%219 = load volatile i32, i32* %218
%220 = icmp eq i32 %219, 251662336
br i1 %220, label %223, label %221
221: ; preds = %217
%222 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %223
223: ; preds = %221, %217
%224 = getelementptr inbounds i32, i32* %32, i64 30
%225 = load volatile i32, i32* %224
%226 = icmp eq i32 %225, 285217280
br i1 %226, label %229, label %227
227: ; preds = %223
%228 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %229
229: ; preds = %227, %223
%230 = getelementptr inbounds i32, i32* %32, i64 31
%231 = load volatile i32, i32* %230
%232 = icmp eq i32 %231, 318799104
br i1 %232, label %235, label %233
233: ; preds = %229
%234 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %235
235: ; preds = %233, %229
%236 = getelementptr inbounds i32, i32* %32, i64 32
%237 = load volatile i32, i32* %236
%238 = icmp eq i32 %237, -1140850686
br i1 %238, label %241, label %239
239: ; preds = %235
%240 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 3)
br label %241
241: ; preds = %239, %235
store volatile i64 1426066432, i64* %8
%242 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 5)
br label %243
243: ; preds = %243, %241
%244 = load volatile i64, i64* %26
%245 = and i64 %244, 64
%246 = icmp eq i64 %245, 0
br i1 %246, label %243, label %247
247: ; preds = %243
%248 = getelementptr inbounds i32, i32* %32, i64 33
%249 = load volatile i32, i32* %248
%250 = icmp eq i32 %249, 268502272
br i1 %250, label %253, label %251
251: ; preds = %247
%252 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %253
253: ; preds = %251, %247
%254 = getelementptr inbounds i32, i32* %32, i64 34
%255 = load volatile i32, i32* %254
%256 = icmp eq i32 %255, -1073741056
br i1 %256, label %259, label %257
257: ; preds = %253
%258 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %259
259: ; preds = %257, %253
%260 = getelementptr inbounds i32, i32* %32, i64 35
%261 = load volatile i32, i32* %260
%262 = icmp eq i32 %261, 7168
br i1 %262, label %265, label %263
263: ; preds = %259
%264 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %265
265: ; preds = %263, %259
%266 = getelementptr inbounds i32, i32* %32, i64 36
%267 = load volatile i32, i32* %266
%268 = icmp eq i32 %267, 256
br i1 %268, label %271, label %269
269: ; preds = %265
%270 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %271
271: ; preds = %269, %265
%272 = getelementptr inbounds i32, i32* %32, i64 37
%273 = load volatile i32, i32* %272
%274 = icmp eq i32 %273, 33555200
br i1 %274, label %277, label %275
275: ; preds = %271
%276 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %277
277: ; preds = %275, %271
%278 = getelementptr inbounds i32, i32* %32, i64 38
%279 = load volatile i32, i32* %278
%280 = icmp eq i32 %279, 67110144
br i1 %280, label %283, label %281
281: ; preds = %277
%282 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %283
283: ; preds = %281, %277
%284 = getelementptr inbounds i32, i32* %32, i64 39
%285 = load volatile i32, i32* %284
%286 = icmp eq i32 %285, 100665088
br i1 %286, label %289, label %287
287: ; preds = %283
%288 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %289
289: ; preds = %287, %283
%290 = getelementptr inbounds i32, i32* %32, i64 40
%291 = load volatile i32, i32* %290
%292 = icmp eq i32 %291, 134220032
br i1 %292, label %295, label %293
293: ; preds = %289
%294 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %295
295: ; preds = %293, %289
%296 = getelementptr inbounds i32, i32* %32, i64 41
%297 = load volatile i32, i32* %296
%298 = icmp eq i32 %297, 167774976
br i1 %298, label %301, label %299
299: ; preds = %295
%300 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %301
301: ; preds = %299, %295
%302 = getelementptr inbounds i32, i32* %32, i64 42
%303 = load volatile i32, i32* %302
%304 = icmp eq i32 %303, 201329920
br i1 %304, label %307, label %305
305: ; preds = %301
%306 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %307
307: ; preds = %305, %301
%308 = getelementptr inbounds i32, i32* %32, i64 43
%309 = load volatile i32, i32* %308
%310 = icmp eq i32 %309, 234884864
br i1 %310, label %313, label %311
311: ; preds = %307
%312 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %313
313: ; preds = %311, %307
%314 = getelementptr inbounds i32, i32* %32, i64 44
%315 = load volatile i32, i32* %314
%316 = icmp eq i32 %315, 268439808
br i1 %316, label %319, label %317
317: ; preds = %313
%318 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %319
319: ; preds = %317, %313
%320 = getelementptr inbounds i32, i32* %32, i64 45
%321 = load volatile i32, i32* %320
%322 = icmp eq i32 %321, 301994752
br i1 %322, label %325, label %323
323: ; preds = %319
%324 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %325
325: ; preds = %323, %319
%326 = getelementptr inbounds i32, i32* %32, i64 46
%327 = load volatile i32, i32* %326
%328 = icmp eq i32 %327, 335549696
br i1 %328, label %331, label %329
329: ; preds = %325
%330 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %331
331: ; preds = %329, %325
%332 = getelementptr inbounds i32, i32* %32, i64 47
%333 = load volatile i32, i32* %332
%334 = icmp eq i32 %333, 369104640
br i1 %334, label %337, label %335
335: ; preds = %331
%336 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %337
337: ; preds = %335, %331
%338 = getelementptr inbounds i32, i32* %32, i64 48
%339 = load volatile i32, i32* %338
%340 = icmp eq i32 %339, 402659584
br i1 %340, label %343, label %341
341: ; preds = %337
%342 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %343
343: ; preds = %341, %337
%344 = getelementptr inbounds i32, i32* %32, i64 49
%345 = load volatile i32, i32* %344
%346 = icmp eq i32 %345, 436226816
br i1 %346, label %349, label %347
347: ; preds = %343
%348 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %349
349: ; preds = %347, %343
%350 = getelementptr inbounds i32, i32* %32, i64 50
%351 = load volatile i32, i32* %350
%352 = icmp eq i32 %351, 285212674
br i1 %352, label %355, label %353
353: ; preds = %349
%354 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 4)
br label %355
355: ; preds = %353, %349
%356 = getelementptr inbounds i32, i32* %32, i64 51
%357 = ptrtoint i32* %356 to i64
%358 = getelementptr inbounds %struct.grtc_reg, %struct.grtc_reg* %5, i64 0, i32 12
%359 = load volatile i64, i64* %358
%360 = shl i64 %357, 32
%361 = ashr exact i64 %360, 32
%362 = icmp eq i64 %359, %361
br i1 %362, label %365, label %363
363: ; preds = %355
%364 = call i32 (i32, ...) bitcast (i32 (...)* @fail to i32 (i32, ...)*)(i32 5)
br label %365
365: ; preds = %363, %355
%366 = call i32 (i32, ...) bitcast (i32 (...)* @report_subtest to i32 (i32, ...)*)(i32 6)
ret i32 undef
}