#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);
void p017() {
  int sum = 11;
  int i, n, t;
  for (i = 1; i < 1000; i++) {
    n = 0;
    if (i >= 100) {
      n += 7;
      if (i % 100 != 0) {
        n += 3;
      }
      t = i / 100;
      if (t == 1) {
        n += 3;
      } else if (t == 2) {
        n += 3;
      } else if (t == 3) {
        n += 5;
      } else if (t == 4) {
        n += 4;
      } else if (t == 5) {
        n += 4;
      } else if (t == 6) {
        n += 3;
      } else if (t == 7) {
        n += 5;
      } else if (t == 8) {
        n += 5;
      } else if (t == 9) {
        n += 4;
      }
    }
    t = i % 100;
    if (t < 10 || t >= 20) {
      if (t >= 20) {
        t /= 10;
        if (t == 2) {
          n += 6;
        } else if (t == 3) {
          n += 6;
        } else if (t == 4) {
          n += 5;
        } else if (t == 5) {
          n += 5;
        } else if (t == 6) {
          n += 5;
        } else if (t == 7) {
          n += 7;
        } else if (t == 8) {
          n += 6;
        } else if (t == 9) {
          n += 6;
        }
      }
      t = i % 10;
      if (t == 1) {
        n += 3;
      } else if (t == 2) {
        n += 3;
      } else if (t == 3) {
        n += 5;
      } else if (t == 4) {
        n += 4;
      } else if (t == 5) {
        n += 4;
      } else if (t == 6) {
        n += 3;
      } else if (t == 7) {
        n += 5;
      } else if (t == 8) {
        n += 5;
      } else if (t == 9) {
        n += 4;
      }
    } else {
      if (t == 10) {
        n += 3;
      } else if (t == 11) {
        n += 6;
      } else if (t == 12) {
        n += 6;
      } else if (t == 13) {
        n += 8;
      } else if (t == 14) {
        n += 8;
      } else if (t == 15) {
        n += 7;
      } else if (t == 16) {
        n += 7;
      } else if (t == 17) {
        n += 9;
      } else if (t == 18) {
        n += 8;
      } else if (t == 19) {
        n += 8;
      }
    }
    sum += n;
  }
  printf("The sum of the letter counts from 1 to 1000 is %d", sum);
}


