#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 *, int *, int *);
int dec() {
  int a, b, c;
  int dev, diff;
  int count;
  char String[7];
  scanf("%d, %d, %d,", &a, &b, &c);
  dev = a / 16;
  diff = a - dev * 16;
  if (dev >= 0 && dev <= 9)
    String[0] = dev + '0';
  if (dev == 10)
    String[0] = 'a';
  if (dev == 11)
    String[0] = 'b';
  if (dev == 12)
    String[0] = 'c';
  if (dev == 13)
    String[0] = 'd';
  if (dev == 14)
    String[0] = 'e';
  if (dev == 15)
    String[0] = 'f';
  if (diff >= 0 && diff <= 9)
    String[1] = diff + '0';
  if (diff == 10)
    String[1] = 'a';
  if (diff == 11)
    String[1] = 'b';
  if (diff == 12)
    String[1] = 'c';
  if (diff == 13)
    String[1] = 'd';
  if (diff == 14)
    String[1] = 'e';
  if (diff == 15)
    String[1] = 'f';
  dev = b / 16;
  diff = b - dev * 16;
  if (dev >= 0 && dev <= 9)
    String[2] = dev + '0';
  if (dev == 10)
    String[2] = 'a';
  if (dev == 11)
    String[2] = 'b';
  if (dev == 12)
    String[2] = 'c';
  if (dev == 13)
    String[2] = 'd';
  if (dev == 14)
    String[2] = 'e';
  if (dev == 15)
    String[2] = 'f';
  if (diff >= 0 && diff <= 9)
    String[3] = diff + '0';
  if (diff == 10)
    String[3] = 'a';
  if (diff == 11)
    String[3] = 'b';
  if (diff == 12)
    String[3] = 'c';
  if (diff == 13)
    String[3] = 'd';
  if (diff == 14)
    String[3] = 'e';
  if (diff == 15)
    String[3] = 'f';
  dev = c / 16;
  diff = c - dev * 16;
  if (dev >= 0 && dev <= 9)
    String[4] = dev + '0';
  if (dev == 10)
    String[4] = 'a';
  if (dev == 11)
    String[4] = 'b';
  if (dev == 12)
    String[4] = 'c';
  if (dev == 13)
    String[4] = 'd';
  if (dev == 14)
    String[4] = 'e';
  if (dev == 15)
    String[4] = 'f';
  if (diff >= 0 && diff <= 9)
    String[5] = diff + '0';
  if (diff == 10)
    String[5] = 'a';
  if (diff == 11)
    String[5] = 'b';
  if (diff == 12)
    String[5] = 'c';
  if (diff == 13)
    String[5] = 'd';
  if (diff == 14)
    String[5] = 'e';
  if (diff == 15)
    String[5] = 'f';
  printf("#");
  for (count = 0; count < 6; ++count)
    printf("%c", String[count]);
  return 0;
}


