int create_color_palette(unsigned char palette[][3]) {
  palette[0][0] = 10;
  palette[0][1] = 5;
  palette[0][2] = 100;
  int a = 10;
  int b = 5;
  int c = 100;
  int q = 1;
  for (int p = 1; p < 100; p++) {
    palette[p][0] = (a + 2 * q);
    palette[p][1] = (b + 1 * q);
    palette[p][2] = (c - 1 * q);
    q++;
  }
  palette[100][0] = 200;
  palette[100][1] = 50;
  palette[100][2] = 25;
  int d = 200;
  int e = 50;
  int f = 25;
  q = 1;
  for (int p = 101; p < 200; p++) {
    palette[p][0] = d;
    palette[p][1] = (e + 2 * q);
    palette[p][2] = (f + 2 * q);
    q++;
  }
  palette[200][0] = 215;
  palette[200][1] = 198;
  palette[200][2] = 150;
  for (int p = 201; p < 400; p++) {
    palette[p][0] = 216;
    palette[p][1] = (199 - p + 20);
    palette[p][2] = (216 - p);
  }
  for (int p = 201; p < 400; p++) {
    palette[p][0] = (216 - p);
    palette[p][1] = 20;
    palette[p][2] = (16 + p + 10);
  }
  for (int p = 400; p < 600; p++) {
    palette[p][0] = (16 + p + 10);
    palette[p][1] = (20 + p + 20);
    palette[p][2] = (255 - p);
  }
  for (int p = 600; p < 800; p++) {
    palette[p][0] = (201 - p);
    palette[p][1] = (230 - p);
    palette[p][2] = (50 + p);
  }
  for (int p = 800; p < 1023; p++) {
    palette[p][0] = (0 + p);
    palette[p][1] = (27 + p);
    palette[p][2] = 188;
  }
  palette[1023][0] = 0;
  palette[1023][1] = 0;
  palette[1023][2] = 0;
  return 0;
}


