#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 *, ...);
void levels(int kpds6, int kpds7, int center) {
  int o11, o12;
  o11 = kpds7 / 256;
  o12 = kpds7 % 256;
  switch (kpds6) {
  case 1:
    printf("sfc");
    break;
  case 2:
    printf("cld base");
    break;
  case 3:
    printf("cld top");
    break;
  case 4:
    printf("0C isotherm");
    break;
  case 5:
    printf("cond lev");
    break;
  case 6:
    printf("max wind lev");
    break;
  case 7:
    printf("tropopause");
    break;
  case 8:
    printf("nom. top");
    break;
  case 9:
    printf("sea bottom");
    break;
  case 200:
  case 10:
    printf("atmos col");
    break;
  case 12:
  case 212:
    printf("low cld bot");
    break;
  case 13:
  case 213:
    printf("low cld top");
    break;
  case 14:
  case 214:
    printf("low cld lay");
    break;
  case 22:
  case 222:
    printf("mid cld bot");
    break;
  case 23:
  case 223:
    printf("mid cld top");
    break;
  case 24:
  case 224:
    printf("mid cld lay");
    break;
  case 32:
  case 232:
    printf("high cld bot");
    break;
  case 33:
  case 233:
    printf("high cld top");
    break;
  case 34:
  case 234:
    printf("high cld lay");
    break;
  case 201:
    printf("ocean column");
    break;
  case 204:
    printf("high trop freezing lvl");
    break;
  case 206:
    printf("grid-scale cld bot");
    break;
  case 207:
    printf("grid-scale cld top");
    break;
  case 209:
    printf("bndary-layer cld bot");
    break;
  case 210:
    printf("bndary-layer cld top");
    break;
  case 211:
    printf("bndary-layer cld layer");
    break;
  case 242:
    printf("convect-cld bot");
    break;
  case 243:
    printf("convect-cld top");
    break;
  case 244:
    printf("convect-cld layer");
    break;
  case 246:
    printf("max e-pot-temp lvl");
    break;
  case 247:
    printf("equilibrium lvl");
    break;
  case 248:
    printf("shallow convect-cld bot");
    break;
  case 249:
    printf("shallow convect-cld top");
    break;
  case 251:
    printf("deep convect-cld bot");
    break;
  case 252:
    printf("deep convect-cld top");
    break;
  case 100:
    printf("%d mb", kpds7);
    break;
  case 101:
    printf("%d-%d mb", o11 * 10, o12 * 10);
    break;
  case 102:
    printf("MSL");
    break;
  case 103:
    printf("%d m above MSL", kpds7);
    break;
  case 104:
    printf("%d-%d m above msl", o11 * 100, o12 * 100);
    break;
  case 105:
    printf("%d m above gnd", kpds7);
    break;
  case 106:
    printf("%d-%d m above gnd", o11 * 100, o12 * 100);
    break;
  case 107:
    printf("sigma=%.4f", kpds7 / 10000.0);
    break;
  case 108:
    printf("sigma %.2f-%.2f", o11 / 100.0, o12 / 100.0);
    break;
  case 109:
    printf("hybrid lev %d", kpds7);
    break;
  case 110:
    printf("hybrid %d-%d", o11, o12);
    break;
  case 111:
    printf("%d cm down", kpds7);
    break;
  case 112:
    printf("%d-%d cm down", o11, o12);
    break;
  case 113:
    printf("%dK", kpds7);
    break;
  case 114:
    printf("%d-%dK", 475 - o11, 475 - o12);
    break;
  case 115:
    printf("%d mb above gnd", kpds7);
    break;
  case 116:
    printf("%d-%d mb above gnd", o11, o12);
    break;
  case 117:
    printf("%d pv units", ((1 - (int)((unsigned)(o11 & 0x80) >> 6)) *
                           (int)(((o11 & 0x7f) << 8) + o12)));
    break;
  case 119:
    printf("%.5f (ETA level)", kpds7 / 10000.0);
    break;
  case 120:
    printf("%.2f-%.2f (ETA levels)", o11 / 100.0, o12 / 100.0);
    break;
  case 121:
    printf("%d-%d mb", 1100 - o11, 1100 - o12);
    break;
  case 125:
    printf("%d cm above gnd", kpds7);
    break;
  case 126:
    if (center == 7)
      printf("%.2f mb", kpds7 * 0.01);
    break;
  case 128:
    printf("%.3f-%.3f (sigma)", 1.1 - o11 / 1000.0, 1.1 - o12 / 1000.0);
    break;
  case 141:
    printf("%d-%d mb", o11 * 10, 1100 - o12);
    break;
  case 160:
    printf("%d m below sea level", kpds7);
    break;
  default:
    break;
  }
}


