#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 & 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    1442 <SysCtlClockSet+0x332>
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    $0x800,%rax
cmp    $0x0,%rax
jne    1420 <SysCtlClockSet+0x310>
movq   $0x8000,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jbe    1404 <SysCtlClockSet+0x2f4>
mov    $0x400fe050,%eax
mov    (%rax),%rax
and    $0x40,%rax
cmp    $0x0,%rax
je     13ee <SysCtlClockSet+0x2de>
jmp    1404 <SysCtlClockSet+0x2f4>
jmp    13f3 <SysCtlClockSet+0x2e3>
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x10(%rbp)
jmp    13c8 <SysCtlClockSet+0x2b8>
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,%ecx
and    $0x1f800000,%ecx
or     %r12,%rcx
test   $0x800,%r15d
jne    12b6 <SysCtlClockSet+0x1a6>
mov    $0xffffffffffff8001,%rdx
nopl   0x0(%rax)
testq  $0x40,0x400fe050
jne    12aa <SysCtlClockSet+0x19a>
lea    0x1(%rdx),%rsi
test   %rdx,%rdx
mov    %rsi,%rdx
jne    1290 <SysCtlClockSet+0x180>
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 %141
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, 2048
%118 = icmp ne i64 %117, 0
br i1 %118, label %137, label %119
119: ; preds = %102
store i64 32768, i64* %3
br label %120
120: ; preds = %129, %119
%121 = load i64, i64* %3
%122 = icmp ugt i64 %121, 0
br i1 %122, label %123, label %132
123: ; preds = %120
%124 = load volatile i64, i64* inttoptr (i64 1074782288 to i64*)
%125 = and i64 %124, 64
%126 = icmp ne i64 %125, 0
br i1 %126, label %127, label %128
127: ; preds = %123
br label %132
128: ; preds = %123
br label %129
129: ; preds = %128
%130 = load i64, i64* %3
%131 = add i64 %130, -1
store i64 %131, i64* %3
br label %120
132: ; preds = %127, %120
%133 = load i64, i64* %4
%134 = and i64 %133, -2049
store i64 %134, i64* %4
%135 = load i64, i64* %5
%136 = and i64 %135, -2049
store i64 %136, i64* %5
br label %137
137: ; preds = %132, %102
%138 = load i64, i64* %4
store volatile i64 %138, i64* inttoptr (i64 1074782304 to i64*)
%139 = load i64, i64* %5
store volatile i64 %139, i64* inttoptr (i64 1074782320 to i64*)
%140 = call i32 @SysCtlDelay(i32 16)
br label %141
141: ; preds = %137, %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 %82
12: ; preds = %1
%13 = and i64 %0, 2147483648
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %82
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, 2048
%66 = icmp eq i64 %65, 0
br i1 %66, label %67, label %78
67: ; preds = %57, %67
%68 = phi i64 [ %72, %67 ], [ 32768, %57 ]
%69 = load volatile i64, i64* inttoptr (i64 1074782288 to i64*)
%70 = and i64 %69, 64
%71 = icmp ne i64 %70, 0
%72 = add nsw i64 %68, -1
%73 = icmp eq i64 %72, 0
%74 = select i1 %71, i1 true, i1 %73
br i1 %74, label %75, label %67
75: ; preds = %67
%76 = and i64 %61, -2049
%77 = and i64 %64, 4294965247
br label %78
78: ; preds = %75, %57
%79 = phi i64 [ %61, %57 ], [ %76, %75 ]
%80 = phi i64 [ %64, %57 ], [ %77, %75 ]
store volatile i64 %79, i64* inttoptr (i64 1074782304 to i64*)
store volatile i64 %80, i64* inttoptr (i64 1074782320 to i64*)
%81 = tail call i32 @SysCtlDelay(i32 16)
br label %82
82: ; preds = %12, %5, %78
ret void
}