#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 check(float average) {
  printf("In will check if the average is a prime number: ");
  int media = (int)average;
  if (media % 2 == 0) {
    if (media == 2) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 3 == 0) {
    if (media == 3) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 5 == 0) {
    if (media == 5) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 7 == 0) {
    if (media == 7) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 11 == 0) {
    if (media == 11) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 13 == 0) {
    if (media == 13) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 17 == 0) {
    if (media == 17) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 19 == 0) {
    if (media == 19) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 29 == 0) {
    if (media == 29) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else if (media % 31 == 0) {
    if (media == 2) {
      printf("the number %d is a prime number", media);
    } else
      printf("The number %d Is not a prime", media);
  } else {
    printf("is a prime number");
  }
  return media;
}


x86 assembly (clang, -O0):
<check>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movss  %xmm0,-0x4(%rbp)
lea    0xedc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cvttss2si -0x4(%rbp),%eax
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    117d <check+0x6d>
cmpl   $0x2,-0x8(%rbp)
jne    1167 <check+0x57>
mov    -0x8(%rbp),%esi
lea    0xed6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1178 <check+0x68>
mov    -0x8(%rbp),%esi
lea    0xee0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1452 <check+0x342>
mov    -0x8(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    11c7 <check+0xb7>
cmpl   $0x3,-0x8(%rbp)
jne    11b1 <check+0xa1>
mov    -0x8(%rbp),%esi
lea    0xe8c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    11c2 <check+0xb2>
mov    -0x8(%rbp),%esi
lea    0xe96(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    144d <check+0x33d>
mov    -0x8(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1211 <check+0x101>
cmpl   $0x5,-0x8(%rbp)
jne    11fb <check+0xeb>
mov    -0x8(%rbp),%esi
lea    0xe42(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    120c <check+0xfc>
mov    -0x8(%rbp),%esi
lea    0xe4c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1448 <check+0x338>
mov    -0x8(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    125b <check+0x14b>
cmpl   $0x7,-0x8(%rbp)
jne    1245 <check+0x135>
mov    -0x8(%rbp),%esi
lea    0xdf8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1256 <check+0x146>
mov    -0x8(%rbp),%esi
lea    0xe02(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1443 <check+0x333>
mov    -0x8(%rbp),%eax
mov    $0xb,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    12a5 <check+0x195>
cmpl   $0xb,-0x8(%rbp)
jne    128f <check+0x17f>
mov    -0x8(%rbp),%esi
lea    0xdae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12a0 <check+0x190>
mov    -0x8(%rbp),%esi
lea    0xdb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    143e <check+0x32e>
mov    -0x8(%rbp),%eax
mov    $0xd,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    12ef <check+0x1df>
cmpl   $0xd,-0x8(%rbp)
jne    12d9 <check+0x1c9>
mov    -0x8(%rbp),%esi
lea    0xd64(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12ea <check+0x1da>
mov    -0x8(%rbp),%esi
lea    0xd6e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1439 <check+0x329>
mov    -0x8(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1339 <check+0x229>
cmpl   $0x11,-0x8(%rbp)
jne    1323 <check+0x213>
mov    -0x8(%rbp),%esi
lea    0xd1a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1334 <check+0x224>
mov    -0x8(%rbp),%esi
lea    0xd24(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1434 <check+0x324>
mov    -0x8(%rbp),%eax
mov    $0x13,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1383 <check+0x273>
cmpl   $0x13,-0x8(%rbp)
jne    136d <check+0x25d>
mov    -0x8(%rbp),%esi
lea    0xcd0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    137e <check+0x26e>
mov    -0x8(%rbp),%esi
lea    0xcda(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    142f <check+0x31f>
mov    -0x8(%rbp),%eax
mov    $0x1d,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    13cd <check+0x2bd>
cmpl   $0x1d,-0x8(%rbp)
jne    13b7 <check+0x2a7>
mov    -0x8(%rbp),%esi
lea    0xc86(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13c8 <check+0x2b8>
mov    -0x8(%rbp),%esi
lea    0xc90(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    142a <check+0x31a>
mov    -0x8(%rbp),%eax
mov    $0x1f,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1417 <check+0x307>
cmpl   $0x2,-0x8(%rbp)
jne    1401 <check+0x2f1>
mov    -0x8(%rbp),%esi
lea    0xc3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1412 <check+0x302>
mov    -0x8(%rbp),%esi
lea    0xc46(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1425 <check+0x315>
lea    0xc21(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    142a <check+0x31a>
jmp    142f <check+0x31f>
jmp    1434 <check+0x324>
jmp    1439 <check+0x329>
jmp    143e <check+0x32e>
jmp    1443 <check+0x333>
jmp    1448 <check+0x338>
jmp    144d <check+0x33d>
jmp    1452 <check+0x342>
mov    -0x8(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check>:
push   %rbx
sub    $0x10,%rsp
movss  %xmm0,0xc(%rsp)
lea    0xede(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
cvttss2si 0xc(%rsp),%ebx
test   $0x1,%bl
jne    114e <check+0x3e>
cmp    $0x2,%ebx
jne    12ca <check+0x1ba>
lea    0xeed(%rip),%rdi
mov    $0x2,%esi
jmp    12d3 <check+0x1c3>
imul   $0xaaaaaaab,%ebx,%eax
add    $0x2aaaaaaa,%eax
cmp    $0x55555554,%eax
jbe    1227 <check+0x117>
imul   $0xcccccccd,%ebx,%eax
add    $0x19999999,%eax
cmp    $0x33333332,%eax
jbe    1241 <check+0x131>
imul   $0xb6db6db7,%ebx,%eax
add    $0x12492492,%eax
cmp    $0x24924924,%eax
jbe    1258 <check+0x148>
imul   $0xba2e8ba3,%ebx,%eax
add    $0xba2e8ba,%eax
cmp    $0x1745d174,%eax
jbe    126b <check+0x15b>
imul   $0xc4ec4ec5,%ebx,%eax
add    $0x9d89d89,%eax
cmp    $0x13b13b12,%eax
jbe    127e <check+0x16e>
imul   $0xf0f0f0f1,%ebx,%eax
add    $0x7878787,%eax
cmp    $0xf0f0f0e,%eax
jbe    1291 <check+0x181>
imul   $0x286bca1b,%ebx,%eax
add    $0x6bca1af,%eax
cmp    $0xd79435e,%eax
jbe    12a4 <check+0x194>
imul   $0x4f72c235,%ebx,%eax
add    $0x469ee58,%eax
cmp    $0x8d3dcb0,%eax
jbe    12b7 <check+0x1a7>
imul   $0xbdef7bdf,%ebx,%eax
add    $0x4210842,%eax
cmp    $0x8421084,%eax
jbe    1134 <check+0x24>
lea    0xe24(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
jmp    12da <check+0x1ca>
cmp    $0x3,%ebx
jne    12ca <check+0x1ba>
lea    0xdfa(%rip),%rdi
mov    $0x3,%esi
jmp    12d3 <check+0x1c3>
cmp    $0x5,%ebx
jne    12ca <check+0x1ba>
lea    0xde0(%rip),%rdi
mov    $0x5,%esi
jmp    12d3 <check+0x1c3>
cmp    $0x7,%ebx
jne    12ca <check+0x1ba>
lea    0xdcd(%rip),%rdi
mov    $0x7,%esi
jmp    12d3 <check+0x1c3>
cmp    $0xb,%ebx
jne    12ca <check+0x1ba>
lea    0xdba(%rip),%rdi
mov    $0xb,%esi
jmp    12d3 <check+0x1c3>
cmp    $0xd,%ebx
jne    12ca <check+0x1ba>
lea    0xda7(%rip),%rdi
mov    $0xd,%esi
jmp    12d3 <check+0x1c3>
cmp    $0x11,%ebx
jne    12ca <check+0x1ba>
lea    0xd94(%rip),%rdi
mov    $0x11,%esi
jmp    12d3 <check+0x1c3>
cmp    $0x13,%ebx
jne    12ca <check+0x1ba>
lea    0xd81(%rip),%rdi
mov    $0x13,%esi
jmp    12d3 <check+0x1c3>
cmp    $0x1d,%ebx
jne    12ca <check+0x1ba>
lea    0xd6e(%rip),%rdi
mov    $0x1d,%esi
jmp    12d3 <check+0x1c3>
lea    0xd80(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %ebx,%eax
add    $0x10,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [49 x i8] c"In will check if the average is a prime number: \00"
@.str.1 = [32 x i8] c"the number %d is a prime number\00"
@.str.2 = [29 x i8] c"The number %d Is not a prime\00"
@.str.3 = [18 x i8] c"is a prime number\00"
define i32 @check(float %0) {
%2 = alloca float
%3 = alloca i32
store float %0, float* %2
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0))
%5 = load float, float* %2
%6 = fptosi float %5 to i32
store i32 %6, i32* %3
%7 = load i32, i32* %3
%8 = srem i32 %7, 2
%9 = icmp eq i32 %8, 0
br i1 %9, label %10, label %20
10: ; preds = %1
%11 = load i32, i32* %3
%12 = icmp eq i32 %11, 2
br i1 %12, label %13, label %16
13: ; preds = %10
%14 = load i32, i32* %3
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %14)
br label %19
16: ; preds = %10
%17 = load i32, i32* %3
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %17)
br label %19
19: ; preds = %16, %13
br label %157
20: ; preds = %1
%21 = load i32, i32* %3
%22 = srem i32 %21, 3
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %34
24: ; preds = %20
%25 = load i32, i32* %3
%26 = icmp eq i32 %25, 3
br i1 %26, label %27, label %30
27: ; preds = %24
%28 = load i32, i32* %3
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %28)
br label %33
30: ; preds = %24
%31 = load i32, i32* %3
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %31)
br label %33
33: ; preds = %30, %27
br label %156
34: ; preds = %20
%35 = load i32, i32* %3
%36 = srem i32 %35, 5
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %48
38: ; preds = %34
%39 = load i32, i32* %3
%40 = icmp eq i32 %39, 5
br i1 %40, label %41, label %44
41: ; preds = %38
%42 = load i32, i32* %3
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %42)
br label %47
44: ; preds = %38
%45 = load i32, i32* %3
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %45)
br label %47
47: ; preds = %44, %41
br label %155
48: ; preds = %34
%49 = load i32, i32* %3
%50 = srem i32 %49, 7
%51 = icmp eq i32 %50, 0
br i1 %51, label %52, label %62
52: ; preds = %48
%53 = load i32, i32* %3
%54 = icmp eq i32 %53, 7
br i1 %54, label %55, label %58
55: ; preds = %52
%56 = load i32, i32* %3
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %56)
br label %61
58: ; preds = %52
%59 = load i32, i32* %3
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %59)
br label %61
61: ; preds = %58, %55
br label %154
62: ; preds = %48
%63 = load i32, i32* %3
%64 = srem i32 %63, 11
%65 = icmp eq i32 %64, 0
br i1 %65, label %66, label %76
66: ; preds = %62
%67 = load i32, i32* %3
%68 = icmp eq i32 %67, 11
br i1 %68, label %69, label %72
69: ; preds = %66
%70 = load i32, i32* %3
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %70)
br label %75
72: ; preds = %66
%73 = load i32, i32* %3
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %73)
br label %75
75: ; preds = %72, %69
br label %153
76: ; preds = %62
%77 = load i32, i32* %3
%78 = srem i32 %77, 13
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %90
80: ; preds = %76
%81 = load i32, i32* %3
%82 = icmp eq i32 %81, 13
br i1 %82, label %83, label %86
83: ; preds = %80
%84 = load i32, i32* %3
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %84)
br label %89
86: ; preds = %80
%87 = load i32, i32* %3
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %87)
br label %89
89: ; preds = %86, %83
br label %152
90: ; preds = %76
%91 = load i32, i32* %3
%92 = srem i32 %91, 17
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %104
94: ; preds = %90
%95 = load i32, i32* %3
%96 = icmp eq i32 %95, 17
br i1 %96, label %97, label %100
97: ; preds = %94
%98 = load i32, i32* %3
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %98)
br label %103
100: ; preds = %94
%101 = load i32, i32* %3
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %101)
br label %103
103: ; preds = %100, %97
br label %151
104: ; preds = %90
%105 = load i32, i32* %3
%106 = srem i32 %105, 19
%107 = icmp eq i32 %106, 0
br i1 %107, label %108, label %118
108: ; preds = %104
%109 = load i32, i32* %3
%110 = icmp eq i32 %109, 19
br i1 %110, label %111, label %114
111: ; preds = %108
%112 = load i32, i32* %3
%113 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %112)
br label %117
114: ; preds = %108
%115 = load i32, i32* %3
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %115)
br label %117
117: ; preds = %114, %111
br label %150
118: ; preds = %104
%119 = load i32, i32* %3
%120 = srem i32 %119, 29
%121 = icmp eq i32 %120, 0
br i1 %121, label %122, label %132
122: ; preds = %118
%123 = load i32, i32* %3
%124 = icmp eq i32 %123, 29
br i1 %124, label %125, label %128
125: ; preds = %122
%126 = load i32, i32* %3
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %126)
br label %131
128: ; preds = %122
%129 = load i32, i32* %3
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %129)
br label %131
131: ; preds = %128, %125
br label %149
132: ; preds = %118
%133 = load i32, i32* %3
%134 = srem i32 %133, 31
%135 = icmp eq i32 %134, 0
br i1 %135, label %136, label %146
136: ; preds = %132
%137 = load i32, i32* %3
%138 = icmp eq i32 %137, 2
br i1 %138, label %139, label %142
139: ; preds = %136
%140 = load i32, i32* %3
%141 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %140)
br label %145
142: ; preds = %136
%143 = load i32, i32* %3
%144 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %143)
br label %145
145: ; preds = %142, %139
br label %148
146: ; preds = %132
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
br label %148
148: ; preds = %146, %145
br label %149
149: ; preds = %148, %131
br label %150
150: ; preds = %149, %117
br label %151
151: ; preds = %150, %103
br label %152
152: ; preds = %151, %89
br label %153
153: ; preds = %152, %75
br label %154
154: ; preds = %153, %61
br label %155
155: ; preds = %154, %47
br label %156
156: ; preds = %155, %33
br label %157
157: ; preds = %156, %19
%158 = load i32, i32* %3
ret i32 %158
}