x86 assembly (clang, -O0):
<levels>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
add    $0xff,%ecx
test   %eax,%eax
cmovs  %ecx,%eax
sar    $0x8,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,%edx
add    $0xff,%edx
test   %eax,%eax
mov    %eax,%ecx
cmovs  %edx,%ecx
and    $0xffffff00,%ecx
sub    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0xfb,%eax
ja     1753 <levels+0x643>
mov    -0x20(%rbp),%rax
lea    0xeb2(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1292(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1283(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x12f8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1266(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x125f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1255(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x124f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1247(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x123d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1235(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x122c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1225(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x121e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1217(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1210(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1209(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1202(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11fc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11f6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11f0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11ea(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11ee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11ee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11ee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11f0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11f2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1260(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x1262(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11d0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11cf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11cf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11cc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11d1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11d6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11d8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x11da(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
imul   $0xa,-0x10(%rbp),%esi
imul   $0xa,-0x14(%rbp),%edx
lea    0x11bc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
lea    0x11bd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x119c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
imul   $0x64,-0x10(%rbp),%esi
imul   $0x64,-0x14(%rbp),%edx
lea    0x1190(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x118f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
imul   $0x64,-0x10(%rbp),%esi
imul   $0x64,-0x14(%rbp),%edx
lea    0x1171(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  0xb55(%rip),%xmm1
divsd  %xmm1,%xmm0
lea    0x115f(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  0xb29(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0xb18(%rip),%xmm2
divsd  %xmm2,%xmm1
lea    0x1135(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x112f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x10(%rbp),%esi
mov    -0x14(%rbp),%edx
lea    0x1124(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x111e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x10(%rbp),%esi
mov    -0x14(%rbp),%edx
lea    0x1102(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x10fd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    $0x1db,%esi
sub    -0x10(%rbp),%esi
mov    $0x1db,%edx
sub    -0x14(%rbp),%edx
lea    0x10d7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x10cb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x10(%rbp),%esi
mov    -0x14(%rbp),%edx
lea    0x10af(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x10(%rbp),%eax
and    $0x80,%eax
shr    $0x6,%eax
mov    $0x1,%esi
sub    %eax,%esi
mov    -0x10(%rbp),%eax
and    $0x7f,%eax
shl    $0x8,%eax
add    -0x14(%rbp),%eax
imul   %eax,%esi
lea    0x108e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  0xa02(%rip),%xmm1
divsd  %xmm1,%xmm0
lea    0x1076(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  0x9d6(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0x9c5(%rip),%xmm2
divsd  %xmm2,%xmm1
lea    0x1052(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    $0x44c,%esi
sub    -0x10(%rbp),%esi
mov    $0x44c,%edx
sub    -0x14(%rbp),%edx
lea    0xf78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0x1030(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cmpl   $0x7,-0xc(%rbp)
jne    16cc <levels+0x5bc>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  0x956(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    0x1012(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
cvtsi2sdl -0x10(%rbp),%xmm1
movsd  0x92a(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0x916(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsi2sdl -0x14(%rbp),%xmm2
movsd  0x90d(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  0x8f9(%rip),%xmm1
subsd  %xmm2,%xmm1
lea    0xfcd(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
imul   $0xa,-0x10(%rbp),%esi
mov    $0x44c,%edx
sub    -0x14(%rbp),%edx
lea    0xec8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
mov    -0x8(%rbp),%esi
lea    0xfaa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1758 <levels+0x648>
jmp    1758 <levels+0x648>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<levels>:
lea    0xff(%rsi),%ecx
test   %esi,%esi
cmovns %esi,%ecx
add    $0xffffffff,%edi
cmp    $0xfb,%edi
ja     14fc <levels+0x3ec>
mov    %edx,%r8d
mov    %ecx,%eax
sar    $0x8,%eax
and    $0xffffff00,%ecx
mov    %esi,%edx
sub    %ecx,%edx
lea    0xee5(%rip),%rcx
movslq (%rcx,%rdi,4),%rdi
add    %rcx,%rdi
jmp    *%rdi
lea    0x1313(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x130f(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x130d(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x130b(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1309(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1307(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1305(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1303(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1302(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1301(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1239(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x122f(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x12a9(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x121c(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x121a(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1215(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1214(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1211(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x120c(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x139f(%rip),%rdi
jmp    14d5 <levels+0x3c5>
lea    0x13a4(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x138b(%rip),%rdi
jmp    14d5 <levels+0x3c5>
imul   $0x64,%eax,%esi
imul   $0x64,%edx,%edx
lea    0x1388(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x138f(%rip),%rdi
jmp    14d5 <levels+0x3c5>
imul   $0x64,%eax,%esi
imul   $0x64,%edx,%edx
lea    0x137a(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
cvtsi2sd %esi,%xmm0
divsd  0xd64(%rip),%xmm0
lea    0x1372(%rip),%rdi
mov    $0x1,%al
jmp    1030 <printf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd42(%rip),%xmm2
cvtsi2sd %edx,%xmm1
divsd  %xmm2,%xmm0
divsd  %xmm2,%xmm1
lea    0x1357(%rip),%rdi
mov    $0x2,%al
jmp    1030 <printf@plt>
lea    0x1359(%rip),%rdi
jmp    14d5 <levels+0x3c5>
lea    0x135b(%rip),%rdi
jmp    1347 <levels+0x237>
lea    0x1362(%rip),%rdi
jmp    14d5 <levels+0x3c5>
lea    0x1353(%rip),%rdi
jmp    1347 <levels+0x237>
lea    0x135b(%rip),%rdi
jmp    14d5 <levels+0x3c5>
mov    $0x1db,%ecx
mov    $0x1db,%esi
sub    %eax,%esi
sub    %edx,%ecx
lea    0x133e(%rip),%rdi
jmp    14c5 <levels+0x3b5>
lea    0x1339(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
jmp    1030 <printf@plt>
mov    %eax,%ecx
shr    $0x6,%ecx
and    $0x2,%ecx
mov    $0x1,%esi
sub    %ecx,%esi
and    $0x7f,%eax
shl    $0x8,%eax
add    %edx,%eax
imul   %esi,%eax
lea    0x1322(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
jmp    1030 <printf@plt>
cvtsi2sd %esi,%xmm0
divsd  0xc9a(%rip),%xmm0
lea    0x1312(%rip),%rdi
mov    $0x1,%al
jmp    1030 <printf@plt>
cvtsi2sd %eax,%xmm0
movsd  0xc78(%rip),%xmm2
cvtsi2sd %edx,%xmm1
divsd  %xmm2,%xmm0
divsd  %xmm2,%xmm1
lea    0x12fd(%rip),%rdi
mov    $0x2,%al
jmp    1030 <printf@plt>
cvtsi2sd %eax,%xmm2
movsd  0xc3a(%rip),%xmm3
divsd  %xmm3,%xmm2
movsd  0xc36(%rip),%xmm1
movapd %xmm1,%xmm0
subsd  %xmm2,%xmm0
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
divsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
lea    0x12ef(%rip),%rdi
mov    $0x2,%al
jmp    1030 <printf@plt>
lea    0x12f3(%rip),%rdi
jmp    14d5 <levels+0x3c5>
lea    0x10d5(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x10eb(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x10f0(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x110a(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1192(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1199(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x110c(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1110(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1125(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1147(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
add    %eax,%eax
lea    (%rax,%rax,4),%esi
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
lea    0x1159(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x11d5(%rip),%rdi
jmp    14d5 <levels+0x3c5>
mov    $0x44c,%ecx
mov    $0x44c,%esi
sub    %eax,%esi
sub    %edx,%ecx
lea    0x1134(%rip),%rdi
mov    %ecx,%edx
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x11f2(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
cmp    $0x7,%r8d
jne    14fc <levels+0x3ec>
cvtsi2sd %esi,%xmm0
mulsd  0xb22(%rip),%xmm0
lea    0x11e2(%rip),%rdi
mov    $0x1,%al
jmp    1030 <printf@plt>
ret
add    %eax,%eax
lea    (%rax,%rax,4),%esi
mov    $0x44c,%eax
sub    %edx,%eax
lea    0x10e9(%rip),%rdi
mov    %eax,%edx
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0xfcc(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0xffb(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1017(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x1045(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x105f(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>
lea    0x107e(%rip),%rdi
xor    %eax,%eax
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [4 x i8] c"sfc\00"
@.str.1 = [9 x i8] c"cld base\00"
@.str.2 = [8 x i8] c"cld top\00"
@.str.3 = [12 x i8] c"0C isotherm\00"
@.str.4 = [9 x i8] c"cond lev\00"
@.str.5 = [13 x i8] c"max wind lev\00"
@.str.6 = [11 x i8] c"tropopause\00"
@.str.7 = [9 x i8] c"nom. top\00"
@.str.8 = [11 x i8] c"sea bottom\00"
@.str.9 = [10 x i8] c"atmos col\00"
@.str.10 = [12 x i8] c"low cld bot\00"
@.str.11 = [12 x i8] c"low cld top\00"
@.str.12 = [12 x i8] c"low cld lay\00"
@.str.13 = [12 x i8] c"mid cld bot\00"
@.str.14 = [12 x i8] c"mid cld top\00"
@.str.15 = [12 x i8] c"mid cld lay\00"
@.str.16 = [13 x i8] c"high cld bot\00"
@.str.17 = [13 x i8] c"high cld top\00"
@.str.18 = [13 x i8] c"high cld lay\00"
@.str.19 = [13 x i8] c"ocean column\00"
@.str.20 = [23 x i8] c"high trop freezing lvl\00"
@.str.21 = [19 x i8] c"grid-scale cld bot\00"
@.str.22 = [19 x i8] c"grid-scale cld top\00"
@.str.23 = [21 x i8] c"bndary-layer cld bot\00"
@.str.24 = [21 x i8] c"bndary-layer cld top\00"
@.str.25 = [23 x i8] c"bndary-layer cld layer\00"
@.str.26 = [16 x i8] c"convect-cld bot\00"
@.str.27 = [16 x i8] c"convect-cld top\00"
@.str.28 = [18 x i8] c"convect-cld layer\00"
@.str.29 = [19 x i8] c"max e-pot-temp lvl\00"
@.str.30 = [16 x i8] c"equilibrium lvl\00"
@.str.31 = [24 x i8] c"shallow convect-cld bot\00"
@.str.32 = [24 x i8] c"shallow convect-cld top\00"
@.str.33 = [21 x i8] c"deep convect-cld bot\00"
@.str.34 = [21 x i8] c"deep convect-cld top\00"
@.str.35 = [6 x i8] c"%d mb\00"
@.str.36 = [9 x i8] c"%d-%d mb\00"
@.str.37 = [4 x i8] c"MSL\00"
@.str.38 = [15 x i8] c"%d m above MSL\00"
@.str.39 = [18 x i8] c"%d-%d m above msl\00"
@.str.40 = [15 x i8] c"%d m above gnd\00"
@.str.41 = [18 x i8] c"%d-%d m above gnd\00"
@.str.42 = [11 x i8] c"sigma=%.4f\00"
@.str.43 = [16 x i8] c"sigma %.2f-%.2f\00"
@.str.44 = [14 x i8] c"hybrid lev %d\00"
@.str.45 = [13 x i8] c"hybrid %d-%d\00"
@.str.46 = [11 x i8] c"%d cm down\00"
@.str.47 = [14 x i8] c"%d-%d cm down\00"
@.str.48 = [4 x i8] c"%dK\00"
@.str.49 = [7 x i8] c"%d-%dK\00"
@.str.50 = [16 x i8] c"%d mb above gnd\00"
@.str.51 = [19 x i8] c"%d-%d mb above gnd\00"
@.str.52 = [12 x i8] c"%d pv units\00"
@.str.53 = [17 x i8] c"%.5f (ETA level)\00"
@.str.54 = [23 x i8] c"%.2f-%.2f (ETA levels)\00"
@.str.55 = [16 x i8] c"%d cm above gnd\00"
@.str.56 = [8 x i8] c"%.2f mb\00"
@.str.57 = [18 x i8] c"%.3f-%.3f (sigma)\00"
@.str.58 = [21 x i8] c"%d m below sea level\00"
define void @levels(i32 %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%9 = load i32, i32* %5
%10 = sdiv i32 %9, 256
store i32 %10, i32* %7
%11 = load i32, i32* %5
%12 = srem i32 %11, 256
store i32 %12, i32* %8
%13 = load i32, i32* %4
switch i32 %13, label %218 [
i32 1, label %14
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
i32 200, label %32
i32 10, label %32
i32 12, label %34
i32 212, label %34
i32 13, label %36
i32 213, label %36
i32 14, label %38
i32 214, label %38
i32 22, label %40
i32 222, label %40
i32 23, label %42
i32 223, label %42
i32 24, label %44
i32 224, label %44
i32 32, label %46
i32 232, label %46
i32 33, label %48
i32 233, label %48
i32 34, label %50
i32 234, label %50
i32 201, label %52
i32 204, label %54
i32 206, label %56
i32 207, label %58
i32 209, label %60
i32 210, label %62
i32 211, label %64
i32 242, label %66
i32 243, label %68
i32 244, label %70
i32 246, label %72
i32 247, label %74
i32 248, label %76
i32 249, label %78
i32 251, label %80
i32 252, label %82
i32 100, label %84
i32 101, label %87
i32 102, label %93
i32 103, label %95
i32 104, label %98
i32 105, label %104
i32 106, label %107
i32 107, label %113
i32 108, label %118
i32 109, label %126
i32 110, label %129
i32 111, label %133
i32 112, label %136
i32 113, label %140
i32 114, label %143
i32 115, label %149
i32 116, label %152
i32 117, label %156
i32 119, label %168
i32 120, label %173
i32 121, label %181
i32 125, label %187
i32 126, label %190
i32 128, label %199
i32 141, label %209
i32 160, label %215
]
14: ; preds = %3
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %219
16: ; preds = %3
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
br label %219
18: ; preds = %3
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
br label %219
20: ; preds = %3
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %219
22: ; preds = %3
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
br label %219
24: ; preds = %3
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0))
br label %219
26: ; preds = %3
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
br label %219
28: ; preds = %3
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0))
br label %219
30: ; preds = %3
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0))
br label %219
32: ; preds = %3, %3
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
br label %219
34: ; preds = %3, %3
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
br label %219
36: ; preds = %3, %3
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0))
br label %219
38: ; preds = %3, %3
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
br label %219
40: ; preds = %3, %3
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0))
br label %219
42: ; preds = %3, %3
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
br label %219
44: ; preds = %3, %3
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0))
br label %219
46: ; preds = %3, %3
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
br label %219
48: ; preds = %3, %3
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0))
br label %219
50: ; preds = %3, %3
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0))
br label %219
52: ; preds = %3
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0))
br label %219
54: ; preds = %3
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0))
br label %219
56: ; preds = %3
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
br label %219
58: ; preds = %3
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
br label %219
60: ; preds = %3
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.23, i64 0, i64 0))
br label %219
62: ; preds = %3
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.24, i64 0, i64 0))
br label %219
64: ; preds = %3
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0))
br label %219
66: ; preds = %3
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0))
br label %219
68: ; preds = %3
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0))
br label %219
70: ; preds = %3
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0))
br label %219
72: ; preds = %3
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.29, i64 0, i64 0))
br label %219
74: ; preds = %3
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.30, i64 0, i64 0))
br label %219
76: ; preds = %3
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0))
br label %219
78: ; preds = %3
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.32, i64 0, i64 0))
br label %219
80: ; preds = %3
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.33, i64 0, i64 0))
br label %219
82: ; preds = %3
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.34, i64 0, i64 0))
br label %219
84: ; preds = %3
%85 = load i32, i32* %5
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0), i32 %85)
br label %219
87: ; preds = %3
%88 = load i32, i32* %7
%89 = mul nsw i32 %88, 10
%90 = load i32, i32* %8
%91 = mul nsw i32 %90, 10
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %89, i32 %91)
br label %219
93: ; preds = %3
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0))
br label %219
95: ; preds = %3
%96 = load i32, i32* %5
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.38, i64 0, i64 0), i32 %96)
br label %219
98: ; preds = %3
%99 = load i32, i32* %7
%100 = mul nsw i32 %99, 100
%101 = load i32, i32* %8
%102 = mul nsw i32 %101, 100
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0), i32 %100, i32 %102)
br label %219
104: ; preds = %3
%105 = load i32, i32* %5
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), i32 %105)
br label %219
107: ; preds = %3
%108 = load i32, i32* %7
%109 = mul nsw i32 %108, 100
%110 = load i32, i32* %8
%111 = mul nsw i32 %110, 100
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.41, i64 0, i64 0), i32 %109, i32 %111)
br label %219
113: ; preds = %3
%114 = load i32, i32* %5
%115 = sitofp i32 %114 to double
%116 = fdiv double %115, 1.000000e+04
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.42, i64 0, i64 0), double %116)
br label %219
118: ; preds = %3
%119 = load i32, i32* %7
%120 = sitofp i32 %119 to double
%121 = fdiv double %120, 1.000000e+02
%122 = load i32, i32* %8
%123 = sitofp i32 %122 to double
%124 = fdiv double %123, 1.000000e+02
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.43, i64 0, i64 0), double %121, double %124)
br label %219
126: ; preds = %3
%127 = load i32, i32* %5
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.44, i64 0, i64 0), i32 %127)
br label %219
129: ; preds = %3
%130 = load i32, i32* %7
%131 = load i32, i32* %8
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.45, i64 0, i64 0), i32 %130, i32 %131)
br label %219
133: ; preds = %3
%134 = load i32, i32* %5
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.46, i64 0, i64 0), i32 %134)
br label %219
136: ; preds = %3
%137 = load i32, i32* %7
%138 = load i32, i32* %8
%139 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.47, i64 0, i64 0), i32 %137, i32 %138)
br label %219
140: ; preds = %3
%141 = load i32, i32* %5
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), i32 %141)
br label %219
143: ; preds = %3
%144 = load i32, i32* %7
%145 = sub nsw i32 475, %144
%146 = load i32, i32* %8
%147 = sub nsw i32 475, %146
%148 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i32 %145, i32 %147)
br label %219
149: ; preds = %3
%150 = load i32, i32* %5
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.50, i64 0, i64 0), i32 %150)
br label %219
152: ; preds = %3
%153 = load i32, i32* %7
%154 = load i32, i32* %8
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0), i32 %153, i32 %154)
br label %219
156: ; preds = %3
%157 = load i32, i32* %7
%158 = and i32 %157, 128
%159 = lshr i32 %158, 6
%160 = sub nsw i32 1, %159
%161 = load i32, i32* %7
%162 = and i32 %161, 127
%163 = shl i32 %162, 8
%164 = load i32, i32* %8
%165 = add nsw i32 %163, %164
%166 = mul nsw i32 %160, %165
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.52, i64 0, i64 0), i32 %166)
br label %219
168: ; preds = %3
%169 = load i32, i32* %5
%170 = sitofp i32 %169 to double
%171 = fdiv double %170, 1.000000e+04
%172 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.53, i64 0, i64 0), double %171)
br label %219
173: ; preds = %3
%174 = load i32, i32* %7
%175 = sitofp i32 %174 to double
%176 = fdiv double %175, 1.000000e+02
%177 = load i32, i32* %8
%178 = sitofp i32 %177 to double
%179 = fdiv double %178, 1.000000e+02
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.54, i64 0, i64 0), double %176, double %179)
br label %219
181: ; preds = %3
%182 = load i32, i32* %7
%183 = sub nsw i32 1100, %182
%184 = load i32, i32* %8
%185 = sub nsw i32 1100, %184
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %183, i32 %185)
br label %219
187: ; preds = %3
%188 = load i32, i32* %5
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.55, i64 0, i64 0), i32 %188)
br label %219
190: ; preds = %3
%191 = load i32, i32* %6
%192 = icmp eq i32 %191, 7
br i1 %192, label %193, label %198
193: ; preds = %190
%194 = load i32, i32* %5
%195 = sitofp i32 %194 to double
%196 = fmul double %195, 1.000000e-02
%197 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.56, i64 0, i64 0), double %196)
br label %198
198: ; preds = %193, %190
br label %219
199: ; preds = %3
%200 = load i32, i32* %7
%201 = sitofp i32 %200 to double
%202 = fdiv double %201, 1.000000e+03
%203 = fsub double 1.100000e+00, %202
%204 = load i32, i32* %8
%205 = sitofp i32 %204 to double
%206 = fdiv double %205, 1.000000e+03
%207 = fsub double 1.100000e+00, %206
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.57, i64 0, i64 0), double %203, double %207)
br label %219
209: ; preds = %3
%210 = load i32, i32* %7
%211 = mul nsw i32 %210, 10
%212 = load i32, i32* %8
%213 = sub nsw i32 1100, %212
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %211, i32 %213)
br label %219
215: ; preds = %3
%216 = load i32, i32* %5
%217 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.58, i64 0, i64 0), i32 %216)
br label %219
218: ; preds = %3
br label %219
219: ; preds = %218, %215, %209, %199, %198, %187, %181, %173, %168, %156, %152, %149, %143, %140, %136, %133, %129, %126, %118, %113, %107, %104, %98, %95, %93, %87, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"sfc\00"
@.str.1 = [9 x i8] c"cld base\00"
@.str.2 = [8 x i8] c"cld top\00"
@.str.3 = [12 x i8] c"0C isotherm\00"
@.str.4 = [9 x i8] c"cond lev\00"
@.str.5 = [13 x i8] c"max wind lev\00"
@.str.6 = [11 x i8] c"tropopause\00"
@.str.7 = [9 x i8] c"nom. top\00"
@.str.8 = [11 x i8] c"sea bottom\00"
@.str.9 = [10 x i8] c"atmos col\00"
@.str.10 = [12 x i8] c"low cld bot\00"
@.str.11 = [12 x i8] c"low cld top\00"
@.str.12 = [12 x i8] c"low cld lay\00"
@.str.13 = [12 x i8] c"mid cld bot\00"
@.str.14 = [12 x i8] c"mid cld top\00"
@.str.15 = [12 x i8] c"mid cld lay\00"
@.str.16 = [13 x i8] c"high cld bot\00"
@.str.17 = [13 x i8] c"high cld top\00"
@.str.18 = [13 x i8] c"high cld lay\00"
@.str.19 = [13 x i8] c"ocean column\00"
@.str.20 = [23 x i8] c"high trop freezing lvl\00"
@.str.21 = [19 x i8] c"grid-scale cld bot\00"
@.str.22 = [19 x i8] c"grid-scale cld top\00"
@.str.23 = [21 x i8] c"bndary-layer cld bot\00"
@.str.24 = [21 x i8] c"bndary-layer cld top\00"
@.str.25 = [23 x i8] c"bndary-layer cld layer\00"
@.str.26 = [16 x i8] c"convect-cld bot\00"
@.str.27 = [16 x i8] c"convect-cld top\00"
@.str.28 = [18 x i8] c"convect-cld layer\00"
@.str.29 = [19 x i8] c"max e-pot-temp lvl\00"
@.str.30 = [16 x i8] c"equilibrium lvl\00"
@.str.31 = [24 x i8] c"shallow convect-cld bot\00"
@.str.32 = [24 x i8] c"shallow convect-cld top\00"
@.str.33 = [21 x i8] c"deep convect-cld bot\00"
@.str.34 = [21 x i8] c"deep convect-cld top\00"
@.str.35 = [6 x i8] c"%d mb\00"
@.str.36 = [9 x i8] c"%d-%d mb\00"
@.str.37 = [4 x i8] c"MSL\00"
@.str.38 = [15 x i8] c"%d m above MSL\00"
@.str.39 = [18 x i8] c"%d-%d m above msl\00"
@.str.40 = [15 x i8] c"%d m above gnd\00"
@.str.41 = [18 x i8] c"%d-%d m above gnd\00"
@.str.42 = [11 x i8] c"sigma=%.4f\00"
@.str.43 = [16 x i8] c"sigma %.2f-%.2f\00"
@.str.44 = [14 x i8] c"hybrid lev %d\00"
@.str.45 = [13 x i8] c"hybrid %d-%d\00"
@.str.46 = [11 x i8] c"%d cm down\00"
@.str.47 = [14 x i8] c"%d-%d cm down\00"
@.str.48 = [4 x i8] c"%dK\00"
@.str.49 = [7 x i8] c"%d-%dK\00"
@.str.50 = [16 x i8] c"%d mb above gnd\00"
@.str.51 = [19 x i8] c"%d-%d mb above gnd\00"
@.str.52 = [12 x i8] c"%d pv units\00"
@.str.53 = [17 x i8] c"%.5f (ETA level)\00"
@.str.54 = [23 x i8] c"%.2f-%.2f (ETA levels)\00"
@.str.55 = [16 x i8] c"%d cm above gnd\00"
@.str.56 = [8 x i8] c"%.2f mb\00"
@.str.57 = [18 x i8] c"%.3f-%.3f (sigma)\00"
@.str.58 = [21 x i8] c"%d m below sea level\00"
define void @levels(i32 %0, i32 %1, i32 %2) {
%4 = sdiv i32 %1, 256
%5 = srem i32 %1, 256
switch i32 %0, label %169 [
i32 1, label %6
i32 2, label %8
i32 3, label %10
i32 4, label %12
i32 5, label %14
i32 6, label %16
i32 7, label %18
i32 8, label %20
i32 9, label %22
i32 200, label %24
i32 10, label %24
i32 12, label %26
i32 212, label %26
i32 13, label %28
i32 213, label %28
i32 14, label %30
i32 214, label %30
i32 22, label %32
i32 222, label %32
i32 23, label %34
i32 223, label %34
i32 24, label %36
i32 224, label %36
i32 32, label %38
i32 232, label %38
i32 33, label %40
i32 233, label %40
i32 34, label %42
i32 234, label %42
i32 201, label %44
i32 204, label %46
i32 206, label %48
i32 207, label %50
i32 209, label %52
i32 210, label %54
i32 211, label %56
i32 242, label %58
i32 243, label %60
i32 244, label %62
i32 246, label %64
i32 247, label %66
i32 248, label %68
i32 249, label %70
i32 251, label %72
i32 252, label %74
i32 100, label %76
i32 101, label %78
i32 102, label %82
i32 103, label %84
i32 104, label %86
i32 105, label %90
i32 106, label %92
i32 107, label %96
i32 108, label %100
i32 109, label %106
i32 110, label %108
i32 111, label %110
i32 112, label %112
i32 113, label %114
i32 114, label %116
i32 115, label %120
i32 116, label %122
i32 117, label %124
i32 119, label %133
i32 120, label %137
i32 121, label %143
i32 125, label %147
i32 126, label %149
i32 128, label %155
i32 141, label %163
i32 160, label %167
]
6: ; preds = %3
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %169
8: ; preds = %3
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
br label %169
10: ; preds = %3
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
br label %169
12: ; preds = %3
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
br label %169
14: ; preds = %3
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
br label %169
16: ; preds = %3
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0))
br label %169
18: ; preds = %3
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
br label %169
20: ; preds = %3
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0))
br label %169
22: ; preds = %3
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i64 0, i64 0))
br label %169
24: ; preds = %3, %3
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
br label %169
26: ; preds = %3, %3
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
br label %169
28: ; preds = %3, %3
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.11, i64 0, i64 0))
br label %169
30: ; preds = %3, %3
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
br label %169
32: ; preds = %3, %3
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0))
br label %169
34: ; preds = %3, %3
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
br label %169
36: ; preds = %3, %3
%37 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0))
br label %169
38: ; preds = %3, %3
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
br label %169
40: ; preds = %3, %3
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i64 0, i64 0))
br label %169
42: ; preds = %3, %3
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0))
br label %169
44: ; preds = %3
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i64 0, i64 0))
br label %169
46: ; preds = %3
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0))
br label %169
48: ; preds = %3
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
br label %169
50: ; preds = %3
%51 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
br label %169
52: ; preds = %3
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.23, i64 0, i64 0))
br label %169
54: ; preds = %3
%55 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.24, i64 0, i64 0))
br label %169
56: ; preds = %3
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0))
br label %169
58: ; preds = %3
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.26, i64 0, i64 0))
br label %169
60: ; preds = %3
%61 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i64 0, i64 0))
br label %169
62: ; preds = %3
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.28, i64 0, i64 0))
br label %169
64: ; preds = %3
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.29, i64 0, i64 0))
br label %169
66: ; preds = %3
%67 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.30, i64 0, i64 0))
br label %169
68: ; preds = %3
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0))
br label %169
70: ; preds = %3
%71 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.32, i64 0, i64 0))
br label %169
72: ; preds = %3
%73 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.33, i64 0, i64 0))
br label %169
74: ; preds = %3
%75 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.34, i64 0, i64 0))
br label %169
76: ; preds = %3
%77 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.35, i64 0, i64 0), i32 %1)
br label %169
78: ; preds = %3
%79 = mul nsw i32 %4, 10
%80 = mul nsw i32 %5, 10
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %79, i32 %80)
br label %169
82: ; preds = %3
%83 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0))
br label %169
84: ; preds = %3
%85 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.38, i64 0, i64 0), i32 %1)
br label %169
86: ; preds = %3
%87 = mul nsw i32 %4, 100
%88 = mul nsw i32 %5, 100
%89 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0), i32 %87, i32 %88)
br label %169
90: ; preds = %3
%91 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), i32 %1)
br label %169
92: ; preds = %3
%93 = mul nsw i32 %4, 100
%94 = mul nsw i32 %5, 100
%95 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.41, i64 0, i64 0), i32 %93, i32 %94)
br label %169
96: ; preds = %3
%97 = sitofp i32 %1 to double
%98 = fdiv double %97, 1.000000e+04
%99 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.42, i64 0, i64 0), double %98)
br label %169
100: ; preds = %3
%101 = sitofp i32 %4 to double
%102 = fdiv double %101, 1.000000e+02
%103 = sitofp i32 %5 to double
%104 = fdiv double %103, 1.000000e+02
%105 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.43, i64 0, i64 0), double %102, double %104)
br label %169
106: ; preds = %3
%107 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.44, i64 0, i64 0), i32 %1)
br label %169
108: ; preds = %3
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.45, i64 0, i64 0), i32 %4, i32 %5)
br label %169
110: ; preds = %3
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.46, i64 0, i64 0), i32 %1)
br label %169
112: ; preds = %3
%113 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.47, i64 0, i64 0), i32 %4, i32 %5)
br label %169
114: ; preds = %3
%115 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.48, i64 0, i64 0), i32 %1)
br label %169
116: ; preds = %3
%117 = sub nsw i32 475, %4
%118 = sub nsw i32 475, %5
%119 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.49, i64 0, i64 0), i32 %117, i32 %118)
br label %169
120: ; preds = %3
%121 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.50, i64 0, i64 0), i32 %1)
br label %169
122: ; preds = %3
%123 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0), i32 %4, i32 %5)
br label %169
124: ; preds = %3
%125 = lshr i32 %4, 6
%126 = and i32 %125, 2
%127 = sub nsw i32 1, %126
%128 = shl nsw i32 %4, 8
%129 = and i32 %128, 32512
%130 = add nsw i32 %129, %5
%131 = mul nsw i32 %127, %130
%132 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.52, i64 0, i64 0), i32 %131)
br label %169
133: ; preds = %3
%134 = sitofp i32 %1 to double
%135 = fdiv double %134, 1.000000e+04
%136 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.53, i64 0, i64 0), double %135)
br label %169
137: ; preds = %3
%138 = sitofp i32 %4 to double
%139 = fdiv double %138, 1.000000e+02
%140 = sitofp i32 %5 to double
%141 = fdiv double %140, 1.000000e+02
%142 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.54, i64 0, i64 0), double %139, double %141)
br label %169
143: ; preds = %3
%144 = sub nsw i32 1100, %4
%145 = sub nsw i32 1100, %5
%146 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %144, i32 %145)
br label %169
147: ; preds = %3
%148 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.55, i64 0, i64 0), i32 %1)
br label %169
149: ; preds = %3
%150 = icmp eq i32 %2, 7
br i1 %150, label %151, label %169
151: ; preds = %149
%152 = sitofp i32 %1 to double
%153 = fmul double %152, 1.000000e-02
%154 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.56, i64 0, i64 0), double %153)
br label %169
155: ; preds = %3
%156 = sitofp i32 %4 to double
%157 = fdiv double %156, 1.000000e+03
%158 = fsub double 1.100000e+00, %157
%159 = sitofp i32 %5 to double
%160 = fdiv double %159, 1.000000e+03
%161 = fsub double 1.100000e+00, %160
%162 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.57, i64 0, i64 0), double %158, double %161)
br label %169
163: ; preds = %3
%164 = mul nsw i32 %4, 10
%165 = sub nsw i32 1100, %5
%166 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.36, i64 0, i64 0), i32 %164, i32 %165)
br label %169
167: ; preds = %3
%168 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.58, i64 0, i64 0), i32 %1)
br label %169
169: ; preds = %3, %149, %151, %167, %163, %155, %147, %143, %137, %133, %124, %122, %120, %116, %114, %112, %110, %108, %106, %100, %96, %92, %90, %86, %84, %82, %78, %76, %74, %72, %70, %68, %66, %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8, %6
ret void
}