#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 Sotni(int Sot) {
  int *names[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "00"};
s:
  if ((Sot >= 0) && (Sot <= 99)) {
    printf(" %s", names[0]);
  } else if ((Sot >= 100) && (Sot <= 199)) {
    printf(" %s", names[1]);
  } else if ((Sot >= 200) && (Sot <= 299)) {
    printf(" %s", names[2]);
  } else if ((Sot >= 300) && (Sot <= 399)) {
    printf(" %s", names[3]);
  } else if ((Sot >= 400) && (Sot <= 499)) {
    printf(" %s", names[4]);
  } else if ((Sot >= 500) && (Sot <= 599)) {
    printf(" %s", names[5]);
  } else if ((Sot >= 600) && (Sot <= 699)) {
    printf(" %s", names[6]);
  } else if ((Sot >= 700) && (Sot <= 799)) {
    printf(" %s", names[7]);
  } else if ((Sot >= 800) && (Sot <= 899)) {
    printf(" %s", names[8]);
  } else if ((Sot >= 900) && (Sot <= 999)) {
    printf(" %s", names[9]);
  } else if ((Sot >= 1000) && (Sot <= 1999)) {
    Sot = Sot - 1000;
    goto s;
  } else if ((Sot >= 2000) && (Sot <= 2999)) {
    Sot = Sot - 2000;
    goto s;
  } else if ((Sot >= 3000) && (Sot <= 3999)) {
    Sot = Sot - 3000;
    goto s;
  } else if ((Sot >= 4000) && (Sot <= 4999)) {
    Sot = Sot - 4000;
    goto s;
  } else if ((Sot >= 5000) && (Sot <= 5999)) {
    Sot = Sot - 5000;
    goto s;
  } else if ((Sot >= 6000) && (Sot <= 6999)) {
    Sot = Sot - 6000;
    goto s;
  } else if ((Sot >= 7000) && (Sot <= 7999)) {
    Sot = Sot - 7000;
    goto s;
  } else if ((Sot >= 8000) && (Sot <= 8999)) {
    Sot = Sot - 8000;
    goto s;
  } else if ((Sot >= 9000) && (Sot <= 9999)) {
    Sot = Sot - 9000;
    goto s;
  }
}


