void main() {
  float numt;
  int z = 1;
  int i, k = 0, p = -1, er = 0, t;
  int num = 0, fin;
  char c[5000];
  for (i = 0; i < 5000; i++)
    c[i] == '0';
  print("Press number");
  getid(c);
  for (i = 0; i < 5000; i++) {
    if ((c[i] != '0') & (c[i] != '1') & (c[i] != '2') & (c[i] != '3') &
        (c[i] != '4') & (c[i] != '5') & (c[i] != '6') & (c[i] != '7') &
        (c[i] != '8') & (c[i] != '9') & (c[i] != '.')) {
      er = 1;
    }
    if (k > 1) {
      er = 1;
    }
    if (c[i] == '.') {
      k++;
      p = i;
    }
  }
  t = 0;
  for (i = 4999; i > -1; i--) {
    if ((t == 0) & (c[i] != '0')) {
      t = 1;
      fin = i;
    }
  }
  if (p = 0) {
    er = 1;
  }
  if (er = 0) {
    if (p = -1) {
      num = 0;
      for (i = 0; i < 5000; i++) {
        if (c[i] == '0') {
          num = 10 * num + 0;
        }
        if (c[i] == '1') {
          num = 10 * num + 1;
        }
        if (c[i] == '2') {
          num = 10 * num + 2;
        }
        if (c[i] == '3') {
          num = 10 * num + 3;
        }
        if (c[i] == '4') {
          num = 10 * num + 4;
        }
        if (c[i] == '5') {
          num = 10 * num + 5;
        }
        if (c[i] == '6') {
          num = 10 * num + 6;
        }
        if (c[i] == '7') {
          num = 10 * num + 7;
        }
        if (c[i] == '8') {
          num = 10 * num + 8;
        }
        if (c[i] == '9') {
          num = 10 * num + 9;
        }
      }
      print(num);
    } else {
      for (i = 0; i < 5000; i++) {
        if (i != p) {
          if (c[i] == '0') {
            numt = 10 * numt + 0;
          }
          if (c[i] == '1') {
            numt = 10 * numt + 1;
          }
          if (c[i] == '2') {
            numt = 10 * numt + 2;
          }
          if (c[i] == '3') {
            numt = 10 * numt + 3;
          }
          if (c[i] == '4') {
            numt = 10 * numt + 4;
          }
          if (c[i] == '5') {
            numt = 10 * numt + 5;
          }
          if (c[i] == '6') {
            numt = 10 * numt + 6;
          }
          if (c[i] == '7') {
            numt = 10 * numt + 7;
          }
          if (c[i] == '8') {
            numt = 10 * numt + 8;
          }
          if (c[i] == '9') {
            numt = 10 * numt + 9;
          }
        }
      }
      for (i = 1; i < (fin - p + 1); i++) {
        z = z * 10;
      }
      numt = numt / (z);
      print(numt);
    }
  }
  if (er == 1)
    print("ERROR");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x13b0,%rsp
movl   $0x1,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0x1388,-0xc(%rbp)
jge    1170 <main+0x50>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1155 <main+0x35>
lea    0xeb1(%rip),%rdi
mov    $0x0,%al
call   1040 <print@plt>
lea    -0x13b0(%rbp),%rdi
mov    $0x0,%al
call   1030 <getid@plt>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1388,-0xc(%rbp)
jge    1313 <main+0x1f3>
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x30,%eax
setne  %al
and    $0x1,%al
movzbl %al,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x31,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x32,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x33,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x34,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x35,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x36,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x37,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x38,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x39,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x2e,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     12cb <main+0x1ab>
movl   $0x1,-0x18(%rbp)
cmpl   $0x1,-0x10(%rbp)
jle    12dc <main+0x1bc>
movl   $0x1,-0x18(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x2e,%eax
jne    1300 <main+0x1e0>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    1305 <main+0x1e5>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1193 <main+0x73>
movl   $0x0,-0x1c(%rbp)
movl   $0x1387,-0xc(%rbp)
cmpl   $0xffffffff,-0xc(%rbp)
jle    137a <main+0x25a>
cmpl   $0x0,-0x1c(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
movslq -0xc(%rbp),%rcx
movsbl -0x13b0(%rbp,%rcx,1),%ecx
ff
cmp    $0x30,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1367 <main+0x247>
movl   $0x1,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    136c <main+0x24c>
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    1321 <main+0x201>
movl   $0x0,-0x14(%rbp)
xor    %eax,%eax
test   $0x1,%al
jne    1390 <main+0x270>
jmp    1397 <main+0x277>
movl   $0x1,-0x18(%rbp)
movl   $0x0,-0x18(%rbp)
xor    %eax,%eax
test   $0x1,%al
jne    13ad <main+0x28d>
jmp    17e7 <main+0x6c7>
movl   $0xffffffff,-0x14(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    13c3 <main+0x2a3>
jmp    1536 <main+0x416>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0x1388,-0xc(%rbp)
jge    1527 <main+0x407>
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x30,%eax
jne    13fd <main+0x2dd>
imul   $0xa,-0x20(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x31,%eax
jne    141c <main+0x2fc>
imul   $0xa,-0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x32,%eax
jne    143b <main+0x31b>
imul   $0xa,-0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x33,%eax
jne    145a <main+0x33a>
imul   $0xa,-0x20(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x34,%eax
jne    1479 <main+0x359>
imul   $0xa,-0x20(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x35,%eax
jne    1498 <main+0x378>
imul   $0xa,-0x20(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x36,%eax
jne    14b7 <main+0x397>
imul   $0xa,-0x20(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x37,%eax
jne    14d6 <main+0x3b6>
imul   $0xa,-0x20(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x38,%eax
jne    14f5 <main+0x3d5>
imul   $0xa,-0x20(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x20(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jne    1514 <main+0x3f4>
imul   $0xa,-0x20(%rbp),%eax
add    $0x9,%eax
mov    %eax,-0x20(%rbp)
jmp    1519 <main+0x3f9>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13d1 <main+0x2b1>
mov    -0x20(%rbp),%edi
mov    $0x0,%al
call   1040 <print@plt>
jmp    17e2 <main+0x6c2>
movl   $0x0,-0xc(%rbp)
cmpl   $0x1388,-0xc(%rbp)
jge    178f <main+0x66f>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
je     177c <main+0x65c>
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x30,%eax
jne    1588 <main+0x468>
movss  -0x4(%rbp),%xmm0
movss  0xa88(%rip),%xmm1
mulss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x31,%eax
jne    15bf <main+0x49f>
movss  -0x4(%rbp),%xmm0
movss  0xa56(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xa4e(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x32,%eax
jne    15f6 <main+0x4d6>
movss  -0x4(%rbp),%xmm0
movss  0xa1f(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0xa1b(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x33,%eax
jne    162d <main+0x50d>
movss  -0x4(%rbp),%xmm0
movss  0x9e8(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x9e8(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x34,%eax
jne    1664 <main+0x544>
movss  -0x4(%rbp),%xmm0
movss  0x9b1(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x9b5(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x35,%eax
jne    169b <main+0x57b>
movss  -0x4(%rbp),%xmm0
movss  0x97a(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x982(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x36,%eax
jne    16d2 <main+0x5b2>
movss  -0x4(%rbp),%xmm0
movss  0x943(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x94f(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x37,%eax
jne    1709 <main+0x5e9>
movss  -0x4(%rbp),%xmm0
movss  0x90c(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x91c(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x38,%eax
jne    1740 <main+0x620>
movss  -0x4(%rbp),%xmm0
movss  0x8d5(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x8e9(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movslq -0xc(%rbp),%rax
movsbl -0x13b0(%rbp,%rax,1),%eax
ff
cmp    $0x39,%eax
jne    1777 <main+0x657>
movss  -0x4(%rbp),%xmm0
movss  0x89e(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  0x8b6(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    177c <main+0x65c>
jmp    1781 <main+0x661>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    153d <main+0x41d>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    -0x14(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    17bf <main+0x69f>
imul   $0xa,-0x8(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1796 <main+0x676>
movss  -0x4(%rbp),%xmm0
cvtsi2ssl -0x8(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    $0x1,%al
call   1040 <print@plt>
jmp    17e7 <main+0x6c7>
cmpl   $0x1,-0x18(%rbp)
jne    17ff <main+0x6df>
lea    0x83d(%rip),%rdi
mov    $0x0,%al
call   1040 <print@plt>
add    $0x13b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x1388,%rsp
lea    0xed2(%rip),%rdi
xor    %eax,%eax
call   1040 <print@plt>
mov    %rsp,%rdi
xor    %eax,%eax
call   1030 <getid@plt>
add    $0x1388,%rsp
ret

LLVM IR (-O0):
@.str = [13 x i8] c"Press number\00"
@.str.1 = [6 x i8] c"ERROR\00"
define void @main() {
%1 = alloca float
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca [5000 x i8]
store i32 1, i32* %2
store i32 0, i32* %4
store i32 -1, i32* %5
store i32 0, i32* %6
store i32 0, i32* %8
store i32 0, i32* %3
br label %11
11: ; preds = %22, %0
%12 = load i32, i32* %3
%13 = icmp slt i32 %12, 5000
br i1 %13, label %14, label %25
14: ; preds = %11
%15 = load i32, i32* %3
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %16
%18 = load i8, i8* %17
%19 = sext i8 %18 to i32
%20 = icmp eq i32 %19, 48
%21 = zext i1 %20 to i32
br label %22
22: ; preds = %14
%23 = load i32, i32* %3
%24 = add nsw i32 %23, 1
store i32 %24, i32* %3
br label %11
25: ; preds = %11
%26 = call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0))
%27 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 0
%28 = call i32 (i8*, ...) bitcast (i32 (...)* @getid to i32 (i8*, ...)*)(i8* %27)
store i32 0, i32* %3
br label %29
29: ; preds = %138, %25
%30 = load i32, i32* %3
%31 = icmp slt i32 %30, 5000
br i1 %31, label %32, label %141
32: ; preds = %29
%33 = load i32, i32* %3
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %34
%36 = load i8, i8* %35
%37 = sext i8 %36 to i32
%38 = icmp ne i32 %37, 48
%39 = zext i1 %38 to i32
%40 = load i32, i32* %3
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %41
%43 = load i8, i8* %42
%44 = sext i8 %43 to i32
%45 = icmp ne i32 %44, 49
%46 = zext i1 %45 to i32
%47 = and i32 %39, %46
%48 = load i32, i32* %3
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %49
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp ne i32 %52, 50
%54 = zext i1 %53 to i32
%55 = and i32 %47, %54
%56 = load i32, i32* %3
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp ne i32 %60, 51
%62 = zext i1 %61 to i32
%63 = and i32 %55, %62
%64 = load i32, i32* %3
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %65
%67 = load i8, i8* %66
%68 = sext i8 %67 to i32
%69 = icmp ne i32 %68, 52
%70 = zext i1 %69 to i32
%71 = and i32 %63, %70
%72 = load i32, i32* %3
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %73
%75 = load i8, i8* %74
%76 = sext i8 %75 to i32
%77 = icmp ne i32 %76, 53
%78 = zext i1 %77 to i32
%79 = and i32 %71, %78
%80 = load i32, i32* %3
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %81
%83 = load i8, i8* %82
%84 = sext i8 %83 to i32
%85 = icmp ne i32 %84, 54
%86 = zext i1 %85 to i32
%87 = and i32 %79, %86
%88 = load i32, i32* %3
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %89
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp ne i32 %92, 55
%94 = zext i1 %93 to i32
%95 = and i32 %87, %94
%96 = load i32, i32* %3
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %97
%99 = load i8, i8* %98
%100 = sext i8 %99 to i32
%101 = icmp ne i32 %100, 56
%102 = zext i1 %101 to i32
%103 = and i32 %95, %102
%104 = load i32, i32* %3
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %105
%107 = load i8, i8* %106
%108 = sext i8 %107 to i32
%109 = icmp ne i32 %108, 57
%110 = zext i1 %109 to i32
%111 = and i32 %103, %110
%112 = load i32, i32* %3
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %113
%115 = load i8, i8* %114
%116 = sext i8 %115 to i32
%117 = icmp ne i32 %116, 46
%118 = zext i1 %117 to i32
%119 = and i32 %111, %118
%120 = icmp ne i32 %119, 0
br i1 %120, label %121, label %122
121: ; preds = %32
store i32 1, i32* %6
br label %122
122: ; preds = %121, %32
%123 = load i32, i32* %4
%124 = icmp sgt i32 %123, 1
br i1 %124, label %125, label %126
125: ; preds = %122
store i32 1, i32* %6
br label %126
126: ; preds = %125, %122
%127 = load i32, i32* %3
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %128
%130 = load i8, i8* %129
%131 = sext i8 %130 to i32
%132 = icmp eq i32 %131, 46
br i1 %132, label %133, label %137
133: ; preds = %126
%134 = load i32, i32* %4
%135 = add nsw i32 %134, 1
store i32 %135, i32* %4
%136 = load i32, i32* %3
store i32 %136, i32* %5
br label %137
137: ; preds = %133, %126
br label %138
138: ; preds = %137
%139 = load i32, i32* %3
%140 = add nsw i32 %139, 1
store i32 %140, i32* %3
br label %29
141: ; preds = %29
store i32 0, i32* %7
store i32 4999, i32* %3
br label %142
142: ; preds = %161, %141
%143 = load i32, i32* %3
%144 = icmp sgt i32 %143, -1
br i1 %144, label %145, label %164
145: ; preds = %142
%146 = load i32, i32* %7
%147 = icmp eq i32 %146, 0
%148 = zext i1 %147 to i32
%149 = load i32, i32* %3
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %150
%152 = load i8, i8* %151
%153 = sext i8 %152 to i32
%154 = icmp ne i32 %153, 48
%155 = zext i1 %154 to i32
%156 = and i32 %148, %155
%157 = icmp ne i32 %156, 0
br i1 %157, label %158, label %160
158: ; preds = %145
store i32 1, i32* %7
%159 = load i32, i32* %3
store i32 %159, i32* %9
br label %160
160: ; preds = %158, %145
br label %161
161: ; preds = %160
%162 = load i32, i32* %3
%163 = add nsw i32 %162, -1
store i32 %163, i32* %3
br label %142
164: ; preds = %142
store i32 0, i32* %5
br i1 false, label %165, label %166
165: ; preds = %164
store i32 1, i32* %6
br label %166
166: ; preds = %165, %164
store i32 0, i32* %6
br i1 false, label %167, label %425
167: ; preds = %166
store i32 -1, i32* %5
br i1 true, label %168, label %289
168: ; preds = %167
store i32 0, i32* %8
store i32 0, i32* %3
br label %169
169: ; preds = %283, %168
%170 = load i32, i32* %3
%171 = icmp slt i32 %170, 5000
br i1 %171, label %172, label %286
172: ; preds = %169
%173 = load i32, i32* %3
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %174
%176 = load i8, i8* %175
%177 = sext i8 %176 to i32
%178 = icmp eq i32 %177, 48
br i1 %178, label %179, label %183
179: ; preds = %172
%180 = load i32, i32* %8
%181 = mul nsw i32 10, %180
%182 = add nsw i32 %181, 0
store i32 %182, i32* %8
br label %183
183: ; preds = %179, %172
%184 = load i32, i32* %3
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %185
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = icmp eq i32 %188, 49
br i1 %189, label %190, label %194
190: ; preds = %183
%191 = load i32, i32* %8
%192 = mul nsw i32 10, %191
%193 = add nsw i32 %192, 1
store i32 %193, i32* %8
br label %194
194: ; preds = %190, %183
%195 = load i32, i32* %3
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %196
%198 = load i8, i8* %197
%199 = sext i8 %198 to i32
%200 = icmp eq i32 %199, 50
br i1 %200, label %201, label %205
201: ; preds = %194
%202 = load i32, i32* %8
%203 = mul nsw i32 10, %202
%204 = add nsw i32 %203, 2
store i32 %204, i32* %8
br label %205
205: ; preds = %201, %194
%206 = load i32, i32* %3
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %207
%209 = load i8, i8* %208
%210 = sext i8 %209 to i32
%211 = icmp eq i32 %210, 51
br i1 %211, label %212, label %216
212: ; preds = %205
%213 = load i32, i32* %8
%214 = mul nsw i32 10, %213
%215 = add nsw i32 %214, 3
store i32 %215, i32* %8
br label %216
216: ; preds = %212, %205
%217 = load i32, i32* %3
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %218
%220 = load i8, i8* %219
%221 = sext i8 %220 to i32
%222 = icmp eq i32 %221, 52
br i1 %222, label %223, label %227
223: ; preds = %216
%224 = load i32, i32* %8
%225 = mul nsw i32 10, %224
%226 = add nsw i32 %225, 4
store i32 %226, i32* %8
br label %227
227: ; preds = %223, %216
%228 = load i32, i32* %3
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %229
%231 = load i8, i8* %230
%232 = sext i8 %231 to i32
%233 = icmp eq i32 %232, 53
br i1 %233, label %234, label %238
234: ; preds = %227
%235 = load i32, i32* %8
%236 = mul nsw i32 10, %235
%237 = add nsw i32 %236, 5
store i32 %237, i32* %8
br label %238
238: ; preds = %234, %227
%239 = load i32, i32* %3
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %240
%242 = load i8, i8* %241
%243 = sext i8 %242 to i32
%244 = icmp eq i32 %243, 54
br i1 %244, label %245, label %249
245: ; preds = %238
%246 = load i32, i32* %8
%247 = mul nsw i32 10, %246
%248 = add nsw i32 %247, 6
store i32 %248, i32* %8
br label %249
249: ; preds = %245, %238
%250 = load i32, i32* %3
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %251
%253 = load i8, i8* %252
%254 = sext i8 %253 to i32
%255 = icmp eq i32 %254, 55
br i1 %255, label %256, label %260
256: ; preds = %249
%257 = load i32, i32* %8
%258 = mul nsw i32 10, %257
%259 = add nsw i32 %258, 7
store i32 %259, i32* %8
br label %260
260: ; preds = %256, %249
%261 = load i32, i32* %3
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %262
%264 = load i8, i8* %263
%265 = sext i8 %264 to i32
%266 = icmp eq i32 %265, 56
br i1 %266, label %267, label %271
267: ; preds = %260
%268 = load i32, i32* %8
%269 = mul nsw i32 10, %268
%270 = add nsw i32 %269, 8
store i32 %270, i32* %8
br label %271
271: ; preds = %267, %260
%272 = load i32, i32* %3
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %273
%275 = load i8, i8* %274
%276 = sext i8 %275 to i32
%277 = icmp eq i32 %276, 57
br i1 %277, label %278, label %282
278: ; preds = %271
%279 = load i32, i32* %8
%280 = mul nsw i32 10, %279
%281 = add nsw i32 %280, 9
store i32 %281, i32* %8
br label %282
282: ; preds = %278, %271
br label %283
283: ; preds = %282
%284 = load i32, i32* %3
%285 = add nsw i32 %284, 1
store i32 %285, i32* %3
br label %169
286: ; preds = %169
%287 = load i32, i32* %8
%288 = call i32 (i32, ...) bitcast (i32 (...)* @print to i32 (i32, ...)*)(i32 %287)
br label %424
289: ; preds = %167
store i32 0, i32* %3
br label %290
290: ; preds = %399, %289
%291 = load i32, i32* %3
%292 = icmp slt i32 %291, 5000
br i1 %292, label %293, label %402
293: ; preds = %290
%294 = load i32, i32* %3
%295 = load i32, i32* %5
%296 = icmp ne i32 %294, %295
br i1 %296, label %297, label %398
297: ; preds = %293
%298 = load i32, i32* %3
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %299
%301 = load i8, i8* %300
%302 = sext i8 %301 to i32
%303 = icmp eq i32 %302, 48
br i1 %303, label %304, label %307
304: ; preds = %297
%305 = load float, float* %1
%306 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %305, float 0.000000e+00)
store float %306, float* %1
br label %307
307: ; preds = %304, %297
%308 = load i32, i32* %3
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %309
%311 = load i8, i8* %310
%312 = sext i8 %311 to i32
%313 = icmp eq i32 %312, 49
br i1 %313, label %314, label %317
314: ; preds = %307
%315 = load float, float* %1
%316 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %315, float 1.000000e+00)
store float %316, float* %1
br label %317
317: ; preds = %314, %307
%318 = load i32, i32* %3
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %319
%321 = load i8, i8* %320
%322 = sext i8 %321 to i32
%323 = icmp eq i32 %322, 50
br i1 %323, label %324, label %327
324: ; preds = %317
%325 = load float, float* %1
%326 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %325, float 2.000000e+00)
store float %326, float* %1
br label %327
327: ; preds = %324, %317
%328 = load i32, i32* %3
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %329
%331 = load i8, i8* %330
%332 = sext i8 %331 to i32
%333 = icmp eq i32 %332, 51
br i1 %333, label %334, label %337
334: ; preds = %327
%335 = load float, float* %1
%336 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %335, float 3.000000e+00)
store float %336, float* %1
br label %337
337: ; preds = %334, %327
%338 = load i32, i32* %3
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %339
%341 = load i8, i8* %340
%342 = sext i8 %341 to i32
%343 = icmp eq i32 %342, 52
br i1 %343, label %344, label %347
344: ; preds = %337
%345 = load float, float* %1
%346 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %345, float 4.000000e+00)
store float %346, float* %1
br label %347
347: ; preds = %344, %337
%348 = load i32, i32* %3
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %349
%351 = load i8, i8* %350
%352 = sext i8 %351 to i32
%353 = icmp eq i32 %352, 53
br i1 %353, label %354, label %357
354: ; preds = %347
%355 = load float, float* %1
%356 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %355, float 5.000000e+00)
store float %356, float* %1
br label %357
357: ; preds = %354, %347
%358 = load i32, i32* %3
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %359
%361 = load i8, i8* %360
%362 = sext i8 %361 to i32
%363 = icmp eq i32 %362, 54
br i1 %363, label %364, label %367
364: ; preds = %357
%365 = load float, float* %1
%366 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %365, float 6.000000e+00)
store float %366, float* %1
br label %367
367: ; preds = %364, %357
%368 = load i32, i32* %3
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %369
%371 = load i8, i8* %370
%372 = sext i8 %371 to i32
%373 = icmp eq i32 %372, 55
br i1 %373, label %374, label %377
374: ; preds = %367
%375 = load float, float* %1
%376 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %375, float 7.000000e+00)
store float %376, float* %1
br label %377
377: ; preds = %374, %367
%378 = load i32, i32* %3
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %379
%381 = load i8, i8* %380
%382 = sext i8 %381 to i32
%383 = icmp eq i32 %382, 56
br i1 %383, label %384, label %387
384: ; preds = %377
%385 = load float, float* %1
%386 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %385, float 8.000000e+00)
store float %386, float* %1
br label %387
387: ; preds = %384, %377
%388 = load i32, i32* %3
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds [5000 x i8], [5000 x i8]* %10, i64 0, i64 %389
%391 = load i8, i8* %390
%392 = sext i8 %391 to i32
%393 = icmp eq i32 %392, 57
br i1 %393, label %394, label %397
394: ; preds = %387
%395 = load float, float* %1
%396 = call float @llvm.fmuladd.f32(float 1.000000e+01, float %395, float 9.000000e+00)
store float %396, float* %1
br label %397
397: ; preds = %394, %387
br label %398
398: ; preds = %397, %293
br label %399
399: ; preds = %398
%400 = load i32, i32* %3
%401 = add nsw i32 %400, 1
store i32 %401, i32* %3
br label %290
402: ; preds = %290
store i32 1, i32* %3
br label %403
403: ; preds = %413, %402
%404 = load i32, i32* %3
%405 = load i32, i32* %9
%406 = load i32, i32* %5
%407 = sub nsw i32 %405, %406
%408 = add nsw i32 %407, 1
%409 = icmp slt i32 %404, %408
br i1 %409, label %410, label %416
410: ; preds = %403
%411 = load i32, i32* %2
%412 = mul nsw i32 %411, 10
store i32 %412, i32* %2
br label %413
413: ; preds = %410
%414 = load i32, i32* %3
%415 = add nsw i32 %414, 1
store i32 %415, i32* %3
br label %403
416: ; preds = %403
%417 = load float, float* %1
%418 = load i32, i32* %2
%419 = sitofp i32 %418 to float
%420 = fdiv float %417, %419
store float %420, float* %1
%421 = load float, float* %1
%422 = fpext float %421 to double
%423 = call i32 (double, ...) bitcast (i32 (...)* @print to i32 (double, ...)*)(double %422)
br label %424
424: ; preds = %416, %286
br label %425
425: ; preds = %424, %166
%426 = load i32, i32* %6
%427 = icmp eq i32 %426, 1
br i1 %427, label %428, label %430
428: ; preds = %425
%429 = call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
br label %430
430: ; preds = %428, %425
ret void
}

LLVM IR (-O2):
@.str = [13 x i8] c"Press number\00"
define void @main() {
%1 = alloca [5000 x i8]
%2 = getelementptr inbounds [5000 x i8], [5000 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0))
%4 = call i32 (i8*, ...) bitcast (i32 (...)* @getid to i32 (i8*, ...)*)(i8* %2)
ret void
}