x86 assembly (clang, -O0):
<dec>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
lea    0xed1(%rip),%rdi
lea    -0x4(%rbp),%rsi
lea    -0x8(%rbp),%rdx
lea    -0xc(%rbp),%rcx
call   1040 <scanf@plt>
mov    -0x4(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
mov    -0x4(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    $0x4,%ecx
sub    %ecx,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x10(%rbp)
jl     1179 <dec+0x59>
cmpl   $0x9,-0x10(%rbp)
jg     1179 <dec+0x59>
mov    -0x10(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1f(%rbp)
cmpl   $0xa,-0x10(%rbp)
jne    1187 <dec+0x67>
movb   $0x61,-0x1f(%rbp)
cmpl   $0xb,-0x10(%rbp)
jne    1195 <dec+0x75>
movb   $0x62,-0x1f(%rbp)
cmpl   $0xc,-0x10(%rbp)
jne    11a3 <dec+0x83>
movb   $0x63,-0x1f(%rbp)
cmpl   $0xd,-0x10(%rbp)
jne    11b1 <dec+0x91>
movb   $0x64,-0x1f(%rbp)
cmpl   $0xe,-0x10(%rbp)
jne    11bf <dec+0x9f>
movb   $0x65,-0x1f(%rbp)
cmpl   $0xf,-0x10(%rbp)
jne    11cd <dec+0xad>
movb   $0x66,-0x1f(%rbp)
cmpl   $0x0,-0x14(%rbp)
jl     11ea <dec+0xca>
cmpl   $0x9,-0x14(%rbp)
jg     11ea <dec+0xca>
mov    -0x14(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1e(%rbp)
cmpl   $0xa,-0x14(%rbp)
jne    11f8 <dec+0xd8>
movb   $0x61,-0x1e(%rbp)
cmpl   $0xb,-0x14(%rbp)
jne    1206 <dec+0xe6>
movb   $0x62,-0x1e(%rbp)
cmpl   $0xc,-0x14(%rbp)
jne    1214 <dec+0xf4>
movb   $0x63,-0x1e(%rbp)
cmpl   $0xd,-0x14(%rbp)
jne    1222 <dec+0x102>
movb   $0x64,-0x1e(%rbp)
cmpl   $0xe,-0x14(%rbp)
jne    1230 <dec+0x110>
movb   $0x65,-0x1e(%rbp)
cmpl   $0xf,-0x14(%rbp)
jne    123e <dec+0x11e>
movb   $0x66,-0x1e(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    $0x4,%ecx
sub    %ecx,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x10(%rbp)
jl     1277 <dec+0x157>
cmpl   $0x9,-0x10(%rbp)
jg     1277 <dec+0x157>
mov    -0x10(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1d(%rbp)
cmpl   $0xa,-0x10(%rbp)
jne    1285 <dec+0x165>
movb   $0x61,-0x1d(%rbp)
cmpl   $0xb,-0x10(%rbp)
jne    1293 <dec+0x173>
movb   $0x62,-0x1d(%rbp)
cmpl   $0xc,-0x10(%rbp)
jne    12a1 <dec+0x181>
movb   $0x63,-0x1d(%rbp)
cmpl   $0xd,-0x10(%rbp)
jne    12af <dec+0x18f>
movb   $0x64,-0x1d(%rbp)
cmpl   $0xe,-0x10(%rbp)
jne    12bd <dec+0x19d>
movb   $0x65,-0x1d(%rbp)
cmpl   $0xf,-0x10(%rbp)
jne    12cb <dec+0x1ab>
movb   $0x66,-0x1d(%rbp)
cmpl   $0x0,-0x14(%rbp)
jl     12e8 <dec+0x1c8>
cmpl   $0x9,-0x14(%rbp)
jg     12e8 <dec+0x1c8>
mov    -0x14(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1c(%rbp)
cmpl   $0xa,-0x14(%rbp)
jne    12f6 <dec+0x1d6>
movb   $0x61,-0x1c(%rbp)
cmpl   $0xb,-0x14(%rbp)
jne    1304 <dec+0x1e4>
movb   $0x62,-0x1c(%rbp)
cmpl   $0xc,-0x14(%rbp)
jne    1312 <dec+0x1f2>
movb   $0x63,-0x1c(%rbp)
cmpl   $0xd,-0x14(%rbp)
jne    1320 <dec+0x200>
movb   $0x64,-0x1c(%rbp)
cmpl   $0xe,-0x14(%rbp)
jne    132e <dec+0x20e>
movb   $0x65,-0x1c(%rbp)
cmpl   $0xf,-0x14(%rbp)
jne    133c <dec+0x21c>
movb   $0x66,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    $0x4,%ecx
sub    %ecx,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x10(%rbp)
jl     1375 <dec+0x255>
cmpl   $0x9,-0x10(%rbp)
jg     1375 <dec+0x255>
mov    -0x10(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1b(%rbp)
cmpl   $0xa,-0x10(%rbp)
jne    1383 <dec+0x263>
movb   $0x61,-0x1b(%rbp)
cmpl   $0xb,-0x10(%rbp)
jne    1391 <dec+0x271>
movb   $0x62,-0x1b(%rbp)
cmpl   $0xc,-0x10(%rbp)
jne    139f <dec+0x27f>
movb   $0x63,-0x1b(%rbp)
cmpl   $0xd,-0x10(%rbp)
jne    13ad <dec+0x28d>
movb   $0x64,-0x1b(%rbp)
cmpl   $0xe,-0x10(%rbp)
jne    13bb <dec+0x29b>
movb   $0x65,-0x1b(%rbp)
cmpl   $0xf,-0x10(%rbp)
jne    13c9 <dec+0x2a9>
movb   $0x66,-0x1b(%rbp)
cmpl   $0x0,-0x14(%rbp)
jl     13e6 <dec+0x2c6>
cmpl   $0x9,-0x14(%rbp)
jg     13e6 <dec+0x2c6>
mov    -0x14(%rbp),%eax
add    $0x30,%eax
mov    %al,-0x1a(%rbp)
cmpl   $0xa,-0x14(%rbp)
jne    13f4 <dec+0x2d4>
movb   $0x61,-0x1a(%rbp)
cmpl   $0xb,-0x14(%rbp)
jne    1402 <dec+0x2e2>
movb   $0x62,-0x1a(%rbp)
cmpl   $0xc,-0x14(%rbp)
jne    1410 <dec+0x2f0>
movb   $0x63,-0x1a(%rbp)
cmpl   $0xd,-0x14(%rbp)
jne    141e <dec+0x2fe>
movb   $0x64,-0x1a(%rbp)
cmpl   $0xe,-0x14(%rbp)
jne    142c <dec+0x30c>
movb   $0x65,-0x1a(%rbp)
cmpl   $0xf,-0x14(%rbp)
jne    143a <dec+0x31a>
movb   $0x66,-0x1a(%rbp)
lea    0xbcb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x18(%rbp)
cmpl   $0x6,-0x18(%rbp)
jge    147e <dec+0x35e>
movslq -0x18(%rbp),%rax
movsbl -0x1f(%rbp,%rax,1),%esi
lea    0xba5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    144f <dec+0x32f>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dec>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
lea    0xecb(%rip),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   1040 <scanf@plt>
mov    0x14(%rsp),%ebp
lea    0xf(%rbp),%esi
test   %ebp,%ebp
mov    %ebp,%edx
cmovs  %esi,%edx
mov    %edx,%edi
sar    $0x4,%edi
and    $0xfffffff0,%edx
mov    %ebp,%ecx
sub    %edx,%ecx
add    $0x30,%edi
xor    %r8d,%r8d
cmp    $0xaf,%esi
cmovae %r8d,%edi
lea    -0xa0(%rbp),%esi
mov    %esi,%r12d
shr    $0x4,%r12d
add    $0x61,%r12d
cmp    $0x60,%esi
cmovae %edi,%r12d
lea    0x30(%rcx),%esi
sub    $0xa,%ecx
cmovae %r8d,%esi
neg    %edx
cmp    $0x6,%ecx
lea    0x57(%rbp,%rdx,1),%r14d
cmovae %esi,%r14d
mov    0x10(%rsp),%ebx
lea    0xf(%rbx),%esi
test   %ebx,%ebx
mov    %ebx,%edx
cmovs  %esi,%edx
mov    %edx,%edi
sar    $0x4,%edi
and    $0xfffffff0,%edx
mov    %ebx,%ecx
sub    %edx,%ecx
add    $0x30,%edi
cmp    $0xaf,%esi
cmovae %r8d,%edi
lea    -0xa0(%rbx),%esi
mov    %esi,%ebp
shr    $0x4,%ebp
add    $0x61,%ebp
cmp    $0x60,%esi
cmovae %edi,%ebp
lea    0x30(%rcx),%esi
sub    $0xa,%ecx
cmovae %r8d,%esi
neg    %edx
cmp    $0x6,%ecx
lea    0x57(%rbx,%rdx,1),%r15d
cmovae %esi,%r15d
mov    0xc(%rsp),%eax
lea    0xf(%rax),%esi
test   %eax,%eax
mov    %eax,%edx
cmovs  %esi,%edx
mov    %edx,%edi
sar    $0x4,%edi
and    $0xfffffff0,%edx
mov    %eax,%ecx
sub    %edx,%ecx
add    $0x30,%edi
cmp    $0xaf,%esi
cmovae %r8d,%edi
lea    -0xa0(%rax),%esi
mov    %esi,%ebx
shr    $0x4,%ebx
add    $0x61,%ebx
cmp    $0x60,%esi
cmovae %edi,%ebx
lea    0x30(%rcx),%esi
sub    $0xa,%ecx
cmovae %r8d,%esi
neg    %edx
cmp    $0x6,%ecx
lea    0x57(%rax,%rdx,1),%r13d
cmovae %esi,%r13d
mov    $0x23,%edi
call   1030 <putchar@plt>
movsbl %r12b,%edi
call   1030 <putchar@plt>
mov    %r14d,%edi
call   1030 <putchar@plt>
movsbl %bpl,%edi
call   1030 <putchar@plt>
mov    %r15d,%edi
call   1030 <putchar@plt>
movsbl %bl,%edi
call   1030 <putchar@plt>
mov    %r13d,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [12 x i8] c"%d, %d, %d,\00"
define i32 @dec() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = bitcast i32* %1 to i8*
%5 = bitcast i32* %2 to i8*
%6 = bitcast i32* %3 to i8*
%7 = call i32 @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32* %1, i32* %2, i32* %3)
%8 = load i32, i32* %1
%9 = sdiv i32 %8, 16
%10 = mul i32 %9, -16
%11 = add i32 %10, %8
%12 = add i32 %8, 15
%13 = icmp ult i32 %12, 175
%14 = add nsw i32 %9, 48
%15 = select i1 %13, i32 %14, i32 0
%16 = add i32 %8, -160
%17 = lshr i32 %16, 4
%18 = icmp ult i32 %16, 96
%19 = add nuw nsw i32 %17, 97
%20 = select i1 %18, i32 %19, i32 %15
%21 = icmp ult i32 %11, 10
%22 = add nuw nsw i32 %11, 48
%23 = select i1 %21, i32 %22, i32 0
%24 = add i32 %11, -10
%25 = icmp ult i32 %24, 6
%26 = add i32 %11, 87
%27 = select i1 %25, i32 %26, i32 %23
%28 = load i32, i32* %2
%29 = sdiv i32 %28, 16
%30 = mul i32 %29, -16
%31 = add i32 %30, %28
%32 = add i32 %28, 15
%33 = icmp ult i32 %32, 175
%34 = add nsw i32 %29, 48
%35 = select i1 %33, i32 %34, i32 0
%36 = add i32 %28, -160
%37 = lshr i32 %36, 4
%38 = icmp ult i32 %36, 96
%39 = add nuw nsw i32 %37, 97
%40 = select i1 %38, i32 %39, i32 %35
%41 = icmp ult i32 %31, 10
%42 = add nuw nsw i32 %31, 48
%43 = select i1 %41, i32 %42, i32 0
%44 = add i32 %31, -10
%45 = icmp ult i32 %44, 6
%46 = add i32 %31, 87
%47 = select i1 %45, i32 %46, i32 %43
%48 = load i32, i32* %3
%49 = sdiv i32 %48, 16
%50 = mul i32 %49, -16
%51 = add i32 %50, %48
%52 = add i32 %48, 15
%53 = icmp ult i32 %52, 175
%54 = add nsw i32 %49, 48
%55 = select i1 %53, i32 %54, i32 0
%56 = add i32 %48, -160
%57 = lshr i32 %56, 4
%58 = icmp ult i32 %56, 96
%59 = add nuw nsw i32 %57, 97
%60 = select i1 %58, i32 %59, i32 %55
%61 = icmp ult i32 %51, 10
%62 = add nuw nsw i32 %51, 48
%63 = select i1 %61, i32 %62, i32 0
%64 = add i32 %51, -10
%65 = icmp ult i32 %64, 6
%66 = add i32 %51, 87
%67 = select i1 %65, i32 %66, i32 %63
%68 = call i32 @putchar(i32 35)
%69 = shl i32 %20, 24
%70 = ashr exact i32 %69, 24
%71 = call i32 @putchar(i32 %70)
%72 = call i32 @putchar(i32 %27)
%73 = shl i32 %40, 24
%74 = ashr exact i32 %73, 24
%75 = call i32 @putchar(i32 %74)
%76 = call i32 @putchar(i32 %47)
%77 = shl i32 %60, 24
%78 = ashr exact i32 %77, 24
%79 = call i32 @putchar(i32 %78)
%80 = call i32 @putchar(i32 %67)
ret i32 0
}