x86 assembly (clang, -O0):
<Sotni>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %edi,-0x4(%rbp)
lea    -0x60(%rbp),%rdi
lea    0x2c8a(%rip),%rsi
mov    $0x58,%edx
call   1040 <memcpy@plt>
cmpl   $0x0,-0x4(%rbp)
jl     1169 <Sotni+0x49>
cmpl   $0x63,-0x4(%rbp)
jg     1169 <Sotni+0x49>
mov    -0x60(%rbp),%rsi
lea    0xeb6(%rip),%rdi
call   1030 <printf@plt>
jmp    14e1 <Sotni+0x3c1>
cmpl   $0x64,-0x4(%rbp)
jl     1195 <Sotni+0x75>
cmpl   $0xc7,-0x4(%rbp)
jg     1195 <Sotni+0x75>
mov    -0x58(%rbp),%rsi
lea    0xe8a(%rip),%rdi
call   1030 <printf@plt>
jmp    14dc <Sotni+0x3bc>
cmpl   $0xc8,-0x4(%rbp)
jl     11c4 <Sotni+0xa4>
cmpl   $0x12b,-0x4(%rbp)
jg     11c4 <Sotni+0xa4>
mov    -0x50(%rbp),%rsi
lea    0xe5b(%rip),%rdi
call   1030 <printf@plt>
jmp    14d7 <Sotni+0x3b7>
cmpl   $0x12c,-0x4(%rbp)
jl     11f3 <Sotni+0xd3>
cmpl   $0x18f,-0x4(%rbp)
jg     11f3 <Sotni+0xd3>
mov    -0x48(%rbp),%rsi
lea    0xe2c(%rip),%rdi
call   1030 <printf@plt>
jmp    14d2 <Sotni+0x3b2>
cmpl   $0x190,-0x4(%rbp)
jl     1222 <Sotni+0x102>
cmpl   $0x1f3,-0x4(%rbp)
jg     1222 <Sotni+0x102>
mov    -0x40(%rbp),%rsi
lea    0xdfd(%rip),%rdi
call   1030 <printf@plt>
jmp    14cd <Sotni+0x3ad>
cmpl   $0x1f4,-0x4(%rbp)
jl     1251 <Sotni+0x131>
cmpl   $0x257,-0x4(%rbp)
jg     1251 <Sotni+0x131>
mov    -0x38(%rbp),%rsi
lea    0xdce(%rip),%rdi
call   1030 <printf@plt>
jmp    14c8 <Sotni+0x3a8>
cmpl   $0x258,-0x4(%rbp)
jl     1280 <Sotni+0x160>
cmpl   $0x2bb,-0x4(%rbp)
jg     1280 <Sotni+0x160>
mov    -0x30(%rbp),%rsi
lea    0xd9f(%rip),%rdi
call   1030 <printf@plt>
jmp    14c3 <Sotni+0x3a3>
cmpl   $0x2bc,-0x4(%rbp)
jl     12af <Sotni+0x18f>
cmpl   $0x31f,-0x4(%rbp)
jg     12af <Sotni+0x18f>
mov    -0x28(%rbp),%rsi
lea    0xd70(%rip),%rdi
call   1030 <printf@plt>
jmp    14be <Sotni+0x39e>
cmpl   $0x320,-0x4(%rbp)
jl     12de <Sotni+0x1be>
cmpl   $0x383,-0x4(%rbp)
jg     12de <Sotni+0x1be>
mov    -0x20(%rbp),%rsi
lea    0xd41(%rip),%rdi
call   1030 <printf@plt>
jmp    14b9 <Sotni+0x399>
cmpl   $0x384,-0x4(%rbp)
jl     130d <Sotni+0x1ed>
cmpl   $0x3e7,-0x4(%rbp)
jg     130d <Sotni+0x1ed>
mov    -0x18(%rbp),%rsi
lea    0xd12(%rip),%rdi
call   1030 <printf@plt>
jmp    14b4 <Sotni+0x394>
cmpl   $0x3e8,-0x4(%rbp)
jl     1337 <Sotni+0x217>
cmpl   $0x7cf,-0x4(%rbp)
jg     1337 <Sotni+0x217>
mov    -0x4(%rbp),%eax
sub    $0x3e8,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x7d0,-0x4(%rbp)
jl     1361 <Sotni+0x241>
cmpl   $0xbb7,-0x4(%rbp)
jg     1361 <Sotni+0x241>
mov    -0x4(%rbp),%eax
sub    $0x7d0,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0xbb8,-0x4(%rbp)
jl     138b <Sotni+0x26b>
cmpl   $0xf9f,-0x4(%rbp)
jg     138b <Sotni+0x26b>
mov    -0x4(%rbp),%eax
sub    $0xbb8,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0xfa0,-0x4(%rbp)
jl     13b5 <Sotni+0x295>
cmpl   $0x1387,-0x4(%rbp)
jg     13b5 <Sotni+0x295>
mov    -0x4(%rbp),%eax
sub    $0xfa0,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x1388,-0x4(%rbp)
jl     13df <Sotni+0x2bf>
cmpl   $0x176f,-0x4(%rbp)
jg     13df <Sotni+0x2bf>
mov    -0x4(%rbp),%eax
sub    $0x1388,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x1770,-0x4(%rbp)
jl     1409 <Sotni+0x2e9>
cmpl   $0x1b57,-0x4(%rbp)
jg     1409 <Sotni+0x2e9>
mov    -0x4(%rbp),%eax
sub    $0x1770,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x1b58,-0x4(%rbp)
jl     1433 <Sotni+0x313>
cmpl   $0x1f3f,-0x4(%rbp)
jg     1433 <Sotni+0x313>
mov    -0x4(%rbp),%eax
sub    $0x1b58,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x1f40,-0x4(%rbp)
jl     145d <Sotni+0x33d>
cmpl   $0x2327,-0x4(%rbp)
jg     145d <Sotni+0x33d>
mov    -0x4(%rbp),%eax
sub    $0x1f40,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
cmpl   $0x2328,-0x4(%rbp)
jl     1487 <Sotni+0x367>
cmpl   $0x270f,-0x4(%rbp)
jg     1487 <Sotni+0x367>
mov    -0x4(%rbp),%eax
sub    $0x2328,%eax
mov    %eax,-0x4(%rbp)
jmp    1140 <Sotni+0x20>
jmp    148c <Sotni+0x36c>
jmp    1491 <Sotni+0x371>
jmp    1496 <Sotni+0x376>
jmp    149b <Sotni+0x37b>
jmp    14a0 <Sotni+0x380>
jmp    14a5 <Sotni+0x385>
jmp    14aa <Sotni+0x38a>
jmp    14af <Sotni+0x38f>
jmp    14b4 <Sotni+0x394>
jmp    14b9 <Sotni+0x399>
jmp    14be <Sotni+0x39e>
jmp    14c3 <Sotni+0x3a3>
jmp    14c8 <Sotni+0x3a8>
jmp    14cd <Sotni+0x3ad>
jmp    14d2 <Sotni+0x3b2>
jmp    14d7 <Sotni+0x3b7>
jmp    14dc <Sotni+0x3bc>
jmp    14e1 <Sotni+0x3c1>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Sotni>:
push   %rbp
push   %r14
push   %rbx
lea    0xee5(%rip),%rsi
cmp    $0x64,%edi
jae    1130 <Sotni+0x20>
lea    0xeed(%rip),%rdi
pop    %rbx
pop    %r14
pop    %rbp
jmp    1030 <printf@plt>
lea    0xecb(%rip),%r8
lea    0xec6(%rip),%r9
lea    0xec1(%rip),%r10
lea    0xebc(%rip),%r11
lea    0xeb7(%rip),%r14
lea    0xeb2(%rip),%rdx
lea    0xead(%rip),%rax
lea    0xea8(%rip),%rbx
lea    0xea3(%rip),%rcx
jmp    1187 <Sotni+0x77>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %ebp,%edi
cmp    $0x64,%ebp
jb     1120 <Sotni+0x10>
lea    -0x64(%rdi),%ebp
cmp    $0x64,%ebp
jb     12b4 <Sotni+0x1a4>
lea    -0xc8(%rdi),%ebp
cmp    $0x64,%ebp
jb     12bc <Sotni+0x1ac>
lea    -0x12c(%rdi),%ebp
cmp    $0x64,%ebp
jb     12c4 <Sotni+0x1b4>
lea    -0x190(%rdi),%ebp
cmp    $0x64,%ebp
jb     12cc <Sotni+0x1bc>
lea    -0x1f4(%rdi),%ebp
cmp    $0x64,%ebp
jb     12d4 <Sotni+0x1c4>
lea    -0x258(%rdi),%ebp
cmp    $0x64,%ebp
jb     12dc <Sotni+0x1cc>
lea    -0x2bc(%rdi),%ebp
cmp    $0x64,%ebp
jb     12e4 <Sotni+0x1d4>
lea    -0x320(%rdi),%ebp
cmp    $0x64,%ebp
jb     12ec <Sotni+0x1dc>
lea    -0x384(%rdi),%ebp
cmp    $0x64,%ebp
jb     12f4 <Sotni+0x1e4>
lea    -0x3e8(%rdi),%ebp
cmp    $0x3e7,%ebp
jbe    1180 <Sotni+0x70>
lea    -0x7d0(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0xbb8(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0xfa0(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0x1388(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0x1770(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0x1b58(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
lea    -0x1f40(%rdi),%ebp
cmp    $0x3e8,%ebp
jb     1180 <Sotni+0x70>
add    $0xffffdcd8,%edi
mov    %edi,%ebp
cmp    $0x3e8,%edi
jb     1180 <Sotni+0x70>
pop    %rbx
pop    %r14
pop    %rbp
ret
mov    %r8,%rsi
jmp    1120 <Sotni+0x10>
mov    %r9,%rsi
jmp    1120 <Sotni+0x10>
mov    %r10,%rsi
jmp    1120 <Sotni+0x10>
mov    %r11,%rsi
jmp    1120 <Sotni+0x10>
mov    %r14,%rsi
jmp    1120 <Sotni+0x10>
mov    %rdx,%rsi
jmp    1120 <Sotni+0x10>
mov    %rax,%rsi
jmp    1120 <Sotni+0x10>
mov    %rbx,%rsi
jmp    1120 <Sotni+0x10>
mov    %rcx,%rsi
jmp    1120 <Sotni+0x10>

LLVM IR (-O0):
@.str = [2 x i8] c"0\00"
@.str.1 = [2 x i8] c"1\00"
@.str.2 = [2 x i8] c"2\00"
@.str.3 = [2 x i8] c"3\00"
@.str.4 = [2 x i8] c"4\00"
@.str.5 = [2 x i8] c"5\00"
@.str.6 = [2 x i8] c"6\00"
@.str.7 = [2 x i8] c"7\00"
@.str.8 = [2 x i8] c"8\00"
@.str.9 = [2 x i8] c"9\00"
@.str.10 = [3 x i8] c"00\00"
@__const.Sotni.names = [11 x i32*] [i32* bitcast ([2 x i8]* @.str to i32*), i32* bitcast ([2 x i8]* @.str.1 to i32*), i32* bitcast ([2 x i8]* @.str.2 to i32*), i32* bitcast ([2 x i8]* @.str.3 to i32*), i32* bitcast ([2 x i8]* @.str.4 to i32*), i32* bitcast ([2 x i8]* @.str.5 to i32*), i32* bitcast ([2 x i8]* @.str.6 to i32*), i32* bitcast ([2 x i8]* @.str.7 to i32*), i32* bitcast ([2 x i8]* @.str.8 to i32*), i32* bitcast ([2 x i8]* @.str.9 to i32*), i32* bitcast ([3 x i8]* @.str.10 to i32*)]
@.str.11 = [4 x i8] c" %s\00"
define void @Sotni(i32 %0) {
%2 = alloca i32
%3 = alloca [11 x i32*]
store i32 %0, i32* %2
%4 = bitcast [11 x i32*]* %3 to i8*
br label %5
5: ; preds = %183, %174, %165, %156, %147, %138, %129, %120, %111, %1
%6 = load i32, i32* %2
%7 = icmp sge i32 %6, 0
br i1 %7, label %8, label %15
8: ; preds = %5
%9 = load i32, i32* %2
%10 = icmp sle i32 %9, 99
br i1 %10, label %11, label %15
11: ; preds = %8
%12 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 0
%13 = load i32*, i32** %12
%14 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %13)
br label %204
15: ; preds = %8, %5
%16 = load i32, i32* %2
%17 = icmp sge i32 %16, 100
br i1 %17, label %18, label %25
18: ; preds = %15
%19 = load i32, i32* %2
%20 = icmp sle i32 %19, 199
br i1 %20, label %21, label %25
21: ; preds = %18
%22 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 1
%23 = load i32*, i32** %22
%24 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %23)
br label %203
25: ; preds = %18, %15
%26 = load i32, i32* %2
%27 = icmp sge i32 %26, 200
br i1 %27, label %28, label %35
28: ; preds = %25
%29 = load i32, i32* %2
%30 = icmp sle i32 %29, 299
br i1 %30, label %31, label %35
31: ; preds = %28
%32 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 2
%33 = load i32*, i32** %32
%34 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %33)
br label %202
35: ; preds = %28, %25
%36 = load i32, i32* %2
%37 = icmp sge i32 %36, 300
br i1 %37, label %38, label %45
38: ; preds = %35
%39 = load i32, i32* %2
%40 = icmp sle i32 %39, 399
br i1 %40, label %41, label %45
41: ; preds = %38
%42 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 3
%43 = load i32*, i32** %42
%44 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %43)
br label %201
45: ; preds = %38, %35
%46 = load i32, i32* %2
%47 = icmp sge i32 %46, 400
br i1 %47, label %48, label %55
48: ; preds = %45
%49 = load i32, i32* %2
%50 = icmp sle i32 %49, 499
br i1 %50, label %51, label %55
51: ; preds = %48
%52 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 4
%53 = load i32*, i32** %52
%54 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %53)
br label %200
55: ; preds = %48, %45
%56 = load i32, i32* %2
%57 = icmp sge i32 %56, 500
br i1 %57, label %58, label %65
58: ; preds = %55
%59 = load i32, i32* %2
%60 = icmp sle i32 %59, 599
br i1 %60, label %61, label %65
61: ; preds = %58
%62 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 5
%63 = load i32*, i32** %62
%64 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %63)
br label %199
65: ; preds = %58, %55
%66 = load i32, i32* %2
%67 = icmp sge i32 %66, 600
br i1 %67, label %68, label %75
68: ; preds = %65
%69 = load i32, i32* %2
%70 = icmp sle i32 %69, 699
br i1 %70, label %71, label %75
71: ; preds = %68
%72 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 6
%73 = load i32*, i32** %72
%74 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %73)
br label %198
75: ; preds = %68, %65
%76 = load i32, i32* %2
%77 = icmp sge i32 %76, 700
br i1 %77, label %78, label %85
78: ; preds = %75
%79 = load i32, i32* %2
%80 = icmp sle i32 %79, 799
br i1 %80, label %81, label %85
81: ; preds = %78
%82 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 7
%83 = load i32*, i32** %82
%84 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %83)
br label %197
85: ; preds = %78, %75
%86 = load i32, i32* %2
%87 = icmp sge i32 %86, 800
br i1 %87, label %88, label %95
88: ; preds = %85
%89 = load i32, i32* %2
%90 = icmp sle i32 %89, 899
br i1 %90, label %91, label %95
91: ; preds = %88
%92 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 8
%93 = load i32*, i32** %92
%94 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %93)
br label %196
95: ; preds = %88, %85
%96 = load i32, i32* %2
%97 = icmp sge i32 %96, 900
br i1 %97, label %98, label %105
98: ; preds = %95
%99 = load i32, i32* %2
%100 = icmp sle i32 %99, 999
br i1 %100, label %101, label %105
101: ; preds = %98
%102 = getelementptr inbounds [11 x i32*], [11 x i32*]* %3, i64 0, i64 9
%103 = load i32*, i32** %102
%104 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %103)
br label %195
105: ; preds = %98, %95
%106 = load i32, i32* %2
%107 = icmp sge i32 %106, 1000
br i1 %107, label %108, label %114
108: ; preds = %105
%109 = load i32, i32* %2
%110 = icmp sle i32 %109, 1999
br i1 %110, label %111, label %114
111: ; preds = %108
%112 = load i32, i32* %2
%113 = sub nsw i32 %112, 1000
store i32 %113, i32* %2
br label %5
114: ; preds = %108, %105
%115 = load i32, i32* %2
%116 = icmp sge i32 %115, 2000
br i1 %116, label %117, label %123
117: ; preds = %114
%118 = load i32, i32* %2
%119 = icmp sle i32 %118, 2999
br i1 %119, label %120, label %123
120: ; preds = %117
%121 = load i32, i32* %2
%122 = sub nsw i32 %121, 2000
store i32 %122, i32* %2
br label %5
123: ; preds = %117, %114
%124 = load i32, i32* %2
%125 = icmp sge i32 %124, 3000
br i1 %125, label %126, label %132
126: ; preds = %123
%127 = load i32, i32* %2
%128 = icmp sle i32 %127, 3999
br i1 %128, label %129, label %132
129: ; preds = %126
%130 = load i32, i32* %2
%131 = sub nsw i32 %130, 3000
store i32 %131, i32* %2
br label %5
132: ; preds = %126, %123
%133 = load i32, i32* %2
%134 = icmp sge i32 %133, 4000
br i1 %134, label %135, label %141
135: ; preds = %132
%136 = load i32, i32* %2
%137 = icmp sle i32 %136, 4999
br i1 %137, label %138, label %141
138: ; preds = %135
%139 = load i32, i32* %2
%140 = sub nsw i32 %139, 4000
store i32 %140, i32* %2
br label %5
141: ; preds = %135, %132
%142 = load i32, i32* %2
%143 = icmp sge i32 %142, 5000
br i1 %143, label %144, label %150
144: ; preds = %141
%145 = load i32, i32* %2
%146 = icmp sle i32 %145, 5999
br i1 %146, label %147, label %150
147: ; preds = %144
%148 = load i32, i32* %2
%149 = sub nsw i32 %148, 5000
store i32 %149, i32* %2
br label %5
150: ; preds = %144, %141
%151 = load i32, i32* %2
%152 = icmp sge i32 %151, 6000
br i1 %152, label %153, label %159
153: ; preds = %150
%154 = load i32, i32* %2
%155 = icmp sle i32 %154, 6999
br i1 %155, label %156, label %159
156: ; preds = %153
%157 = load i32, i32* %2
%158 = sub nsw i32 %157, 6000
store i32 %158, i32* %2
br label %5
159: ; preds = %153, %150
%160 = load i32, i32* %2
%161 = icmp sge i32 %160, 7000
br i1 %161, label %162, label %168
162: ; preds = %159
%163 = load i32, i32* %2
%164 = icmp sle i32 %163, 7999
br i1 %164, label %165, label %168
165: ; preds = %162
%166 = load i32, i32* %2
%167 = sub nsw i32 %166, 7000
store i32 %167, i32* %2
br label %5
168: ; preds = %162, %159
%169 = load i32, i32* %2
%170 = icmp sge i32 %169, 8000
br i1 %170, label %171, label %177
171: ; preds = %168
%172 = load i32, i32* %2
%173 = icmp sle i32 %172, 8999
br i1 %173, label %174, label %177
174: ; preds = %171
%175 = load i32, i32* %2
%176 = sub nsw i32 %175, 8000
store i32 %176, i32* %2
br label %5
177: ; preds = %171, %168
%178 = load i32, i32* %2
%179 = icmp sge i32 %178, 9000
br i1 %179, label %180, label %186
180: ; preds = %177
%181 = load i32, i32* %2
%182 = icmp sle i32 %181, 9999
br i1 %182, label %183, label %186
183: ; preds = %180
%184 = load i32, i32* %2
%185 = sub nsw i32 %184, 9000
store i32 %185, i32* %2
br label %5
186: ; preds = %180, %177
br label %187
187: ; preds = %186
br label %188
188: ; preds = %187
br label %189
189: ; preds = %188
br label %190
190: ; preds = %189
br label %191
191: ; preds = %190
br label %192
192: ; preds = %191
br label %193
193: ; preds = %192
br label %194
194: ; preds = %193
br label %195
195: ; preds = %194, %101
br label %196
196: ; preds = %195, %91
br label %197
197: ; preds = %196, %81
br label %198
198: ; preds = %197, %71
br label %199
199: ; preds = %198, %61
br label %200
200: ; preds = %199, %51
br label %201
201: ; preds = %200, %41
br label %202
202: ; preds = %201, %31
br label %203
203: ; preds = %202, %21
br label %204
204: ; preds = %203, %11
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c"0\00"
@.str.1 = [2 x i8] c"1\00"
@.str.2 = [2 x i8] c"2\00"
@.str.3 = [2 x i8] c"3\00"
@.str.4 = [2 x i8] c"4\00"
@.str.5 = [2 x i8] c"5\00"
@.str.6 = [2 x i8] c"6\00"
@.str.7 = [2 x i8] c"7\00"
@.str.8 = [2 x i8] c"8\00"
@.str.9 = [2 x i8] c"9\00"
@.str.11 = [4 x i8] c" %s\00"
define void @Sotni(i32 %0) {
%2 = icmp ult i32 %0, 100
br i1 %2, label %61, label %3
3: ; preds = %1, %34
%4 = phi i32 [ %35, %34 ], [ %0, %1 ]
%5 = add i32 %4, -100
%6 = icmp ult i32 %5, 100
br i1 %6, label %61, label %7
7: ; preds = %3
%8 = add i32 %4, -200
%9 = icmp ult i32 %8, 100
br i1 %9, label %61, label %10
10: ; preds = %7
%11 = add i32 %4, -300
%12 = icmp ult i32 %11, 100
br i1 %12, label %61, label %13
13: ; preds = %10
%14 = add i32 %4, -400
%15 = icmp ult i32 %14, 100
br i1 %15, label %61, label %16
16: ; preds = %13
%17 = add i32 %4, -500
%18 = icmp ult i32 %17, 100
br i1 %18, label %61, label %19
19: ; preds = %16
%20 = add i32 %4, -600
%21 = icmp ult i32 %20, 100
br i1 %21, label %61, label %22
22: ; preds = %19
%23 = add i32 %4, -700
%24 = icmp ult i32 %23, 100
br i1 %24, label %61, label %25
25: ; preds = %22
%26 = add i32 %4, -800
%27 = icmp ult i32 %26, 100
br i1 %27, label %61, label %28
28: ; preds = %25
%29 = add i32 %4, -900
%30 = icmp ult i32 %29, 100
br i1 %30, label %61, label %31
31: ; preds = %28
%32 = add i32 %4, -1000
%33 = icmp ult i32 %32, 1000
br i1 %33, label %34, label %37
34: ; preds = %31, %37, %40, %43, %46, %49, %52, %55, %58
%35 = phi i32 [ %32, %31 ], [ %38, %37 ], [ %41, %40 ], [ %44, %43 ], [ %47, %46 ], [ %50, %49 ], [ %53, %52 ], [ %56, %55 ], [ %59, %58 ]
%36 = icmp ult i32 %35, 100
br i1 %36, label %61, label %3
37: ; preds = %31
%38 = add i32 %4, -2000
%39 = icmp ult i32 %38, 1000
br i1 %39, label %34, label %40
40: ; preds = %37
%41 = add i32 %4, -3000
%42 = icmp ult i32 %41, 1000
br i1 %42, label %34, label %43
43: ; preds = %40
%44 = add i32 %4, -4000
%45 = icmp ult i32 %44, 1000
br i1 %45, label %34, label %46
46: ; preds = %43
%47 = add i32 %4, -5000
%48 = icmp ult i32 %47, 1000
br i1 %48, label %34, label %49
49: ; preds = %46
%50 = add i32 %4, -6000
%51 = icmp ult i32 %50, 1000
br i1 %51, label %34, label %52
52: ; preds = %49
%53 = add i32 %4, -7000
%54 = icmp ult i32 %53, 1000
br i1 %54, label %34, label %55
55: ; preds = %52
%56 = add i32 %4, -8000
%57 = icmp ult i32 %56, 1000
br i1 %57, label %34, label %58
58: ; preds = %55
%59 = add i32 %4, -9000
%60 = icmp ult i32 %59, 1000
br i1 %60, label %34, label %64
61: ; preds = %28, %25, %22, %19, %16, %13, %10, %7, %3, %34, %1
%62 = phi i32* [ bitcast ([2 x i8]* @.str to i32*), %1 ], [ bitcast ([2 x i8]* @.str to i32*), %34 ], [ bitcast ([2 x i8]* @.str.1 to i32*), %3 ], [ bitcast ([2 x i8]* @.str.2 to i32*), %7 ], [ bitcast ([2 x i8]* @.str.3 to i32*), %10 ], [ bitcast ([2 x i8]* @.str.4 to i32*), %13 ], [ bitcast ([2 x i8]* @.str.5 to i32*), %16 ], [ bitcast ([2 x i8]* @.str.6 to i32*), %19 ], [ bitcast ([2 x i8]* @.str.7 to i32*), %22 ], [ bitcast ([2 x i8]* @.str.8 to i32*), %25 ], [ bitcast ([2 x i8]* @.str.9 to i32*), %28 ]
%63 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32* %62)
br label %64
64: ; preds = %58, %61
ret void
}