#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*/ SysCtlDelay(int);
void SysCtlClockSet(unsigned long ulConfig) {
  unsigned long ulDelay, ulRCC, ulRCC2;
  if (((((*((volatile unsigned long *)(0x400FE000))) & 0x70000000) ==
        0x00000000) ||
       (((*((volatile unsigned long *)(0x400FE000))) &
         (0x70000000 | 0x00FF0000)) == (0x10000000 | 0x00000000))) &&
      (ulConfig & 0x80000000)) {
    return;
  }
  ulRCC = (*((volatile unsigned long *)(0x400FE060)));
  ulRCC2 = (*((volatile unsigned long *)(0x400FE070)));
  ulRCC |= 0x00000800;
  ulRCC &= ~(0x00400000);
  ulRCC2 |= 0x00000800;
  (*((volatile unsigned long *)(0x400FE060))) = ulRCC;
  (*((volatile unsigned long *)(0x400FE070))) = ulRCC2;
  if (((ulRCC & 0x00000002) && !(ulConfig & 0x00000002)) ||
      ((ulRCC & 0x00000001) && !(ulConfig & 0x00000001))) {
    ulRCC &=
        (~(0x00000002 | 0x00000001) | (ulConfig & (0x00000002 | 0x00000001)));
    (*((volatile unsigned long *)(0x400FE060))) = ulRCC;
    if (((ulRCC2 & 0x80000000) && (((ulRCC2 & 0x00000070) == 0x00000030) ||
                                   ((ulRCC2 & 0x00000070) == 0x00000070))) ||
        (!(ulRCC2 & 0x80000000) && ((ulRCC & 0x00000030) == 0x00000030))) {
      SysCtlDelay(4096);
    } else {
      SysCtlDelay(524288);
    }
  }
  ulRCC &= ~(0x000007C0 | 0x00000030 | 0x00002000 | 0x00001000);
  ulRCC |= ulConfig & (0x000007C0 | 0x00000030 | 0x00002000 | 0x00001000);
  ulRCC2 &= ~(0x80000000 | 0x00000070 | 0x00002000);
  ulRCC2 |= ulConfig & (0x80000000 | 0x00000030 | 0x00002000);
  ulRCC2 |= (ulConfig & 0x00000008) << 3;
  (*((volatile unsigned long *)(0x400FE058))) = 0x00000040;
  if (ulRCC2 & 0x80000000) {
    (*((volatile unsigned long *)(0x400FE070))) = ulRCC2;
    (*((volatile unsigned long *)(0x400FE060))) = ulRCC;
  } else {
    (*((volatile unsigned long *)(0x400FE060))) = ulRCC;
    (*((volatile unsigned long *)(0x400FE070))) = ulRCC2;
  }
  SysCtlDelay(16);
  ulRCC &= ~(0x07800000 | 0x00400000 | 0x00000002 | 0x00000001);
  ulRCC |= ulConfig & (0x07800000 | 0x00400000 | 0x00000002 | 0x00000001);
  ulRCC2 &= ~(0x1F800000);
  ulRCC2 |= ulConfig & 0x1F800000;
  if (ulConfig & 0x40000000) {
    ulRCC |= 0x00400000;
    ulRCC2 &= ~(0x00400000);
    ulRCC2 |= ulConfig & (0x40000000 | 0x00400000);
  } else {
    ulRCC2 &= ~(0x40000000);
  }
  if (!(ulConfig & 0x00000800)) {
    for (ulDelay = 32768; ulDelay > 0; ulDelay--) {
      if ((*((volatile unsigned long *)(0x400FE050))) & 0x00000040) {
        break;
      }
    }
    ulRCC &= ~(0x00000800);
    ulRCC2 &= ~(0x00000800);
  }
  (*((volatile unsigned long *)(0x400FE060))) = ulRCC;
  (*((volatile unsigned long *)(0x400FE070))) = ulRCC2;
  SysCtlDelay(16);
}