LLVM IR (-O2):
@.str = [49 x i8] c"In will check if the average is a prime number: \00"
@.str.1 = [32 x i8] c"the number %d is a prime number\00"
@.str.2 = [29 x i8] c"The number %d Is not a prime\00"
@.str.3 = [18 x i8] c"is a prime number\00"
define i32 @check(float %0) {
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0))
%3 = fptosi float %0 to i32
%4 = and i32 %3, 1
%5 = icmp eq i32 %4, 0
br i1 %5, label %6, label %12
6: ; preds = %1
%7 = icmp eq i32 %3, 2
br i1 %7, label %8, label %10
8: ; preds = %6
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 2)
br label %95
10: ; preds = %6
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
12: ; preds = %1
%13 = srem i32 %3, 3
%14 = icmp eq i32 %13, 0
br i1 %14, label %15, label %21
15: ; preds = %12
%16 = icmp eq i32 %3, 3
br i1 %16, label %17, label %19
17: ; preds = %15
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 3)
br label %95
19: ; preds = %15
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
21: ; preds = %12
%22 = srem i32 %3, 5
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %30
24: ; preds = %21
%25 = icmp eq i32 %3, 5
br i1 %25, label %26, label %28
26: ; preds = %24
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 5)
br label %95
28: ; preds = %24
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
30: ; preds = %21
%31 = srem i32 %3, 7
%32 = icmp eq i32 %31, 0
br i1 %32, label %33, label %39
33: ; preds = %30
%34 = icmp eq i32 %3, 7
br i1 %34, label %35, label %37
35: ; preds = %33
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 7)
br label %95
37: ; preds = %33
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
39: ; preds = %30
%40 = srem i32 %3, 11
%41 = icmp eq i32 %40, 0
br i1 %41, label %42, label %48
42: ; preds = %39
%43 = icmp eq i32 %3, 11
br i1 %43, label %44, label %46
44: ; preds = %42
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 11)
br label %95
46: ; preds = %42
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
48: ; preds = %39
%49 = srem i32 %3, 13
%50 = icmp eq i32 %49, 0
br i1 %50, label %51, label %57
51: ; preds = %48
%52 = icmp eq i32 %3, 13
br i1 %52, label %53, label %55
53: ; preds = %51
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 13)
br label %95
55: ; preds = %51
%56 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
57: ; preds = %48
%58 = srem i32 %3, 17
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %66
60: ; preds = %57
%61 = icmp eq i32 %3, 17
br i1 %61, label %62, label %64
62: ; preds = %60
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 17)
br label %95
64: ; preds = %60
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
66: ; preds = %57
%67 = srem i32 %3, 19
%68 = icmp eq i32 %67, 0
br i1 %68, label %69, label %75
69: ; preds = %66
%70 = icmp eq i32 %3, 19
br i1 %70, label %71, label %73
71: ; preds = %69
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 19)
br label %95
73: ; preds = %69
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
75: ; preds = %66
%76 = srem i32 %3, 29
%77 = icmp eq i32 %76, 0
br i1 %77, label %78, label %84
78: ; preds = %75
%79 = icmp eq i32 %3, 29
br i1 %79, label %80, label %82
80: ; preds = %78
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 29)
br label %95
82: ; preds = %78
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
84: ; preds = %75
%85 = srem i32 %3, 31
%86 = icmp eq i32 %85, 0
br i1 %86, label %87, label %93
87: ; preds = %84
%88 = icmp eq i32 %3, 2
br i1 %88, label %89, label %91
89: ; preds = %87
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 2)
br label %95
91: ; preds = %87
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %3)
br label %95
93: ; preds = %84
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
br label %95
95: ; preds = %19, %17, %37, %35, %55, %53, %73, %71, %93, %91, %89, %80, %82, %62, %64, %44, %46, %26, %28, %8, %10
ret i32 %3
}