#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 floor(float);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, float *);
void main() {
  float input;
  int val;
  int teen = 0;
  for (input = -1; input <= 0;) {
    printf("Please enter the numerical check amount: ");
    scanf("%f", &input);
  }
  printf("--------------------\n");
  if (input > 9999) {
    val = floor(input / 10000);
    switch (val) {
    case 1:
      teen = 10000;
      break;
    case 2:
      printf("TWENTY ");
      break;
    case 3:
      printf("THIRTY ");
      break;
    case 4:
      printf("FOURTY ");
      break;
    case 5:
      printf("FIFTY ");
      break;
    case 6:
      printf("SIXTY ");
      break;
    case 7:
      printf("SEVENTY ");
      break;
    case 8:
      printf("EIGHTY ");
      break;
    case 9:
      printf("NINETY ");
      break;
    }
    input -= val * 10000;
  }
  if (input > 999) {
    val = floor(input / 1000);
    if (teen != 0) {
      switch (val) {
      case 1:
        printf("ELEVEN");
        break;
      case 2:
        printf("TWELVE");
        break;
      case 3:
        printf("THIRTEEN");
        break;
      case 4:
        printf("FOURTEEN");
        break;
      case 5:
        printf("FIFTEEN");
        break;
      case 6:
        printf("SIXTEEN");
        break;
      case 7:
        printf("SEVENTEEN");
        break;
      case 8:
        printf("EIGHTEEN");
        break;
      case 9:
        printf("NINETEEN");
        break;
      case 0:
        printf("TEN");
        break;
      }
    } else if (teen == 0) {
      switch (val) {
      case 1:
        printf("ONE");
        break;
      case 2:
        printf("TWO");
        break;
      case 3:
        printf("THREE");
        break;
      case 4:
        printf("FOUR");
        break;
      case 5:
        printf("FIVE");
        break;
      case 6:
        printf("SIX");
        break;
      case 7:
        printf("SEVEN");
        break;
      case 8:
        printf("EIGHT");
        break;
      case 9:
        printf("NINE");
        break;
      }
    }
    printf(" THOUSAND ");
    input -= val * 1000;
    teen = 0;
  }
  if (input > 99) {
    val = floor(input / 100);
    switch (val) {
    case 1:
      printf("ONE HUNDRED");
      break;
    case 2:
      printf("TWO HUNDRED");
      break;
    case 3:
      printf("THREE HUNDRED");
      break;
    case 4:
      printf("FOUR HUNDRED");
      break;
    case 5:
      printf("FIVE HUNDRED");
      break;
    case 6:
      printf("SIX HUNDRED");
      break;
    case 7:
      printf("SEVEN HUNDRED");
      break;
    case 8:
      printf("EIGHT HUNDRED");
      break;
    case 9:
      printf("NINE HUNDRED");
      break;
    }
    printf(" ");
    input -= val * 100;
  }
  if (input > 9) {
    val = floor(input / 10);
    switch (val) {
    case 1:
      teen = 10;
      break;
    case 2:
      printf("TWENTY ");
      break;
    case 3:
      printf("THIRTY ");
      break;
    case 4:
      printf("FOURTY ");
      break;
    case 5:
      printf("FIFTY ");
      break;
    case 6:
      printf("SIXTY ");
      break;
    case 7:
      printf("SEVENTY ");
      break;
    case 8:
      printf("EIGHTY ");
      break;
    case 9:
      printf("NINETY ");
      break;
    }
    input -= val * 10;
  }
  if (input >= 0) {
    val = floor(input / 1);
    if (teen != 0) {
      switch (val) {
      case 1:
        printf("ELEVEN");
        break;
      case 2:
        printf("TWELVE");
        break;
      case 3:
        printf("THIRTEEN");
        break;
      case 4:
        printf("FOURTEEN");
        break;
      case 5:
        printf("FIFTEEN");
        break;
      case 6:
        printf("SIXTEEN");
        break;
      case 7:
        printf("SEVENTEEN");
        break;
      case 8:
        printf("EIGHTEEN");
        break;
      case 9:
        printf("NINETEEN");
        break;
      case 0:
        printf("TEN");
        break;
      }
    } else if (teen == 0) {
      switch (val) {
      case 1:
        printf("ONE");
        break;
      case 2:
        printf("TWO");
        break;
      case 3:
        printf("THREE");
        break;
      case 4:
        printf("FOUR");
        break;
      case 5:
        printf("FIVE");
        break;
      case 6:
        printf("SIX");
        break;
      case 7:
        printf("SEVEN");
        break;
      case 8:
        printf("EIGHT");
        break;
      case 9:
        printf("NINE");
        break;
      }
    }
    printf(" ");
    input -= val * 1;
  }
  if (input >= 0) {
    val = floor((input + 0.001) / 0.01);
    printf("and %d/100", val);
  }
  printf("\n--------------------");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0xc(%rbp)
movss  0xeb9(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
xorps  %xmm0,%xmm0
ucomiss -0x4(%rbp),%xmm0
jb     117c <main+0x4c>
lea    0xfdc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xff8(%rip),%rdi
lea    -0x4(%rbp),%rsi
call   1040 <scanf@plt>
jmp    114c <main+0x1c>
lea    0xfe6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x4(%rbp),%xmm0
movss  0xe6d(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    129a <main+0x16a>
movss  -0x4(%rbp),%xmm0
movss  0xe5b(%rip),%xmm1
divss  %xmm1,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x8,%eax
ja     1281 <main+0x151>
mov    -0x18(%rbp),%rax
lea    0xe5f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x2710,-0xc(%rbp)
jmp    1281 <main+0x151>
lea    0xf8a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf7f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf69(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf5d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf51(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf47(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1281 <main+0x151>
lea    0xf3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
imul   $0x2710,-0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
movss  -0x4(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
movss  0xd65(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    14c7 <main+0x397>
movss  -0x4(%rbp),%xmm0
movss  0xd53(%rip),%xmm1
divss  %xmm1,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     13b6 <main+0x286>
mov    -0x8(%rbp),%eax
mov    %rax,-0x20(%rbp)
sub    $0x9,%rax
ja     13b1 <main+0x281>
mov    -0x20(%rbp),%rax
lea    0xd91(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xebf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xeb3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xea7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe9d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe93(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe88(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe7d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe6a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13b1 <main+0x281>
lea    0xe60(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1499 <main+0x369>
cmpl   $0x0,-0xc(%rbp)
jne    1494 <main+0x364>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x8,%eax
ja     148f <main+0x35f>
mov    -0x28(%rbp),%rax
lea    0xc7c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe1e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xe0f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xe00(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xdf3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xde5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xdd7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xdc8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xdbb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    148f <main+0x35f>
lea    0xdae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1494 <main+0x364>
jmp    1499 <main+0x369>
lea    0xd9b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
imul   $0x3e8,-0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
movss  -0x4(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movl   $0x0,-0xc(%rbp)
movss  -0x4(%rbp),%xmm0
movss  0xb40(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    15e9 <main+0x4b9>
movss  -0x4(%rbp),%xmm0
movss  0xb2e(%rip),%xmm1
divss  %xmm1,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x8,%eax
ja     15c5 <main+0x495>
mov    -0x30(%rbp),%rax
lea    0xb92(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xd20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xd19(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xd12(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xd0d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xd07(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xd01(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xcfa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xcf5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15c5 <main+0x495>
lea    0xcf0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xb98(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
imul   $0x64,-0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
movss  -0x4(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
movss  0xa26(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    16f6 <main+0x5c6>
movss  -0x4(%rbp),%xmm0
movss  0xa14(%rip),%xmm1
divss  %xmm1,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x8,%eax
ja     16e0 <main+0x5b0>
mov    -0x38(%rbp),%rax
lea    0xa94(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xa,-0xc(%rbp)
jmp    16e0 <main+0x5b0>
lea    0xb2b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xb20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xb15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xb0a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xafe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xaf2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xae8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    16e0 <main+0x5b0>
lea    0xadd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
imul   $0xa,-0x8(%rbp),%eax
cvtsi2ss %eax,%xmm1
movss  -0x4(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1916 <main+0x7e6>
movss  -0x4(%rbp),%xmm0
movss  0x910(%rip),%xmm1
divss  %xmm1,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
cmpl   $0x0,-0xc(%rbp)
je     180d <main+0x6dd>
mov    -0x8(%rbp),%eax
mov    %rax,-0x40(%rbp)
sub    $0x9,%rax
ja     1808 <main+0x6d8>
mov    -0x40(%rbp),%rax
lea    0x9ce(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xa68(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa50(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa46(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa3c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa31(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa26(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa13(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1808 <main+0x6d8>
lea    0xa09(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18f0 <main+0x7c0>
cmpl   $0x0,-0xc(%rbp)
jne    18eb <main+0x7bb>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x8,%eax
ja     18e6 <main+0x7b6>
mov    -0x48(%rbp),%rax
lea    0x8b9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x9c7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x9b8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x9a9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x99c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x98e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x980(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x971(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x964(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18e6 <main+0x7b6>
lea    0x957(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    18eb <main+0x7bb>
jmp    18f0 <main+0x7c0>
lea    0x86d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
shl    $0x0,%eax
cvtsi2ss %eax,%xmm1
movss  -0x4(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1965 <main+0x835>
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x6f8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0x6e4(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1050 <floor@plt>
mov    %eax,-0x8(%rbp)
mov    -0x8(%rbp),%esi
lea    0x95d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x95a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
movl   $0xbf800000,0x4(%rsp)
bf
lea    0xf3e(%rip),%r14
lea    0xf61(%rip),%r15
lea    0x4(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1060 <scanf@plt>
xorps  %xmm0,%xmm0
ucomiss 0x4(%rsp),%xmm0
jae    1180 <main+0x30>
lea    0x1073(%rip),%rdi
call   1040 <puts@plt>
movss  0x4(%rsp),%xmm0
xor    %ebp,%ebp
ucomiss 0xe46(%rip),%xmm0
ja     11e8 <main+0x98>
ucomiss 0xe45(%rip),%xmm0
ja     1290 <main+0x140>
ucomiss 0xe40(%rip),%xmm0
ja     130d <main+0x1bd>
ucomiss 0xe3b(%rip),%xmm0
ja     136c <main+0x21c>
jmp    1403 <main+0x2b3>
divss  0xe14(%rip),%xmm0
call   1070 <floor@plt>
mov    %eax,%ebx
lea    -0x1(%rbx),%eax
cmp    $0x8,%eax
ja     1216 <main+0xc6>
lea    0xe32(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x2710,%ebp
jmp    1269 <main+0x119>
xor    %ebp,%ebp
jmp    1269 <main+0x119>
lea    0xeb0(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xeaf(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xeae(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xead(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xeab(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xea9(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xea9(%rip),%rdi
jmp    1260 <main+0x110>
lea    0xea8(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1050 <printf@plt>
imul   $0x2710,%ebx,%eax
cvtsi2ss %eax,%xmm1
movss  0x4(%rsp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,0x4(%rsp)
ucomiss 0xd7e(%rip),%xmm0
jbe    11c9 <main+0x79>
divss  0xd74(%rip),%xmm0
call   1070 <floor@plt>
mov    %eax,%ebx
test   %ebp,%ebp
je     12b4 <main+0x164>
cmp    $0xa,%ebx
jae    12d3 <main+0x183>
movslq %ebx,%rax
lea    0x2ad6(%rip),%rcx
jmp    12c5 <main+0x175>
lea    -0x1(%rbx),%eax
cmp    $0x9,%eax
jae    12d3 <main+0x183>
cltq
lea    0x2b13(%rip),%rcx
lea    (%rcx,%rax,8),%rax
mov    (%rax),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xeb3(%rip),%rdi
xor    %ebp,%ebp
xor    %eax,%eax
call   1050 <printf@plt>
imul   $0x3e8,%ebx,%eax
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
movss  0x4(%rsp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,0x4(%rsp)
ucomiss 0xd09(%rip),%xmm0
jbe    11d6 <main+0x86>
divss  0xcff(%rip),%xmm0
call   1070 <floor@plt>
mov    %eax,%ebx
lea    -0x1(%rbx),%eax
cmp    $0x8,%eax
ja     133b <main+0x1eb>
cltq
lea    0xd53(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
imul   $0x64,%ebx,%eax
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
movss  0x4(%rsp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,0x4(%rsp)
ucomiss 0xcb2(%rip),%xmm0
jbe    1403 <main+0x2b3>
divss  0xca8(%rip),%xmm0
call   1070 <floor@plt>
mov    %eax,%ebx
lea    -0x1(%rbx),%eax
cmp    $0x8,%eax
ja     13e7 <main+0x297>
lea    0xcd2(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0xa,%ebp
jmp    13e7 <main+0x297>
lea    0xd30(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd2f(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd2e(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd2d(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd2b(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd29(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd29(%rip),%rdi
jmp    13e0 <main+0x290>
lea    0xd28(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    %ebx,%ebx
lea    (%rbx,%rbx,4),%eax
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
movss  0x4(%rsp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,0x4(%rsp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     146a <main+0x31a>
call   1070 <floor@plt>
mov    %eax,%ebx
test   %ebp,%ebp
je     1427 <main+0x2d7>
cmp    $0xa,%ebx
jae    1446 <main+0x2f6>
movslq %ebx,%rax
lea    0x2963(%rip),%rcx
jmp    1438 <main+0x2e8>
lea    -0x1(%rbx),%eax
cmp    $0x9,%eax
jae    1446 <main+0x2f6>
cltq
lea    0x29a0(%rip),%rcx
lea    (%rcx,%rax,8),%rax
mov    (%rax),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
xorps  %xmm1,%xmm1
cvtsi2ss %ebx,%xmm1
movss  0x4(%rsp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,0x4(%rsp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     149c <main+0x34c>
cvtss2sd %xmm0,%xmm0
addsd  0xbad(%rip),%xmm0
divsd  0xbad(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
call   1070 <floor@plt>
lea    0xd7a(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xd75(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [42 x i8] c"Please enter the numerical check amount: \00"
@.str.1 = [3 x i8] c"%f\00"
@.str.2 = [22 x i8] c"--------------------\0A\00"
@.str.3 = [8 x i8] c"TWENTY \00"
@.str.4 = [8 x i8] c"THIRTY \00"
@.str.5 = [8 x i8] c"FOURTY \00"
@.str.6 = [7 x i8] c"FIFTY \00"
@.str.7 = [7 x i8] c"SIXTY \00"
@.str.8 = [9 x i8] c"SEVENTY \00"
@.str.9 = [8 x i8] c"EIGHTY \00"
@.str.10 = [8 x i8] c"NINETY \00"
@.str.11 = [7 x i8] c"ELEVEN\00"
@.str.12 = [7 x i8] c"TWELVE\00"
@.str.13 = [9 x i8] c"THIRTEEN\00"
@.str.14 = [9 x i8] c"FOURTEEN\00"
@.str.15 = [8 x i8] c"FIFTEEN\00"
@.str.16 = [8 x i8] c"SIXTEEN\00"
@.str.17 = [10 x i8] c"SEVENTEEN\00"
@.str.18 = [9 x i8] c"EIGHTEEN\00"
@.str.19 = [9 x i8] c"NINETEEN\00"
@.str.20 = [4 x i8] c"TEN\00"
@.str.21 = [4 x i8] c"ONE\00"
@.str.22 = [4 x i8] c"TWO\00"
@.str.23 = [6 x i8] c"THREE\00"
@.str.24 = [5 x i8] c"FOUR\00"
@.str.25 = [5 x i8] c"FIVE\00"
@.str.26 = [4 x i8] c"SIX\00"
@.str.27 = [6 x i8] c"SEVEN\00"
@.str.28 = [6 x i8] c"EIGHT\00"
@.str.29 = [5 x i8] c"NINE\00"
@.str.30 = [11 x i8] c" THOUSAND \00"
@.str.31 = [12 x i8] c"ONE HUNDRED\00"
@.str.32 = [12 x i8] c"TWO HUNDRED\00"
@.str.33 = [14 x i8] c"THREE HUNDRED\00"
@.str.34 = [13 x i8] c"FOUR HUNDRED\00"
@.str.35 = [13 x i8] c"FIVE HUNDRED\00"
@.str.36 = [12 x i8] c"SIX HUNDRED\00"
@.str.37 = [14 x i8] c"SEVEN HUNDRED\00"
@.str.38 = [14 x i8] c"EIGHT HUNDRED\00"
@.str.39 = [13 x i8] c"NINE HUNDRED\00"
@.str.40 = [2 x i8] c" \00"
@.str.41 = [11 x i8] c"and %d/100\00"
@.str.42 = [22 x i8] c"\0A--------------------\00"
define void @main() {
%1 = alloca float
%2 = alloca i32
%3 = alloca i32
store i32 0, i32* %3
store float -1.000000e+00, float* %1
br label %4
4: ; preds = %7, %0
%5 = load float, float* %1
%6 = fcmp ole float %5, 0.000000e+00
br i1 %6, label %7, label %10
7: ; preds = %4
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str, i64 0, i64 0))
%9 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %1)
br label %4
10: ; preds = %4
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
%12 = load float, float* %1
%13 = fcmp ogt float %12, 9.999000e+03
br i1 %13, label %14, label %42
14: ; preds = %10
%15 = load float, float* %1
%16 = fdiv float %15, 1.000000e+04
%17 = call i32 @floor(float %16)
store i32 %17, i32* %2
%18 = load i32, i32* %2
switch i32 %18, label %36 [
i32 1, label %19
i32 2, label %20
i32 3, label %22
i32 4, label %24
i32 5, label %26
i32 6, label %28
i32 7, label %30
i32 8, label %32
i32 9, label %34
]
19: ; preds = %14
store i32 10000, i32* %3
br label %36
20: ; preds = %14
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %36
22: ; preds = %14
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
br label %36
24: ; preds = %14
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
br label %36
26: ; preds = %14
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
br label %36
28: ; preds = %14
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %36
30: ; preds = %14
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %36
32: ; preds = %14
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %36
34: ; preds = %14
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %36
36: ; preds = %14, %34, %32, %30, %28, %26, %24, %22, %20, %19
%37 = load i32, i32* %2
%38 = mul nsw i32 %37, 10000
%39 = sitofp i32 %38 to float
%40 = load float, float* %1
%41 = fsub float %40, %39
store float %41, float* %1
br label %42
42: ; preds = %36, %10
%43 = load float, float* %1
%44 = fcmp ogt float %43, 9.990000e+02
br i1 %44, label %45, label %106
45: ; preds = %42
%46 = load float, float* %1
%47 = fdiv float %46, 1.000000e+03
%48 = call i32 @floor(float %47)
store i32 %48, i32* %2
%49 = load i32, i32* %3
%50 = icmp ne i32 %49, 0
br i1 %50, label %51, label %74
51: ; preds = %45
%52 = load i32, i32* %2
switch i32 %52, label %73 [
i32 1, label %53
i32 2, label %55
i32 3, label %57
i32 4, label %59
i32 5, label %61
i32 6, label %63
i32 7, label %65
i32 8, label %67
i32 9, label %69
i32 0, label %71
]
53: ; preds = %51
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
br label %73
55: ; preds = %51
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
br label %73
57: ; preds = %51
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
br label %73
59: ; preds = %51
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0))
br label %73
61: ; preds = %51
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
br label %73
63: ; preds = %51
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0))
br label %73
65: ; preds = %51
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0))
br label %73
67: ; preds = %51
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
br label %73
69: ; preds = %51
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
br label %73
71: ; preds = %51
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %73
73: ; preds = %51, %71, %69, %67, %65, %63, %61, %59, %57, %55, %53
br label %99
74: ; preds = %45
%75 = load i32, i32* %3
%76 = icmp eq i32 %75, 0
br i1 %76, label %77, label %98
77: ; preds = %74
%78 = load i32, i32* %2
switch i32 %78, label %97 [
i32 1, label %79
i32 2, label %81
i32 3, label %83
i32 4, label %85
i32 5, label %87
i32 6, label %89
i32 7, label %91
i32 8, label %93
i32 9, label %95
]
79: ; preds = %77
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
br label %97
81: ; preds = %77
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
br label %97
83: ; preds = %77
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0))
br label %97
85: ; preds = %77
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i64 0, i64 0))
br label %97
87: ; preds = %77
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
br label %97
89: ; preds = %77
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0))
br label %97
91: ; preds = %77
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0))
br label %97
93: ; preds = %77
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0))
br label %97
95: ; preds = %77
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i64 0, i64 0))
br label %97
97: ; preds = %77, %95, %93, %91, %89, %87, %85, %83, %81, %79
br label %98
98: ; preds = %97, %74
br label %99
99: ; preds = %98, %73
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.30, i64 0, i64 0))
%101 = load i32, i32* %2
%102 = mul nsw i32 %101, 1000
%103 = sitofp i32 %102 to float
%104 = load float, float* %1
%105 = fsub float %104, %103
store float %105, float* %1
store i32 0, i32* %3
br label %106
106: ; preds = %99, %42
%107 = load float, float* %1
%108 = fcmp ogt float %107, 9.900000e+01
br i1 %108, label %109, label %139
109: ; preds = %106
%110 = load float, float* %1
%111 = fdiv float %110, 1.000000e+02
%112 = call i32 @floor(float %111)
store i32 %112, i32* %2
%113 = load i32, i32* %2
switch i32 %113, label %132 [
i32 1, label %114
i32 2, label %116
i32 3, label %118
i32 4, label %120
i32 5, label %122
i32 6, label %124
i32 7, label %126
i32 8, label %128
i32 9, label %130
]
114: ; preds = %109
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0))
br label %132
116: ; preds = %109
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.32, i64 0, i64 0))
br label %132
118: ; preds = %109
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.33, i64 0, i64 0))
br label %132
120: ; preds = %109
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.34, i64 0, i64 0))
br label %132
122: ; preds = %109
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.35, i64 0, i64 0))
br label %132
124: ; preds = %109
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.36, i64 0, i64 0))
br label %132
126: ; preds = %109
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.37, i64 0, i64 0))
br label %132
128: ; preds = %109
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.38, i64 0, i64 0))
br label %132
130: ; preds = %109
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.39, i64 0, i64 0))
br label %132
132: ; preds = %109, %130, %128, %126, %124, %122, %120, %118, %116, %114
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.40, i64 0, i64 0))
%134 = load i32, i32* %2
%135 = mul nsw i32 %134, 100
%136 = sitofp i32 %135 to float
%137 = load float, float* %1
%138 = fsub float %137, %136
store float %138, float* %1
br label %139
139: ; preds = %132, %106
%140 = load float, float* %1
%141 = fcmp ogt float %140, 9.000000e+00
br i1 %141, label %142, label %170
142: ; preds = %139
%143 = load float, float* %1
%144 = fdiv float %143, 1.000000e+01
%145 = call i32 @floor(float %144)
store i32 %145, i32* %2
%146 = load i32, i32* %2
switch i32 %146, label %164 [
i32 1, label %147
i32 2, label %148
i32 3, label %150
i32 4, label %152
i32 5, label %154
i32 6, label %156
i32 7, label %158
i32 8, label %160
i32 9, label %162
]
147: ; preds = %142
store i32 10, i32* %3
br label %164
148: ; preds = %142
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %164
150: ; preds = %142
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
br label %164
152: ; preds = %142
%153 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
br label %164
154: ; preds = %142
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
br label %164
156: ; preds = %142
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %164
158: ; preds = %142
%159 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %164
160: ; preds = %142
%161 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %164
162: ; preds = %142
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %164
164: ; preds = %142, %162, %160, %158, %156, %154, %152, %150, %148, %147
%165 = load i32, i32* %2
%166 = mul nsw i32 %165, 10
%167 = sitofp i32 %166 to float
%168 = load float, float* %1
%169 = fsub float %168, %167
store float %169, float* %1
br label %170
170: ; preds = %164, %139
%171 = load float, float* %1
%172 = fcmp oge float %171, 0.000000e+00
br i1 %172, label %173, label %234
173: ; preds = %170
%174 = load float, float* %1
%175 = fdiv float %174, 1.000000e+00
%176 = call i32 @floor(float %175)
store i32 %176, i32* %2
%177 = load i32, i32* %3
%178 = icmp ne i32 %177, 0
br i1 %178, label %179, label %202
179: ; preds = %173
%180 = load i32, i32* %2
switch i32 %180, label %201 [
i32 1, label %181
i32 2, label %183
i32 3, label %185
i32 4, label %187
i32 5, label %189
i32 6, label %191
i32 7, label %193
i32 8, label %195
i32 9, label %197
i32 0, label %199
]
181: ; preds = %179
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
br label %201
183: ; preds = %179
%184 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
br label %201
185: ; preds = %179
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
br label %201
187: ; preds = %179
%188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0))
br label %201
189: ; preds = %179
%190 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
br label %201
191: ; preds = %179
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0))
br label %201
193: ; preds = %179
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0))
br label %201
195: ; preds = %179
%196 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
br label %201
197: ; preds = %179
%198 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
br label %201
199: ; preds = %179
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
br label %201
201: ; preds = %179, %199, %197, %195, %193, %191, %189, %187, %185, %183, %181
br label %227
202: ; preds = %173
%203 = load i32, i32* %3
%204 = icmp eq i32 %203, 0
br i1 %204, label %205, label %226
205: ; preds = %202
%206 = load i32, i32* %2
switch i32 %206, label %225 [
i32 1, label %207
i32 2, label %209
i32 3, label %211
i32 4, label %213
i32 5, label %215
i32 6, label %217
i32 7, label %219
i32 8, label %221
i32 9, label %223
]
207: ; preds = %205
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
br label %225
209: ; preds = %205
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
br label %225
211: ; preds = %205
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0))
br label %225
213: ; preds = %205
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i64 0, i64 0))
br label %225
215: ; preds = %205
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0))
br label %225
217: ; preds = %205
%218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0))
br label %225
219: ; preds = %205
%220 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0))
br label %225
221: ; preds = %205
%222 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0))
br label %225
223: ; preds = %205
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i64 0, i64 0))
br label %225
225: ; preds = %205, %223, %221, %219, %217, %215, %213, %211, %209, %207
br label %226
226: ; preds = %225, %202
br label %227
227: ; preds = %226, %201
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.40, i64 0, i64 0))
%229 = load i32, i32* %2
%230 = mul nsw i32 %229, 1
%231 = sitofp i32 %230 to float
%232 = load float, float* %1
%233 = fsub float %232, %231
store float %233, float* %1
br label %234
234: ; preds = %227, %170
%235 = load float, float* %1
%236 = fcmp oge float %235, 0.000000e+00
br i1 %236, label %237, label %246
237: ; preds = %234
%238 = load float, float* %1
%239 = fpext float %238 to double
%240 = fadd double %239, 1.000000e-03
%241 = fdiv double %240, 1.000000e-02
%242 = fptrunc double %241 to float
%243 = call i32 @floor(float %242)
store i32 %243, i32* %2
%244 = load i32, i32* %2
%245 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.41, i64 0, i64 0), i32 %244)
br label %246
246: ; preds = %237, %234
%247 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.42, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [42 x i8] c"Please enter the numerical check amount: \00"
@.str.1 = [3 x i8] c"%f\00"
@.str.3 = [8 x i8] c"TWENTY \00"
@.str.4 = [8 x i8] c"THIRTY \00"
@.str.5 = [8 x i8] c"FOURTY \00"
@.str.6 = [7 x i8] c"FIFTY \00"
@.str.7 = [7 x i8] c"SIXTY \00"
@.str.8 = [9 x i8] c"SEVENTY \00"
@.str.9 = [8 x i8] c"EIGHTY \00"
@.str.10 = [8 x i8] c"NINETY \00"
@.str.11 = [7 x i8] c"ELEVEN\00"
@.str.12 = [7 x i8] c"TWELVE\00"
@.str.13 = [9 x i8] c"THIRTEEN\00"
@.str.14 = [9 x i8] c"FOURTEEN\00"
@.str.15 = [8 x i8] c"FIFTEEN\00"
@.str.16 = [8 x i8] c"SIXTEEN\00"
@.str.17 = [10 x i8] c"SEVENTEEN\00"
@.str.18 = [9 x i8] c"EIGHTEEN\00"
@.str.19 = [9 x i8] c"NINETEEN\00"
@.str.20 = [4 x i8] c"TEN\00"
@.str.21 = [4 x i8] c"ONE\00"
@.str.22 = [4 x i8] c"TWO\00"
@.str.23 = [6 x i8] c"THREE\00"
@.str.24 = [5 x i8] c"FOUR\00"
@.str.25 = [5 x i8] c"FIVE\00"
@.str.26 = [4 x i8] c"SIX\00"
@.str.27 = [6 x i8] c"SEVEN\00"
@.str.28 = [6 x i8] c"EIGHT\00"
@.str.29 = [5 x i8] c"NINE\00"
@.str.30 = [11 x i8] c" THOUSAND \00"
@.str.31 = [12 x i8] c"ONE HUNDRED\00"
@.str.32 = [12 x i8] c"TWO HUNDRED\00"
@.str.33 = [14 x i8] c"THREE HUNDRED\00"
@.str.34 = [13 x i8] c"FOUR HUNDRED\00"
@.str.35 = [13 x i8] c"FIVE HUNDRED\00"
@.str.36 = [12 x i8] c"SIX HUNDRED\00"
@.str.37 = [14 x i8] c"SEVEN HUNDRED\00"
@.str.38 = [14 x i8] c"EIGHT HUNDRED\00"
@.str.39 = [13 x i8] c"NINE HUNDRED\00"
@.str.41 = [11 x i8] c"and %d/100\00"
@.str.42 = [22 x i8] c"\0A--------------------\00"
@str = [21 x i8] c"--------------------\00"
@reltable.main = [9 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.31 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.32 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.33 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.34 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.35 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.36 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.37 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.38 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.39 to i64), i64 ptrtoint ([9 x i32]* @reltable.main to i64)) to i32)]
@switch.table.main.45 = [10 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0)]
@switch.table.main.46 = [9 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.24, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.29, i64 0, i64 0)]
define void @main() {
%1 = alloca float
%2 = bitcast float* %1 to i8*
store float -1.000000e+00, float* %1
br label %3
3: ; preds = %0, %3
%4 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), float* %1)
%6 = load float, float* %1
%7 = fcmp ugt float %6, 0.000000e+00
br i1 %7, label %8, label %3
8: ; preds = %3
%9 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str, i64 0, i64 0))
%10 = load float, float* %1
%11 = fcmp ogt float %10, 9.999000e+03
br i1 %11, label %12, label %38
12: ; preds = %8
%13 = fdiv float %10, 1.000000e+04
%14 = call i32 @floor(float %13)
switch i32 %14, label %32 [
i32 1, label %15
i32 2, label %16
i32 3, label %18
i32 4, label %20
i32 5, label %22
i32 6, label %24
i32 7, label %26
i32 8, label %28
i32 9, label %30
]
15: ; preds = %12
br label %32
16: ; preds = %12
%17 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %32
18: ; preds = %12
%19 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
br label %32
20: ; preds = %12
%21 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
br label %32
22: ; preds = %12
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
br label %32
24: ; preds = %12
%25 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %32
26: ; preds = %12
%27 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %32
28: ; preds = %12
%29 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %32
30: ; preds = %12
%31 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %32
32: ; preds = %12, %30, %28, %26, %24, %22, %20, %18, %16, %15
%33 = phi i32 [ 0, %12 ], [ 0, %30 ], [ 0, %28 ], [ 0, %26 ], [ 0, %24 ], [ 0, %22 ], [ 0, %20 ], [ 0, %18 ], [ 0, %16 ], [ 10000, %15 ]
%34 = mul nsw i32 %14, 10000
%35 = sitofp i32 %34 to float
%36 = load float, float* %1
%37 = fsub float %36, %35
store float %37, float* %1
br label %38
38: ; preds = %32, %8
%39 = phi float [ %37, %32 ], [ %10, %8 ]
%40 = phi i32 [ %33, %32 ], [ 0, %8 ]
%41 = fcmp ogt float %39, 9.990000e+02
br i1 %41, label %42, label %67
42: ; preds = %38
%43 = fdiv float %39, 1.000000e+03
%44 = call i32 @floor(float %43)
%45 = icmp eq i32 %40, 0
br i1 %45, label %48, label %46
46: ; preds = %42
%47 = icmp ult i32 %44, 10
br i1 %47, label %51, label %61
48: ; preds = %42
%49 = add i32 %44, -1
%50 = icmp ult i32 %49, 9
br i1 %50, label %54, label %61
51: ; preds = %46
%52 = sext i32 %44 to i64
%53 = getelementptr inbounds [10 x i8*], [10 x i8*]* @switch.table.main.45, i64 0, i64 %52
br label %57
54: ; preds = %48
%55 = sext i32 %49 to i64
%56 = getelementptr inbounds [9 x i8*], [9 x i8*]* @switch.table.main.46, i64 0, i64 %55
br label %57
57: ; preds = %54, %51
%58 = phi i8** [ %56, %54 ], [ %53, %51 ]
%59 = load i8*, i8** %58
%60 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %59)
br label %61
61: ; preds = %48, %46, %57
%62 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.30, i64 0, i64 0))
%63 = mul nsw i32 %44, 1000
%64 = sitofp i32 %63 to float
%65 = load float, float* %1
%66 = fsub float %65, %64
store float %66, float* %1
br label %67
67: ; preds = %38, %61
%68 = phi float [ %66, %61 ], [ %39, %38 ]
%69 = phi i32 [ 0, %61 ], [ %40, %38 ]
%70 = fcmp ogt float %68, 9.900000e+01
br i1 %70, label %71, label %87
71: ; preds = %67
%72 = fdiv float %68, 1.000000e+02
%73 = call i32 @floor(float %72)
%74 = add i32 %73, -1
%75 = icmp ult i32 %74, 9
br i1 %75, label %76, label %81
76: ; preds = %71
%77 = sext i32 %74 to i64
%78 = shl i64 %77, 2
%79 = call i8* @llvm.load.relative.i64(i8* bitcast ([9 x i32]* @reltable.main to i8*), i64 %78)
%80 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %79)
br label %81
81: ; preds = %71, %76
%82 = call i32 @putchar(i32 32)
%83 = mul nsw i32 %73, 100
%84 = sitofp i32 %83 to float
%85 = load float, float* %1
%86 = fsub float %85, %84
store float %86, float* %1
br label %87
87: ; preds = %67, %81
%88 = phi float [ %86, %81 ], [ %68, %67 ]
%89 = fcmp ogt float %88, 9.000000e+00
br i1 %89, label %90, label %116
90: ; preds = %87
%91 = fdiv float %88, 1.000000e+01
%92 = call i32 @floor(float %91)
switch i32 %92, label %110 [
i32 1, label %93
i32 2, label %94
i32 3, label %96
i32 4, label %98
i32 5, label %100
i32 6, label %102
i32 7, label %104
i32 8, label %106
i32 9, label %108
]
93: ; preds = %90
br label %110
94: ; preds = %90
%95 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %110
96: ; preds = %90
%97 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
br label %110
98: ; preds = %90
%99 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
br label %110
100: ; preds = %90
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
br label %110
102: ; preds = %90
%103 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
br label %110
104: ; preds = %90
%105 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %110
106: ; preds = %90
%107 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %110
108: ; preds = %90
%109 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %110
110: ; preds = %90, %108, %106, %104, %102, %100, %98, %96, %94, %93
%111 = phi i32 [ %69, %90 ], [ %69, %108 ], [ %69, %106 ], [ %69, %104 ], [ %69, %102 ], [ %69, %100 ], [ %69, %98 ], [ %69, %96 ], [ %69, %94 ], [ 10, %93 ]
%112 = mul nsw i32 %92, 10
%113 = sitofp i32 %112 to float
%114 = load float, float* %1
%115 = fsub float %114, %113
store float %115, float* %1
br label %116
116: ; preds = %87, %110
%117 = phi float [ %115, %110 ], [ %88, %87 ]
%118 = phi i32 [ %111, %110 ], [ %69, %87 ]
%119 = fcmp ult float %117, 0.000000e+00
br i1 %119, label %143, label %120
120: ; preds = %116
%121 = call i32 @floor(float %117)
%122 = icmp eq i32 %118, 0
br i1 %122, label %125, label %123
123: ; preds = %120
%124 = icmp ult i32 %121, 10
br i1 %124, label %128, label %138
125: ; preds = %120
%126 = add i32 %121, -1
%127 = icmp ult i32 %126, 9
br i1 %127, label %131, label %138
128: ; preds = %123
%129 = sext i32 %121 to i64
%130 = getelementptr inbounds [10 x i8*], [10 x i8*]* @switch.table.main.45, i64 0, i64 %129
br label %134
131: ; preds = %125
%132 = sext i32 %126 to i64
%133 = getelementptr inbounds [9 x i8*], [9 x i8*]* @switch.table.main.46, i64 0, i64 %132
br label %134
134: ; preds = %131, %128
%135 = phi i8** [ %133, %131 ], [ %130, %128 ]
%136 = load i8*, i8** %135
%137 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %136)
br label %138
138: ; preds = %125, %123, %134
%139 = call i32 @putchar(i32 32)
%140 = sitofp i32 %121 to float
%141 = load float, float* %1
%142 = fsub float %141, %140
store float %142, float* %1
br label %143
143: ; preds = %116, %138
%144 = phi float [ %142, %138 ], [ %117, %116 ]
%145 = fcmp ult float %144, 0.000000e+00
br i1 %145, label %153, label %146
146: ; preds = %143
%147 = fpext float %144 to double
%148 = fadd double %147, 1.000000e-03
%149 = fdiv double %148, 1.000000e-02
%150 = fptrunc double %149 to float
%151 = call i32 @floor(float %150)
%152 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.41, i64 0, i64 0), i32 %151)
br label %153
153: ; preds = %146, %143
%154 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.42, i64 0, i64 0))
ret void
}