x86 assembly (clang, -O0):
<create_color_palette>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movb   $0xa,(%rax)
mov    -0x8(%rbp),%rax
movb   $0x5,0x1(%rax)
mov    -0x8(%rbp),%rax
movb   $0x64,0x2(%rax)
movl   $0xa,-0xc(%rbp)
movl   $0x5,-0x10(%rbp)
movl   $0x64,-0x14(%rbp)
movl   $0x1,-0x18(%rbp)
movl   $0x1,-0x1c(%rbp)
cmpl   $0x64,-0x1c(%rbp)
jge    11bf <create_color_palette+0xbf>
mov    -0xc(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x0,%ecx
add    %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    -0x14(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x0,%ecx
sub    %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1142 <create_color_palette+0x42>
mov    -0x8(%rbp),%rax
movb   $0xc8,0x12c(%rax)
mov    -0x8(%rbp),%rax
movb   $0x32,0x12d(%rax)
mov    -0x8(%rbp),%rax
movb   $0x19,0x12e(%rax)
movl   $0xc8,-0x20(%rbp)
movl   $0x32,-0x24(%rbp)
movl   $0x19,-0x28(%rbp)
movl   $0x1,-0x18(%rbp)
movl   $0x65,-0x2c(%rbp)
cmpl   $0xc8,-0x2c(%rbp)
jge    127b <create_color_palette+0x17b>
mov    -0x20(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    -0x24(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    -0x28(%rbp),%eax
mov    -0x18(%rbp),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1203 <create_color_palette+0x103>
mov    -0x8(%rbp),%rax
movb   $0xd7,0x258(%rax)
mov    -0x8(%rbp),%rax
movb   $0xc6,0x259(%rax)
mov    -0x8(%rbp),%rax
movb   $0x96,0x25a(%rax)
movl   $0xc9,-0x30(%rbp)
cmpl   $0x190,-0x30(%rbp)
jge    130b <create_color_palette+0x20b>
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rcx
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movb   $0xd8,(%rax)
mov    $0xc7,%eax
sub    -0x30(%rbp),%eax
add    $0x14,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    $0xd8,%eax
sub    -0x30(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12a3 <create_color_palette+0x1a3>
movl   $0xc9,-0x34(%rbp)
cmpl   $0x190,-0x34(%rbp)
jge    1378 <create_color_palette+0x278>
mov    $0xd8,%eax
sub    -0x34(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movb   $0x14,0x1(%rax)
mov    -0x34(%rbp),%eax
add    $0x10,%eax
add    $0xa,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1312 <create_color_palette+0x212>
movl   $0x190,-0x38(%rbp)
cmpl   $0x258,-0x38(%rbp)
jge    13ef <create_color_palette+0x2ef>
mov    -0x38(%rbp),%eax
add    $0x10,%eax
add    $0xa,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    -0x38(%rbp),%eax
add    $0x14,%eax
add    $0x14,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    $0xff,%eax
sub    -0x38(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    137f <create_color_palette+0x27f>
movl   $0x258,-0x3c(%rbp)
cmpl   $0x320,-0x3c(%rbp)
jge    1462 <create_color_palette+0x362>
mov    $0xc9,%eax
sub    -0x3c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    $0xe6,%eax
sub    -0x3c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    -0x3c(%rbp),%eax
add    $0x32,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x2(%rax)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    13f6 <create_color_palette+0x2f6>
movl   $0x320,-0x40(%rbp)
cmpl   $0x3ff,-0x40(%rbp)
jge    14ca <create_color_palette+0x3ca>
mov    -0x40(%rbp),%eax
add    $0x0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,(%rax)
mov    -0x40(%rbp),%eax
add    $0x1b,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rdx
imul   $0x3,%rdx,%rdx
add    %rdx,%rax
mov    %cl,0x1(%rax)
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rcx
imul   $0x3,%rcx,%rcx
add    %rcx,%rax
movb   $0xbc,0x2(%rax)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1469 <create_color_palette+0x369>
mov    -0x8(%rbp),%rax
movb   $0x0,0xbfd(%rax)
mov    -0x8(%rbp),%rax
movb   $0x0,0xbfe(%rax)
mov    -0x8(%rbp),%rax
movb   $0x0,0xbff(%rax)
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<create_color_palette>:
movw   $0x50a,(%rdi)
movb   $0x64,0x2(%rdi)
lea    0x5(%rdi),%rax
mov    $0x6,%sil
mov    $0x63,%edx
mov    $0xc,%cl
nopw   0x0(%rax,%rax,1)
mov    %cl,-0x2(%rax)
mov    %sil,-0x1(%rax)
mov    %dl,(%rax)
add    $0x1,%sil
add    $0x2,%cl
add    $0x3,%rax
add    $0xffffffffffffffff,%rdx
jne    1120 <create_color_palette+0x20>
movw   $0x32c8,0x12c(%rdi)
c8 32
movb   $0x19,0x12e(%rdi)
mov    $0x34,%al
xor    %ecx,%ecx
xchg   %ax,%ax
movb   $0xc8,0x12f(%rdi,%rcx,1)
c8
mov    %al,0x130(%rdi,%rcx,1)
lea    -0x19(%rax),%edx
mov    %dl,0x131(%rdi,%rcx,1)
add    $0x3,%rcx
add    $0x2,%al
cmp    $0x129,%rcx
jne    1150 <create_color_palette+0x50>
movw   $0xc6d7,0x258(%rdi)
d7 c6
movb   $0x96,0x25a(%rdi)
mov    $0x12,%al
xor    %ecx,%ecx
nopl   0x0(%rax)
movb   $0xd8,0x25b(%rdi,%rcx,1)
d8
mov    %al,0x25c(%rdi,%rcx,1)
lea    -0x3(%rax),%edx
mov    %dl,0x25d(%rdi,%rcx,1)
cmp    $0x252,%rcx
je     11d6 <create_color_palette+0xd6>
movb   $0xd8,0x25e(%rdi,%rcx,1)
d8
lea    -0x1(%rax),%edx
mov    %dl,0x25f(%rdi,%rcx,1)
lea    -0x4(%rax),%edx
mov    %dl,0x260(%rdi,%rcx,1)
add    $0xfe,%al
add    $0x6,%rcx
jmp    1190 <create_color_palette+0x90>
mov    $0xf,%al
mov    $0xe3,%cl
xor    %edx,%edx
nopl   0x0(%rax)
mov    %al,0x25b(%rdi,%rdx,1)
movb   $0x14,0x25c(%rdi,%rdx,1)
14
mov    %cl,0x25d(%rdi,%rdx,1)
cmp    $0x252,%rdx
je     1228 <create_color_palette+0x128>
lea    -0x1(%rax),%esi
mov    %sil,0x25e(%rdi,%rdx,1)
movb   $0x14,0x25f(%rdi,%rdx,1)
14
lea    0x1(%rcx),%esi
mov    %sil,0x260(%rdi,%rdx,1)
add    $0xfe,%al
add    $0x2,%cl
add    $0x6,%rdx
jmp    11e0 <create_color_palette+0xe0>
lea    0x4b5(%rdi),%rax
mov    $0x6e,%cl
mov    $0xffffffffffffff38,%rdx
nopl   0x0(%rax,%rax,1)
lea    0x72(%rdx),%esi
mov    %sil,-0x5(%rax)
lea    -0x80(%rdx),%esi
mov    %sil,-0x4(%rax)
lea    0x1(%rcx),%esi
mov    %sil,-0x3(%rax)
lea    0x73(%rdx),%esi
mov    %sil,-0x2(%rax)
lea    -0x7f(%rdx),%esi
mov    %sil,-0x1(%rax)
mov    %cl,(%rax)
add    $0xfe,%cl
add    $0x6,%rax
add    $0x2,%rdx
jne    1240 <create_color_palette+0x140>
lea    0x70d(%rdi),%rax
mov    $0x8a,%cl
mov    $0xc8,%edx
lea    -0x57(%rdx),%esi
mov    %sil,-0x5(%rax)
lea    -0x3a(%rdx),%esi
mov    %sil,-0x4(%rax)
mov    %cl,-0x3(%rax)
lea    -0x58(%rdx),%esi
mov    %sil,-0x2(%rax)
lea    -0x3b(%rdx),%esi
mov    %sil,-0x1(%rax)
lea    0x1(%rcx),%esi
mov    %sil,(%rax)
add    $0x2,%cl
add    $0x6,%rax
add    $0xfffffffffffffffe,%rdx
jne    1280 <create_color_palette+0x180>
lea    0x965(%rdi),%rax
mov    $0x320,%ecx
mov    $0x3c,%dl
lea    -0x1c(%rdx),%esi
mov    %sil,-0x5(%rax)
lea    -0x1(%rdx),%esi
mov    %sil,-0x4(%rax)
movb   $0xbc,-0x3(%rax)
mov    %rcx,%rsi
or     $0x1,%rsi
cmp    $0x3ff,%rsi
je     12f9 <create_color_palette+0x1f9>
mov    %sil,-0x2(%rax)
mov    %dl,-0x1(%rax)
movb   $0xbc,(%rax)
add    $0x2,%rcx
add    $0x2,%dl
add    $0x6,%rax
jmp    12c0 <create_color_palette+0x1c0>
movw   $0x0,0xbfd(%rdi)
movb   $0x0,0xbff(%rdi)
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @create_color_palette([3 x i8]* writeonly %0) {
%2 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 0, i64 0
store i8 10, i8* %2
%3 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 0, i64 1
store i8 5, i8* %3
%4 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 0, i64 2
store i8 100, i8* %4
br label %9
5: ; preds = %9
%6 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 100, i64 0
store i8 -56, i8* %6
%7 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 100, i64 1
store i8 50, i8* %7
%8 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 100, i64 2
store i8 25, i8* %8
br label %25
9: ; preds = %1, %9
%10 = phi i64 [ 1, %1 ], [ %19, %9 ]
%11 = trunc i64 %10 to i8
%12 = shl i8 %11, 1
%13 = add i8 %12, 10
%14 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %10, i64 0
store i8 %13, i8* %14
%15 = add i8 %11, 5
%16 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %10, i64 1
store i8 %15, i8* %16
%17 = sub i8 100, %11
%18 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %10, i64 2
store i8 %17, i8* %18
%19 = add nuw nsw i64 %10, 1
%20 = icmp eq i64 %19, 100
br i1 %20, label %5, label %9
21: ; preds = %25
%22 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 200, i64 0
store i8 -41, i8* %22
%23 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 200, i64 1
store i8 -58, i8* %23
%24 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 200, i64 2
store i8 -106, i8* %24
br label %38
25: ; preds = %5, %25
%26 = phi i64 [ 101, %5 ], [ %36, %25 ]
%27 = phi i32 [ 1, %5 ], [ %35, %25 ]
%28 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %26, i64 0
store i8 -56, i8* %28
%29 = trunc i32 %27 to i8
%30 = shl i8 %29, 1
%31 = add i8 %30, 50
%32 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %26, i64 1
store i8 %31, i8* %32
%33 = add i8 %30, 25
%34 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %26, i64 2
store i8 %33, i8* %34
%35 = add nuw nsw i32 %27, 1
%36 = add nuw nsw i64 %26, 1
%37 = icmp eq i64 %36, 200
br i1 %37, label %21, label %25
38: ; preds = %48, %21
%39 = phi i64 [ 201, %21 ], [ %55, %48 ]
%40 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %39, i64 0
store i8 -40, i8* %40
%41 = trunc i64 %39 to i8
%42 = sub i8 -37, %41
%43 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %39, i64 1
store i8 %42, i8* %43
%44 = sub i8 -40, %41
%45 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %39, i64 2
store i8 %44, i8* %45
%46 = add nuw nsw i64 %39, 1
%47 = icmp eq i64 %46, 400
br i1 %47, label %56, label %48
48: ; preds = %38
%49 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %46, i64 0
store i8 -40, i8* %49
%50 = trunc i64 %46 to i8
%51 = sub i8 -37, %50
%52 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %46, i64 1
store i8 %51, i8* %52
%53 = sub i8 -40, %50
%54 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %46, i64 2
store i8 %53, i8* %54
%55 = add nuw nsw i64 %39, 2
br label %38
56: ; preds = %38, %66
%57 = phi i64 [ %73, %66 ], [ 201, %38 ]
%58 = trunc i64 %57 to i8
%59 = sub i8 -40, %58
%60 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %57, i64 0
store i8 %59, i8* %60
%61 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %57, i64 1
store i8 20, i8* %61
%62 = add i8 %58, 26
%63 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %57, i64 2
store i8 %62, i8* %63
%64 = add nuw nsw i64 %57, 1
%65 = icmp eq i64 %64, 400
br i1 %65, label %74, label %66
66: ; preds = %56
%67 = trunc i64 %64 to i8
%68 = sub i8 -40, %67
%69 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %64, i64 0
store i8 %68, i8* %69
%70 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %64, i64 1
store i8 20, i8* %70
%71 = add i8 %67, 26
%72 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %64, i64 2
store i8 %71, i8* %72
%73 = add nuw nsw i64 %57, 2
br label %56
74: ; preds = %56, %74
%75 = phi i64 [ %91, %74 ], [ 400, %56 ]
%76 = trunc i64 %75 to i8
%77 = add nsw i8 %76, 26
%78 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %75, i64 0
store i8 %77, i8* %78
%79 = add nsw i8 %76, 40
%80 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %75, i64 1
store i8 %79, i8* %80
%81 = xor i8 %76, -1
%82 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %75, i64 2
store i8 %81, i8* %82
%83 = or i64 %75, 1
%84 = trunc i64 %83 to i8
%85 = add nsw i8 %84, 26
%86 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %83, i64 0
store i8 %85, i8* %86
%87 = add nsw i8 %84, 40
%88 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %83, i64 1
store i8 %87, i8* %88
%89 = xor i8 %84, -1
%90 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %83, i64 2
store i8 %89, i8* %90
%91 = add nuw nsw i64 %75, 2
%92 = icmp eq i64 %91, 600
br i1 %92, label %93, label %74
93: ; preds = %74, %93
%94 = phi i64 [ %110, %93 ], [ 600, %74 ]
%95 = trunc i64 %94 to i8
%96 = sub i8 -55, %95
%97 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %94, i64 0
store i8 %96, i8* %97
%98 = sub i8 -26, %95
%99 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %94, i64 1
store i8 %98, i8* %99
%100 = add i8 %95, 50
%101 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %94, i64 2
store i8 %100, i8* %101
%102 = or i64 %94, 1
%103 = trunc i64 %102 to i8
%104 = sub i8 -55, %103
%105 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %102, i64 0
store i8 %104, i8* %105
%106 = sub i8 -26, %103
%107 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %102, i64 1
store i8 %106, i8* %107
%108 = add i8 %103, 50
%109 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %102, i64 2
store i8 %108, i8* %109
%110 = add nuw nsw i64 %94, 2
%111 = icmp eq i64 %110, 800
br i1 %111, label %116, label %93
112: ; preds = %116
%113 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 1023, i64 0
store i8 0, i8* %113
%114 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 1023, i64 1
store i8 0, i8* %114
%115 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 1023, i64 2
store i8 0, i8* %115
ret i32 0
116: ; preds = %93, %125
%117 = phi i64 [ %131, %125 ], [ 800, %93 ]
%118 = trunc i64 %117 to i8
%119 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %117, i64 0
store i8 %118, i8* %119
%120 = add i8 %118, 27
%121 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %117, i64 1
store i8 %120, i8* %121
%122 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %117, i64 2
store i8 -68, i8* %122
%123 = or i64 %117, 1
%124 = icmp eq i64 %123, 1023
br i1 %124, label %112, label %125
125: ; preds = %116
%126 = trunc i64 %123 to i8
%127 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %123, i64 0
store i8 %126, i8* %127
%128 = add i8 %126, 27
%129 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %123, i64 1
store i8 %128, i8* %129
%130 = getelementptr inbounds [3 x i8], [3 x i8]* %0, i64 %123, i64 2
store i8 -68, i8* %130
%131 = add nuw nsw i64 %117, 2
br label %116
}