#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 */
typedef int /*<<< orphan*/ uint16_t;

/* Variables and functions */
void scale2x_tiles8(void *dst, const void *src, int w8, int h) {
  uint16_t *d = (uint16_t *)dst;
  const uint16_t *s = (const uint16_t *)src;
  while (h--) {
    uint16_t *d_save = d;
    const uint16_t *s_save = s;
    int w = w8;
    while (w--) {
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
      d[0] = *s;
      d[1] = *s;
      d[1024] = *s;
      d[1025] = *s;
      d += 2;
      s++;
    }
    d = d_save + 2048;
    s = s_save + 1024;
  }
}


x86 assembly (clang, -O0):
<scale2x_tiles8>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x18(%rbp)
cmp    $0x0,%eax
je     140e <scale2x_tiles8+0x30e>
mov    -0x20(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x3c(%rbp)
cmp    $0x0,%eax
je     13ed <scale2x_tiles8+0x2ed>
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1000(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,0x1004(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
jmp    114c <scale2x_tiles8+0x4c>
mov    -0x30(%rbp),%rax
add    $0x2000,%rax
mov    %rax,-0x20(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1000,%rax
mov    %rax,-0x28(%rbp)
jmp    1122 <scale2x_tiles8+0x22>
pop    %rbp
ret

x86 assembly (clang, -O2):
<scale2x_tiles8>:
jmp    111e <scale2x_tiles8+0x1e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x2000,%rdi
add    $0x1000,%rsi
test   %ecx,%ecx
je     12be <scale2x_tiles8+0x1be>
add    $0xffffffff,%ecx
test   %edx,%edx
je     1110 <scale2x_tiles8+0x10>
xor    %r9d,%r9d
mov    %edx,%r8d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%rsi,%r9,1),%eax
mov    %eax,(%rdi,%r9,2)
mov    (%rsi,%r9,1),%eax
mov    %eax,0x4(%rdi,%r9,2)
mov    (%rsi,%r9,1),%eax
mov    %eax,0x1000(%rdi,%r9,2)
mov    (%rsi,%r9,1),%eax
mov    %eax,0x1004(%rdi,%r9,2)
mov    0x4(%rsi,%r9,1),%eax
mov    %eax,0x8(%rdi,%r9,2)
mov    0x4(%rsi,%r9,1),%eax
mov    %eax,0xc(%rdi,%r9,2)
mov    0x4(%rsi,%r9,1),%eax
mov    %eax,0x1008(%rdi,%r9,2)
mov    0x4(%rsi,%r9,1),%eax
mov    %eax,0x100c(%rdi,%r9,2)
mov    0x8(%rsi,%r9,1),%eax
mov    %eax,0x10(%rdi,%r9,2)
mov    0x8(%rsi,%r9,1),%eax
mov    %eax,0x14(%rdi,%r9,2)
mov    0x8(%rsi,%r9,1),%eax
mov    %eax,0x1010(%rdi,%r9,2)
mov    0x8(%rsi,%r9,1),%eax
mov    %eax,0x1014(%rdi,%r9,2)
mov    0xc(%rsi,%r9,1),%eax
mov    %eax,0x18(%rdi,%r9,2)
mov    0xc(%rsi,%r9,1),%eax
mov    %eax,0x1c(%rdi,%r9,2)
mov    0xc(%rsi,%r9,1),%eax
mov    %eax,0x1018(%rdi,%r9,2)
mov    0xc(%rsi,%r9,1),%eax
mov    %eax,0x101c(%rdi,%r9,2)
mov    0x10(%rsi,%r9,1),%eax
mov    %eax,0x20(%rdi,%r9,2)
mov    0x10(%rsi,%r9,1),%eax
mov    %eax,0x24(%rdi,%r9,2)
mov    0x10(%rsi,%r9,1),%eax
mov    %eax,0x1020(%rdi,%r9,2)
mov    0x10(%rsi,%r9,1),%eax
mov    %eax,0x1024(%rdi,%r9,2)
mov    0x14(%rsi,%r9,1),%eax
mov    %eax,0x28(%rdi,%r9,2)
mov    0x14(%rsi,%r9,1),%eax
mov    %eax,0x2c(%rdi,%r9,2)
mov    0x14(%rsi,%r9,1),%eax
mov    %eax,0x1028(%rdi,%r9,2)
mov    0x14(%rsi,%r9,1),%eax
mov    %eax,0x102c(%rdi,%r9,2)
mov    0x18(%rsi,%r9,1),%eax
mov    %eax,0x30(%rdi,%r9,2)
mov    0x18(%rsi,%r9,1),%eax
mov    %eax,0x34(%rdi,%r9,2)
mov    0x18(%rsi,%r9,1),%eax
mov    %eax,0x1030(%rdi,%r9,2)
mov    0x18(%rsi,%r9,1),%eax
mov    %eax,0x1034(%rdi,%r9,2)
mov    0x1c(%rsi,%r9,1),%eax
mov    %eax,0x38(%rdi,%r9,2)
mov    0x1c(%rsi,%r9,1),%eax
mov    %eax,0x3c(%rdi,%r9,2)
mov    0x1c(%rsi,%r9,1),%eax
mov    %eax,0x1038(%rdi,%r9,2)
mov    0x1c(%rsi,%r9,1),%eax
mov    %eax,0x103c(%rdi,%r9,2)
add    $0x20,%r9
add    $0xffffffff,%r8d
jne    1140 <scale2x_tiles8+0x40>
jmp    1110 <scale2x_tiles8+0x10>
ret

LLVM IR (-O0):
define void @scale2x_tiles8(i8* %0, i8* %1, i32 %2, i32 %3) {
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32
store i8* %0, i8** %5
store i8* %1, i8** %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%14 = load i8*, i8** %5
%15 = bitcast i8* %14 to i32*
store i32* %15, i32** %9
%16 = load i8*, i8** %6
%17 = bitcast i8* %16 to i32*
store i32* %17, i32** %10
br label %18
18: ; preds = %191, %4
%19 = load i32, i32* %8
%20 = add nsw i32 %19, -1
store i32 %20, i32* %8
%21 = icmp ne i32 %19, 0
br i1 %21, label %22, label %196
22: ; preds = %18
%23 = load i32*, i32** %9
store i32* %23, i32** %11
%24 = load i32*, i32** %10
store i32* %24, i32** %12
%25 = load i32, i32* %7
store i32 %25, i32* %13
br label %26
26: ; preds = %30, %22
%27 = load i32, i32* %13
%28 = add nsw i32 %27, -1
store i32 %28, i32* %13
%29 = icmp ne i32 %27, 0
br i1 %29, label %30, label %191
30: ; preds = %26
%31 = load i32*, i32** %10
%32 = load i32, i32* %31
%33 = load i32*, i32** %9
%34 = getelementptr inbounds i32, i32* %33, i64 0
store i32 %32, i32* %34
%35 = load i32*, i32** %10
%36 = load i32, i32* %35
%37 = load i32*, i32** %9
%38 = getelementptr inbounds i32, i32* %37, i64 1
store i32 %36, i32* %38
%39 = load i32*, i32** %10
%40 = load i32, i32* %39
%41 = load i32*, i32** %9
%42 = getelementptr inbounds i32, i32* %41, i64 1024
store i32 %40, i32* %42
%43 = load i32*, i32** %10
%44 = load i32, i32* %43
%45 = load i32*, i32** %9
%46 = getelementptr inbounds i32, i32* %45, i64 1025
store i32 %44, i32* %46
%47 = load i32*, i32** %9
%48 = getelementptr inbounds i32, i32* %47, i64 2
store i32* %48, i32** %9
%49 = load i32*, i32** %10
%50 = getelementptr inbounds i32, i32* %49, i32 1
store i32* %50, i32** %10
%51 = load i32*, i32** %10
%52 = load i32, i32* %51
%53 = load i32*, i32** %9
%54 = getelementptr inbounds i32, i32* %53, i64 0
store i32 %52, i32* %54
%55 = load i32*, i32** %10
%56 = load i32, i32* %55
%57 = load i32*, i32** %9
%58 = getelementptr inbounds i32, i32* %57, i64 1
store i32 %56, i32* %58
%59 = load i32*, i32** %10
%60 = load i32, i32* %59
%61 = load i32*, i32** %9
%62 = getelementptr inbounds i32, i32* %61, i64 1024
store i32 %60, i32* %62
%63 = load i32*, i32** %10
%64 = load i32, i32* %63
%65 = load i32*, i32** %9
%66 = getelementptr inbounds i32, i32* %65, i64 1025
store i32 %64, i32* %66
%67 = load i32*, i32** %9
%68 = getelementptr inbounds i32, i32* %67, i64 2
store i32* %68, i32** %9
%69 = load i32*, i32** %10
%70 = getelementptr inbounds i32, i32* %69, i32 1
store i32* %70, i32** %10
%71 = load i32*, i32** %10
%72 = load i32, i32* %71
%73 = load i32*, i32** %9
%74 = getelementptr inbounds i32, i32* %73, i64 0
store i32 %72, i32* %74
%75 = load i32*, i32** %10
%76 = load i32, i32* %75
%77 = load i32*, i32** %9
%78 = getelementptr inbounds i32, i32* %77, i64 1
store i32 %76, i32* %78
%79 = load i32*, i32** %10
%80 = load i32, i32* %79
%81 = load i32*, i32** %9
%82 = getelementptr inbounds i32, i32* %81, i64 1024
store i32 %80, i32* %82
%83 = load i32*, i32** %10
%84 = load i32, i32* %83
%85 = load i32*, i32** %9
%86 = getelementptr inbounds i32, i32* %85, i64 1025
store i32 %84, i32* %86
%87 = load i32*, i32** %9
%88 = getelementptr inbounds i32, i32* %87, i64 2
store i32* %88, i32** %9
%89 = load i32*, i32** %10
%90 = getelementptr inbounds i32, i32* %89, i32 1
store i32* %90, i32** %10
%91 = load i32*, i32** %10
%92 = load i32, i32* %91
%93 = load i32*, i32** %9
%94 = getelementptr inbounds i32, i32* %93, i64 0
store i32 %92, i32* %94
%95 = load i32*, i32** %10
%96 = load i32, i32* %95
%97 = load i32*, i32** %9
%98 = getelementptr inbounds i32, i32* %97, i64 1
store i32 %96, i32* %98
%99 = load i32*, i32** %10
%100 = load i32, i32* %99
%101 = load i32*, i32** %9
%102 = getelementptr inbounds i32, i32* %101, i64 1024
store i32 %100, i32* %102
%103 = load i32*, i32** %10
%104 = load i32, i32* %103
%105 = load i32*, i32** %9
%106 = getelementptr inbounds i32, i32* %105, i64 1025
store i32 %104, i32* %106
%107 = load i32*, i32** %9
%108 = getelementptr inbounds i32, i32* %107, i64 2
store i32* %108, i32** %9
%109 = load i32*, i32** %10
%110 = getelementptr inbounds i32, i32* %109, i32 1
store i32* %110, i32** %10
%111 = load i32*, i32** %10
%112 = load i32, i32* %111
%113 = load i32*, i32** %9
%114 = getelementptr inbounds i32, i32* %113, i64 0
store i32 %112, i32* %114
%115 = load i32*, i32** %10
%116 = load i32, i32* %115
%117 = load i32*, i32** %9
%118 = getelementptr inbounds i32, i32* %117, i64 1
store i32 %116, i32* %118
%119 = load i32*, i32** %10
%120 = load i32, i32* %119
%121 = load i32*, i32** %9
%122 = getelementptr inbounds i32, i32* %121, i64 1024
store i32 %120, i32* %122
%123 = load i32*, i32** %10
%124 = load i32, i32* %123
%125 = load i32*, i32** %9
%126 = getelementptr inbounds i32, i32* %125, i64 1025
store i32 %124, i32* %126
%127 = load i32*, i32** %9
%128 = getelementptr inbounds i32, i32* %127, i64 2
store i32* %128, i32** %9
%129 = load i32*, i32** %10
%130 = getelementptr inbounds i32, i32* %129, i32 1
store i32* %130, i32** %10
%131 = load i32*, i32** %10
%132 = load i32, i32* %131
%133 = load i32*, i32** %9
%134 = getelementptr inbounds i32, i32* %133, i64 0
store i32 %132, i32* %134
%135 = load i32*, i32** %10
%136 = load i32, i32* %135
%137 = load i32*, i32** %9
%138 = getelementptr inbounds i32, i32* %137, i64 1
store i32 %136, i32* %138
%139 = load i32*, i32** %10
%140 = load i32, i32* %139
%141 = load i32*, i32** %9
%142 = getelementptr inbounds i32, i32* %141, i64 1024
store i32 %140, i32* %142
%143 = load i32*, i32** %10
%144 = load i32, i32* %143
%145 = load i32*, i32** %9
%146 = getelementptr inbounds i32, i32* %145, i64 1025
store i32 %144, i32* %146
%147 = load i32*, i32** %9
%148 = getelementptr inbounds i32, i32* %147, i64 2
store i32* %148, i32** %9
%149 = load i32*, i32** %10
%150 = getelementptr inbounds i32, i32* %149, i32 1
store i32* %150, i32** %10
%151 = load i32*, i32** %10
%152 = load i32, i32* %151
%153 = load i32*, i32** %9
%154 = getelementptr inbounds i32, i32* %153, i64 0
store i32 %152, i32* %154
%155 = load i32*, i32** %10
%156 = load i32, i32* %155
%157 = load i32*, i32** %9
%158 = getelementptr inbounds i32, i32* %157, i64 1
store i32 %156, i32* %158
%159 = load i32*, i32** %10
%160 = load i32, i32* %159
%161 = load i32*, i32** %9
%162 = getelementptr inbounds i32, i32* %161, i64 1024
store i32 %160, i32* %162
%163 = load i32*, i32** %10
%164 = load i32, i32* %163
%165 = load i32*, i32** %9
%166 = getelementptr inbounds i32, i32* %165, i64 1025
store i32 %164, i32* %166
%167 = load i32*, i32** %9
%168 = getelementptr inbounds i32, i32* %167, i64 2
store i32* %168, i32** %9
%169 = load i32*, i32** %10
%170 = getelementptr inbounds i32, i32* %169, i32 1
store i32* %170, i32** %10
%171 = load i32*, i32** %10
%172 = load i32, i32* %171
%173 = load i32*, i32** %9
%174 = getelementptr inbounds i32, i32* %173, i64 0
store i32 %172, i32* %174
%175 = load i32*, i32** %10
%176 = load i32, i32* %175
%177 = load i32*, i32** %9
%178 = getelementptr inbounds i32, i32* %177, i64 1
store i32 %176, i32* %178
%179 = load i32*, i32** %10
%180 = load i32, i32* %179
%181 = load i32*, i32** %9
%182 = getelementptr inbounds i32, i32* %181, i64 1024
store i32 %180, i32* %182
%183 = load i32*, i32** %10
%184 = load i32, i32* %183
%185 = load i32*, i32** %9
%186 = getelementptr inbounds i32, i32* %185, i64 1025
store i32 %184, i32* %186
%187 = load i32*, i32** %9
%188 = getelementptr inbounds i32, i32* %187, i64 2
store i32* %188, i32** %9
%189 = load i32*, i32** %10
%190 = getelementptr inbounds i32, i32* %189, i32 1
store i32* %190, i32** %10
br label %26
191: ; preds = %26
%192 = load i32*, i32** %11
%193 = getelementptr inbounds i32, i32* %192, i64 2048
store i32* %193, i32** %9
%194 = load i32*, i32** %12
%195 = getelementptr inbounds i32, i32* %194, i64 1024
store i32* %195, i32** %10
br label %18
196: ; preds = %18
ret void
}

LLVM IR (-O2):
define void @scale2x_tiles8(i8* writeonly %0, i8* nocapture %1, i32 %2, i32 %3) {
%5 = icmp eq i32 %3, 0
br i1 %5, label %97, label %6
6: ; preds = %4
%7 = bitcast i8* %1 to i32*
%8 = bitcast i8* %0 to i32*
%9 = icmp eq i32 %2, 0
br label %10
10: ; preds = %6, %93
%11 = phi i32 [ %3, %6 ], [ %14, %93 ]
%12 = phi i32* [ %8, %6 ], [ %94, %93 ]
%13 = phi i32* [ %7, %6 ], [ %95, %93 ]
%14 = add nsw i32 %11, -1
br i1 %9, label %93, label %15
15: ; preds = %10, %15
%16 = phi i32 [ %19, %15 ], [ %2, %10 ]
%17 = phi i32* [ %90, %15 ], [ %12, %10 ]
%18 = phi i32* [ %91, %15 ], [ %13, %10 ]
%19 = add nsw i32 %16, -1
%20 = load i32, i32* %18
store i32 %20, i32* %17
%21 = load i32, i32* %18
%22 = getelementptr inbounds i32, i32* %17, i64 1
store i32 %21, i32* %22
%23 = load i32, i32* %18
%24 = getelementptr inbounds i32, i32* %17, i64 1024
store i32 %23, i32* %24
%25 = load i32, i32* %18
%26 = getelementptr inbounds i32, i32* %17, i64 1025
store i32 %25, i32* %26
%27 = getelementptr inbounds i32, i32* %17, i64 2
%28 = getelementptr inbounds i32, i32* %18, i64 1
%29 = load i32, i32* %28
store i32 %29, i32* %27
%30 = load i32, i32* %28
%31 = getelementptr inbounds i32, i32* %17, i64 3
store i32 %30, i32* %31
%32 = load i32, i32* %28
%33 = getelementptr inbounds i32, i32* %17, i64 1026
store i32 %32, i32* %33
%34 = load i32, i32* %28
%35 = getelementptr inbounds i32, i32* %17, i64 1027
store i32 %34, i32* %35
%36 = getelementptr inbounds i32, i32* %17, i64 4
%37 = getelementptr inbounds i32, i32* %18, i64 2
%38 = load i32, i32* %37
store i32 %38, i32* %36
%39 = load i32, i32* %37
%40 = getelementptr inbounds i32, i32* %17, i64 5
store i32 %39, i32* %40
%41 = load i32, i32* %37
%42 = getelementptr inbounds i32, i32* %17, i64 1028
store i32 %41, i32* %42
%43 = load i32, i32* %37
%44 = getelementptr inbounds i32, i32* %17, i64 1029
store i32 %43, i32* %44
%45 = getelementptr inbounds i32, i32* %17, i64 6
%46 = getelementptr inbounds i32, i32* %18, i64 3
%47 = load i32, i32* %46
store i32 %47, i32* %45
%48 = load i32, i32* %46
%49 = getelementptr inbounds i32, i32* %17, i64 7
store i32 %48, i32* %49
%50 = load i32, i32* %46
%51 = getelementptr inbounds i32, i32* %17, i64 1030
store i32 %50, i32* %51
%52 = load i32, i32* %46
%53 = getelementptr inbounds i32, i32* %17, i64 1031
store i32 %52, i32* %53
%54 = getelementptr inbounds i32, i32* %17, i64 8
%55 = getelementptr inbounds i32, i32* %18, i64 4
%56 = load i32, i32* %55
store i32 %56, i32* %54
%57 = load i32, i32* %55
%58 = getelementptr inbounds i32, i32* %17, i64 9
store i32 %57, i32* %58
%59 = load i32, i32* %55
%60 = getelementptr inbounds i32, i32* %17, i64 1032
store i32 %59, i32* %60
%61 = load i32, i32* %55
%62 = getelementptr inbounds i32, i32* %17, i64 1033
store i32 %61, i32* %62
%63 = getelementptr inbounds i32, i32* %17, i64 10
%64 = getelementptr inbounds i32, i32* %18, i64 5
%65 = load i32, i32* %64
store i32 %65, i32* %63
%66 = load i32, i32* %64
%67 = getelementptr inbounds i32, i32* %17, i64 11
store i32 %66, i32* %67
%68 = load i32, i32* %64
%69 = getelementptr inbounds i32, i32* %17, i64 1034
store i32 %68, i32* %69
%70 = load i32, i32* %64
%71 = getelementptr inbounds i32, i32* %17, i64 1035
store i32 %70, i32* %71
%72 = getelementptr inbounds i32, i32* %17, i64 12
%73 = getelementptr inbounds i32, i32* %18, i64 6
%74 = load i32, i32* %73
store i32 %74, i32* %72
%75 = load i32, i32* %73
%76 = getelementptr inbounds i32, i32* %17, i64 13
store i32 %75, i32* %76
%77 = load i32, i32* %73
%78 = getelementptr inbounds i32, i32* %17, i64 1036
store i32 %77, i32* %78
%79 = load i32, i32* %73
%80 = getelementptr inbounds i32, i32* %17, i64 1037
store i32 %79, i32* %80
%81 = getelementptr inbounds i32, i32* %17, i64 14
%82 = getelementptr inbounds i32, i32* %18, i64 7
%83 = load i32, i32* %82
store i32 %83, i32* %81
%84 = load i32, i32* %82
%85 = getelementptr inbounds i32, i32* %17, i64 15
store i32 %84, i32* %85
%86 = load i32, i32* %82
%87 = getelementptr inbounds i32, i32* %17, i64 1038
store i32 %86, i32* %87
%88 = load i32, i32* %82
%89 = getelementptr inbounds i32, i32* %17, i64 1039
store i32 %88, i32* %89
%90 = getelementptr inbounds i32, i32* %17, i64 16
%91 = getelementptr inbounds i32, i32* %18, i64 8
%92 = icmp eq i32 %19, 0
br i1 %92, label %93, label %15
93: ; preds = %15, %10
%94 = getelementptr inbounds i32, i32* %12, i64 2048
%95 = getelementptr inbounds i32, i32* %13, i64 1024
%96 = icmp eq i32 %14, 0
br i1 %96, label %97, label %10
97: ; preds = %93, %4
ret void
}