x86 assembly (clang, -O0):
<SysCtlClockSet>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    $0x400fe000,%eax
mov    (%rax),%rax
and    $0x70000000,%rax
cmp    $0x0,%rax
je     114e <SysCtlClockSet+0x3e>
mov    $0x400fe000,%eax
mov    (%rax),%rax
and    $0x70ff0000,%rax
cmp    $0x10000000,%rax
jne    116b <SysCtlClockSet+0x5b>
movabs $0x80000000,%rax
and    -0x8(%rbp),%rax
cmp    $0x0,%rax
je     116b <SysCtlClockSet+0x5b>
jmp    1497 <SysCtlClockSet+0x387>
mov    $0x400fe060,%eax
mov    (%rax),%rax
mov    %rax,-0x18(%rbp)
mov    $0x400fe070,%eax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
or     $0x800,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
and    $0xffffffffffbfffff,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
or     $0x800,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rcx
mov    $0x400fe060,%eax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rcx
mov    $0x400fe070,%eax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     11e9 <SysCtlClockSet+0xd9>
mov    -0x8(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     120d <SysCtlClockSet+0xfd>
mov    -0x18(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     12b1 <SysCtlClockSet+0x1a1>
mov    -0x8(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
jne    12b1 <SysCtlClockSet+0x1a1>
mov    -0x8(%rbp),%rax
and    $0x3,%rax
or     $0xfffffffffffffffc,%rax
and    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rcx
mov    $0x400fe060,%eax
mov    %rcx,(%rax)
movabs $0x80000000,%rax
and    -0x20(%rbp),%rax
cmp    $0x0,%rax
je     1269 <SysCtlClockSet+0x159>
mov    -0x20(%rbp),%rax
and    $0x70,%rax
cmp    $0x30,%rax
je     1293 <SysCtlClockSet+0x183>
mov    -0x20(%rbp),%rax
and    $0x70,%rax
cmp    $0x70,%rax
je     1293 <SysCtlClockSet+0x183>
movabs $0x80000000,%rax
and    -0x20(%rbp),%rax
cmp    $0x0,%rax
jne    12a2 <SysCtlClockSet+0x192>
mov    -0x18(%rbp),%rax
and    $0x30,%rax
cmp    $0x30,%rax
jne    12a2 <SysCtlClockSet+0x192>
mov    $0x1000,%edi
call   1030 <SysCtlDelay@plt>
jmp    12ac <SysCtlClockSet+0x19c>
mov    $0x80000,%edi
call   1030 <SysCtlDelay@plt>
jmp    12b1 <SysCtlClockSet+0x1a1>
mov    -0x18(%rbp),%rax
and    $0xffffffffffffc80f,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
and    $0x37f0,%rax
or     -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
and    $0x7fffdf8f,%rax
mov    %rax,-0x20(%rbp)
movabs $0x80002030,%rax
and    -0x8(%rbp),%rax
or     -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
and    $0x8,%rax
shl    $0x3,%rax
or     -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    $0x400fe058,%eax
movq   $0x40,(%rax)
movabs $0x80000000,%rax
and    -0x20(%rbp),%rax
cmp    $0x0,%rax
je     134a <SysCtlClockSet+0x23a>
mov    -0x20(%rbp),%rcx
mov    $0x400fe070,%eax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rcx
mov    $0x400fe060,%eax
mov    %rcx,(%rax)
jmp    1362 <SysCtlClockSet+0x252>
mov    -0x18(%rbp),%rcx
mov    $0x400fe060,%eax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rcx
mov    $0x400fe070,%eax
mov    %rcx,(%rax)
mov    $0x10,%edi
call   1030 <SysCtlDelay@plt>
mov    -0x18(%rbp),%rax
and    $0xfffffffff83ffffc,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
and    $0x7c00003,%rax
or     -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
and    $0xffffffffe07fffff,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
and    $0x1f800000,%rax
or     -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
and    $0x40000000,%rax
cmp    $0x0,%rax
je     13f3 <SysCtlClockSet+0x2e3>
mov    -0x18(%rbp),%rax
or     $0x400000,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
and    $0xffffffffffbfffff,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
and    $0x40400000,%rax
or     -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
jmp    1401 <SysCtlClockSet+0x2f1>
mov    -0x20(%rbp),%rax
and    $0xffffffffbfffffff,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
and    $0x800,%rax
cmp    $0x0,%rax
jne    1475 <SysCtlClockSet+0x365>
movq   $0x8000,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jbe    1459 <SysCtlClockSet+0x349>
mov    $0x400fe050,%eax
mov    (%rax),%rax
and    $0x40,%rax
cmp    $0x0,%rax
je     1443 <SysCtlClockSet+0x333>
jmp    1459 <SysCtlClockSet+0x349>
jmp    1448 <SysCtlClockSet+0x338>
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x10(%rbp)
jmp    141d <SysCtlClockSet+0x30d>
mov    -0x18(%rbp),%rax
and    $0xfffffffffffff7ff,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
and    $0xfffffffffffff7ff,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rcx
mov    $0x400fe060,%eax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rcx
mov    $0x400fe070,%eax
mov    %rcx,(%rax)
mov    $0x10,%edi
call   1030 <SysCtlDelay@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<SysCtlClockSet>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r15
testq  $0x70000000,0x400fe000
je     1152 <SysCtlClockSet+0x42>
mov    0x400fe000,%rax
40
test   $0x80000000,%r15d
je     115b <SysCtlClockSet+0x4b>
and    $0x70ff0000,%eax
cmp    $0x10000000,%eax
jne    115b <SysCtlClockSet+0x4b>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret
test   $0x80000000,%r15d
jne    1146 <SysCtlClockSet+0x36>
mov    0x400fe060,%rax
40
mov    0x400fe070,%rcx
40
mov    %rax,%r12
and    $0xffffffffffbff7ff,%r12
or     $0x800,%r12
mov    %rcx,%r14
or     $0x800,%r14
mov    %r12,0x400fe060
40
mov    %r14,0x400fe070
40
test   $0x2,%r15b
jne    11a6 <SysCtlClockSet+0x96>
mov    %eax,%edx
and    $0x2,%edx
test   %rdx,%rdx
jne    11b6 <SysCtlClockSet+0xa6>
test   $0x1,%r15b
jne    11e7 <SysCtlClockSet+0xd7>
mov    %eax,%edx
and    $0x1,%edx
test   %rdx,%rdx
je     11e7 <SysCtlClockSet+0xd7>
mov    %r15,%rdx
or     $0xfffffffffffffffc,%rdx
and    %rdx,%r12
mov    %r12,0x400fe060
40
test   $0x80000000,%ecx
cmovne %ecx,%eax
not    %eax
test   $0x30,%al
mov    $0x1000,%eax
mov    $0x80000,%edi
cmove  %eax,%edi
call   1030 <SysCtlDelay@plt>
and    $0xffffffffffffc80f,%r12
mov    %r15d,%ebx
and    $0x37f0,%ebx
or     %r12,%rbx
and    $0x7fffdf8f,%r14d
mov    %r15d,%eax
and    $0x80002030,%eax
mov    %r15d,%ecx
and    $0x8,%ecx
lea    (%rax,%rcx,8),%r12
or     %r14,%r12
movq   $0x40,0x400fe058
test   $0x80000000,%r15d
jne    123d <SysCtlClockSet+0x12d>
mov    %rbx,0x400fe060
40
mov    %r12,0x400fe070
40
jmp    124d <SysCtlClockSet+0x13d>
mov    %r12,0x400fe070
40
mov    %rbx,0x400fe060
40
mov    $0x10,%edi
call   1030 <SysCtlDelay@plt>
and    $0xfffffffff83ffffc,%rbx
mov    %r15d,%eax
and    $0x7c00003,%eax
or     %rbx,%rax
and    $0xe07fffff,%r12d
mov    %r15d,%edx
and    $0x1f800000,%edx
or     %r12,%rdx
test   $0x40000000,%r15d
jne    1299 <SysCtlClockSet+0x189>
and    $0xbfffffff,%edx
mov    %rdx,%rcx
test   $0x800,%r15d
je     12ba <SysCtlClockSet+0x1aa>
jmp    12f6 <SysCtlClockSet+0x1e6>
or     $0x400000,%rax
and    $0xffbfffff,%edx
mov    %r15d,%ecx
and    $0x40400000,%ecx
or     %rdx,%rcx
test   $0x800,%r15d
jne    12f6 <SysCtlClockSet+0x1e6>
mov    $0xffffffffffff8001,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
testq  $0x40,0x400fe050
jne    12ea <SysCtlClockSet+0x1da>
lea    0x1(%rdx),%rsi
test   %rdx,%rdx
mov    %rsi,%rdx
jne    12d0 <SysCtlClockSet+0x1c0>
and    $0xfffffffffffff7ff,%rax
and    $0xfffff7ff,%ecx
mov    %rax,0x400fe060
40
mov    %rcx,0x400fe070
40
mov    $0x10,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
jmp    1030 <SysCtlDelay@plt>

LLVM IR (-O0):
define void @SysCtlClockSet(i64 %0) {
%2 = alloca i64
%3 = alloca i64
%4 = alloca i64
%5 = alloca i64
store i64 %0, i64* %2
%6 = load volatile i64, i64* inttoptr (i64 1074782208 to i64*)
%7 = and i64 %6, 1879048192
%8 = icmp eq i64 %7, 0
br i1 %8, label %13, label %9
9: ; preds = %1
%10 = load volatile i64, i64* inttoptr (i64 1074782208 to i64*)
%11 = and i64 %10, 1895759872
%12 = icmp eq i64 %11, 268435456
br i1 %12, label %13, label %18
13: ; preds = %9, %1
%14 = load i64, i64* %2
%15 = and i64 %14, 2147483648
%16 = icmp ne i64 %15, 0
br i1 %16, label %17, label %18
17: ; preds = %13
br label %157
18: ; preds = %13, %9
%19 = load volatile i64, i64* inttoptr (i64 1074782304 to i64*)
store i64 %19, i64* %4
%20 = load volatile i64, i64* inttoptr (i64 1074782320 to i64*)
store i64 %20, i64* %5
%21 = load i64, i64* %4
%22 = or i64 %21, 2048
store i64 %22, i64* %4
%23 = load i64, i64* %4
%24 = and i64 %23, -4194305
store i64 %24, i64* %4
%25 = load i64, i64* %5
%26 = or i64 %25, 2048
store i64 %26, i64* %5
%27 = load i64, i64* %4
store volatile i64 %27, i64* inttoptr (i64 1074782304 to i64*)
%28 = load i64, i64* %5
store volatile i64 %28, i64* inttoptr (i64 1074782320 to i64*)
%29 = load i64, i64* %4
%30 = and i64 %29, 2
%31 = icmp ne i64 %30, 0
br i1 %31, label %32, label %36
32: ; preds = %18
%33 = load i64, i64* %2
%34 = and i64 %33, 2
%35 = icmp ne i64 %34, 0
br i1 %35, label %36, label %44
36: ; preds = %32, %18
%37 = load i64, i64* %4
%38 = and i64 %37, 1
%39 = icmp ne i64 %38, 0
br i1 %39, label %40, label %75
40: ; preds = %36
%41 = load i64, i64* %2
%42 = and i64 %41, 1
%43 = icmp ne i64 %42, 0
br i1 %43, label %75, label %44
44: ; preds = %40, %32
%45 = load i64, i64* %2
%46 = and i64 %45, 3
%47 = or i64 -4, %46
%48 = load i64, i64* %4
%49 = and i64 %48, %47
store i64 %49, i64* %4
%50 = load i64, i64* %4
store volatile i64 %50, i64* inttoptr (i64 1074782304 to i64*)
%51 = load i64, i64* %5
%52 = and i64 %51, 2147483648
%53 = icmp ne i64 %52, 0
br i1 %53, label %54, label %62
54: ; preds = %44
%55 = load i64, i64* %5
%56 = and i64 %55, 112
%57 = icmp eq i64 %56, 48
br i1 %57, label %70, label %58
58: ; preds = %54
%59 = load i64, i64* %5
%60 = and i64 %59, 112
%61 = icmp eq i64 %60, 112
br i1 %61, label %70, label %62
62: ; preds = %58, %44
%63 = load i64, i64* %5
%64 = and i64 %63, 2147483648
%65 = icmp ne i64 %64, 0
br i1 %65, label %72, label %66
66: ; preds = %62
%67 = load i64, i64* %4
%68 = and i64 %67, 48
%69 = icmp eq i64 %68, 48
br i1 %69, label %70, label %72
70: ; preds = %66, %58, %54
%71 = call i32 @SysCtlDelay(i32 4096)
br label %74
72: ; preds = %66, %62
%73 = call i32 @SysCtlDelay(i32 524288)
br label %74
74: ; preds = %72, %70
br label %75
75: ; preds = %74, %40, %36
%76 = load i64, i64* %4
%77 = and i64 %76, -14321
store i64 %77, i64* %4
%78 = load i64, i64* %2
%79 = and i64 %78, 14320
%80 = load i64, i64* %4
%81 = or i64 %80, %79
store i64 %81, i64* %4
%82 = load i64, i64* %5
%83 = and i64 %82, 2147475343
store i64 %83, i64* %5
%84 = load i64, i64* %2
%85 = and i64 %84, 2147491888
%86 = load i64, i64* %5
%87 = or i64 %86, %85
store i64 %87, i64* %5
%88 = load i64, i64* %2
%89 = and i64 %88, 8
%90 = shl i64 %89, 3
%91 = load i64, i64* %5
%92 = or i64 %91, %90
store i64 %92, i64* %5
store volatile i64 64, i64* inttoptr (i64 1074782296 to i64*)
%93 = load i64, i64* %5
%94 = and i64 %93, 2147483648
%95 = icmp ne i64 %94, 0
br i1 %95, label %96, label %99
96: ; preds = %75
%97 = load i64, i64* %5
store volatile i64 %97, i64* inttoptr (i64 1074782320 to i64*)
%98 = load i64, i64* %4
store volatile i64 %98, i64* inttoptr (i64 1074782304 to i64*)
br label %102
99: ; preds = %75
%100 = load i64, i64* %4
store volatile i64 %100, i64* inttoptr (i64 1074782304 to i64*)
%101 = load i64, i64* %5
store volatile i64 %101, i64* inttoptr (i64 1074782320 to i64*)
br label %102
102: ; preds = %99, %96
%103 = call i32 @SysCtlDelay(i32 16)
%104 = load i64, i64* %4
%105 = and i64 %104, -130023428
store i64 %105, i64* %4
%106 = load i64, i64* %2
%107 = and i64 %106, 130023427
%108 = load i64, i64* %4
%109 = or i64 %108, %107
store i64 %109, i64* %4
%110 = load i64, i64* %5
%111 = and i64 %110, -528482305
store i64 %111, i64* %5
%112 = load i64, i64* %2
%113 = and i64 %112, 528482304
%114 = load i64, i64* %5
%115 = or i64 %114, %113
store i64 %115, i64* %5
%116 = load i64, i64* %2
%117 = and i64 %116, 1073741824
%118 = icmp ne i64 %117, 0
br i1 %118, label %119, label %128
119: ; preds = %102
%120 = load i64, i64* %4
%121 = or i64 %120, 4194304
store i64 %121, i64* %4
%122 = load i64, i64* %5
%123 = and i64 %122, -4194305
store i64 %123, i64* %5
%124 = load i64, i64* %2
%125 = and i64 %124, 1077936128
%126 = load i64, i64* %5
%127 = or i64 %126, %125
store i64 %127, i64* %5
br label %131
128: ; preds = %102
%129 = load i64, i64* %5
%130 = and i64 %129, -1073741825
store i64 %130, i64* %5
br label %131
131: ; preds = %128, %119
%132 = load i64, i64* %2
%133 = and i64 %132, 2048
%134 = icmp ne i64 %133, 0
br i1 %134, label %153, label %135
135: ; preds = %131
store i64 32768, i64* %3
br label %136
136: ; preds = %145, %135
%137 = load i64, i64* %3
%138 = icmp ugt i64 %137, 0
br i1 %138, label %139, label %148
139: ; preds = %136
%140 = load volatile i64, i64* inttoptr (i64 1074782288 to i64*)
%141 = and i64 %140, 64
%142 = icmp ne i64 %141, 0
br i1 %142, label %143, label %144
143: ; preds = %139
br label %148
144: ; preds = %139
br label %145
145: ; preds = %144
%146 = load i64, i64* %3
%147 = add i64 %146, -1
store i64 %147, i64* %3
br label %136
148: ; preds = %143, %136
%149 = load i64, i64* %4
%150 = and i64 %149, -2049
store i64 %150, i64* %4
%151 = load i64, i64* %5
%152 = and i64 %151, -2049
store i64 %152, i64* %5
br label %153
153: ; preds = %148, %131
%154 = load i64, i64* %4
store volatile i64 %154, i64* inttoptr (i64 1074782304 to i64*)
%155 = load i64, i64* %5
store volatile i64 %155, i64* inttoptr (i64 1074782320 to i64*)
%156 = call i32 @SysCtlDelay(i32 16)
br label %157
157: ; preds = %153, %17
ret void
}

LLVM IR (-O2):
define void @SysCtlClockSet(i64 %0) {
%2 = load volatile i64, i64* inttoptr (i64 1074782208 to i64*)
%3 = and i64 %2, 1879048192
%4 = icmp eq i64 %3, 0
br i1 %4, label %12, label %5
5: ; preds = %1
%6 = load volatile i64, i64* inttoptr (i64 1074782208 to i64*)
%7 = and i64 %6, 1895759872
%8 = icmp ne i64 %7, 268435456
%9 = and i64 %0, 2147483648
%10 = icmp eq i64 %9, 0
%11 = or i1 %10, %8
br i1 %11, label %15, label %94
12: ; preds = %1
%13 = and i64 %0, 2147483648
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %94
15: ; preds = %12, %5
%16 = load volatile i64, i64* inttoptr (i64 1074782304 to i64*)
%17 = load volatile i64, i64* inttoptr (i64 1074782320 to i64*)
%18 = and i64 %16, -4196353
%19 = or i64 %18, 2048
%20 = or i64 %17, 2048
store volatile i64 %19, i64* inttoptr (i64 1074782304 to i64*)
store volatile i64 %20, i64* inttoptr (i64 1074782320 to i64*)
%21 = and i64 %16, 2
%22 = icmp ne i64 %21, 0
%23 = and i64 %0, 2
%24 = icmp eq i64 %23, 0
%25 = and i1 %24, %22
br i1 %25, label %32, label %26
26: ; preds = %15
%27 = and i64 %16, 1
%28 = icmp ne i64 %27, 0
%29 = and i64 %0, 1
%30 = icmp eq i64 %29, 0
%31 = and i1 %30, %28
br i1 %31, label %32, label %42
32: ; preds = %26, %15
%33 = or i64 %0, -4
%34 = and i64 %19, %33
store volatile i64 %34, i64* inttoptr (i64 1074782304 to i64*)
%35 = and i64 %17, 2147483648
%36 = icmp eq i64 %35, 0
%37 = select i1 %36, i64 %16, i64 %17
%38 = and i64 %37, 48
%39 = icmp eq i64 %38, 48
%40 = select i1 %39, i32 4096, i32 524288
%41 = tail call i32 @SysCtlDelay(i32 %40)
br label %42
42: ; preds = %32, %26
%43 = phi i64 [ %19, %26 ], [ %34, %32 ]
%44 = and i64 %43, -14321
%45 = and i64 %0, 14320
%46 = or i64 %44, %45
%47 = and i64 %20, 2147475343
%48 = and i64 %0, 2147491888
%49 = shl i64 %0, 3
%50 = and i64 %49, 64
%51 = or i64 %50, %48
%52 = or i64 %51, %47
store volatile i64 64, i64* inttoptr (i64 1074782296 to i64*)
%53 = and i64 %0, 2147483648
%54 = icmp eq i64 %53, 0
br i1 %54, label %56, label %55
55: ; preds = %42
store volatile i64 %52, i64* inttoptr (i64 1074782320 to i64*)
store volatile i64 %46, i64* inttoptr (i64 1074782304 to i64*)
br label %57
56: ; preds = %42
store volatile i64 %46, i64* inttoptr (i64 1074782304 to i64*)
store volatile i64 %52, i64* inttoptr (i64 1074782320 to i64*)
br label %57
57: ; preds = %56, %55
%58 = tail call i32 @SysCtlDelay(i32 16)
%59 = and i64 %46, -130023428
%60 = and i64 %0, 130023427
%61 = or i64 %59, %60
%62 = and i64 %52, 3766484991
%63 = and i64 %0, 528482304
%64 = or i64 %62, %63
%65 = and i64 %0, 1073741824
%66 = icmp eq i64 %65, 0
br i1 %66, label %72, label %67
67: ; preds = %57
%68 = or i64 %61, 4194304
%69 = and i64 %64, 4290772991
%70 = and i64 %0, 1077936128
%71 = or i64 %69, %70
br label %74
72: ; preds = %57
%73 = and i64 %64, 3221225471
br label %74
74: ; preds = %72, %67
%75 = phi i64 [ %68, %67 ], [ %61, %72 ]
%76 = phi i64 [ %71, %67 ], [ %73, %72 ]
%77 = and i64 %0, 2048
%78 = icmp eq i64 %77, 0
br i1 %78, label %79, label %90
79: ; preds = %74, %79
%80 = phi i64 [ %84, %79 ], [ 32768, %74 ]
%81 = load volatile i64, i64* inttoptr (i64 1074782288 to i64*)
%82 = and i64 %81, 64
%83 = icmp ne i64 %82, 0
%84 = add nsw i64 %80, -1
%85 = icmp eq i64 %84, 0
%86 = select i1 %83, i1 true, i1 %85
br i1 %86, label %87, label %79
87: ; preds = %79
%88 = and i64 %75, -2049
%89 = and i64 %76, -2049
br label %90
90: ; preds = %87, %74
%91 = phi i64 [ %75, %74 ], [ %88, %87 ]
%92 = phi i64 [ %76, %74 ], [ %89, %87 ]
store volatile i64 %91, i64* inttoptr (i64 1074782304 to i64*)
store volatile i64 %92, i64* inttoptr (i64 1074782320 to i64*)
%93 = tail call i32 @SysCtlDelay(i32 16)
br label %94
94: ; preds = %12, %5, %90
ret void
}