x86 assembly (clang, -O0):
<p017>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0xb,-0x4(%rbp)
movl   $0x1,-0x8(%rbp)
cmpl   $0x3e8,-0x8(%rbp)
jge    15d7 <p017+0x4c7>
movl   $0x0,-0xc(%rbp)
cmpl   $0x64,-0x8(%rbp)
jl     1278 <p017+0x168>
mov    -0xc(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     116a <p017+0x5a>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
cmpl   $0x1,-0x10(%rbp)
jne    1190 <p017+0x80>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    1273 <p017+0x163>
cmpl   $0x2,-0x10(%rbp)
jne    11a8 <p017+0x98>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    126e <p017+0x15e>
cmpl   $0x3,-0x10(%rbp)
jne    11c0 <p017+0xb0>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1269 <p017+0x159>
cmpl   $0x4,-0x10(%rbp)
jne    11d8 <p017+0xc8>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    1264 <p017+0x154>
cmpl   $0x5,-0x10(%rbp)
jne    11f0 <p017+0xe0>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    125f <p017+0x14f>
cmpl   $0x6,-0x10(%rbp)
jne    1208 <p017+0xf8>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    125a <p017+0x14a>
cmpl   $0x7,-0x10(%rbp)
jne    1220 <p017+0x110>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1255 <p017+0x145>
cmpl   $0x8,-0x10(%rbp)
jne    1238 <p017+0x128>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1250 <p017+0x140>
cmpl   $0x9,-0x10(%rbp)
jne    124b <p017+0x13b>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    1250 <p017+0x140>
jmp    1255 <p017+0x145>
jmp    125a <p017+0x14a>
jmp    125f <p017+0x14f>
jmp    1264 <p017+0x154>
jmp    1269 <p017+0x159>
jmp    126e <p017+0x15e>
jmp    1273 <p017+0x163>
jmp    1278 <p017+0x168>
mov    -0x8(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,-0x10(%rbp)
cmpl   $0xa,-0x10(%rbp)
jl     129a <p017+0x18a>
cmpl   $0x14,-0x10(%rbp)
jl     14a3 <p017+0x393>
cmpl   $0x14,-0x10(%rbp)
jl     1395 <p017+0x285>
mov    -0x10(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x10(%rbp)
cmpl   $0x2,-0x10(%rbp)
jne    12ca <p017+0x1ba>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    1390 <p017+0x280>
cmpl   $0x3,-0x10(%rbp)
jne    12e2 <p017+0x1d2>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    138b <p017+0x27b>
cmpl   $0x4,-0x10(%rbp)
jne    12fa <p017+0x1ea>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1386 <p017+0x276>
cmpl   $0x5,-0x10(%rbp)
jne    1312 <p017+0x202>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1381 <p017+0x271>
cmpl   $0x6,-0x10(%rbp)
jne    132a <p017+0x21a>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    137c <p017+0x26c>
cmpl   $0x7,-0x10(%rbp)
jne    1342 <p017+0x232>
mov    -0xc(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0xc(%rbp)
jmp    1377 <p017+0x267>
cmpl   $0x8,-0x10(%rbp)
jne    135a <p017+0x24a>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    1372 <p017+0x262>
cmpl   $0x9,-0x10(%rbp)
jne    136d <p017+0x25d>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    1372 <p017+0x262>
jmp    1377 <p017+0x267>
jmp    137c <p017+0x26c>
jmp    1381 <p017+0x271>
jmp    1386 <p017+0x276>
jmp    138b <p017+0x27b>
jmp    1390 <p017+0x280>
jmp    1395 <p017+0x285>
mov    -0x8(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %edx,-0x10(%rbp)
cmpl   $0x1,-0x10(%rbp)
jne    13bb <p017+0x2ab>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    149e <p017+0x38e>
cmpl   $0x2,-0x10(%rbp)
jne    13d3 <p017+0x2c3>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    1499 <p017+0x389>
cmpl   $0x3,-0x10(%rbp)
jne    13eb <p017+0x2db>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1494 <p017+0x384>
cmpl   $0x4,-0x10(%rbp)
jne    1403 <p017+0x2f3>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    148f <p017+0x37f>
cmpl   $0x5,-0x10(%rbp)
jne    141b <p017+0x30b>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    148a <p017+0x37a>
cmpl   $0x6,-0x10(%rbp)
jne    1433 <p017+0x323>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    1485 <p017+0x375>
cmpl   $0x7,-0x10(%rbp)
jne    144b <p017+0x33b>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    1480 <p017+0x370>
cmpl   $0x8,-0x10(%rbp)
jne    1463 <p017+0x353>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    147b <p017+0x36b>
cmpl   $0x9,-0x10(%rbp)
jne    1476 <p017+0x366>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    147b <p017+0x36b>
jmp    1480 <p017+0x370>
jmp    1485 <p017+0x375>
jmp    148a <p017+0x37a>
jmp    148f <p017+0x37f>
jmp    1494 <p017+0x384>
jmp    1499 <p017+0x389>
jmp    149e <p017+0x38e>
jmp    15c0 <p017+0x4b0>
cmpl   $0xa,-0x10(%rbp)
jne    14bb <p017+0x3ab>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    15bb <p017+0x4ab>
cmpl   $0xb,-0x10(%rbp)
jne    14d3 <p017+0x3c3>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    15b6 <p017+0x4a6>
cmpl   $0xc,-0x10(%rbp)
jne    14eb <p017+0x3db>
mov    -0xc(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0xc(%rbp)
jmp    15b1 <p017+0x4a1>
cmpl   $0xd,-0x10(%rbp)
jne    1503 <p017+0x3f3>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
jmp    15ac <p017+0x49c>
cmpl   $0xe,-0x10(%rbp)
jne    151b <p017+0x40b>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
jmp    15a7 <p017+0x497>
cmpl   $0xf,-0x10(%rbp)
jne    1533 <p017+0x423>
mov    -0xc(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0xc(%rbp)
jmp    15a2 <p017+0x492>
cmpl   $0x10,-0x10(%rbp)
jne    154b <p017+0x43b>
mov    -0xc(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0xc(%rbp)
jmp    159d <p017+0x48d>
cmpl   $0x11,-0x10(%rbp)
jne    1563 <p017+0x453>
mov    -0xc(%rbp),%eax
add    $0x9,%eax
mov    %eax,-0xc(%rbp)
jmp    1598 <p017+0x488>
cmpl   $0x12,-0x10(%rbp)
jne    157b <p017+0x46b>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
jmp    1593 <p017+0x483>
cmpl   $0x13,-0x10(%rbp)
jne    158e <p017+0x47e>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
jmp    1593 <p017+0x483>
jmp    1598 <p017+0x488>
jmp    159d <p017+0x48d>
jmp    15a2 <p017+0x492>
jmp    15a7 <p017+0x497>
jmp    15ac <p017+0x49c>
jmp    15b1 <p017+0x4a1>
jmp    15b6 <p017+0x4a6>
jmp    15bb <p017+0x4ab>
jmp    15c0 <p017+0x4b0>
mov    -0xc(%rbp),%eax
add    -0x4(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1126 <p017+0x16>
mov    -0x4(%rbp),%esi
lea    0xa1f(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<p017>:
push   %rbp
push   %rbx
mov    $0xb,%esi
mov    $0x1,%eax
mov    $0x1,%cx
mov    $0xcccccccd,%r8d
lea    0xefb(%rip),%r9
lea    0xecc(%rip),%r10
jmp    1154 <p017+0x44>
add    $0x3,%r11d
nopw   0x0(%rax,%rax,1)
add    %r11d,%esi
add    $0x1,%eax
add    $0x1,%ecx
cmp    $0x3e8,%eax
je     1306 <p017+0x1f6>
cmp    $0x63,%eax
jbe    11a0 <p017+0x90>
movzwl %cx,%edx
shr    $0x2,%edx
imul   $0x147b,%edx,%edx
shr    $0x11,%edx
imul   $0xffffff9c,%edx,%edx
movzwl %dx,%edx
add    %eax,%edx
xor    %edi,%edi
test   %dx,%dx
setne  %dil
lea    (%rdi,%rdi,2),%r11d
add    $0x7,%r11d
lea    -0x64(%rax),%edi
cmp    $0x63,%edi
jbe    1198 <p017+0x88>
lea    -0xc8(%rax),%edi
cmp    $0x63,%edi
ja     1221 <p017+0x111>
add    $0x3,%r11d
jmp    11bd <p017+0xad>
xchg   %ax,%ax
movzbl %cl,%edx
lea    (%rdx,%rdx,4),%edi
lea    (%rdx,%rdi,8),%edx
movzwl %dx,%edx
shr    $0xc,%edx
imul   $0xffffff9c,%edx,%edx
movzbl %dl,%edx
add    %eax,%edx
movzbl %dl,%edx
xor    %r11d,%r11d
movzwl %dx,%ebx
lea    -0x14(%rbx),%ebp
cmp    $0xfffffff5,%ebp
ja     1200 <p017+0xf0>
mov    %eax,%edi
imul   %r8,%rdi
shr    $0x23,%rdi
add    %edi,%edi
lea    (%rdi,%rdi,4),%edi
neg    %edi
cmp    $0x14,%dx
jb     1270 <p017+0x160>
cmp    $0x9,%ebp
jbe    11f0 <p017+0xe0>
lea    -0x1e(%rbx),%edx
cmp    $0x9,%edx
ja     1244 <p017+0x134>
add    $0x6,%r11d
jmp    1270 <p017+0x160>
cs nopw 0x0(%rax,%rax,1)
add    $0xf6,%bl
cmp    $0x9,%bl
ja     1140 <p017+0x30>
movzbl %bl,%edx
movslq (%r10,%rdx,4),%rdx
add    %r10,%rdx
jmp    *%rdx
add    $0x8,%r11d
jmp    1140 <p017+0x30>
lea    -0x12c(%rax),%edi
cmp    $0x63,%edi
ja     129a <p017+0x18a>
add    $0x5,%r11d
jmp    11bd <p017+0xad>
add    $0x6,%r11d
jmp    1140 <p017+0x30>
add    $0x7,%r11d
jmp    1140 <p017+0x30>
lea    -0x28(%rbx),%edx
cmp    $0x9,%edx
jbe    1260 <p017+0x150>
lea    -0x32(%rbx),%edx
cmp    $0x9,%edx
jbe    1260 <p017+0x150>
lea    -0x3c(%rbx),%edx
cmp    $0x9,%edx
ja     12f1 <p017+0x1e1>
add    $0x5,%r11d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rax,%rdi,1),%edx
add    $0xffffffff,%edx
cmp    $0x8,%edx
ja     1140 <p017+0x30>
movslq (%r9,%rdx,4),%rdx
add    %r9,%rdx
jmp    *%rdx
add    $0x4,%r11d
jmp    1140 <p017+0x30>
add    $0x5,%r11d
jmp    1140 <p017+0x30>
lea    -0x190(%rax),%edi
cmp    $0x63,%edi
jbe    12b0 <p017+0x1a0>
lea    -0x1f4(%rax),%edi
cmp    $0x63,%edi
ja     12c2 <p017+0x1b2>
add    $0x4,%r11d
jmp    11bd <p017+0xad>
add    $0x9,%r11d
jmp    1140 <p017+0x30>
lea    -0x258(%rax),%edi
cmp    $0x63,%edi
jbe    1198 <p017+0x88>
lea    -0x2bc(%rax),%edi
cmp    $0x63,%edi
jbe    122c <p017+0x11c>
lea    -0x320(%rax),%edi
cmp    $0x63,%edi
jbe    122c <p017+0x11c>
jmp    12b0 <p017+0x1a0>
add    $0xffffffba,%ebx
cmp    $0x9,%ebx
ja     11f0 <p017+0xe0>
add    $0x7,%r11d
jmp    1270 <p017+0x160>
lea    0xd3f(%rip),%rdi
pop    %rbx
pop    %rbp
jmp    1030 <printf@plt>

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

LLVM IR (-O2):
@.str = [50 x i8] c"The sum of the letter counts from 1 to 1000 is %d\00"
define void @p017() {
br label %1
1: ; preds = %0, %138
%2 = phi i32 [ 1, %0 ], [ %141, %138 ]
%3 = phi i32 [ 11, %0 ], [ %140, %138 ]
%4 = icmp ugt i32 %2, 99
%5 = trunc i32 %2 to i16
br i1 %4, label %10, label %6
6: ; preds = %1
%7 = trunc i32 %2 to i8
%8 = urem i8 %7, 100
%9 = zext i8 %8 to i16
br label %55
10: ; preds = %1
%11 = urem i16 %5, 100
%12 = icmp eq i16 %11, 0
%13 = select i1 %12, i32 7, i32 10
%14 = add nsw i32 %2, -100
%15 = icmp ult i32 %14, 100
br i1 %15, label %16, label %18
16: ; preds = %10
%17 = add nuw nsw i32 %13, 3
br label %55
18: ; preds = %10
%19 = add nsw i32 %2, -200
%20 = icmp ult i32 %19, 100
br i1 %20, label %21, label %23
21: ; preds = %18
%22 = add nuw nsw i32 %13, 3
br label %55
23: ; preds = %18
%24 = add nsw i32 %2, -300
%25 = icmp ult i32 %24, 100
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = add nuw nsw i32 %13, 5
br label %55
28: ; preds = %23
%29 = add nsw i32 %2, -400
%30 = icmp ult i32 %29, 100
br i1 %30, label %31, label %33
31: ; preds = %28
%32 = add nuw nsw i32 %13, 4
br label %55
33: ; preds = %28
%34 = add nsw i32 %2, -500
%35 = icmp ult i32 %34, 100
br i1 %35, label %36, label %38
36: ; preds = %33
%37 = add nuw nsw i32 %13, 4
br label %55
38: ; preds = %33
%39 = add nsw i32 %2, -600
%40 = icmp ult i32 %39, 100
br i1 %40, label %41, label %43
41: ; preds = %38
%42 = add nuw nsw i32 %13, 3
br label %55
43: ; preds = %38
%44 = add nsw i32 %2, -700
%45 = icmp ult i32 %44, 100
br i1 %45, label %46, label %48
46: ; preds = %43
%47 = add nuw nsw i32 %13, 5
br label %55
48: ; preds = %43
%49 = add nsw i32 %2, -800
%50 = icmp ult i32 %49, 100
br i1 %50, label %51, label %53
51: ; preds = %48
%52 = add nuw nsw i32 %13, 5
br label %55
53: ; preds = %48
%54 = add nuw nsw i32 %13, 4
br label %55
55: ; preds = %6, %16, %26, %36, %46, %53, %51, %41, %31, %21
%56 = phi i16 [ %9, %6 ], [ %11, %16 ], [ %11, %26 ], [ %11, %36 ], [ %11, %46 ], [ %11, %53 ], [ %11, %51 ], [ %11, %41 ], [ %11, %31 ], [ %11, %21 ]
%57 = phi i32 [ 0, %6 ], [ %17, %16 ], [ %27, %26 ], [ %37, %36 ], [ %47, %46 ], [ %54, %53 ], [ %52, %51 ], [ %42, %41 ], [ %32, %31 ], [ %22, %21 ]
%58 = zext i16 %56 to i32
%59 = add nsw i32 %58, -20
%60 = icmp ult i32 %59, -10
br i1 %60, label %61, label %116
61: ; preds = %55
%62 = icmp ugt i16 %56, 19
br i1 %62, label %63, label %94
63: ; preds = %61
%64 = icmp ult i32 %59, 10
br i1 %64, label %65, label %67
65: ; preds = %63
%66 = add nuw nsw i32 %57, 6
br label %94
67: ; preds = %63
%68 = add nsw i32 %58, -30
%69 = icmp ult i32 %68, 10
br i1 %69, label %70, label %72
70: ; preds = %67
%71 = add nuw nsw i32 %57, 6
br label %94
72: ; preds = %67
%73 = add nsw i32 %58, -40
%74 = icmp ult i32 %73, 10
br i1 %74, label %75, label %77
75: ; preds = %72
%76 = add nuw nsw i32 %57, 5
br label %94
77: ; preds = %72
%78 = add nsw i32 %58, -50
%79 = icmp ult i32 %78, 10
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = add nuw nsw i32 %57, 5
br label %94
82: ; preds = %77
%83 = add nsw i32 %58, -60
%84 = icmp ult i32 %83, 10
br i1 %84, label %85, label %87
85: ; preds = %82
%86 = add nuw nsw i32 %57, 5
br label %94
87: ; preds = %82
%88 = add nsw i32 %58, -70
%89 = icmp ult i32 %88, 10
br i1 %89, label %90, label %92
90: ; preds = %87
%91 = add nuw nsw i32 %57, 7
br label %94
92: ; preds = %87
%93 = add nuw nsw i32 %57, 6
br label %94
94: ; preds = %92, %65, %75, %85, %90, %80, %70, %61
%95 = phi i32 [ %66, %65 ], [ %71, %70 ], [ %76, %75 ], [ %81, %80 ], [ %86, %85 ], [ %91, %90 ], [ %57, %61 ], [ %93, %92 ]
%96 = urem i16 %5, 10
%97 = zext i16 %96 to i32
switch i32 %97, label %138 [
i32 1, label %98
i32 2, label %100
i32 3, label %102
i32 4, label %104
i32 5, label %106
i32 6, label %108
i32 7, label %110
i32 8, label %112
i32 9, label %114
]
98: ; preds = %94
%99 = add nuw nsw i32 %95, 3
br label %138
100: ; preds = %94
%101 = add nuw nsw i32 %95, 3
br label %138
102: ; preds = %94
%103 = add nuw nsw i32 %95, 5
br label %138
104: ; preds = %94
%105 = add nuw nsw i32 %95, 4
br label %138
106: ; preds = %94
%107 = add nuw nsw i32 %95, 4
br label %138
108: ; preds = %94
%109 = add nuw nsw i32 %95, 3
br label %138
110: ; preds = %94
%111 = add nuw nsw i32 %95, 5
br label %138
112: ; preds = %94
%113 = add nuw nsw i32 %95, 5
br label %138
114: ; preds = %94
%115 = add nuw nsw i32 %95, 4
br label %138
116: ; preds = %55
%117 = trunc i16 %56 to i8
switch i8 %117, label %138 [
i8 10, label %118
i8 11, label %120
i8 12, label %122
i8 13, label %124
i8 14, label %126
i8 15, label %128
i8 16, label %130
i8 17, label %132
i8 18, label %134
i8 19, label %136
]
118: ; preds = %116
%119 = add nuw nsw i32 %57, 3
br label %138
120: ; preds = %116
%121 = add nuw nsw i32 %57, 6
br label %138
122: ; preds = %116
%123 = add nuw nsw i32 %57, 6
br label %138
124: ; preds = %116
%125 = add nuw nsw i32 %57, 8
br label %138
126: ; preds = %116
%127 = add nuw nsw i32 %57, 8
br label %138
128: ; preds = %116
%129 = add nuw nsw i32 %57, 7
br label %138
130: ; preds = %116
%131 = add nuw nsw i32 %57, 7
br label %138
132: ; preds = %116
%133 = add nuw nsw i32 %57, 9
br label %138
134: ; preds = %116
%135 = add nuw nsw i32 %57, 8
br label %138
136: ; preds = %116
%137 = add nuw nsw i32 %57, 8
br label %138
138: ; preds = %116, %94, %118, %122, %126, %130, %134, %136, %132, %128, %124, %120, %98, %102, %106, %110, %114, %112, %108, %104, %100
%139 = phi i32 [ %99, %98 ], [ %101, %100 ], [ %103, %102 ], [ %105, %104 ], [ %107, %106 ], [ %109, %108 ], [ %111, %110 ], [ %113, %112 ], [ %115, %114 ], [ %119, %118 ], [ %121, %120 ], [ %123, %122 ], [ %125, %124 ], [ %127, %126 ], [ %129, %128 ], [ %131, %130 ], [ %133, %132 ], [ %135, %134 ], [ %137, %136 ], [ %95, %94 ], [ %57, %116 ]
%140 = add nsw i32 %139, %3
%141 = add nuw nsw i32 %2, 1
%142 = icmp eq i32 %141, 1000
br i1 %142, label %143, label %1
143: ; preds = %138
%144 = tail call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str, i64 0, i64 0), i32 %140)
ret void
}