#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*/ uint8_t;

/* Variables and functions */
void FillImage420(unsigned char *image, int width, int height) {
  uint8_t *pY = (uint8_t *)(image);
  uint8_t *pU = (uint8_t *)(image + width * height);
  uint8_t *pV = (uint8_t *)(image + width * height * 5 / 4);
  int y, x;
  for (y = 0; y < height / 8; y++) {
    for (x = 0; x < width / 2; x++) {
      *pY++ = 0x52;
      *pY++ = 0x52;
      *pY++ = 0x52;
      *pY++ = 0x52;
      *pU++ = 0x5b;
      *pV++ = 0xf0;
    }
  }
  for (y = 0; y < height / 8; y++) {
    for (x = 0; x < width / 2; x++) {
      *pY++ = 0x91;
      *pY++ = 0x91;
      *pY++ = 0x91;
      *pY++ = 0x91;
      *pU++ = 0x37;
      *pV++ = 0x23;
    }
  }
  for (y = 0; y < height / 8; y++) {
    for (x = 0; x < width / 2; x++) {
      *pY++ = 0x29;
      *pY++ = 0x29;
      *pY++ = 0x29;
      *pY++ = 0x29;
      *pU++ = 0xf0;
      *pV++ = 0x6f;
    }
  }
  for (y = 0; y < height / 8; y++) {
    for (x = 0; x < width / 2; x++) {
      *pY++ = 0xeb;
      *pY++ = 0xeb;
      *pY++ = 0xeb;
      *pY++ = 0xeb;
      *pU++ = 0x80;
      *pV++ = 0x80;
    }
  }
}


