#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 */
scalar_t__ gets(char *);
scalar_t__ islower(char);
scalar_t__ isupper(char);
int /*<<< orphan*/ printf(char *, float);
short strlen(char *);
void main() {
  char myn[26], lvn[26];
  short len, i, pm, plv;
  float mdp, pc, mdv;
  while (gets(myn)) {
    len = strlen(myn);
    pm = 0;
    for (i = 0; i < len; i++)
      if (isupper(myn[i]))
        pm += (float)myn[i] - 64;
      else if (islower(myn[i]))
        pm += (float)myn[i] - 96;
    mdp = 0;
    while (pm) {
      mdp += pm % 10;
      pm /= 10;
    }
    pm = mdp;
    mdp = 0;
    while (pm) {
      mdp += pm % 10;
      pm /= 10;
    }
    gets(lvn);
    len = strlen(lvn);
    plv = 0;
    for (i = 0; i < len; i++)
      if (isupper(lvn[i]))
        plv += (float)lvn[i] - 64;
      else if (islower(lvn[i]))
        plv += (float)lvn[i] - 96;
    mdv = 0;
    while (plv) {
      mdv += plv % 10;
      plv /= 10;
    }
    plv = mdv;
    mdv = 0;
    while (plv) {
      mdv += plv % 10;
      plv /= 10;
    }
    if (mdp > mdv)
      pc = mdv * 100 / mdp;
    else
      pc = mdp * 100 / mdv;
    printf("%.2f %\n", pc);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
lea    -0x20(%rbp),%rdi
call   1060 <gets@plt>
cmp    $0x0,%rax
je     149c <main+0x34c>
lea    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
mov    %ax,-0x42(%rbp)
movw   $0x0,-0x46(%rbp)
movw   $0x0,-0x44(%rbp)
movswl -0x44(%rbp),%eax
movswl -0x42(%rbp),%ecx
cmp    %ecx,%eax
jge    1242 <main+0xf2>
movswq -0x44(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%edi
call   1070 <isupper@plt>
cmp    $0x0,%rax
je     11e0 <main+0x90>
movswq -0x44(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cvtsi2ss %eax,%xmm1
movss  0xe45(%rip),%xmm0
addss  %xmm0,%xmm1
movswl -0x46(%rbp),%eax
cvtsi2ss %eax,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x46(%rbp)
jmp    122c <main+0xdc>
movswq -0x44(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%edi
call   1030 <islower@plt>
cmp    $0x0,%rax
je     1227 <main+0xd7>
movswq -0x44(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cvtsi2ss %eax,%xmm1
movss  0xdf5(%rip),%xmm0
addss  %xmm0,%xmm1
movswl -0x46(%rbp),%eax
cvtsi2ss %eax,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x46(%rbp)
jmp    122c <main+0xdc>
jmp    1231 <main+0xe1>
mov    -0x44(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x44(%rbp)
jmp    1184 <main+0x34>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
cmpw   $0x0,-0x46(%rbp)
je     1284 <main+0x134>
movswl -0x46(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
addss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movswl -0x46(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %ax,-0x46(%rbp)
jmp    124a <main+0xfa>
movss  -0x4c(%rbp),%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x46(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
cmpw   $0x0,-0x46(%rbp)
je     12d3 <main+0x183>
movswl -0x46(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
addss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movswl -0x46(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %ax,-0x46(%rbp)
jmp    1299 <main+0x149>
lea    -0x40(%rbp),%rdi
call   1060 <gets@plt>
lea    -0x40(%rbp),%rdi
call   1040 <strlen@plt>
mov    %ax,-0x42(%rbp)
movw   $0x0,-0x48(%rbp)
movw   $0x0,-0x44(%rbp)
movswl -0x44(%rbp),%eax
movswl -0x42(%rbp),%ecx
cmp    %ecx,%eax
jge    13b3 <main+0x263>
movswq -0x44(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%edi
call   1070 <isupper@plt>
cmp    $0x0,%rax
je     1351 <main+0x201>
movswq -0x44(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cvtsi2ss %eax,%xmm1
movss  0xcd4(%rip),%xmm0
addss  %xmm0,%xmm1
movswl -0x48(%rbp),%eax
cvtsi2ss %eax,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x48(%rbp)
jmp    139d <main+0x24d>
movswq -0x44(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%edi
call   1030 <islower@plt>
cmp    $0x0,%rax
je     1398 <main+0x248>
movswq -0x44(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cvtsi2ss %eax,%xmm1
movss  0xc84(%rip),%xmm0
addss  %xmm0,%xmm1
movswl -0x48(%rbp),%eax
cvtsi2ss %eax,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x48(%rbp)
jmp    139d <main+0x24d>
jmp    13a2 <main+0x252>
mov    -0x44(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x44(%rbp)
jmp    12f5 <main+0x1a5>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
cmpw   $0x0,-0x48(%rbp)
je     13f5 <main+0x2a5>
movswl -0x48(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
addss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movswl -0x48(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %ax,-0x48(%rbp)
jmp    13bb <main+0x26b>
movss  -0x54(%rbp),%xmm0
cvttss2si %xmm0,%eax
mov    %ax,-0x48(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
cmpw   $0x0,-0x48(%rbp)
je     1444 <main+0x2f4>
movswl -0x48(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cvtsi2ss %edx,%xmm0
addss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movswl -0x48(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %ax,-0x48(%rbp)
jmp    140a <main+0x2ba>
movss  -0x4c(%rbp),%xmm0
ucomiss -0x54(%rbp),%xmm0
jbe    146f <main+0x31f>
movss  0xba5(%rip),%xmm0
mulss  -0x54(%rbp),%xmm0
divss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1486 <main+0x336>
movss  0xb89(%rip),%xmm0
mulss  -0x4c(%rbp),%xmm0
divss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x50(%rbp),%xmm0
lea    0xb7a(%rip),%rdi
call   1050 <printf@plt>
jmp    1158 <main+0x8>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
lea    0x10(%rsp),%rdi
call   1060 <gets@plt>
test   %rax,%rax
je     13db <main+0x28b>
lea    0x10(%rsp),%r14
lea    0x30(%rsp),%r12
lea    0xe82(%rip),%r15
jmp    11c0 <main+0x70>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm2,%xmm0
minss  %xmm1,%xmm0
maxss  %xmm2,%xmm1
mulss  0xe5d(%rip),%xmm0
divss  %xmm1,%xmm0
mov    %r15,%rdi
call   1050 <printf@plt>
mov    %r14,%rdi
call   1060 <gets@plt>
test   %rax,%rax
je     13db <main+0x28b>
mov    %r14,%rdi
call   1040 <strlen@plt>
xorps  %xmm0,%xmm0
test   %ax,%ax
jle    1266 <main+0x116>
movzwl %ax,%r13d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    11f1 <main+0xa1>
xchg   %ax,%ax
movswl %cx,%eax
add    %eax,%ebx
add    $0xffffffc0,%ebx
add    $0x1,%rbp
cmp    %rbp,%r13
je     1220 <main+0xd0>
movsbl 0x10(%rsp,%rbp,1),%edi
call   1070 <isupper@plt>
movsbl 0x10(%rsp,%rbp,1),%ecx
test   %rax,%rax
jne    11e0 <main+0x90>
movswl %cx,%edi
call   1030 <islower@plt>
test   %rax,%rax
je     11e8 <main+0x98>
movsbl 0x10(%rsp,%rbp,1),%eax
add    %eax,%ebx
add    $0xffffffa0,%ebx
jmp    11e8 <main+0x98>
xchg   %ax,%ax
xorps  %xmm0,%xmm0
test   %bx,%bx
je     1266 <main+0x116>
xorps  %xmm0,%xmm0
nopl   0x0(%rax,%rax,1)
movswl %bx,%eax
mov    %ebx,%ecx
imul   $0x6667,%eax,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x12,%eax
add    %edx,%eax
lea    (%rax,%rax,1),%edx
lea    (%rdx,%rdx,4),%edx
sub    %edx,%ecx
movswl %cx,%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
lea    0x9(%rbx),%ecx
addss  %xmm1,%xmm0
mov    %eax,%ebx
cmp    $0x12,%cx
ja     1230 <main+0xe0>
cvttss2si %xmm0,%eax
test   %ax,%ax
xorps  %xmm1,%xmm1
je     12b6 <main+0x166>
xorps  %xmm1,%xmm1
cs nopw 0x0(%rax,%rax,1)
nop
movswl %ax,%ecx
mov    %eax,%edx
imul   $0x6667,%ecx,%ecx
mov    %ecx,%esi
shr    $0x1f,%esi
sar    $0x12,%ecx
add    %esi,%ecx
lea    (%rcx,%rcx,1),%esi
lea    (%rsi,%rsi,4),%esi
sub    %esi,%edx
movswl %dx,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
lea    0x9(%rax),%edx
addss  %xmm0,%xmm1
mov    %ecx,%eax
cmp    $0x12,%dx
ja     1280 <main+0x130>
movss  %xmm1,0xc(%rsp)
mov    %r12,%rdi
call   1060 <gets@plt>
mov    %r12,%rdi
call   1040 <strlen@plt>
xorps  %xmm2,%xmm2
xorps  %xmm0,%xmm0
test   %ax,%ax
jle    1386 <main+0x236>
movzwl %ax,%r13d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    1304 <main+0x1b4>
cs nopw 0x0(%rax,%rax,1)
nop
movswl %cx,%eax
add    %eax,%ebx
add    $0xffffffc0,%ebx
xorps  %xmm2,%xmm2
add    $0x1,%rbp
cmp    %rbp,%r13
je     1340 <main+0x1f0>
movsbl 0x30(%rsp,%rbp,1),%edi
call   1070 <isupper@plt>
movsbl 0x30(%rsp,%rbp,1),%ecx
test   %rax,%rax
jne    12f0 <main+0x1a0>
movswl %cx,%edi
call   1030 <islower@plt>
test   %rax,%rax
je     12f8 <main+0x1a8>
movsbl 0x30(%rsp,%rbp,1),%eax
add    %eax,%ebx
add    $0xffffffa0,%ebx
jmp    12f8 <main+0x1a8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
test   %bx,%bx
je     1386 <main+0x236>
xorps  %xmm0,%xmm0
nopl   0x0(%rax,%rax,1)
movswl %bx,%eax
mov    %ebx,%ecx
imul   $0x6667,%eax,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x12,%eax
add    %edx,%eax
lea    (%rax,%rax,1),%edx
lea    (%rdx,%rdx,4),%edx
sub    %edx,%ecx
movswl %cx,%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
lea    0x9(%rbx),%ecx
addss  %xmm1,%xmm0
mov    %eax,%ebx
cmp    $0x12,%cx
ja     1350 <main+0x200>
cvttss2si %xmm0,%eax
test   %ax,%ax
movss  0xc(%rsp),%xmm1
je     1190 <main+0x40>
xorps  %xmm2,%xmm2
nopl   0x0(%rax)
movswl %ax,%ecx
mov    %eax,%edx
imul   $0x6667,%ecx,%ecx
mov    %ecx,%esi
shr    $0x1f,%esi
sar    $0x12,%ecx
add    %esi,%ecx
lea    (%rcx,%rcx,1),%esi
lea    (%rsi,%rsi,4),%esi
sub    %esi,%edx
movswl %dx,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
lea    0x9(%rax),%edx
addss  %xmm0,%xmm2
mov    %ecx,%eax
cmp    $0x12,%dx
ja     13a0 <main+0x250>
jmp    1190 <main+0x40>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [8 x i8] c"%.2f %\0A\00"
define void @main() {
%1 = alloca [26 x i8]
%2 = alloca [26 x i8]
%3 = alloca i16
%4 = alloca i16
%5 = alloca i16
%6 = alloca i16
%7 = alloca float
%8 = alloca float
%9 = alloca float
br label %10
10: ; preds = %194, %0
%11 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 0
%12 = call i64 @gets(i8* %11)
%13 = icmp ne i64 %12, 0
br i1 %13, label %14, label %197
14: ; preds = %10
%15 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 0
%16 = call signext i16 @strlen(i8* %15)
store i16 %16, i16* %3
store i16 0, i16* %5
store i16 0, i16* %4
br label %17
17: ; preds = %61, %14
%18 = load i16, i16* %4
%19 = sext i16 %18 to i32
%20 = load i16, i16* %3
%21 = sext i16 %20 to i32
%22 = icmp slt i32 %19, %21
br i1 %22, label %23, label %64
23: ; preds = %17
%24 = load i16, i16* %4
%25 = sext i16 %24 to i64
%26 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 %25
%27 = load i8, i8* %26
%28 = call i64 @isupper(i8 signext %27)
%29 = icmp ne i64 %28, 0
br i1 %29, label %30, label %41
30: ; preds = %23
%31 = load i16, i16* %4
%32 = sext i16 %31 to i64
%33 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 %32
%34 = load i8, i8* %33
%35 = sitofp i8 %34 to float
%36 = fsub float %35, 6.400000e+01
%37 = load i16, i16* %5
%38 = sitofp i16 %37 to float
%39 = fadd float %38, %36
%40 = fptosi float %39 to i16
store i16 %40, i16* %5
br label %60
41: ; preds = %23
%42 = load i16, i16* %4
%43 = sext i16 %42 to i64
%44 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 %43
%45 = load i8, i8* %44
%46 = call i64 @islower(i8 signext %45)
%47 = icmp ne i64 %46, 0
br i1 %47, label %48, label %59
48: ; preds = %41
%49 = load i16, i16* %4
%50 = sext i16 %49 to i64
%51 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 %50
%52 = load i8, i8* %51
%53 = sitofp i8 %52 to float
%54 = fsub float %53, 9.600000e+01
%55 = load i16, i16* %5
%56 = sitofp i16 %55 to float
%57 = fadd float %56, %54
%58 = fptosi float %57 to i16
store i16 %58, i16* %5
br label %59
59: ; preds = %48, %41
br label %60
60: ; preds = %59, %30
br label %61
61: ; preds = %60
%62 = load i16, i16* %4
%63 = add i16 %62, 1
store i16 %63, i16* %4
br label %17
64: ; preds = %17
store float 0.000000e+00, float* %7
br label %65
65: ; preds = %68, %64
%66 = load i16, i16* %5
%67 = icmp ne i16 %66, 0
br i1 %67, label %68, label %79
68: ; preds = %65
%69 = load i16, i16* %5
%70 = sext i16 %69 to i32
%71 = srem i32 %70, 10
%72 = sitofp i32 %71 to float
%73 = load float, float* %7
%74 = fadd float %73, %72
store float %74, float* %7
%75 = load i16, i16* %5
%76 = sext i16 %75 to i32
%77 = sdiv i32 %76, 10
%78 = trunc i32 %77 to i16
store i16 %78, i16* %5
br label %65
79: ; preds = %65
%80 = load float, float* %7
%81 = fptosi float %80 to i16
store i16 %81, i16* %5
store float 0.000000e+00, float* %7
br label %82
82: ; preds = %85, %79
%83 = load i16, i16* %5
%84 = icmp ne i16 %83, 0
br i1 %84, label %85, label %96
85: ; preds = %82
%86 = load i16, i16* %5
%87 = sext i16 %86 to i32
%88 = srem i32 %87, 10
%89 = sitofp i32 %88 to float
%90 = load float, float* %7
%91 = fadd float %90, %89
store float %91, float* %7
%92 = load i16, i16* %5
%93 = sext i16 %92 to i32
%94 = sdiv i32 %93, 10
%95 = trunc i32 %94 to i16
store i16 %95, i16* %5
br label %82
96: ; preds = %82
%97 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 0
%98 = call i64 @gets(i8* %97)
%99 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 0
%100 = call signext i16 @strlen(i8* %99)
store i16 %100, i16* %3
store i16 0, i16* %6
store i16 0, i16* %4
br label %101
101: ; preds = %145, %96
%102 = load i16, i16* %4
%103 = sext i16 %102 to i32
%104 = load i16, i16* %3
%105 = sext i16 %104 to i32
%106 = icmp slt i32 %103, %105
br i1 %106, label %107, label %148
107: ; preds = %101
%108 = load i16, i16* %4
%109 = sext i16 %108 to i64
%110 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 %109
%111 = load i8, i8* %110
%112 = call i64 @isupper(i8 signext %111)
%113 = icmp ne i64 %112, 0
br i1 %113, label %114, label %125
114: ; preds = %107
%115 = load i16, i16* %4
%116 = sext i16 %115 to i64
%117 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 %116
%118 = load i8, i8* %117
%119 = sitofp i8 %118 to float
%120 = fsub float %119, 6.400000e+01
%121 = load i16, i16* %6
%122 = sitofp i16 %121 to float
%123 = fadd float %122, %120
%124 = fptosi float %123 to i16
store i16 %124, i16* %6
br label %144
125: ; preds = %107
%126 = load i16, i16* %4
%127 = sext i16 %126 to i64
%128 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 %127
%129 = load i8, i8* %128
%130 = call i64 @islower(i8 signext %129)
%131 = icmp ne i64 %130, 0
br i1 %131, label %132, label %143
132: ; preds = %125
%133 = load i16, i16* %4
%134 = sext i16 %133 to i64
%135 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 %134
%136 = load i8, i8* %135
%137 = sitofp i8 %136 to float
%138 = fsub float %137, 9.600000e+01
%139 = load i16, i16* %6
%140 = sitofp i16 %139 to float
%141 = fadd float %140, %138
%142 = fptosi float %141 to i16
store i16 %142, i16* %6
br label %143
143: ; preds = %132, %125
br label %144
144: ; preds = %143, %114
br label %145
145: ; preds = %144
%146 = load i16, i16* %4
%147 = add i16 %146, 1
store i16 %147, i16* %4
br label %101
148: ; preds = %101
store float 0.000000e+00, float* %9
br label %149
149: ; preds = %152, %148
%150 = load i16, i16* %6
%151 = icmp ne i16 %150, 0
br i1 %151, label %152, label %163
152: ; preds = %149
%153 = load i16, i16* %6
%154 = sext i16 %153 to i32
%155 = srem i32 %154, 10
%156 = sitofp i32 %155 to float
%157 = load float, float* %9
%158 = fadd float %157, %156
store float %158, float* %9
%159 = load i16, i16* %6
%160 = sext i16 %159 to i32
%161 = sdiv i32 %160, 10
%162 = trunc i32 %161 to i16
store i16 %162, i16* %6
br label %149
163: ; preds = %149
%164 = load float, float* %9
%165 = fptosi float %164 to i16
store i16 %165, i16* %6
store float 0.000000e+00, float* %9
br label %166
166: ; preds = %169, %163
%167 = load i16, i16* %6
%168 = icmp ne i16 %167, 0
br i1 %168, label %169, label %180
169: ; preds = %166
%170 = load i16, i16* %6
%171 = sext i16 %170 to i32
%172 = srem i32 %171, 10
%173 = sitofp i32 %172 to float
%174 = load float, float* %9
%175 = fadd float %174, %173
store float %175, float* %9
%176 = load i16, i16* %6
%177 = sext i16 %176 to i32
%178 = sdiv i32 %177, 10
%179 = trunc i32 %178 to i16
store i16 %179, i16* %6
br label %166
180: ; preds = %166
%181 = load float, float* %7
%182 = load float, float* %9
%183 = fcmp ogt float %181, %182
br i1 %183, label %184, label %189
184: ; preds = %180
%185 = load float, float* %9
%186 = fmul float %185, 1.000000e+02
%187 = load float, float* %7
%188 = fdiv float %186, %187
store float %188, float* %8
br label %194
189: ; preds = %180
%190 = load float, float* %7
%191 = fmul float %190, 1.000000e+02
%192 = load float, float* %9
%193 = fdiv float %191, %192
store float %193, float* %8
br label %194
194: ; preds = %189, %184
%195 = load float, float* %8
%196 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), float %195)
br label %10
197: ; preds = %10
ret void
}

LLVM IR (-O2):
@.str = [8 x i8] c"%.2f %\0A\00"
define void @main() {
%1 = alloca [26 x i8]
%2 = alloca [26 x i8]
%3 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 0
%4 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 0
%5 = call i64 @gets(i8* %3)
%6 = icmp eq i64 %5, 0
br i1 %6, label %125, label %7
7: ; preds = %0, %115
%8 = call signext i16 @strlen(i8* %3)
%9 = icmp sgt i16 %8, 0
br i1 %9, label %10, label %47
10: ; preds = %7
%11 = zext i16 %8 to i64
br label %14
12: ; preds = %34
%13 = icmp eq i16 %35, 0
br i1 %13, label %47, label %38
14: ; preds = %10, %34
%15 = phi i64 [ 0, %10 ], [ %36, %34 ]
%16 = phi i16 [ 0, %10 ], [ %35, %34 ]
%17 = getelementptr inbounds [26 x i8], [26 x i8]* %1, i64 0, i64 %15
%18 = load i8, i8* %17
%19 = call i64 @isupper(i8 signext %18)
%20 = icmp eq i64 %19, 0
%21 = load i8, i8* %17
br i1 %20, label %26, label %22
22: ; preds = %14
%23 = sext i8 %21 to i16
%24 = add nsw i16 %23, -64
%25 = add i16 %24, %16
br label %34
26: ; preds = %14
%27 = call i64 @islower(i8 signext %21)
%28 = icmp eq i64 %27, 0
br i1 %28, label %34, label %29
29: ; preds = %26
%30 = load i8, i8* %17
%31 = sext i8 %30 to i16
%32 = add nsw i16 %31, -96
%33 = add i16 %32, %16
br label %34
34: ; preds = %22, %29, %26
%35 = phi i16 [ %25, %22 ], [ %33, %29 ], [ %16, %26 ]
%36 = add nuw nsw i64 %15, 1
%37 = icmp eq i64 %36, %11
br i1 %37, label %12, label %14
38: ; preds = %12, %38
%39 = phi float [ %43, %38 ], [ 0.000000e+00, %12 ]
%40 = phi i16 [ %44, %38 ], [ %35, %12 ]
%41 = srem i16 %40, 10
%42 = sitofp i16 %41 to float
%43 = fadd float %39, %42
%44 = sdiv i16 %40, 10
%45 = add i16 %40, 9
%46 = icmp ult i16 %45, 19
br i1 %46, label %47, label %38
47: ; preds = %38, %7, %12
%48 = phi float [ 0.000000e+00, %12 ], [ 0.000000e+00, %7 ], [ %43, %38 ]
%49 = fptosi float %48 to i16
%50 = icmp eq i16 %49, 0
br i1 %50, label %60, label %51
51: ; preds = %47, %51
%52 = phi float [ %56, %51 ], [ 0.000000e+00, %47 ]
%53 = phi i16 [ %57, %51 ], [ %49, %47 ]
%54 = srem i16 %53, 10
%55 = sitofp i16 %54 to float
%56 = fadd float %52, %55
%57 = sdiv i16 %53, 10
%58 = add i16 %53, 9
%59 = icmp ult i16 %58, 19
br i1 %59, label %60, label %51
60: ; preds = %51, %47
%61 = phi float [ 0.000000e+00, %47 ], [ %56, %51 ]
%62 = call i64 @gets(i8* %4)
%63 = call signext i16 @strlen(i8* %4)
%64 = icmp sgt i16 %63, 0
br i1 %64, label %65, label %102
65: ; preds = %60
%66 = zext i16 %63 to i64
br label %69
67: ; preds = %89
%68 = icmp eq i16 %90, 0
br i1 %68, label %102, label %93
69: ; preds = %65, %89
%70 = phi i64 [ 0, %65 ], [ %91, %89 ]
%71 = phi i16 [ 0, %65 ], [ %90, %89 ]
%72 = getelementptr inbounds [26 x i8], [26 x i8]* %2, i64 0, i64 %70
%73 = load i8, i8* %72
%74 = call i64 @isupper(i8 signext %73)
%75 = icmp eq i64 %74, 0
%76 = load i8, i8* %72
br i1 %75, label %81, label %77
77: ; preds = %69
%78 = sext i8 %76 to i16
%79 = add nsw i16 %78, -64
%80 = add i16 %79, %71
br label %89
81: ; preds = %69
%82 = call i64 @islower(i8 signext %76)
%83 = icmp eq i64 %82, 0
br i1 %83, label %89, label %84
84: ; preds = %81
%85 = load i8, i8* %72
%86 = sext i8 %85 to i16
%87 = add nsw i16 %86, -96
%88 = add i16 %87, %71
br label %89
89: ; preds = %77, %84, %81
%90 = phi i16 [ %80, %77 ], [ %88, %84 ], [ %71, %81 ]
%91 = add nuw nsw i64 %70, 1
%92 = icmp eq i64 %91, %66
br i1 %92, label %67, label %69
93: ; preds = %67, %93
%94 = phi float [ %98, %93 ], [ 0.000000e+00, %67 ]
%95 = phi i16 [ %99, %93 ], [ %90, %67 ]
%96 = srem i16 %95, 10
%97 = sitofp i16 %96 to float
%98 = fadd float %94, %97
%99 = sdiv i16 %95, 10
%100 = add i16 %95, 9
%101 = icmp ult i16 %100, 19
br i1 %101, label %102, label %93
102: ; preds = %93, %60, %67
%103 = phi float [ 0.000000e+00, %67 ], [ 0.000000e+00, %60 ], [ %98, %93 ]
%104 = fptosi float %103 to i16
%105 = icmp eq i16 %104, 0
br i1 %105, label %115, label %106
106: ; preds = %102, %106
%107 = phi float [ %111, %106 ], [ 0.000000e+00, %102 ]
%108 = phi i16 [ %112, %106 ], [ %104, %102 ]
%109 = srem i16 %108, 10
%110 = sitofp i16 %109 to float
%111 = fadd float %107, %110
%112 = sdiv i16 %108, 10
%113 = add i16 %108, 9
%114 = icmp ult i16 %113, 19
br i1 %114, label %115, label %106
115: ; preds = %106, %102
%116 = phi float [ 0.000000e+00, %102 ], [ %111, %106 ]
%117 = fcmp ogt float %61, %116
%118 = select i1 %117, float %116, float %61
%119 = select i1 %117, float %61, float %116
%120 = fmul float %118, 1.000000e+02
%121 = fdiv float %120, %119
%122 = call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), float %121)
%123 = call i64 @gets(i8* %3)
%124 = icmp eq i64 %123, 0
br i1 %124, label %125, label %7
125: ; preds = %115, %0
ret void
}