int test(void) {
  unsigned char *text_ptr;
  unsigned char *text_base;
  unsigned char *lcd_base = (unsigned char *)0x9000000070000000;
  unsigned int *pixel_base = (unsigned int *)0x9000000070000000;
  unsigned int pixel;
  int count;
  char *cp;
  char *hello = "Hello World!";
  int i;
  int j;
  float x;
  float y;
  float x0;
  float y0;
  float t;
  (*(volatile unsigned int *)(lcd_base + 0x400000) = 0x10ff0000);
  text_base = (unsigned char *)(lcd_base + 0x177000);
  for (i = 0; i < 40 * 100; i++) {
    (*(volatile unsigned char *)(text_base + 2 * i) = ' ');
    (*(volatile unsigned char *)(text_base + 2 * i + 1) = 0x0f);
  }
  pixel = 0x00000000;
  for (i = 0; i < 800 * 480; i++) {
    (*(volatile unsigned int *)(pixel_base + i) = pixel);
  }
  cp = hello;
  text_ptr = (unsigned char *)(lcd_base + 0x177000);
  while (*cp) {
    (*(volatile unsigned char *)(text_ptr) = *cp);
    text_ptr++;
    (*(volatile unsigned char *)(text_ptr) = 0x0f);
    text_ptr++;
    cp++;
  }
  for (i = 0; i < 480; i++) {
    y0 = ((float)(i - 240)) / 200.0;
    for (j = 0; j < 800; j++) {
      x0 = ((float)(j - 400)) / 200.0;
      x = 0.0;
      y = 0.0;
      count = 0;
      while ((x * x + y * y < 4.0) && (count < 50)) {
        t = x * x - y * y + x0;
        y = 2 * x * y + y0;
        x = t;
        count++;
      }
      if (count == 50) {
        (*(volatile unsigned int *)(pixel_base + 800 * i + j) = 0xffffff00);
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
movabs $0x9000000070000000,%rax
mov    %rax,-0x18(%rbp)
movabs $0x9000000070000000,%rax
mov    %rax,-0x20(%rbp)
lea    0xeed(%rip),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x10ff0000,0x400000(%rax)
mov    -0x18(%rbp),%rax
add    $0x177000,%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x3c(%rbp)
cmpl   $0xfa0,-0x3c(%rbp)
jge    118c <test+0x8c>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
movb   $0xf,0x1(%rax,%rcx,1)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    114e <test+0x4e>
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x3c(%rbp)
cmpl   $0x5dc00,-0x3c(%rbp)
jge    11c3 <test+0xc3>
mov    -0x24(%rbp),%edx
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    119a <test+0x9a>
mov    -0x38(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
add    $0x177000,%rax
mov    %rax,-0x8(%rbp)
mov    -0x30(%rbp),%rax
cmpb   $0x0,(%rax)
je     1222 <test+0x122>
mov    -0x30(%rbp),%rax
mov    (%rax),%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movb   $0xf,(%rax)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    11d9 <test+0xd9>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x1e0,-0x3c(%rbp)
jge    13bb <test+0x2bb>
mov    -0x3c(%rbp),%eax
sub    $0xf0,%eax
cvtsi2ss %eax,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdb2(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
movl   $0x0,-0x40(%rbp)
cmpl   $0x320,-0x40(%rbp)
jge    13a8 <test+0x2a8>
mov    -0x40(%rbp),%eax
sub    $0x190,%eax
cvtsi2ss %eax,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd79(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x48(%rbp)
movl   $0x0,-0x28(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x44(%rbp),%xmm2
movss  -0x48(%rbp),%xmm1
mulss  -0x48(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
xor    %eax,%eax
movsd  0xd33(%rip),%xmm0
ucomisd %xmm1,%xmm0
mov    %al,-0x55(%rbp)
jbe    12ec <test+0x1ec>
cmpl   $0x32,-0x28(%rbp)
setl   %al
mov    %al,-0x55(%rbp)
mov    -0x55(%rbp),%al
test   $0x1,%al
jne    12fc <test+0x1fc>
jmp    136b <test+0x26b>
movss  -0x44(%rbp),%xmm0
movss  -0x44(%rbp),%xmm2
movss  -0x48(%rbp),%xmm1
mulss  -0x48(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
addss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  0xcd9(%rip),%xmm0
mulss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x50(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    12ab <test+0x1ab>
cmpl   $0x32,-0x28(%rbp)
jne    1395 <test+0x295>
mov    -0x20(%rbp),%rax
imul   $0x320,-0x3c(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
movslq -0x40(%rbp),%rcx
movl   $0xffffff00,(%rax,%rcx,4)
jmp    139a <test+0x29a>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1262 <test+0x162>
jmp    13ad <test+0x2ad>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1229 <test+0x129>
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
movabs $0x9000000070177000,%r8
movl   $0x10ff0000,0x289000(%r8)
mov    $0x9,%ecx
nopw   0x0(%rax,%rax,1)
movb   $0x20,-0x9(%r8,%rcx,1)
movb   $0xf,-0x8(%r8,%rcx,1)
movb   $0x20,-0x7(%r8,%rcx,1)
movb   $0xf,-0x6(%r8,%rcx,1)
movb   $0x20,-0x5(%r8,%rcx,1)
movb   $0xf,-0x4(%r8,%rcx,1)
movb   $0x20,-0x3(%r8,%rcx,1)
movb   $0xf,-0x2(%r8,%rcx,1)
movb   $0x20,-0x1(%r8,%rcx,1)
movb   $0xf,(%r8,%rcx,1)
add    $0xa,%rcx
cmp    $0x1f49,%rcx
jne    1120 <test+0x20>
mov    $0x7,%eax
nopl   (%rax)
movl   $0x0,-0x17701c(%r8,%rax,4)
movl   $0x0,-0x177018(%r8,%rax,4)
movl   $0x0,-0x177014(%r8,%rax,4)
movl   $0x0,-0x177010(%r8,%rax,4)
movl   $0x0,-0x17700c(%r8,%rax,4)
movl   $0x0,-0x177008(%r8,%rax,4)
movl   $0x0,-0x177004(%r8,%rax,4)
movl   $0x0,-0x177000(%r8,%rax,4)
add    $0x8,%rax
cmp    $0x5dc07,%rax
jne    1170 <test+0x70>
movb   $0x48,(%r8)
movb   $0xf,0x1(%r8)
movb   $0x65,0x2(%r8)
movb   $0xf,0x3(%r8)
movb   $0x6c,0x4(%r8)
movb   $0xf,0x5(%r8)
movb   $0x6c,0x6(%r8)
movb   $0xf,0x7(%r8)
movb   $0x6f,0x8(%r8)
movb   $0xf,0x9(%r8)
movb   $0x20,0xa(%r8)
movb   $0xf,0xb(%r8)
movb   $0x57,0xc(%r8)
movb   $0xf,0xd(%r8)
movb   $0x6f,0xe(%r8)
movb   $0xf,0xf(%r8)
movb   $0x72,0x10(%r8)
movb   $0xf,0x11(%r8)
movb   $0x6c,0x12(%r8)
movb   $0xf,0x13(%r8)
movb   $0x64,0x14(%r8)
movb   $0xf,0x15(%r8)
movb   $0x21,0x16(%r8)
movb   $0xf,0x17(%r8)
xor    %ecx,%ecx
movss  0xda3(%rip),%xmm0
movss  0xd9f(%rip),%xmm1
jmp    1281 <test+0x181>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    $0x1e0,%rcx
je     132a <test+0x22a>
lea    -0xf0(%rcx),%eax
xorps  %xmm2,%xmm2
cvtsi2ss %eax,%xmm2
divss  %xmm0,%xmm2
imul   $0xc80,%rcx,%rax
lea    (%r8,%rax,1),%rdx
add    $0xffffffffffe89000,%rdx
xor    %esi,%esi
jmp    12bd <test+0x1bd>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rsi
cmp    $0x320,%rsi
je     1270 <test+0x170>
lea    -0x190(%rsi),%eax
xorps  %xmm3,%xmm3
cvtsi2ss %eax,%xmm3
divss  %xmm0,%xmm3
xor    %edi,%edi
xorps  %xmm6,%xmm6
xorps  %xmm4,%xmm4
xorps  %xmm5,%xmm5
nopl   0x0(%rax)
movaps %xmm5,%xmm7
mulss  %xmm5,%xmm5
subss  %xmm6,%xmm5
addss  %xmm3,%xmm5
addss  %xmm7,%xmm7
mulss  %xmm7,%xmm4
addss  %xmm2,%xmm4
lea    0x1(%rdi),%eax
movaps %xmm4,%xmm6
mulss  %xmm4,%xmm6
movaps %xmm5,%xmm7
mulss  %xmm5,%xmm7
addss  %xmm6,%xmm7
ucomiss %xmm7,%xmm1
jbe    131c <test+0x21c>
cmp    $0x31,%edi
mov    %eax,%edi
jb     12e0 <test+0x1e0>
cmp    $0x32,%eax
jne    12b0 <test+0x1b0>
movl   $0xffffff00,(%rdx,%rsi,4)
jmp    12b0 <test+0x1b0>
xor    %eax,%eax
ret

LLVM IR (-O0):
@.str = [13 x i8] c"Hello World!\00"
define i32 @test() {
%1 = alloca i8*
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
store i8* inttoptr (i64 -8070450530368880640 to i8*), i8** %3
store i32* inttoptr (i64 -8070450530368880640 to i32*), i32** %4
store i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i8** %8
%16 = load i8*, i8** %3
%17 = getelementptr inbounds i8, i8* %16, i64 4194304
%18 = bitcast i8* %17 to i32*
store volatile i32 285147136, i32* %18
%19 = load i8*, i8** %3
%20 = getelementptr inbounds i8, i8* %19, i64 1536000
store i8* %20, i8** %2
store i32 0, i32* %9
br label %21
21: ; preds = %36, %0
%22 = load i32, i32* %9
%23 = icmp slt i32 %22, 4000
br i1 %23, label %24, label %39
24: ; preds = %21
%25 = load i8*, i8** %2
%26 = load i32, i32* %9
%27 = mul nsw i32 2, %26
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %25, i64 %28
store volatile i8 32, i8* %29
%30 = load i8*, i8** %2
%31 = load i32, i32* %9
%32 = mul nsw i32 2, %31
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i8, i8* %30, i64 %33
%35 = getelementptr inbounds i8, i8* %34, i64 1
store volatile i8 15, i8* %35
br label %36
36: ; preds = %24
%37 = load i32, i32* %9
%38 = add nsw i32 %37, 1
store i32 %38, i32* %9
br label %21
39: ; preds = %21
store i32 0, i32* %5
store i32 0, i32* %9
br label %40
40: ; preds = %49, %39
%41 = load i32, i32* %9
%42 = icmp slt i32 %41, 384000
br i1 %42, label %43, label %52
43: ; preds = %40
%44 = load i32, i32* %5
%45 = load i32*, i32** %4
%46 = load i32, i32* %9
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds i32, i32* %45, i64 %47
store volatile i32 %44, i32* %48
br label %49
49: ; preds = %43
%50 = load i32, i32* %9
%51 = add nsw i32 %50, 1
store i32 %51, i32* %9
br label %40
52: ; preds = %40
%53 = load i8*, i8** %8
store i8* %53, i8** %7
%54 = load i8*, i8** %3
%55 = getelementptr inbounds i8, i8* %54, i64 1536000
store i8* %55, i8** %1
br label %56
56: ; preds = %60, %52
%57 = load i8*, i8** %7
%58 = load i8, i8* %57
%59 = icmp ne i8 %58, 0
br i1 %59, label %60, label %71
60: ; preds = %56
%61 = load i8*, i8** %7
%62 = load i8, i8* %61
%63 = load i8*, i8** %1
store volatile i8 %62, i8* %63
%64 = load i8*, i8** %1
%65 = getelementptr inbounds i8, i8* %64, i32 1
store i8* %65, i8** %1
%66 = load i8*, i8** %1
store volatile i8 15, i8* %66
%67 = load i8*, i8** %1
%68 = getelementptr inbounds i8, i8* %67, i32 1
store i8* %68, i8** %1
%69 = load i8*, i8** %7
%70 = getelementptr inbounds i8, i8* %69, i32 1
store i8* %70, i8** %7
br label %56
71: ; preds = %56
store i32 0, i32* %9
br label %72
72: ; preds = %141, %71
%73 = load i32, i32* %9
%74 = icmp slt i32 %73, 480
br i1 %74, label %75, label %144
75: ; preds = %72
%76 = load i32, i32* %9
%77 = sub nsw i32 %76, 240
%78 = sitofp i32 %77 to float
%79 = fpext float %78 to double
%80 = fdiv double %79, 2.000000e+02
%81 = fptrunc double %80 to float
store float %81, float* %14
store i32 0, i32* %10
br label %82
82: ; preds = %137, %75
%83 = load i32, i32* %10
%84 = icmp slt i32 %83, 800
br i1 %84, label %85, label %140
85: ; preds = %82
%86 = load i32, i32* %10
%87 = sub nsw i32 %86, 400
%88 = sitofp i32 %87 to float
%89 = fpext float %88 to double
%90 = fdiv double %89, 2.000000e+02
%91 = fptrunc double %90 to float
store float %91, float* %13
store float 0.000000e+00, float* %11
store float 0.000000e+00, float* %12
store i32 0, i32* %6
br label %92
92: ; preds = %106, %85
%93 = load float, float* %11
%94 = load float, float* %11
%95 = load float, float* %12
%96 = load float, float* %12
%97 = fmul float %95, %96
%98 = call float @llvm.fmuladd.f32(float %93, float %94, float %97)
%99 = fpext float %98 to double
%100 = fcmp olt double %99, 4.000000e+00
br i1 %100, label %101, label %104
101: ; preds = %92
%102 = load i32, i32* %6
%103 = icmp slt i32 %102, 50
br label %104
104: ; preds = %101, %92
%105 = phi i1 [ false, %92 ], [ %103, %101 ]
br i1 %105, label %106, label %124
106: ; preds = %104
%107 = load float, float* %11
%108 = load float, float* %11
%109 = load float, float* %12
%110 = load float, float* %12
%111 = fmul float %109, %110
%112 = fneg float %111
%113 = call float @llvm.fmuladd.f32(float %107, float %108, float %112)
%114 = load float, float* %13
%115 = fadd float %113, %114
store float %115, float* %15
%116 = load float, float* %11
%117 = fmul float 2.000000e+00, %116
%118 = load float, float* %12
%119 = load float, float* %14
%120 = call float @llvm.fmuladd.f32(float %117, float %118, float %119)
store float %120, float* %12
%121 = load float, float* %15
store float %121, float* %11
%122 = load i32, i32* %6
%123 = add nsw i32 %122, 1
store i32 %123, i32* %6
br label %92
124: ; preds = %104
%125 = load i32, i32* %6
%126 = icmp eq i32 %125, 50
br i1 %126, label %127, label %136
127: ; preds = %124
%128 = load i32*, i32** %4
%129 = load i32, i32* %9
%130 = mul nsw i32 800, %129
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i32, i32* %128, i64 %131
%133 = load i32, i32* %10
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds i32, i32* %132, i64 %134
store volatile i32 -256, i32* %135
br label %136
136: ; preds = %127, %124
br label %137
137: ; preds = %136
%138 = load i32, i32* %10
%139 = add nsw i32 %138, 1
store i32 %139, i32* %10
br label %82
140: ; preds = %82
br label %141
141: ; preds = %140
%142 = load i32, i32* %9
%143 = add nsw i32 %142, 1
store i32 %143, i32* %9
br label %72
144: ; preds = %72
ret i32 0
}

LLVM IR (-O2):
define i32 @test() {
store volatile i32 285147136, i32* inttoptr (i64 -8070450530364686336 to i32*)
br label %1
1: ; preds = %1, %0
%2 = phi i64 [ 0, %0 ], [ %22, %1 ]
%3 = shl nuw nsw i64 %2, 1
%4 = getelementptr inbounds i8, i8* inttoptr (i64 -8070450530367344640 to i8*), i64 %3
store volatile i8 32, i8* %4
%5 = getelementptr inbounds i8, i8* %4, i64 1
store volatile i8 15, i8* %5
%6 = shl nuw i64 %2, 1
%7 = add i64 %6, 2
%8 = getelementptr inbounds i8, i8* inttoptr (i64 -8070450530367344640 to i8*), i64 %7
store volatile i8 32, i8* %8
%9 = getelementptr inbounds i8, i8* %8, i64 1
store volatile i8 15, i8* %9
%10 = shl nuw i64 %2, 1
%11 = add i64 %10, 4
%12 = getelementptr inbounds i8, i8* inttoptr (i64 -8070450530367344640 to i8*), i64 %11
store volatile i8 32, i8* %12
%13 = getelementptr inbounds i8, i8* %12, i64 1
store volatile i8 15, i8* %13
%14 = shl nuw i64 %2, 1
%15 = add i64 %14, 6
%16 = getelementptr inbounds i8, i8* inttoptr (i64 -8070450530367344640 to i8*), i64 %15
store volatile i8 32, i8* %16
%17 = getelementptr inbounds i8, i8* %16, i64 1
store volatile i8 15, i8* %17
%18 = shl nuw i64 %2, 1
%19 = add i64 %18, 8
%20 = getelementptr inbounds i8, i8* inttoptr (i64 -8070450530367344640 to i8*), i64 %19
store volatile i8 32, i8* %20
%21 = getelementptr inbounds i8, i8* %20, i64 1
store volatile i8 15, i8* %21
%22 = add nuw nsw i64 %2, 5
%23 = icmp eq i64 %22, 4000
br i1 %23, label %24, label %1
24: ; preds = %1, %24
%25 = phi i64 [ %41, %24 ], [ 0, %1 ]
%26 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %25
store volatile i32 0, i32* %26
%27 = or i64 %25, 1
%28 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %27
store volatile i32 0, i32* %28
%29 = or i64 %25, 2
%30 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %29
store volatile i32 0, i32* %30
%31 = or i64 %25, 3
%32 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %31
store volatile i32 0, i32* %32
%33 = or i64 %25, 4
%34 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %33
store volatile i32 0, i32* %34
%35 = or i64 %25, 5
%36 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %35
store volatile i32 0, i32* %36
%37 = or i64 %25, 6
%38 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %37
store volatile i32 0, i32* %38
%39 = or i64 %25, 7
%40 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %39
store volatile i32 0, i32* %40
%41 = add nuw nsw i64 %25, 8
%42 = icmp eq i64 %41, 384000
br i1 %42, label %43, label %24
43: ; preds = %24
store volatile i8 72, i8* inttoptr (i64 -8070450530367344640 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344639 to i8*)
store volatile i8 101, i8* inttoptr (i64 -8070450530367344638 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344637 to i8*)
store volatile i8 108, i8* inttoptr (i64 -8070450530367344636 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344635 to i8*)
store volatile i8 108, i8* inttoptr (i64 -8070450530367344634 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344633 to i8*)
store volatile i8 111, i8* inttoptr (i64 -8070450530367344632 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344631 to i8*)
store volatile i8 32, i8* inttoptr (i64 -8070450530367344630 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344629 to i8*)
store volatile i8 87, i8* inttoptr (i64 -8070450530367344628 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344627 to i8*)
store volatile i8 111, i8* inttoptr (i64 -8070450530367344626 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344625 to i8*)
store volatile i8 114, i8* inttoptr (i64 -8070450530367344624 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344623 to i8*)
store volatile i8 108, i8* inttoptr (i64 -8070450530367344622 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344621 to i8*)
store volatile i8 100, i8* inttoptr (i64 -8070450530367344620 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344619 to i8*)
store volatile i8 33, i8* inttoptr (i64 -8070450530367344618 to i8*)
store volatile i8 15, i8* inttoptr (i64 -8070450530367344617 to i8*)
br label %44
44: ; preds = %43, %81
%45 = phi i64 [ 0, %43 ], [ %82, %81 ]
%46 = trunc i64 %45 to i32
%47 = add i32 %46, -240
%48 = sitofp i32 %47 to float
%49 = fdiv float %48, 2.000000e+02
%50 = mul nuw nsw i64 %45, 800
%51 = getelementptr inbounds i32, i32* inttoptr (i64 -8070450530368880640 to i32*), i64 %50
br label %52
52: ; preds = %44, %78
%53 = phi i64 [ 0, %44 ], [ %79, %78 ]
%54 = trunc i64 %53 to i32
%55 = add i32 %54, -400
%56 = sitofp i32 %55 to float
%57 = fdiv float %56, 2.000000e+02
br label %58
58: ; preds = %52, %58
%59 = phi float [ 0.000000e+00, %52 ], [ %69, %58 ]
%60 = phi i32 [ 0, %52 ], [ %68, %58 ]
%61 = phi float [ 0.000000e+00, %52 ], [ %67, %58 ]
%62 = phi float [ 0.000000e+00, %52 ], [ %65, %58 ]
%63 = fneg float %59
%64 = tail call float @llvm.fmuladd.f32(float %62, float %62, float %63)
%65 = fadd float %57, %64
%66 = fmul float %62, 2.000000e+00
%67 = tail call float @llvm.fmuladd.f32(float %66, float %61, float %49)
%68 = add nuw nsw i32 %60, 1
%69 = fmul float %67, %67
%70 = tail call float @llvm.fmuladd.f32(float %65, float %65, float %69)
%71 = fcmp olt float %70, 4.000000e+00
%72 = icmp ult i32 %60, 49
%73 = select i1 %71, i1 %72, i1 false
br i1 %73, label %58, label %74
74: ; preds = %58
%75 = icmp eq i32 %68, 50
br i1 %75, label %76, label %78
76: ; preds = %74
%77 = getelementptr inbounds i32, i32* %51, i64 %53
store volatile i32 -256, i32* %77
br label %78
78: ; preds = %74, %76
%79 = add nuw nsw i64 %53, 1
%80 = icmp eq i64 %79, 800
br i1 %80, label %81, label %52
81: ; preds = %78
%82 = add nuw nsw i64 %45, 1
%83 = icmp eq i64 %82, 480
br i1 %83, label %84, label %44
84: ; preds = %81
ret i32 0
}