x86 assembly (clang, -O0):
<FillImage420>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
imul   -0x10(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x10(%rbp),%eax
imul   $0x5,%eax,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x3c(%rbp),%eax
cmp    %ecx,%eax
jge    123e <FillImage420+0x13e>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x40(%rbp),%eax
cmp    %ecx,%eax
jge    122b <FillImage420+0x12b>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x52,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x52,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x52,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x52,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x20(%rbp)
movl   $0x5b,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x28(%rbp)
movl   $0xf0,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1181 <FillImage420+0x81>
jmp    1230 <FillImage420+0x130>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    115c <FillImage420+0x5c>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x44(%rbp),%eax
cmp    %ecx,%eax
jge    1327 <FillImage420+0x227>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x48(%rbp),%eax
cmp    %ecx,%eax
jge    1314 <FillImage420+0x214>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x91,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x91,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x91,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x91,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x20(%rbp)
movl   $0x37,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x28(%rbp)
movl   $0x23,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    126a <FillImage420+0x16a>
jmp    1319 <FillImage420+0x219>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1245 <FillImage420+0x145>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x4c(%rbp),%eax
cmp    %ecx,%eax
jge    1410 <FillImage420+0x310>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x50(%rbp),%eax
cmp    %ecx,%eax
jge    13fd <FillImage420+0x2fd>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x29,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x29,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x29,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0x29,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x20(%rbp)
movl   $0xf0,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x28(%rbp)
movl   $0x6f,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1353 <FillImage420+0x253>
jmp    1402 <FillImage420+0x302>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    132e <FillImage420+0x22e>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x54(%rbp),%eax
cmp    %ecx,%eax
jge    14f9 <FillImage420+0x3f9>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%eax
cmp    %ecx,%eax
jge    14e6 <FillImage420+0x3e6>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0xeb,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0xeb,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0xeb,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x18(%rbp)
movl   $0xeb,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x20(%rbp)
movl   $0x80,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x4,%rcx
mov    %rcx,-0x28(%rbp)
movl   $0x80,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    143c <FillImage420+0x33c>
jmp    14eb <FillImage420+0x3eb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1417 <FillImage420+0x317>
pop    %rbp
ret

x86 assembly (clang, -O2):
<FillImage420>:
push   %r15
push   %r14
push   %r12
push   %rbx
lea    0x7(%rdx),%r8d
test   %edx,%edx
cmovns %edx,%r8d
cmp    $0x8,%edx
jl     1507 <FillImage420+0x407>
mov    %edx,%eax
imul   %esi,%eax
sar    $0x3,%r8d
lea    (%rax,%rax,4),%ecx
lea    (%rax,%rax,4),%ebx
add    $0x3,%ebx
test   %ecx,%ecx
cmovns %ecx,%ebx
sar    $0x2,%ebx
movslq %ebx,%r12
add    %rdi,%r12
cltq
add    %rdi,%rax
mov    %esi,%r9d
shr    $0x1f,%r9d
add    %esi,%r9d
sar    %r9d
lea    -0x1(%r9),%r10d
mov    %r9d,%r11d
and    $0x3,%r11d
mov    %r9d,%r15d
and    $0xfffffffc,%r15d
xor    %r14d,%r14d
movaps 0xe98(%rip),%xmm0
jmp    117d <FillImage420+0x7d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14d
cmp    %r8d,%r14d
je     1237 <FillImage420+0x137>
cmp    $0x2,%esi
jl     1170 <FillImage420+0x70>
cmp    $0x3,%r10d
jb     11f8 <FillImage420+0xf8>
xor    %ecx,%ecx
xor    %ebx,%ebx
nopl   0x0(%rax)
movups %xmm0,(%rdi)
movl   $0x5b,(%rax,%rcx,4)
movl   $0xf0,(%r12,%rcx,4)
movups %xmm0,0x10(%rdi)
movl   $0x5b,0x4(%rax,%rcx,4)
movl   $0xf0,0x4(%r12,%rcx,4)
movups %xmm0,0x20(%rdi)
movl   $0x5b,0x8(%rax,%rcx,4)
movl   $0xf0,0x8(%r12,%rcx,4)
movups %xmm0,0x30(%rdi)
add    $0x40,%rdi
movl   $0x5b,0xc(%rax,%rcx,4)
movl   $0xf0,0xc(%r12,%rcx,4)
add    $0xfffffffffffffff0,%rbx
add    $0x4,%rcx
cmp    %ecx,%r15d
jne    1190 <FillImage420+0x90>
sub    %rbx,%r12
sub    %rbx,%rax
test   %r11d,%r11d
je     1170 <FillImage420+0x70>
mov    %r11d,%ecx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups %xmm0,(%rdi)
add    $0x10,%rdi
movl   $0x5b,(%rax)
add    $0x4,%rax
movl   $0xf0,(%r12)
add    $0x4,%r12
add    $0xffffffff,%ecx
jne    1210 <FillImage420+0x110>
jmp    1170 <FillImage420+0x70>
cmp    $0x8,%edx
jl     1507 <FillImage420+0x407>
mov    %r9d,%r11d
and    $0x3,%r11d
mov    %r9d,%r15d
and    $0xfffffffc,%r15d
xor    %r14d,%r14d
movaps 0xdb8(%rip),%xmm0
jmp    126d <FillImage420+0x16d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14d
cmp    %r8d,%r14d
je     1327 <FillImage420+0x227>
cmp    $0x2,%esi
jl     1260 <FillImage420+0x160>
cmp    $0x3,%r10d
jb     12e8 <FillImage420+0x1e8>
xor    %ecx,%ecx
xor    %ebx,%ebx
nopl   0x0(%rax)
movups %xmm0,(%rdi)
movl   $0x37,(%rax,%rcx,4)
movl   $0x23,(%r12,%rcx,4)
movups %xmm0,0x10(%rdi)
movl   $0x37,0x4(%rax,%rcx,4)
movl   $0x23,0x4(%r12,%rcx,4)
movups %xmm0,0x20(%rdi)
movl   $0x37,0x8(%rax,%rcx,4)
movl   $0x23,0x8(%r12,%rcx,4)
movups %xmm0,0x30(%rdi)
add    $0x40,%rdi
movl   $0x37,0xc(%rax,%rcx,4)
movl   $0x23,0xc(%r12,%rcx,4)
add    $0xfffffffffffffff0,%rbx
add    $0x4,%rcx
cmp    %ecx,%r15d
jne    1280 <FillImage420+0x180>
sub    %rbx,%r12
sub    %rbx,%rax
test   %r11d,%r11d
je     1260 <FillImage420+0x160>
mov    %r11d,%ecx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups %xmm0,(%rdi)
add    $0x10,%rdi
movl   $0x37,(%rax)
add    $0x4,%rax
movl   $0x23,(%r12)
add    $0x4,%r12
add    $0xffffffff,%ecx
jne    1300 <FillImage420+0x200>
jmp    1260 <FillImage420+0x160>
cmp    $0x8,%edx
jl     1507 <FillImage420+0x407>
mov    %r9d,%r11d
and    $0x3,%r11d
mov    %r9d,%r15d
and    $0xfffffffc,%r15d
xor    %r14d,%r14d
movaps 0xcd8(%rip),%xmm0
jmp    135d <FillImage420+0x25d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14d
cmp    %r8d,%r14d
je     1417 <FillImage420+0x317>
cmp    $0x2,%esi
jl     1350 <FillImage420+0x250>
cmp    $0x3,%r10d
jb     13d8 <FillImage420+0x2d8>
xor    %ecx,%ecx
xor    %ebx,%ebx
nopl   0x0(%rax)
movups %xmm0,(%rdi)
movl   $0xf0,(%rax,%rcx,4)
movl   $0x6f,(%r12,%rcx,4)
movups %xmm0,0x10(%rdi)
movl   $0xf0,0x4(%rax,%rcx,4)
movl   $0x6f,0x4(%r12,%rcx,4)
movups %xmm0,0x20(%rdi)
movl   $0xf0,0x8(%rax,%rcx,4)
movl   $0x6f,0x8(%r12,%rcx,4)
movups %xmm0,0x30(%rdi)
add    $0x40,%rdi
movl   $0xf0,0xc(%rax,%rcx,4)
movl   $0x6f,0xc(%r12,%rcx,4)
add    $0xfffffffffffffff0,%rbx
add    $0x4,%rcx
cmp    %ecx,%r15d
jne    1370 <FillImage420+0x270>
sub    %rbx,%r12
sub    %rbx,%rax
test   %r11d,%r11d
je     1350 <FillImage420+0x250>
mov    %r11d,%ecx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups %xmm0,(%rdi)
add    $0x10,%rdi
movl   $0xf0,(%rax)
add    $0x4,%rax
movl   $0x6f,(%r12)
add    $0x4,%r12
add    $0xffffffff,%ecx
jne    13f0 <FillImage420+0x2f0>
jmp    1350 <FillImage420+0x250>
cmp    $0x8,%edx
jl     1507 <FillImage420+0x407>
mov    %r9d,%edx
and    $0x3,%r9d
and    $0xfffffffc,%edx
xor    %r11d,%r11d
movaps 0xbfc(%rip),%xmm0
jmp    144d <FillImage420+0x34d>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r11d
cmp    %r8d,%r11d
je     1507 <FillImage420+0x407>
cmp    $0x2,%esi
jl     1440 <FillImage420+0x340>
cmp    $0x3,%r10d
jb     14c7 <FillImage420+0x3c7>
xor    %ecx,%ecx
xor    %ebx,%ebx
nopl   0x0(%rax)
movups %xmm0,(%rdi)
movl   $0x80,(%rax,%rcx,4)
movl   $0x80,(%r12,%rcx,4)
movups %xmm0,0x10(%rdi)
movl   $0x80,0x4(%rax,%rcx,4)
movl   $0x80,0x4(%r12,%rcx,4)
movups %xmm0,0x20(%rdi)
movl   $0x80,0x8(%rax,%rcx,4)
movl   $0x80,0x8(%r12,%rcx,4)
movups %xmm0,0x30(%rdi)
add    $0x40,%rdi
movl   $0x80,0xc(%rax,%rcx,4)
movl   $0x80,0xc(%r12,%rcx,4)
add    $0xfffffffffffffff0,%rbx
add    $0x4,%rcx
cmp    %ecx,%edx
jne    1460 <FillImage420+0x360>
sub    %rbx,%r12
sub    %rbx,%rax
test   %r9d,%r9d
je     1440 <FillImage420+0x340>
mov    %r9d,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movups %xmm0,(%rdi)
add    $0x10,%rdi
movl   $0x80,(%rax)
add    $0x4,%rax
movl   $0x80,(%r12)
add    $0x4,%r12
add    $0xffffffff,%ecx
jne    14e0 <FillImage420+0x3e0>
jmp    1440 <FillImage420+0x340>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @FillImage420(i8* %0, i32 %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32
%11 = alloca i32
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%12 = load i8*, i8** %4
%13 = bitcast i8* %12 to i32*
store i32* %13, i32** %7
%14 = load i8*, i8** %4
%15 = load i32, i32* %5
%16 = load i32, i32* %6
%17 = mul nsw i32 %15, %16
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds i8, i8* %14, i64 %18
%20 = bitcast i8* %19 to i32*
store i32* %20, i32** %8
%21 = load i8*, i8** %4
%22 = load i32, i32* %5
%23 = load i32, i32* %6
%24 = mul nsw i32 %22, %23
%25 = mul nsw i32 %24, 5
%26 = sdiv i32 %25, 4
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %21, i64 %27
%29 = bitcast i8* %28 to i32*
store i32* %29, i32** %9
store i32 0, i32* %10
br label %30
30: ; preds = %58, %3
%31 = load i32, i32* %10
%32 = load i32, i32* %6
%33 = sdiv i32 %32, 8
%34 = icmp slt i32 %31, %33
br i1 %34, label %35, label %61
35: ; preds = %30
store i32 0, i32* %11
br label %36
36: ; preds = %54, %35
%37 = load i32, i32* %11
%38 = load i32, i32* %5
%39 = sdiv i32 %38, 2
%40 = icmp slt i32 %37, %39
br i1 %40, label %41, label %57
41: ; preds = %36
%42 = load i32*, i32** %7
%43 = getelementptr inbounds i32, i32* %42, i32 1
store i32* %43, i32** %7
store i32 82, i32* %42
%44 = load i32*, i32** %7
%45 = getelementptr inbounds i32, i32* %44, i32 1
store i32* %45, i32** %7
store i32 82, i32* %44
%46 = load i32*, i32** %7
%47 = getelementptr inbounds i32, i32* %46, i32 1
store i32* %47, i32** %7
store i32 82, i32* %46
%48 = load i32*, i32** %7
%49 = getelementptr inbounds i32, i32* %48, i32 1
store i32* %49, i32** %7
store i32 82, i32* %48
%50 = load i32*, i32** %8
%51 = getelementptr inbounds i32, i32* %50, i32 1
store i32* %51, i32** %8
store i32 91, i32* %50
%52 = load i32*, i32** %9
%53 = getelementptr inbounds i32, i32* %52, i32 1
store i32* %53, i32** %9
store i32 240, i32* %52
br label %54
54: ; preds = %41
%55 = load i32, i32* %11
%56 = add nsw i32 %55, 1
store i32 %56, i32* %11
br label %36
57: ; preds = %36
br label %58
58: ; preds = %57
%59 = load i32, i32* %10
%60 = add nsw i32 %59, 1
store i32 %60, i32* %10
br label %30
61: ; preds = %30
store i32 0, i32* %10
br label %62
62: ; preds = %90, %61
%63 = load i32, i32* %10
%64 = load i32, i32* %6
%65 = sdiv i32 %64, 8
%66 = icmp slt i32 %63, %65
br i1 %66, label %67, label %93
67: ; preds = %62
store i32 0, i32* %11
br label %68
68: ; preds = %86, %67
%69 = load i32, i32* %11
%70 = load i32, i32* %5
%71 = sdiv i32 %70, 2
%72 = icmp slt i32 %69, %71
br i1 %72, label %73, label %89
73: ; preds = %68
%74 = load i32*, i32** %7
%75 = getelementptr inbounds i32, i32* %74, i32 1
store i32* %75, i32** %7
store i32 145, i32* %74
%76 = load i32*, i32** %7
%77 = getelementptr inbounds i32, i32* %76, i32 1
store i32* %77, i32** %7
store i32 145, i32* %76
%78 = load i32*, i32** %7
%79 = getelementptr inbounds i32, i32* %78, i32 1
store i32* %79, i32** %7
store i32 145, i32* %78
%80 = load i32*, i32** %7
%81 = getelementptr inbounds i32, i32* %80, i32 1
store i32* %81, i32** %7
store i32 145, i32* %80
%82 = load i32*, i32** %8
%83 = getelementptr inbounds i32, i32* %82, i32 1
store i32* %83, i32** %8
store i32 55, i32* %82
%84 = load i32*, i32** %9
%85 = getelementptr inbounds i32, i32* %84, i32 1
store i32* %85, i32** %9
store i32 35, i32* %84
br label %86
86: ; preds = %73
%87 = load i32, i32* %11
%88 = add nsw i32 %87, 1
store i32 %88, i32* %11
br label %68
89: ; preds = %68
br label %90
90: ; preds = %89
%91 = load i32, i32* %10
%92 = add nsw i32 %91, 1
store i32 %92, i32* %10
br label %62
93: ; preds = %62
store i32 0, i32* %10
br label %94
94: ; preds = %122, %93
%95 = load i32, i32* %10
%96 = load i32, i32* %6
%97 = sdiv i32 %96, 8
%98 = icmp slt i32 %95, %97
br i1 %98, label %99, label %125
99: ; preds = %94
store i32 0, i32* %11
br label %100
100: ; preds = %118, %99
%101 = load i32, i32* %11
%102 = load i32, i32* %5
%103 = sdiv i32 %102, 2
%104 = icmp slt i32 %101, %103
br i1 %104, label %105, label %121
105: ; preds = %100
%106 = load i32*, i32** %7
%107 = getelementptr inbounds i32, i32* %106, i32 1
store i32* %107, i32** %7
store i32 41, i32* %106
%108 = load i32*, i32** %7
%109 = getelementptr inbounds i32, i32* %108, i32 1
store i32* %109, i32** %7
store i32 41, i32* %108
%110 = load i32*, i32** %7
%111 = getelementptr inbounds i32, i32* %110, i32 1
store i32* %111, i32** %7
store i32 41, i32* %110
%112 = load i32*, i32** %7
%113 = getelementptr inbounds i32, i32* %112, i32 1
store i32* %113, i32** %7
store i32 41, i32* %112
%114 = load i32*, i32** %8
%115 = getelementptr inbounds i32, i32* %114, i32 1
store i32* %115, i32** %8
store i32 240, i32* %114
%116 = load i32*, i32** %9
%117 = getelementptr inbounds i32, i32* %116, i32 1
store i32* %117, i32** %9
store i32 111, i32* %116
br label %118
118: ; preds = %105
%119 = load i32, i32* %11
%120 = add nsw i32 %119, 1
store i32 %120, i32* %11
br label %100
121: ; preds = %100
br label %122
122: ; preds = %121
%123 = load i32, i32* %10
%124 = add nsw i32 %123, 1
store i32 %124, i32* %10
br label %94
125: ; preds = %94
store i32 0, i32* %10
br label %126
126: ; preds = %154, %125
%127 = load i32, i32* %10
%128 = load i32, i32* %6
%129 = sdiv i32 %128, 8
%130 = icmp slt i32 %127, %129
br i1 %130, label %131, label %157
131: ; preds = %126
store i32 0, i32* %11
br label %132
132: ; preds = %150, %131
%133 = load i32, i32* %11
%134 = load i32, i32* %5
%135 = sdiv i32 %134, 2
%136 = icmp slt i32 %133, %135
br i1 %136, label %137, label %153
137: ; preds = %132
%138 = load i32*, i32** %7
%139 = getelementptr inbounds i32, i32* %138, i32 1
store i32* %139, i32** %7
store i32 235, i32* %138
%140 = load i32*, i32** %7
%141 = getelementptr inbounds i32, i32* %140, i32 1
store i32* %141, i32** %7
store i32 235, i32* %140
%142 = load i32*, i32** %7
%143 = getelementptr inbounds i32, i32* %142, i32 1
store i32* %143, i32** %7
store i32 235, i32* %142
%144 = load i32*, i32** %7
%145 = getelementptr inbounds i32, i32* %144, i32 1
store i32* %145, i32** %7
store i32 235, i32* %144
%146 = load i32*, i32** %8
%147 = getelementptr inbounds i32, i32* %146, i32 1
store i32* %147, i32** %8
store i32 128, i32* %146
%148 = load i32*, i32** %9
%149 = getelementptr inbounds i32, i32* %148, i32 1
store i32* %149, i32** %9
store i32 128, i32* %148
br label %150
150: ; preds = %137
%151 = load i32, i32* %11
%152 = add nsw i32 %151, 1
store i32 %152, i32* %11
br label %132
153: ; preds = %132
br label %154
154: ; preds = %153
%155 = load i32, i32* %10
%156 = add nsw i32 %155, 1
store i32 %156, i32* %10
br label %126
157: ; preds = %126
ret void
}

LLVM IR (-O2):
define void @FillImage420(i8* nocapture writeonly %0, i32 %1, i32 %2) {
%4 = mul nsw i32 %2, %1
%5 = sdiv i32 %2, 8
%6 = icmp sgt i32 %2, 7
br i1 %6, label %7, label %263
7: ; preds = %3
%8 = mul nsw i32 %4, 5
%9 = sdiv i32 %8, 4
%10 = sext i32 %9 to i64
%11 = getelementptr inbounds i8, i8* %0, i64 %10
%12 = bitcast i8* %11 to i32*
%13 = sext i32 %4 to i64
%14 = getelementptr inbounds i8, i8* %0, i64 %13
%15 = bitcast i8* %14 to i32*
%16 = bitcast i8* %0 to i32*
%17 = sdiv i32 %1, 2
%18 = icmp sgt i32 %1, 1
%19 = add nsw i32 %17, -1
%20 = and i32 %17, 3
%21 = icmp ult i32 %19, 3
%22 = and i32 %17, -4
%23 = icmp eq i32 %20, 0
br label %24
24: ; preds = %7, %80
%25 = phi i32 [ 0, %7 ], [ %84, %80 ]
%26 = phi i32* [ %12, %7 ], [ %83, %80 ]
%27 = phi i32* [ %15, %7 ], [ %82, %80 ]
%28 = phi i32* [ %16, %7 ], [ %81, %80 ]
br i1 %18, label %29, label %80
29: ; preds = %24
br i1 %21, label %62, label %39
30: ; preds = %80
br i1 %6, label %31, label %263
31: ; preds = %30
%32 = sdiv i32 %1, 2
%33 = icmp sgt i32 %1, 1
%34 = add nsw i32 %32, -1
%35 = and i32 %32, 3
%36 = icmp ult i32 %34, 3
%37 = and i32 %32, -4
%38 = icmp eq i32 %35, 0
br label %86
39: ; preds = %29, %39
%40 = phi i32* [ %59, %39 ], [ %26, %29 ]
%41 = phi i32* [ %58, %39 ], [ %27, %29 ]
%42 = phi i32* [ %56, %39 ], [ %28, %29 ]
%43 = phi i32 [ %60, %39 ], [ 0, %29 ]
%44 = getelementptr inbounds i32, i32* %42, i64 4
%45 = bitcast i32* %42 to <4 x i32>*
store <4 x i32> <i32 82, i32 82, i32 82, i32 82>, <4 x i32>* %45
%46 = getelementptr inbounds i32, i32* %41, i64 1
store i32 91, i32* %41
%47 = getelementptr inbounds i32, i32* %40, i64 1
store i32 240, i32* %40
%48 = getelementptr inbounds i32, i32* %42, i64 8
%49 = bitcast i32* %44 to <4 x i32>*
store <4 x i32> <i32 82, i32 82, i32 82, i32 82>, <4 x i32>* %49
%50 = getelementptr inbounds i32, i32* %41, i64 2
store i32 91, i32* %46
%51 = getelementptr inbounds i32, i32* %40, i64 2
store i32 240, i32* %47
%52 = getelementptr inbounds i32, i32* %42, i64 12
%53 = bitcast i32* %48 to <4 x i32>*
store <4 x i32> <i32 82, i32 82, i32 82, i32 82>, <4 x i32>* %53
%54 = getelementptr inbounds i32, i32* %41, i64 3
store i32 91, i32* %50
%55 = getelementptr inbounds i32, i32* %40, i64 3
store i32 240, i32* %51
%56 = getelementptr inbounds i32, i32* %42, i64 16
%57 = bitcast i32* %52 to <4 x i32>*
store <4 x i32> <i32 82, i32 82, i32 82, i32 82>, <4 x i32>* %57
%58 = getelementptr inbounds i32, i32* %41, i64 4
store i32 91, i32* %54
%59 = getelementptr inbounds i32, i32* %40, i64 4
store i32 240, i32* %55
%60 = add i32 %43, 4
%61 = icmp eq i32 %60, %22
br i1 %61, label %62, label %39
62: ; preds = %39, %29
%63 = phi i32* [ undef, %29 ], [ %56, %39 ]
%64 = phi i32* [ undef, %29 ], [ %58, %39 ]
%65 = phi i32* [ undef, %29 ], [ %59, %39 ]
%66 = phi i32* [ %26, %29 ], [ %59, %39 ]
%67 = phi i32* [ %27, %29 ], [ %58, %39 ]
%68 = phi i32* [ %28, %29 ], [ %56, %39 ]
br i1 %23, label %80, label %69
69: ; preds = %62, %69
%70 = phi i32* [ %77, %69 ], [ %66, %62 ]
%71 = phi i32* [ %76, %69 ], [ %67, %62 ]
%72 = phi i32* [ %74, %69 ], [ %68, %62 ]
%73 = phi i32 [ %78, %69 ], [ 0, %62 ]
%74 = getelementptr inbounds i32, i32* %72, i64 4
%75 = bitcast i32* %72 to <4 x i32>*
store <4 x i32> <i32 82, i32 82, i32 82, i32 82>, <4 x i32>* %75
%76 = getelementptr inbounds i32, i32* %71, i64 1
store i32 91, i32* %71
%77 = getelementptr inbounds i32, i32* %70, i64 1
store i32 240, i32* %70
%78 = add i32 %73, 1
%79 = icmp eq i32 %78, %20
br i1 %79, label %80, label %69
80: ; preds = %62, %69, %24
%81 = phi i32* [ %28, %24 ], [ %63, %62 ], [ %74, %69 ]
%82 = phi i32* [ %27, %24 ], [ %64, %62 ], [ %76, %69 ]
%83 = phi i32* [ %26, %24 ], [ %65, %62 ], [ %77, %69 ]
%84 = add nuw nsw i32 %25, 1
%85 = icmp eq i32 %84, %5
br i1 %85, label %30, label %24
86: ; preds = %31, %142
%87 = phi i32 [ 0, %31 ], [ %146, %142 ]
%88 = phi i32* [ %83, %31 ], [ %145, %142 ]
%89 = phi i32* [ %82, %31 ], [ %144, %142 ]
%90 = phi i32* [ %81, %31 ], [ %143, %142 ]
br i1 %33, label %91, label %142
91: ; preds = %86
br i1 %36, label %124, label %101
92: ; preds = %142
br i1 %6, label %93, label %263
93: ; preds = %92
%94 = sdiv i32 %1, 2
%95 = icmp sgt i32 %1, 1
%96 = add nsw i32 %94, -1
%97 = and i32 %94, 3
%98 = icmp ult i32 %96, 3
%99 = and i32 %94, -4
%100 = icmp eq i32 %97, 0
br label %148
101: ; preds = %91, %101
%102 = phi i32* [ %121, %101 ], [ %88, %91 ]
%103 = phi i32* [ %120, %101 ], [ %89, %91 ]
%104 = phi i32* [ %118, %101 ], [ %90, %91 ]
%105 = phi i32 [ %122, %101 ], [ 0, %91 ]
%106 = getelementptr inbounds i32, i32* %104, i64 4
%107 = bitcast i32* %104 to <4 x i32>*
store <4 x i32> <i32 145, i32 145, i32 145, i32 145>, <4 x i32>* %107
%108 = getelementptr inbounds i32, i32* %103, i64 1
store i32 55, i32* %103
%109 = getelementptr inbounds i32, i32* %102, i64 1
store i32 35, i32* %102
%110 = getelementptr inbounds i32, i32* %104, i64 8
%111 = bitcast i32* %106 to <4 x i32>*
store <4 x i32> <i32 145, i32 145, i32 145, i32 145>, <4 x i32>* %111
%112 = getelementptr inbounds i32, i32* %103, i64 2
store i32 55, i32* %108
%113 = getelementptr inbounds i32, i32* %102, i64 2
store i32 35, i32* %109
%114 = getelementptr inbounds i32, i32* %104, i64 12
%115 = bitcast i32* %110 to <4 x i32>*
store <4 x i32> <i32 145, i32 145, i32 145, i32 145>, <4 x i32>* %115
%116 = getelementptr inbounds i32, i32* %103, i64 3
store i32 55, i32* %112
%117 = getelementptr inbounds i32, i32* %102, i64 3
store i32 35, i32* %113
%118 = getelementptr inbounds i32, i32* %104, i64 16
%119 = bitcast i32* %114 to <4 x i32>*
store <4 x i32> <i32 145, i32 145, i32 145, i32 145>, <4 x i32>* %119
%120 = getelementptr inbounds i32, i32* %103, i64 4
store i32 55, i32* %116
%121 = getelementptr inbounds i32, i32* %102, i64 4
store i32 35, i32* %117
%122 = add i32 %105, 4
%123 = icmp eq i32 %122, %37
br i1 %123, label %124, label %101
124: ; preds = %101, %91
%125 = phi i32* [ undef, %91 ], [ %118, %101 ]
%126 = phi i32* [ undef, %91 ], [ %120, %101 ]
%127 = phi i32* [ undef, %91 ], [ %121, %101 ]
%128 = phi i32* [ %88, %91 ], [ %121, %101 ]
%129 = phi i32* [ %89, %91 ], [ %120, %101 ]
%130 = phi i32* [ %90, %91 ], [ %118, %101 ]
br i1 %38, label %142, label %131
131: ; preds = %124, %131
%132 = phi i32* [ %139, %131 ], [ %128, %124 ]
%133 = phi i32* [ %138, %131 ], [ %129, %124 ]
%134 = phi i32* [ %136, %131 ], [ %130, %124 ]
%135 = phi i32 [ %140, %131 ], [ 0, %124 ]
%136 = getelementptr inbounds i32, i32* %134, i64 4
%137 = bitcast i32* %134 to <4 x i32>*
store <4 x i32> <i32 145, i32 145, i32 145, i32 145>, <4 x i32>* %137
%138 = getelementptr inbounds i32, i32* %133, i64 1
store i32 55, i32* %133
%139 = getelementptr inbounds i32, i32* %132, i64 1
store i32 35, i32* %132
%140 = add i32 %135, 1
%141 = icmp eq i32 %140, %35
br i1 %141, label %142, label %131
142: ; preds = %124, %131, %86
%143 = phi i32* [ %90, %86 ], [ %125, %124 ], [ %136, %131 ]
%144 = phi i32* [ %89, %86 ], [ %126, %124 ], [ %138, %131 ]
%145 = phi i32* [ %88, %86 ], [ %127, %124 ], [ %139, %131 ]
%146 = add nuw nsw i32 %87, 1
%147 = icmp eq i32 %146, %5
br i1 %147, label %92, label %86
148: ; preds = %93, %204
%149 = phi i32 [ 0, %93 ], [ %208, %204 ]
%150 = phi i32* [ %145, %93 ], [ %207, %204 ]
%151 = phi i32* [ %144, %93 ], [ %206, %204 ]
%152 = phi i32* [ %143, %93 ], [ %205, %204 ]
br i1 %95, label %153, label %204
153: ; preds = %148
br i1 %98, label %186, label %163
154: ; preds = %204
br i1 %6, label %155, label %263
155: ; preds = %154
%156 = sdiv i32 %1, 2
%157 = icmp sgt i32 %1, 1
%158 = add nsw i32 %156, -1
%159 = and i32 %156, 3
%160 = icmp ult i32 %158, 3
%161 = and i32 %156, -4
%162 = icmp eq i32 %159, 0
br label %210
163: ; preds = %153, %163
%164 = phi i32* [ %183, %163 ], [ %150, %153 ]
%165 = phi i32* [ %182, %163 ], [ %151, %153 ]
%166 = phi i32* [ %180, %163 ], [ %152, %153 ]
%167 = phi i32 [ %184, %163 ], [ 0, %153 ]
%168 = getelementptr inbounds i32, i32* %166, i64 4
%169 = bitcast i32* %166 to <4 x i32>*
store <4 x i32> <i32 41, i32 41, i32 41, i32 41>, <4 x i32>* %169
%170 = getelementptr inbounds i32, i32* %165, i64 1
store i32 240, i32* %165
%171 = getelementptr inbounds i32, i32* %164, i64 1
store i32 111, i32* %164
%172 = getelementptr inbounds i32, i32* %166, i64 8
%173 = bitcast i32* %168 to <4 x i32>*
store <4 x i32> <i32 41, i32 41, i32 41, i32 41>, <4 x i32>* %173
%174 = getelementptr inbounds i32, i32* %165, i64 2
store i32 240, i32* %170
%175 = getelementptr inbounds i32, i32* %164, i64 2
store i32 111, i32* %171
%176 = getelementptr inbounds i32, i32* %166, i64 12
%177 = bitcast i32* %172 to <4 x i32>*
store <4 x i32> <i32 41, i32 41, i32 41, i32 41>, <4 x i32>* %177
%178 = getelementptr inbounds i32, i32* %165, i64 3
store i32 240, i32* %174
%179 = getelementptr inbounds i32, i32* %164, i64 3
store i32 111, i32* %175
%180 = getelementptr inbounds i32, i32* %166, i64 16
%181 = bitcast i32* %176 to <4 x i32>*
store <4 x i32> <i32 41, i32 41, i32 41, i32 41>, <4 x i32>* %181
%182 = getelementptr inbounds i32, i32* %165, i64 4
store i32 240, i32* %178
%183 = getelementptr inbounds i32, i32* %164, i64 4
store i32 111, i32* %179
%184 = add i32 %167, 4
%185 = icmp eq i32 %184, %99
br i1 %185, label %186, label %163
186: ; preds = %163, %153
%187 = phi i32* [ undef, %153 ], [ %180, %163 ]
%188 = phi i32* [ undef, %153 ], [ %182, %163 ]
%189 = phi i32* [ undef, %153 ], [ %183, %163 ]
%190 = phi i32* [ %150, %153 ], [ %183, %163 ]
%191 = phi i32* [ %151, %153 ], [ %182, %163 ]
%192 = phi i32* [ %152, %153 ], [ %180, %163 ]
br i1 %100, label %204, label %193
193: ; preds = %186, %193
%194 = phi i32* [ %201, %193 ], [ %190, %186 ]
%195 = phi i32* [ %200, %193 ], [ %191, %186 ]
%196 = phi i32* [ %198, %193 ], [ %192, %186 ]
%197 = phi i32 [ %202, %193 ], [ 0, %186 ]
%198 = getelementptr inbounds i32, i32* %196, i64 4
%199 = bitcast i32* %196 to <4 x i32>*
store <4 x i32> <i32 41, i32 41, i32 41, i32 41>, <4 x i32>* %199
%200 = getelementptr inbounds i32, i32* %195, i64 1
store i32 240, i32* %195
%201 = getelementptr inbounds i32, i32* %194, i64 1
store i32 111, i32* %194
%202 = add i32 %197, 1
%203 = icmp eq i32 %202, %97
br i1 %203, label %204, label %193
204: ; preds = %186, %193, %148
%205 = phi i32* [ %152, %148 ], [ %187, %186 ], [ %198, %193 ]
%206 = phi i32* [ %151, %148 ], [ %188, %186 ], [ %200, %193 ]
%207 = phi i32* [ %150, %148 ], [ %189, %186 ], [ %201, %193 ]
%208 = add nuw nsw i32 %149, 1
%209 = icmp eq i32 %208, %5
br i1 %209, label %154, label %148
210: ; preds = %155, %257
%211 = phi i32 [ 0, %155 ], [ %261, %257 ]
%212 = phi i32* [ %207, %155 ], [ %260, %257 ]
%213 = phi i32* [ %206, %155 ], [ %259, %257 ]
%214 = phi i32* [ %205, %155 ], [ %258, %257 ]
br i1 %157, label %215, label %257
215: ; preds = %210
br i1 %160, label %239, label %216
216: ; preds = %215, %216
%217 = phi i32* [ %236, %216 ], [ %212, %215 ]
%218 = phi i32* [ %235, %216 ], [ %213, %215 ]
%219 = phi i32* [ %233, %216 ], [ %214, %215 ]
%220 = phi i32 [ %237, %216 ], [ 0, %215 ]
%221 = getelementptr inbounds i32, i32* %219, i64 4
%222 = bitcast i32* %219 to <4 x i32>*
store <4 x i32> <i32 235, i32 235, i32 235, i32 235>, <4 x i32>* %222
%223 = getelementptr inbounds i32, i32* %218, i64 1
store i32 128, i32* %218
%224 = getelementptr inbounds i32, i32* %217, i64 1
store i32 128, i32* %217
%225 = getelementptr inbounds i32, i32* %219, i64 8
%226 = bitcast i32* %221 to <4 x i32>*
store <4 x i32> <i32 235, i32 235, i32 235, i32 235>, <4 x i32>* %226
%227 = getelementptr inbounds i32, i32* %218, i64 2
store i32 128, i32* %223
%228 = getelementptr inbounds i32, i32* %217, i64 2
store i32 128, i32* %224
%229 = getelementptr inbounds i32, i32* %219, i64 12
%230 = bitcast i32* %225 to <4 x i32>*
store <4 x i32> <i32 235, i32 235, i32 235, i32 235>, <4 x i32>* %230
%231 = getelementptr inbounds i32, i32* %218, i64 3
store i32 128, i32* %227
%232 = getelementptr inbounds i32, i32* %217, i64 3
store i32 128, i32* %228
%233 = getelementptr inbounds i32, i32* %219, i64 16
%234 = bitcast i32* %229 to <4 x i32>*
store <4 x i32> <i32 235, i32 235, i32 235, i32 235>, <4 x i32>* %234
%235 = getelementptr inbounds i32, i32* %218, i64 4
store i32 128, i32* %231
%236 = getelementptr inbounds i32, i32* %217, i64 4
store i32 128, i32* %232
%237 = add i32 %220, 4
%238 = icmp eq i32 %237, %161
br i1 %238, label %239, label %216
239: ; preds = %216, %215
%240 = phi i32* [ undef, %215 ], [ %233, %216 ]
%241 = phi i32* [ undef, %215 ], [ %235, %216 ]
%242 = phi i32* [ undef, %215 ], [ %236, %216 ]
%243 = phi i32* [ %212, %215 ], [ %236, %216 ]
%244 = phi i32* [ %213, %215 ], [ %235, %216 ]
%245 = phi i32* [ %214, %215 ], [ %233, %216 ]
br i1 %162, label %257, label %246
246: ; preds = %239, %246
%247 = phi i32* [ %254, %246 ], [ %243, %239 ]
%248 = phi i32* [ %253, %246 ], [ %244, %239 ]
%249 = phi i32* [ %251, %246 ], [ %245, %239 ]
%250 = phi i32 [ %255, %246 ], [ 0, %239 ]
%251 = getelementptr inbounds i32, i32* %249, i64 4
%252 = bitcast i32* %249 to <4 x i32>*
store <4 x i32> <i32 235, i32 235, i32 235, i32 235>, <4 x i32>* %252
%253 = getelementptr inbounds i32, i32* %248, i64 1
store i32 128, i32* %248
%254 = getelementptr inbounds i32, i32* %247, i64 1
store i32 128, i32* %247
%255 = add i32 %250, 1
%256 = icmp eq i32 %255, %159
br i1 %256, label %257, label %246
257: ; preds = %239, %246, %210
%258 = phi i32* [ %214, %210 ], [ %240, %239 ], [ %251, %246 ]
%259 = phi i32* [ %213, %210 ], [ %241, %239 ], [ %253, %246 ]
%260 = phi i32* [ %212, %210 ], [ %242, %239 ], [ %254, %246 ]
%261 = add nuw nsw i32 %211, 1
%262 = icmp eq i32 %261, %5
br i1 %262, label %263, label %210
263: ; preds = %257, %3, %30, %92, %154
ret void
}