#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, int *);
int main(void) {
  int i;
  int j;
  int jan;
  int feb;
  int apr;
  int firstDayOfMonth;
  int numberOfDays;
  int LeapYear;
  jan = 31;
  feb = 28;
  apr = 30;
  do {
    printf("What day does January start with? Please enter a value of 1 to 7, "
           "on a week going from 1 for Sunday, and 7 for Saturday\n");
    scanf("%d", &firstDayOfMonth);
  } while (firstDayOfMonth < 1 || firstDayOfMonth > 7);
  do {
    printf("Is it a leap year? Enter 1 for YES or 2 for NO\n");
    scanf("%d", &LeapYear);
  } while (LeapYear < 1 || LeapYear > 2);
  if (LeapYear == 1) {
    feb = 29;
  } else {
    feb = 28;
  }
  numberOfDays = jan;
  printf("January \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = feb;
  printf("February \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("March \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = apr;
  printf("April \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("May \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = apr;
  printf("June \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("July \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("August \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = apr;
  printf("September \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("October \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = apr;
  printf("November \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
  numberOfDays = jan;
  printf("December \n Sun \t Mon \t Tue \t Wed \t Thu \t Fri \t Sat \t \n");
  for (i = 1; i < firstDayOfMonth; i++) {
    printf("\t");
  }
  for (j = 1; j <= numberOfDays; j++) {
    printf("%d \t", j);
    if ((firstDayOfMonth) % 7 == 0) {
      printf("\n");
    }
    firstDayOfMonth = ((firstDayOfMonth) % 7) + 1;
  }
  printf("\n");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1f,-0x10(%rbp)
movl   $0x1c,-0x14(%rbp)
movl   $0x1e,-0x18(%rbp)
lea    0xeb5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf20(%rip),%rdi
lea    -0x1c(%rbp),%rsi
call   1040 <scanf@plt>
mov    $0x1,%al
cmpl   $0x1,-0x1c(%rbp)
mov    %al,-0x25(%rbp)
jl     117b <main+0x5b>
cmpl   $0x7,-0x1c(%rbp)
setg   %al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
test   $0x1,%al
jne    1144 <main+0x24>
jmp    118b <main+0x6b>
lea    0xeea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xed9(%rip),%rdi
lea    -0x24(%rbp),%rsi
call   1040 <scanf@plt>
mov    $0x1,%al
cmpl   $0x1,-0x24(%rbp)
mov    %al,-0x26(%rbp)
jl     11c2 <main+0xa2>
cmpl   $0x2,-0x24(%rbp)
setg   %al
mov    %al,-0x26(%rbp)
mov    -0x26(%rbp),%al
test   $0x1,%al
jne    118b <main+0x6b>
cmpl   $0x1,-0x24(%rbp)
jne    11e3 <main+0xc3>
movl   $0x1d,-0x14(%rbp)
jmp    11ea <main+0xca>
movl   $0x1c,-0x14(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xeb5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    122d <main+0x10d>
lea    0xecd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1205 <main+0xe5>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1292 <main+0x172>
mov    -0xc(%rbp),%esi
lea    0xe98(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1273 <main+0x153>
lea    0xf7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1234 <main+0x114>
lea    0xf50(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xe3a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12e3 <main+0x1c3>
lea    0xe17(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12bb <main+0x19b>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1348 <main+0x228>
mov    -0xc(%rbp),%esi
lea    0xde2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1329 <main+0x209>
lea    0xec7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    12ea <main+0x1ca>
lea    0xe9a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xdbb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1399 <main+0x279>
lea    0xd61(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1371 <main+0x251>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     13fe <main+0x2de>
mov    -0xc(%rbp),%esi
lea    0xd2c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    13df <main+0x2bf>
lea    0xe11(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13a0 <main+0x280>
lea    0xde4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xd39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    144f <main+0x32f>
lea    0xcab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1427 <main+0x307>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     14b4 <main+0x394>
mov    -0xc(%rbp),%esi
lea    0xc76(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1495 <main+0x375>
lea    0xd5b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1456 <main+0x336>
lea    0xd2e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xcb7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1505 <main+0x3e5>
lea    0xbf5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14dd <main+0x3bd>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     156a <main+0x44a>
mov    -0xc(%rbp),%esi
lea    0xbc0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    154b <main+0x42b>
lea    0xca5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    150c <main+0x3ec>
lea    0xc78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xc33(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    15bb <main+0x49b>
lea    0xb3f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1593 <main+0x473>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1620 <main+0x500>
mov    -0xc(%rbp),%esi
lea    0xb0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1601 <main+0x4e1>
lea    0xbef(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    15c2 <main+0x4a2>
lea    0xbc2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xbb0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1671 <main+0x551>
lea    0xa89(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1649 <main+0x529>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     16d6 <main+0x5b6>
mov    -0xc(%rbp),%esi
lea    0xa54(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16b7 <main+0x597>
lea    0xb39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1678 <main+0x558>
lea    0xb0c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xb2d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1727 <main+0x607>
lea    0x9d3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16ff <main+0x5df>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     178c <main+0x66c>
mov    -0xc(%rbp),%esi
lea    0x99e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    176d <main+0x64d>
lea    0xa83(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    172e <main+0x60e>
lea    0xa56(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xaac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    17dd <main+0x6bd>
lea    0x91d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    17b5 <main+0x695>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1842 <main+0x722>
mov    -0xc(%rbp),%esi
lea    0x8e8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1823 <main+0x703>
lea    0x9cd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    17e4 <main+0x6c4>
lea    0x9a0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0xa2e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1893 <main+0x773>
lea    0x867(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    186b <main+0x74b>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     18f8 <main+0x7d8>
mov    -0xc(%rbp),%esi
lea    0x832(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    18d9 <main+0x7b9>
lea    0x917(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    189a <main+0x77a>
lea    0x8ea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x9ae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1949 <main+0x829>
lea    0x7b1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1921 <main+0x801>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     19ae <main+0x88e>
mov    -0xc(%rbp),%esi
lea    0x77c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    198f <main+0x86f>
lea    0x861(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1950 <main+0x830>
lea    0x834(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
lea    0x92f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x1,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    19ff <main+0x8df>
lea    0x6fb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    19d7 <main+0x8b7>
movl   $0x1,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x20(%rbp),%eax
jg     1a64 <main+0x944>
mov    -0xc(%rbp),%esi
lea    0x6c6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1a45 <main+0x925>
lea    0x7ab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1a06 <main+0x8e6>
lea    0x77e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x10,%rsp
lea    0xeb5(%rip),%r14
lea    0xea6(%rip),%r15
lea    0x8(%rsp),%rbx
nop
mov    %r14,%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1060 <scanf@plt>
mov    0x8(%rsp),%eax
add    $0xfffffff8,%eax
cmp    $0xfffffff9,%eax
jb     1160 <main+0x20>
lea    0xefa(%rip),%r14
lea    0xe73(%rip),%r15
lea    0xc(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %r14,%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1060 <scanf@plt>
mov    0xc(%rsp),%r12d
lea    -0x3(%r12),%eax
cmp    $0xfffffffe,%eax
jb     11a0 <main+0x60>
lea    0xee6(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     11f3 <main+0xb3>
mov    $0x1,%ebx
nopw   0x0(%rax,%rax,1)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     11e0 <main+0xa0>
mov    $0x1,%ebx
lea    0xe04(%rip),%r14
jmp    121f <main+0xdf>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     1287 <main+0x147>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1210 <main+0xd0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1210 <main+0xd0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe4c(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     12c3 <main+0x183>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     12b0 <main+0x170>
xor    %ebp,%ebp
cmp    $0x1,%r12d
sete   %bpl
add    $0x1d,%ebp
mov    $0x1,%ebx
lea    0xd27(%rip),%r14
jmp    12ee <main+0x1ae>
xchg   %ax,%ax
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    %ebx,%ebp
je     1356 <main+0x216>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    12e0 <main+0x1a0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    12e0 <main+0x1a0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xdb3(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1393 <main+0x253>
mov    $0x1,%ebx
nopl   0x0(%rax,%rax,1)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1380 <main+0x240>
mov    $0x1,%ebx
lea    0xc64(%rip),%r14
jmp    13bf <main+0x27f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     1427 <main+0x2e7>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    13b0 <main+0x270>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    13b0 <main+0x270>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd15(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1463 <main+0x323>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1450 <main+0x310>
mov    $0x1,%ebx
lea    0xb94(%rip),%r14
jmp    148f <main+0x34f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x1f,%ebx
je     14f7 <main+0x3b7>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1480 <main+0x340>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1480 <main+0x340>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xc78(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1533 <main+0x3f3>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1520 <main+0x3e0>
mov    $0x1,%ebx
lea    0xac4(%rip),%r14
jmp    155f <main+0x41f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     15c7 <main+0x487>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1550 <main+0x410>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1550 <main+0x410>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xbd9(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1603 <main+0x4c3>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     15f0 <main+0x4b0>
mov    $0x1,%ebx
lea    0x9f4(%rip),%r14
jmp    162f <main+0x4ef>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x1f,%ebx
je     1697 <main+0x557>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1620 <main+0x4e0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1620 <main+0x4e0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xb3b(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     16d3 <main+0x593>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     16c0 <main+0x580>
mov    $0x1,%ebx
lea    0x924(%rip),%r14
jmp    16ff <main+0x5bf>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     1767 <main+0x627>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    16f0 <main+0x5b0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    16f0 <main+0x5b0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xa9d(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     17a3 <main+0x663>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1790 <main+0x650>
mov    $0x1,%ebx
lea    0x854(%rip),%r14
jmp    17cf <main+0x68f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     1837 <main+0x6f7>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    17c0 <main+0x680>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    17c0 <main+0x680>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xa01(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1873 <main+0x733>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1860 <main+0x720>
mov    $0x1,%ebx
lea    0x784(%rip),%r14
jmp    189f <main+0x75f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x1f,%ebx
je     1907 <main+0x7c7>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1890 <main+0x750>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1890 <main+0x750>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x968(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1943 <main+0x803>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1930 <main+0x7f0>
mov    $0x1,%ebx
lea    0x6b4(%rip),%r14
jmp    196f <main+0x82f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     19d7 <main+0x897>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1960 <main+0x820>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1960 <main+0x820>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x8cd(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1a13 <main+0x8d3>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1a00 <main+0x8c0>
mov    $0x1,%ebx
lea    0x5e4(%rip),%r14
jmp    1a3f <main+0x8ff>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x1f,%ebx
je     1aa7 <main+0x967>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1a30 <main+0x8f0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1a30 <main+0x8f0>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x833(%rip),%rdi
call   1040 <puts@plt>
cmpl   $0x2,0x8(%rsp)
jl     1ae3 <main+0x9a3>
mov    $0x1,%ebx
nopl   0x0(%rax)
mov    $0x9,%edi
call   1030 <putchar@plt>
add    $0x1,%ebx
cmp    0x8(%rsp),%ebx
jl     1ad0 <main+0x990>
mov    $0x1,%ebx
lea    0x514(%rip),%r14
jmp    1b0f <main+0x9cf>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%eax
mov    %eax,0x8(%rsp)
add    $0x1,%ebx
cmp    $0x20,%ebx
je     1b77 <main+0xa37>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jne    1b00 <main+0x9c0>
mov    $0xa,%edi
call   1030 <putchar@plt>
movslq 0x8(%rsp),%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
jmp    1b00 <main+0x9c0>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str.1 = [3 x i8] c"%d\00"
@.str.5 = [5 x i8] c"%d \09\00"
@str = [120 x i8] c"What day does January start with? Please enter a value of 1 to 7, on a week going from 1 for Sunday, and 7 for Saturday\00"
@str.18 = [47 x i8] c"Is it a leap year? Enter 1 for YES or 2 for NO\00"
@str.19 = [53 x i8] c"January \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.20 = [54 x i8] c"February \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.21 = [51 x i8] c"March \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.22 = [51 x i8] c"April \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.23 = [49 x i8] c"May \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.24 = [50 x i8] c"June \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.25 = [50 x i8] c"July \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.26 = [52 x i8] c"August \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.27 = [55 x i8] c"September \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.28 = [53 x i8] c"October \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.29 = [54 x i8] c"November \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
@str.30 = [54 x i8] c"December \0A Sun \09 Mon \09 Tue \09 Wed \09 Thu \09 Fri \09 Sat \09 \00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = bitcast i32* %1 to i8*
%4 = bitcast i32* %2 to i8*
br label %5
5: ; preds = %5, %0
%6 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([120 x i8], [120 x i8]* @str, i64 0, i64 0))
%7 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %1)
%8 = load i32, i32* %1
%9 = add i32 %8, -8
%10 = icmp ult i32 %9, -7
br i1 %10, label %5, label %11
11: ; preds = %5, %11
%12 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.18, i64 0, i64 0))
%13 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %2)
%14 = load i32, i32* %2
%15 = add i32 %14, -3
%16 = icmp ult i32 %15, -2
br i1 %16, label %11, label %17
17: ; preds = %11
%18 = icmp eq i32 %14, 1
%19 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.19, i64 0, i64 0))
%20 = load i32, i32* %1
%21 = icmp sgt i32 %20, 1
br i1 %21, label %22, label %28
22: ; preds = %17, %22
%23 = phi i32 [ %25, %22 ], [ 1, %17 ]
%24 = call i32 @putchar(i32 9)
%25 = add nuw nsw i32 %23, 1
%26 = load i32, i32* %1
%27 = icmp slt i32 %25, %26
br i1 %27, label %22, label %28
28: ; preds = %22, %17
br label %29
29: ; preds = %28, %39
%30 = phi i32 [ %42, %39 ], [ 1, %28 ]
%31 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %30)
%32 = load i32, i32* %1
%33 = srem i32 %32, 7
%34 = icmp eq i32 %33, 0
br i1 %34, label %35, label %39
35: ; preds = %29
%36 = call i32 @putchar(i32 10)
%37 = load i32, i32* %1
%38 = srem i32 %37, 7
br label %39
39: ; preds = %35, %29
%40 = phi i32 [ %38, %35 ], [ %33, %29 ]
%41 = add nsw i32 %40, 1
store i32 %41, i32* %1
%42 = add nuw nsw i32 %30, 1
%43 = icmp eq i32 %42, 32
br i1 %43, label %44, label %29
44: ; preds = %39
%45 = call i32 @putchar(i32 10)
%46 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.20, i64 0, i64 0))
%47 = load i32, i32* %1
%48 = icmp sgt i32 %47, 1
br i1 %48, label %51, label %49
49: ; preds = %51, %44
%50 = select i1 %18, i32 30, i32 29
br label %57
51: ; preds = %44, %51
%52 = phi i32 [ %54, %51 ], [ 1, %44 ]
%53 = call i32 @putchar(i32 9)
%54 = add nuw nsw i32 %52, 1
%55 = load i32, i32* %1
%56 = icmp slt i32 %54, %55
br i1 %56, label %51, label %49
57: ; preds = %49, %67
%58 = phi i32 [ 1, %49 ], [ %70, %67 ]
%59 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %58)
%60 = load i32, i32* %1
%61 = srem i32 %60, 7
%62 = icmp eq i32 %61, 0
br i1 %62, label %63, label %67
63: ; preds = %57
%64 = call i32 @putchar(i32 10)
%65 = load i32, i32* %1
%66 = srem i32 %65, 7
br label %67
67: ; preds = %63, %57
%68 = phi i32 [ %66, %63 ], [ %61, %57 ]
%69 = add nsw i32 %68, 1
store i32 %69, i32* %1
%70 = add nuw nsw i32 %58, 1
%71 = icmp eq i32 %70, %50
br i1 %71, label %72, label %57
72: ; preds = %67
%73 = call i32 @putchar(i32 10)
%74 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.21, i64 0, i64 0))
%75 = load i32, i32* %1
%76 = icmp sgt i32 %75, 1
br i1 %76, label %77, label %83
77: ; preds = %72, %77
%78 = phi i32 [ %80, %77 ], [ 1, %72 ]
%79 = call i32 @putchar(i32 9)
%80 = add nuw nsw i32 %78, 1
%81 = load i32, i32* %1
%82 = icmp slt i32 %80, %81
br i1 %82, label %77, label %83
83: ; preds = %77, %72
br label %84
84: ; preds = %83, %94
%85 = phi i32 [ %97, %94 ], [ 1, %83 ]
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %85)
%87 = load i32, i32* %1
%88 = srem i32 %87, 7
%89 = icmp eq i32 %88, 0
br i1 %89, label %90, label %94
90: ; preds = %84
%91 = call i32 @putchar(i32 10)
%92 = load i32, i32* %1
%93 = srem i32 %92, 7
br label %94
94: ; preds = %90, %84
%95 = phi i32 [ %93, %90 ], [ %88, %84 ]
%96 = add nsw i32 %95, 1
store i32 %96, i32* %1
%97 = add nuw nsw i32 %85, 1
%98 = icmp eq i32 %97, 32
br i1 %98, label %99, label %84
99: ; preds = %94
%100 = call i32 @putchar(i32 10)
%101 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.22, i64 0, i64 0))
%102 = load i32, i32* %1
%103 = icmp sgt i32 %102, 1
br i1 %103, label %104, label %110
104: ; preds = %99, %104
%105 = phi i32 [ %107, %104 ], [ 1, %99 ]
%106 = call i32 @putchar(i32 9)
%107 = add nuw nsw i32 %105, 1
%108 = load i32, i32* %1
%109 = icmp slt i32 %107, %108
br i1 %109, label %104, label %110
110: ; preds = %104, %99
br label %111
111: ; preds = %110, %121
%112 = phi i32 [ %124, %121 ], [ 1, %110 ]
%113 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %112)
%114 = load i32, i32* %1
%115 = srem i32 %114, 7
%116 = icmp eq i32 %115, 0
br i1 %116, label %117, label %121
117: ; preds = %111
%118 = call i32 @putchar(i32 10)
%119 = load i32, i32* %1
%120 = srem i32 %119, 7
br label %121
121: ; preds = %117, %111
%122 = phi i32 [ %120, %117 ], [ %115, %111 ]
%123 = add nsw i32 %122, 1
store i32 %123, i32* %1
%124 = add nuw nsw i32 %112, 1
%125 = icmp eq i32 %124, 31
br i1 %125, label %126, label %111
126: ; preds = %121
%127 = call i32 @putchar(i32 10)
%128 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @str.23, i64 0, i64 0))
%129 = load i32, i32* %1
%130 = icmp sgt i32 %129, 1
br i1 %130, label %131, label %137
131: ; preds = %126, %131
%132 = phi i32 [ %134, %131 ], [ 1, %126 ]
%133 = call i32 @putchar(i32 9)
%134 = add nuw nsw i32 %132, 1
%135 = load i32, i32* %1
%136 = icmp slt i32 %134, %135
br i1 %136, label %131, label %137
137: ; preds = %131, %126
br label %138
138: ; preds = %137, %148
%139 = phi i32 [ %151, %148 ], [ 1, %137 ]
%140 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %139)
%141 = load i32, i32* %1
%142 = srem i32 %141, 7
%143 = icmp eq i32 %142, 0
br i1 %143, label %144, label %148
144: ; preds = %138
%145 = call i32 @putchar(i32 10)
%146 = load i32, i32* %1
%147 = srem i32 %146, 7
br label %148
148: ; preds = %144, %138
%149 = phi i32 [ %147, %144 ], [ %142, %138 ]
%150 = add nsw i32 %149, 1
store i32 %150, i32* %1
%151 = add nuw nsw i32 %139, 1
%152 = icmp eq i32 %151, 32
br i1 %152, label %153, label %138
153: ; preds = %148
%154 = call i32 @putchar(i32 10)
%155 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.24, i64 0, i64 0))
%156 = load i32, i32* %1
%157 = icmp sgt i32 %156, 1
br i1 %157, label %158, label %164
158: ; preds = %153, %158
%159 = phi i32 [ %161, %158 ], [ 1, %153 ]
%160 = call i32 @putchar(i32 9)
%161 = add nuw nsw i32 %159, 1
%162 = load i32, i32* %1
%163 = icmp slt i32 %161, %162
br i1 %163, label %158, label %164
164: ; preds = %158, %153
br label %165
165: ; preds = %164, %175
%166 = phi i32 [ %178, %175 ], [ 1, %164 ]
%167 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %166)
%168 = load i32, i32* %1
%169 = srem i32 %168, 7
%170 = icmp eq i32 %169, 0
br i1 %170, label %171, label %175
171: ; preds = %165
%172 = call i32 @putchar(i32 10)
%173 = load i32, i32* %1
%174 = srem i32 %173, 7
br label %175
175: ; preds = %171, %165
%176 = phi i32 [ %174, %171 ], [ %169, %165 ]
%177 = add nsw i32 %176, 1
store i32 %177, i32* %1
%178 = add nuw nsw i32 %166, 1
%179 = icmp eq i32 %178, 31
br i1 %179, label %180, label %165
180: ; preds = %175
%181 = call i32 @putchar(i32 10)
%182 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.25, i64 0, i64 0))
%183 = load i32, i32* %1
%184 = icmp sgt i32 %183, 1
br i1 %184, label %185, label %191
185: ; preds = %180, %185
%186 = phi i32 [ %188, %185 ], [ 1, %180 ]
%187 = call i32 @putchar(i32 9)
%188 = add nuw nsw i32 %186, 1
%189 = load i32, i32* %1
%190 = icmp slt i32 %188, %189
br i1 %190, label %185, label %191
191: ; preds = %185, %180
br label %192
192: ; preds = %191, %202
%193 = phi i32 [ %205, %202 ], [ 1, %191 ]
%194 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %193)
%195 = load i32, i32* %1
%196 = srem i32 %195, 7
%197 = icmp eq i32 %196, 0
br i1 %197, label %198, label %202
198: ; preds = %192
%199 = call i32 @putchar(i32 10)
%200 = load i32, i32* %1
%201 = srem i32 %200, 7
br label %202
202: ; preds = %198, %192
%203 = phi i32 [ %201, %198 ], [ %196, %192 ]
%204 = add nsw i32 %203, 1
store i32 %204, i32* %1
%205 = add nuw nsw i32 %193, 1
%206 = icmp eq i32 %205, 32
br i1 %206, label %207, label %192
207: ; preds = %202
%208 = call i32 @putchar(i32 10)
%209 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.26, i64 0, i64 0))
%210 = load i32, i32* %1
%211 = icmp sgt i32 %210, 1
br i1 %211, label %212, label %218
212: ; preds = %207, %212
%213 = phi i32 [ %215, %212 ], [ 1, %207 ]
%214 = call i32 @putchar(i32 9)
%215 = add nuw nsw i32 %213, 1
%216 = load i32, i32* %1
%217 = icmp slt i32 %215, %216
br i1 %217, label %212, label %218
218: ; preds = %212, %207
br label %219
219: ; preds = %218, %229
%220 = phi i32 [ %232, %229 ], [ 1, %218 ]
%221 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %220)
%222 = load i32, i32* %1
%223 = srem i32 %222, 7
%224 = icmp eq i32 %223, 0
br i1 %224, label %225, label %229
225: ; preds = %219
%226 = call i32 @putchar(i32 10)
%227 = load i32, i32* %1
%228 = srem i32 %227, 7
br label %229
229: ; preds = %225, %219
%230 = phi i32 [ %228, %225 ], [ %223, %219 ]
%231 = add nsw i32 %230, 1
store i32 %231, i32* %1
%232 = add nuw nsw i32 %220, 1
%233 = icmp eq i32 %232, 32
br i1 %233, label %234, label %219
234: ; preds = %229
%235 = call i32 @putchar(i32 10)
%236 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.27, i64 0, i64 0))
%237 = load i32, i32* %1
%238 = icmp sgt i32 %237, 1
br i1 %238, label %239, label %245
239: ; preds = %234, %239
%240 = phi i32 [ %242, %239 ], [ 1, %234 ]
%241 = call i32 @putchar(i32 9)
%242 = add nuw nsw i32 %240, 1
%243 = load i32, i32* %1
%244 = icmp slt i32 %242, %243
br i1 %244, label %239, label %245
245: ; preds = %239, %234
br label %246
246: ; preds = %245, %256
%247 = phi i32 [ %259, %256 ], [ 1, %245 ]
%248 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %247)
%249 = load i32, i32* %1
%250 = srem i32 %249, 7
%251 = icmp eq i32 %250, 0
br i1 %251, label %252, label %256
252: ; preds = %246
%253 = call i32 @putchar(i32 10)
%254 = load i32, i32* %1
%255 = srem i32 %254, 7
br label %256
256: ; preds = %252, %246
%257 = phi i32 [ %255, %252 ], [ %250, %246 ]
%258 = add nsw i32 %257, 1
store i32 %258, i32* %1
%259 = add nuw nsw i32 %247, 1
%260 = icmp eq i32 %259, 31
br i1 %260, label %261, label %246
261: ; preds = %256
%262 = call i32 @putchar(i32 10)
%263 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.28, i64 0, i64 0))
%264 = load i32, i32* %1
%265 = icmp sgt i32 %264, 1
br i1 %265, label %266, label %272
266: ; preds = %261, %266
%267 = phi i32 [ %269, %266 ], [ 1, %261 ]
%268 = call i32 @putchar(i32 9)
%269 = add nuw nsw i32 %267, 1
%270 = load i32, i32* %1
%271 = icmp slt i32 %269, %270
br i1 %271, label %266, label %272
272: ; preds = %266, %261
br label %273
273: ; preds = %272, %283
%274 = phi i32 [ %286, %283 ], [ 1, %272 ]
%275 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %274)
%276 = load i32, i32* %1
%277 = srem i32 %276, 7
%278 = icmp eq i32 %277, 0
br i1 %278, label %279, label %283
279: ; preds = %273
%280 = call i32 @putchar(i32 10)
%281 = load i32, i32* %1
%282 = srem i32 %281, 7
br label %283
283: ; preds = %279, %273
%284 = phi i32 [ %282, %279 ], [ %277, %273 ]
%285 = add nsw i32 %284, 1
store i32 %285, i32* %1
%286 = add nuw nsw i32 %274, 1
%287 = icmp eq i32 %286, 32
br i1 %287, label %288, label %273
288: ; preds = %283
%289 = call i32 @putchar(i32 10)
%290 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.29, i64 0, i64 0))
%291 = load i32, i32* %1
%292 = icmp sgt i32 %291, 1
br i1 %292, label %293, label %299
293: ; preds = %288, %293
%294 = phi i32 [ %296, %293 ], [ 1, %288 ]
%295 = call i32 @putchar(i32 9)
%296 = add nuw nsw i32 %294, 1
%297 = load i32, i32* %1
%298 = icmp slt i32 %296, %297
br i1 %298, label %293, label %299
299: ; preds = %293, %288
br label %300
300: ; preds = %299, %310
%301 = phi i32 [ %313, %310 ], [ 1, %299 ]
%302 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %301)
%303 = load i32, i32* %1
%304 = srem i32 %303, 7
%305 = icmp eq i32 %304, 0
br i1 %305, label %306, label %310
306: ; preds = %300
%307 = call i32 @putchar(i32 10)
%308 = load i32, i32* %1
%309 = srem i32 %308, 7
br label %310
310: ; preds = %306, %300
%311 = phi i32 [ %309, %306 ], [ %304, %300 ]
%312 = add nsw i32 %311, 1
store i32 %312, i32* %1
%313 = add nuw nsw i32 %301, 1
%314 = icmp eq i32 %313, 31
br i1 %314, label %315, label %300
315: ; preds = %310
%316 = call i32 @putchar(i32 10)
%317 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.30, i64 0, i64 0))
%318 = load i32, i32* %1
%319 = icmp sgt i32 %318, 1
br i1 %319, label %320, label %326
320: ; preds = %315, %320
%321 = phi i32 [ %323, %320 ], [ 1, %315 ]
%322 = call i32 @putchar(i32 9)
%323 = add nuw nsw i32 %321, 1
%324 = load i32, i32* %1
%325 = icmp slt i32 %323, %324
br i1 %325, label %320, label %326
326: ; preds = %320, %315
br label %327
327: ; preds = %326, %337
%328 = phi i32 [ %340, %337 ], [ 1, %326 ]
%329 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 %328)
%330 = load i32, i32* %1
%331 = srem i32 %330, 7
%332 = icmp eq i32 %331, 0
br i1 %332, label %333, label %337
333: ; preds = %327
%334 = call i32 @putchar(i32 10)
%335 = load i32, i32* %1
%336 = srem i32 %335, 7
br label %337
337: ; preds = %333, %327
%338 = phi i32 [ %336, %333 ], [ %331, %327 ]
%339 = add nsw i32 %338, 1
store i32 %339, i32* %1
%340 = add nuw nsw i32 %328, 1
%341 = icmp eq i32 %340, 32
br i1 %341, label %342, label %327
342: ; preds = %337
%343 = call i32 @putchar(i32 10)
ret i32 0
}