#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  int i = 1, r = 0, g = 0, b = 0, temp, change, j;
  char c, n[7];
  int dec[7];
  scanf("%c", &c);
  if (c == 'h') {
    scanf("%s", n);
    while (i < 7) {
      if (n[i] >= 48 && n[i] <= 57) {
        dec[i] = n[i];
        dec[i] = dec[i] - 48;
      } else {
        switch (n[i]) {
        case 'a':
          dec[i] = 10;
          break;
        case 'b':
          dec[i] = 11;
          break;
        case 'c':
          dec[i] = 12;
          break;
        case 'd':
          dec[i] = 13;
          break;
        case 'e':
          dec[i] = 14;
          break;
        case 'f':
          dec[i] = 15;
          break;
        }
      }
      i++;
    }
    r = dec[1] * 16 + dec[2];
    g = dec[3] * 16 + dec[4];
    b = dec[5] * 16 + dec[6];
    printf("rgb(%d, %d, %d)", r, g, b);
  }
  if (c == 'd') {
    scanf("%d,%d,%d", &r, &g, &b);
    temp = r;
    printf("#");
    while (temp != 0) {
      change = temp % 16;
      if (change < 10)
        change = change + 48;
      else
        change = change + 87;
      n[i++] = change;
      temp = temp / 16;
    }
    for (j = i - 1; j > 0; j--)
      printf("%c", n[j]);
    i = 1;
    temp = g;
    while (temp != 0) {
      change = temp % 16;
      if (change < 10)
        change = change + 48;
      else
        change = change + 87;
      n[i++] = change;
      temp = temp / 16;
    }
    for (j = i - 1; j > 0; j--)
      printf("%c", n[j]);
    i = 1;
    temp = b;
    while (temp != 0) {
      change = temp % 16;
      if (change < 10)
        change = change + 48;
      else
        change = change + 87;
      n[i++] = change;
      temp = temp / 16;
    }
    for (j = i - 1; j > 0; j--)
      printf("%c", n[j]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
lea    0xec6(%rip),%rdi
lea    -0x21(%rbp),%rsi
mov    $0x0,%al
call   1040 <scanf@plt>
movsbl -0x21(%rbp),%eax
cmp    $0x68,%eax
jne    12b1 <main+0x191>
lea    -0x28(%rbp),%rsi
lea    0xea6(%rip),%rdi
mov    $0x0,%al
call   1040 <scanf@plt>
cmpl   $0x7,-0x8(%rbp)
jge    1276 <main+0x156>
movslq -0x8(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jl     11d3 <main+0xb3>
movslq -0x8(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jg     11d3 <main+0xb3>
movslq -0x8(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
movslq -0x8(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%ecx
sub    $0x30,%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x50(%rbp,%rax,4)
jmp    1268 <main+0x148>
movslq -0x8(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%eax
add    $0xffffff9f,%eax
mov    %eax,%ecx
mov    %rcx,-0x58(%rbp)
sub    $0x5,%eax
ja     1263 <main+0x143>
mov    -0x58(%rbp),%rax
lea    0xe07(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x8(%rbp),%rax
movl   $0xa,-0x50(%rbp,%rax,4)
jmp    1263 <main+0x143>
movslq -0x8(%rbp),%rax
movl   $0xb,-0x50(%rbp,%rax,4)
jmp    1263 <main+0x143>
movslq -0x8(%rbp),%rax
movl   $0xc,-0x50(%rbp,%rax,4)
jmp    1263 <main+0x143>
movslq -0x8(%rbp),%rax
movl   $0xd,-0x50(%rbp,%rax,4)
jmp    1263 <main+0x143>
movslq -0x8(%rbp),%rax
movl   $0xe,-0x50(%rbp,%rax,4)
jmp    1263 <main+0x143>
movslq -0x8(%rbp),%rax
movl   $0xf,-0x50(%rbp,%rax,4)
jmp    1268 <main+0x148>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    117c <main+0x5c>
mov    -0x4c(%rbp),%eax
shl    $0x4,%eax
add    -0x48(%rbp),%eax
mov    %eax,-0xc(%rbp)
mov    -0x44(%rbp),%eax
shl    $0x4,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x3c(%rbp),%eax
shl    $0x4,%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0x14(%rbp),%ecx
lea    0xd74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movsbl -0x21(%rbp),%eax
cmp    $0x64,%eax
jne    14d9 <main+0x3b9>
lea    0xd69(%rip),%rdi
lea    -0xc(%rbp),%rsi
lea    -0x10(%rbp),%rdx
lea    -0x14(%rbp),%rcx
mov    $0x0,%al
call   1040 <scanf@plt>
mov    -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
lea    0xd52(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x0,-0x18(%rbp)
je     134e <main+0x22e>
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jge    131c <main+0x1fc>
mov    -0x1c(%rbp),%eax
add    $0x30,%eax
mov    %eax,-0x1c(%rbp)
jmp    1325 <main+0x205>
mov    -0x1c(%rbp),%eax
add    $0x57,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8(%rbp)
cltq
mov    %cl,-0x28(%rbp,%rax,1)
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
jmp    12ec <main+0x1cc>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
jle    1386 <main+0x266>
movslq -0x20(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%esi
lea    0xca7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
jmp    1357 <main+0x237>
movl   $0x1,-0x8(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     13f5 <main+0x2d5>
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jge    13c3 <main+0x2a3>
mov    -0x1c(%rbp),%eax
add    $0x30,%eax
mov    %eax,-0x1c(%rbp)
jmp    13cc <main+0x2ac>
mov    -0x1c(%rbp),%eax
add    $0x57,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8(%rbp)
cltq
mov    %cl,-0x28(%rbp,%rax,1)
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
jmp    1393 <main+0x273>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
jle    142d <main+0x30d>
movslq -0x20(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%esi
lea    0xc00(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
jmp    13fe <main+0x2de>
movl   $0x1,-0x8(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     149c <main+0x37c>
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jge    146a <main+0x34a>
mov    -0x1c(%rbp),%eax
add    $0x30,%eax
mov    %eax,-0x1c(%rbp)
jmp    1473 <main+0x353>
mov    -0x1c(%rbp),%eax
add    $0x57,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8(%rbp)
cltq
mov    %cl,-0x28(%rbp,%rax,1)
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
jmp    143a <main+0x31a>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x20(%rbp)
jle    14d4 <main+0x3b4>
movslq -0x20(%rbp),%rax
movsbl -0x28(%rbp,%rax,1),%esi
lea    0xb59(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
jmp    14a5 <main+0x385>
jmp    14d9 <main+0x3b9>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x18,%rsp
movl   $0x0,0x14(%rsp)
movl   $0x0,0x10(%rsp)
movl   $0x0,0xc(%rsp)
lea    0xeaa(%rip),%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x4(%rsp),%al
mov    $0x1,%r14d
cmp    $0x68,%al
jne    12a6 <main+0x176>
lea    0xe88(%rip),%rdi
xor    %ebx,%ebx
lea    0x5(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movsbl 0x6(%rsp),%eax
lea    -0x30(%rax),%ecx
cmp    $0x9,%cl
ja     11a0 <main+0x70>
shl    $0x4,%eax
add    $0xfffffd00,%eax
jmp    11b0 <main+0x80>
add    $0xffffff9f,%eax
cmp    $0x5,%eax
ja     11b2 <main+0x82>
shl    $0x4,%eax
add    $0xa0,%eax
mov    %eax,%ebx
movsbl 0x7(%rsp),%ecx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    11c6 <main+0x96>
add    $0xffffffd0,%ecx
mov    %ecx,%r8d
jmp    11d9 <main+0xa9>
lea    -0x61(%rcx),%eax
add    $0xffffffa9,%ecx
cmp    $0x5,%eax
mov    $0xf,%r8d
cmovb  %ecx,%r8d
movsbl 0x8(%rsp),%ecx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    11f0 <main+0xc0>
shl    $0x4,%ecx
add    $0xfffffd00,%ecx
jmp    1203 <main+0xd3>
add    $0xffffff9f,%ecx
xor    %edx,%edx
cmp    $0x6,%ecx
jae    1205 <main+0xd5>
shl    $0x4,%ecx
add    $0xa0,%ecx
mov    %ecx,%edx
movsbl 0x9(%rsp),%ecx
lea    -0x30(%rcx),%eax
cmp    $0xa,%al
jae    1218 <main+0xe8>
add    $0xffffffd0,%ecx
mov    %ecx,%esi
jmp    1229 <main+0xf9>
lea    -0x61(%rcx),%eax
add    $0xffffffa9,%ecx
cmp    $0x5,%eax
mov    $0xf,%esi
cmovb  %ecx,%esi
movsbl 0xa(%rsp),%edi
lea    -0x30(%rdi),%eax
cmp    $0xa,%al
jae    1240 <main+0x110>
shl    $0x4,%edi
add    $0xfffffd00,%edi
jmp    1253 <main+0x123>
add    $0xffffff9f,%edi
xor    %ecx,%ecx
cmp    $0x6,%edi
jae    1255 <main+0x125>
shl    $0x4,%edi
add    $0xa0,%edi
mov    %edi,%ecx
movsbl 0xb(%rsp),%edi
lea    -0x30(%rdi),%eax
cmp    $0xa,%al
jae    1268 <main+0x138>
add    $0xffffffd0,%edi
mov    %edi,%eax
jmp    1279 <main+0x149>
lea    -0x61(%rdi),%eax
add    $0xffffffa9,%edi
cmp    $0x5,%eax
mov    $0xf,%eax
cmovb  %edi,%eax
add    %eax,%ecx
add    %r8d,%ebx
mov    %ebx,0x14(%rsp)
add    %esi,%edx
mov    %edx,0x10(%rsp)
mov    %ecx,0xc(%rsp)
lea    0xd73(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x7,%r14d
mov    0x4(%rsp),%al
cmp    $0x64,%al
jne    1447 <main+0x317>
lea    0xd61(%rip),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x14(%rsp),%ebx
mov    $0x23,%edi
call   1030 <putchar@plt>
test   %ebx,%ebx
je     1315 <main+0x1e5>
mov    %r14d,%r14d
lea    0xf(%rbx),%eax
test   %ebx,%ebx
mov    %ebx,%ecx
cmovs  %eax,%ecx
mov    %ecx,%edx
and    $0xfffffff0,%edx
mov    %ebx,%esi
sub    %edx,%esi
lea    0x30(%rsi),%edi
neg    %edx
cmp    $0xa,%esi
lea    0x57(%rbx,%rdx,1),%edx
cmovl  %edi,%edx
mov    %dl,0x5(%rsp,%r14,1)
add    $0x1,%r14
sar    $0x4,%ecx
mov    %ecx,%ebx
cmp    $0x1f,%eax
jae    12e0 <main+0x1b0>
cmp    $0x2,%r14d
jl     1347 <main+0x217>
mov    %r14d,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x2(%rbx),%eax
movsbl 0x5(%rsp,%rax,1),%edi
call   1030 <putchar@plt>
add    $0xffffffffffffffff,%rbx
cmp    $0x2,%rbx
ja     1330 <main+0x200>
mov    0x10(%rsp),%ebx
test   %ebx,%ebx
je     13c7 <main+0x297>
mov    $0x1,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0xf(%rbx),%r8d
test   %ebx,%ebx
mov    %ebx,%esi
cmovs  %r8d,%esi
mov    %esi,%edi
and    $0xfffffff0,%edi
mov    %ebx,%ecx
sub    %edi,%ecx
lea    0x30(%rcx),%edx
neg    %edi
cmp    $0xa,%ecx
lea    0x57(%rbx,%rdi,1),%ecx
cmovl  %edx,%ecx
mov    %cl,0x5(%rsp,%rax,1)
add    $0x1,%rax
sar    $0x4,%esi
mov    %esi,%ebx
cmp    $0x1f,%r8d
jae    1360 <main+0x230>
cmp    $0x2,%eax
jl     13c7 <main+0x297>
mov    %eax,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x2(%rbx),%eax
movsbl 0x5(%rsp,%rax,1),%edi
call   1030 <putchar@plt>
add    $0xffffffffffffffff,%rbx
cmp    $0x2,%rbx
ja     13b0 <main+0x280>
mov    0xc(%rsp),%ebx
test   %ebx,%ebx
je     1447 <main+0x317>
mov    $0x1,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0xf(%rbx),%r8d
test   %ebx,%ebx
mov    %ebx,%esi
cmovs  %r8d,%esi
mov    %esi,%edi
and    $0xfffffff0,%edi
mov    %ebx,%ecx
sub    %edi,%ecx
lea    0x30(%rcx),%edx
neg    %edi
cmp    $0xa,%ecx
lea    0x57(%rbx,%rdi,1),%ecx
cmovl  %edx,%ecx
mov    %cl,0x5(%rsp,%rax,1)
add    $0x1,%rax
sar    $0x4,%esi
mov    %esi,%ebx
cmp    $0x1f,%r8d
jae    13e0 <main+0x2b0>
cmp    $0x2,%eax
jl     1447 <main+0x317>
mov    %eax,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x2(%rbx),%eax
movsbl 0x5(%rsp,%rax,1),%edi
call   1030 <putchar@plt>
add    $0xffffffffffffffff,%rbx
cmp    $0x2,%rbx
ja     1430 <main+0x300>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r14
ret

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

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