#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*/ udelay(int);
int main() {
  *(volatile unsigned *)(0xBF800000 + (0x60614)) = 1 << 6;
  *(volatile unsigned *)(0xBF800000 + (0x60314)) = 1 << 4;
  *(volatile unsigned *)(0xBF800000 + (0x60114)) = 1 << 11;
  *(volatile unsigned *)(0xBF800000 + (0x60614)) = 1 << 15;
  *(volatile unsigned *)(0xBF800000 + (0x60634)) = 1 << 6;
  *(volatile unsigned *)(0xBF800000 + (0x60334)) = 1 << 4;
  *(volatile unsigned *)(0xBF800000 + (0x60134)) = 1 << 11;
  *(volatile unsigned *)(0xBF800000 + (0x60634)) = 1 << 15;
  while (1) {
    *(volatile unsigned *)(0xBF800000 + (0x6063C)) = 1 << 6;
    udelay(200000);
    *(volatile unsigned *)(0xBF800000 + (0x6033C)) = 1 << 4;
    udelay(200000);
    *(volatile unsigned *)(0xBF800000 + (0x6013C)) = 1 << 11;
    udelay(200000);
    *(volatile unsigned *)(0xBF800000 + (0x6063C)) = 1 << 15;
    udelay(200000);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0xbf860614,%eax
movl   $0x40,(%rax)
mov    $0xbf860314,%eax
movl   $0x10,(%rax)
mov    $0xbf860114,%eax
movl   $0x800,(%rax)
mov    $0xbf860614,%eax
movl   $0x8000,(%rax)
mov    $0xbf860634,%eax
movl   $0x40,(%rax)
mov    $0xbf860334,%eax
movl   $0x10,(%rax)
mov    $0xbf860134,%eax
movl   $0x800,(%rax)
mov    $0xbf860634,%eax
movl   $0x8000,(%rax)
mov    $0xbf86063c,%eax
movl   $0x40,(%rax)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
mov    $0xbf86033c,%eax
movl   $0x10,(%rax)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
mov    $0xbf86013c,%eax
movl   $0x800,(%rax)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
mov    $0xbf86063c,%eax
movl   $0x8000,(%rax)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
jmp    1177 <main+0x67>

x86 assembly (clang, -O2):
<main>:
push   %rbx
mov    $0xbf860614,%ebx
movl   $0x40,(%rbx)
movl   $0x10,-0x300(%rbx)
movl   $0x800,-0x500(%rbx)
movl   $0x8000,(%rbx)
movl   $0x40,0x20(%rbx)
movl   $0x10,-0x2e0(%rbx)
movl   $0x800,-0x4e0(%rbx)
movl   $0x8000,0x20(%rbx)
nopl   0x0(%rax,%rax,1)
movl   $0x40,0x28(%rbx)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
movl   $0x10,-0x2d8(%rbx)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
movl   $0x800,-0x4d8(%rbx)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
movl   $0x8000,0x28(%rbx)
mov    $0x30d40,%edi
call   1030 <udelay@plt>
jmp    1160 <main+0x50>

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
store volatile i32 64, i32* inttoptr (i64 3213231636 to i32*)
store volatile i32 16, i32* inttoptr (i64 3213230868 to i32*)
store volatile i32 2048, i32* inttoptr (i64 3213230356 to i32*)
store volatile i32 32768, i32* inttoptr (i64 3213231636 to i32*)
store volatile i32 64, i32* inttoptr (i64 3213231668 to i32*)
store volatile i32 16, i32* inttoptr (i64 3213230900 to i32*)
store volatile i32 2048, i32* inttoptr (i64 3213230388 to i32*)
store volatile i32 32768, i32* inttoptr (i64 3213231668 to i32*)
br label %2
2: ; preds = %0, %2
store volatile i32 64, i32* inttoptr (i64 3213231676 to i32*)
%3 = call i32 @udelay(i32 200000)
store volatile i32 16, i32* inttoptr (i64 3213230908 to i32*)
%4 = call i32 @udelay(i32 200000)
store volatile i32 2048, i32* inttoptr (i64 3213230396 to i32*)
%5 = call i32 @udelay(i32 200000)
store volatile i32 32768, i32* inttoptr (i64 3213231676 to i32*)
%6 = call i32 @udelay(i32 200000)
br label %2
}

LLVM IR (-O2):
define i32 @main() {
store volatile i32 64, i32* inttoptr (i64 3213231636 to i32*)
store volatile i32 16, i32* inttoptr (i64 3213230868 to i32*)
store volatile i32 2048, i32* inttoptr (i64 3213230356 to i32*)
store volatile i32 32768, i32* inttoptr (i64 3213231636 to i32*)
store volatile i32 64, i32* inttoptr (i64 3213231668 to i32*)
store volatile i32 16, i32* inttoptr (i64 3213230900 to i32*)
store volatile i32 2048, i32* inttoptr (i64 3213230388 to i32*)
store volatile i32 32768, i32* inttoptr (i64 3213231668 to i32*)
br label %1
1: ; preds = %0, %1
store volatile i32 64, i32* inttoptr (i64 3213231676 to i32*)
%2 = tail call i32 @udelay(i32 200000)
store volatile i32 16, i32* inttoptr (i64 3213230908 to i32*)
%3 = tail call i32 @udelay(i32 200000)
store volatile i32 2048, i32* inttoptr (i64 3213230396 to i32*)
%4 = tail call i32 @udelay(i32 200000)
store volatile i32 32768, i32* inttoptr (i64 3213231676 to i32*)
%5 = tail call i32 @udelay(i32 200000)
br label %1
}