#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*/ copy_string(char *, char const *, int);
scalar_t__ copy_string2(char *, char const *, int);
int /*<<< orphan*/ printf(char *, ...);
int v5dCreate(char *, int const, int const, int const, int const, int const *,
              char const **, int const *, int const *, int const, int const,
              float const *, int const, float const *);
int v5dcreate_(const char *name, const int *numtimes, const int *numvars,
               const int *nr, const int *nc, const int nl[],
               const char varname[][10], const int timestamp[],
               const int datestamp[], const int *compressmode,
               const int *projection, const float proj_args[],
               const int *vertical, const float vert_args[]) {
  char filename[100];
  char names[200][10];
  int i, maxnl, args;
  copy_string(filename, name, 100);
  if (*numtimes < 1) {
    printf("Error: numtimes invalid\n");
    return 0;
  }
  if (*numvars < 1) {
    printf("Error: numvars invalid\n");
    return 0;
  }
  if (*nr < 2) {
    printf("Error: nr invalid\n");
    return 0;
  }
  if (*nc < 2) {
    printf("Error: nc invalid\n");
    return 0;
  }
  maxnl = 0;
  for (i = 0; i < *numvars; i++) {
    if (nl[i] < 1) {
      printf("Error: nl(%d) invalid\n", i + 1);
      return 0;
    }
    if (nl[i] > maxnl) {
      maxnl = nl[i];
    }
  }
  for (i = 0; i < *numvars; i++) {
    if (copy_string2(names[i], varname[i], 10) == 0) {
      printf("Error: unitialized varname(%d)\n", i + 1);
      return 0;
    }
  }
  for (i = 0; i < *numtimes; i++) {
    if (timestamp[i] < 0) {
      printf("Error: times(%d) invalid\n", i + 1);
      return 0;
    }
    if (datestamp[i] < 0) {
      printf("Error: dates(%d) invalid\n", i + 1);
      return 0;
    }
  }
  if (*compressmode != 1 && *compressmode != 2 && *compressmode != 4) {
    printf("Error: compressmode invalid\n");
    return 0;
  }
  switch (*projection) {
  case 0:
    args = 4;
    break;
  case 1:
    args = 0;
    if (((proj_args[0]) >= 1.0e30)) {
      printf("Error: northlat (proj_args(1)) invalid\n");
      return 0;
    }
    if (((proj_args[1]) >= 1.0e30)) {
      printf("Error: westlon (proj_args(2)) invalid\n");
      return 0;
    }
    if (((proj_args[2]) >= 1.0e30)) {
      printf("Error: latinc (proj_args(3)) invalid\n");
      return 0;
    }
    if (((proj_args[3]) >= 1.0e30)) {
      printf("Error: loninc (proj_args(4)) invalid\n");
      return 0;
    }
    break;
  case 2:
    args = 6;
    break;
  case 3:
    args = 5;
    break;
  case 4:
    args = 7;
    break;
  case 5:
    args = 4;
    break;
  case -1:
    args = *nr + *nc;
    break;
  default:
    args = 0;
    printf("Error: projection invalid\n");
    return 0;
  }
  for (i = 0; i < args; i++) {
    if (((proj_args[i]) >= 1.0e30)) {
      printf("Error: proj_args(%d) invalid\n", i + 1);
      return 0;
    }
  }
  switch (*vertical) {
  case 0:
  case 1:
    args = 0;
    if (((vert_args[0]) >= 1.0e30)) {
      printf("Error: bottomhgt (vert_args(1)) invalid\n");
      return 0;
    }
    if (((vert_args[1]) >= 1.0e30)) {
      printf("Error: hgtinc (vert_args(2)) invalid\n");
      return 0;
    }
    break;
  case 2:
  case 3:
    args = maxnl;
    break;
  default:
    args = 0;
    printf("Error: vertical invalid\n");
    return 0;
  }
  for (i = 0; i < args; i++) {
    if (((vert_args[i]) >= 1.0e30)) {
      printf("Error: vert_args(%d) invalid\n", i + 1);
      return 0;
    }
  }
  return v5dCreate(filename, *numtimes, *numvars, *nr, *nc, nl,
                   (const char(*)[10])names, timestamp, datestamp,
                   *compressmode, *projection, proj_args, *vertical, vert_args);
}


x86 assembly (clang, -O0):
<v5dcreate_>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x8d8,%rsp
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x38(%rbp)
mov    %rsi,-0x40(%rbp)
mov    %rdx,-0x48(%rbp)
mov    %rcx,-0x50(%rbp)
mov    %r8,-0x58(%rbp)
mov    %r9,-0x60(%rbp)
lea    -0xd0(%rbp),%rdi
mov    -0x38(%rbp),%rsi
mov    $0x64,%edx
call   1030 <copy_string@plt>
mov    -0x40(%rbp),%rax
cmpl   $0x1,(%rax)
jge    11c8 <v5dcreate_+0x88>
lea    0xe6f(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    -0x48(%rbp),%rax
cmpl   $0x1,(%rax)
jge    11ef <v5dcreate_+0xaf>
lea    0xe61(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    -0x50(%rbp),%rax
cmpl   $0x2,(%rax)
jge    1216 <v5dcreate_+0xd6>
lea    0xe52(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    -0x58(%rbp),%rax
cmpl   $0x2,(%rax)
jge    123d <v5dcreate_+0xfd>
lea    0xe3e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
movl   $0x0,-0x8a8(%rbp)
movl   $0x0,-0x8a4(%rbp)
mov    -0x8a4(%rbp),%eax
mov    -0x48(%rbp),%rcx
cmp    (%rcx),%eax
jge    12e2 <v5dcreate_+0x1a2>
mov    -0x60(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jge    129b <v5dcreate_+0x15b>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xdf3(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    -0x60(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x8a8(%rbp),%eax
jle    12c9 <v5dcreate_+0x189>
mov    -0x60(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8a8(%rbp)
jmp    12ce <v5dcreate_+0x18e>
mov    -0x8a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8a4(%rbp)
jmp    1251 <v5dcreate_+0x111>
movl   $0x0,-0x8a4(%rbp)
mov    -0x8a4(%rbp),%eax
mov    -0x48(%rbp),%rcx
cmp    (%rcx),%eax
jge    1375 <v5dcreate_+0x235>
movslq -0x8a4(%rbp),%rax
lea    -0x8a0(%rbp),%rdi
imul   $0xa,%rax,%rax
add    %rax,%rdi
mov    0x10(%rbp),%rsi
movslq -0x8a4(%rbp),%rax
imul   $0xa,%rax,%rax
add    %rax,%rsi
mov    $0xa,%edx
call   1060 <copy_string2@plt>
cmp    $0x0,%rax
jne    135c <v5dcreate_+0x21c>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xd49(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    1361 <v5dcreate_+0x221>
mov    -0x8a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8a4(%rbp)
jmp    12ec <v5dcreate_+0x1ac>
movl   $0x0,-0x8a4(%rbp)
mov    -0x8a4(%rbp),%eax
mov    -0x40(%rbp),%rcx
cmp    (%rcx),%eax
jge    141a <v5dcreate_+0x2da>
mov    0x18(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    13c9 <v5dcreate_+0x289>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xcfc(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x20(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    1401 <v5dcreate_+0x2c1>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xcde(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    1406 <v5dcreate_+0x2c6>
mov    -0x8a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8a4(%rbp)
jmp    137f <v5dcreate_+0x23f>
mov    0x28(%rbp),%rax
cmpl   $0x1,(%rax)
je     145b <v5dcreate_+0x31b>
mov    0x28(%rbp),%rax
cmpl   $0x2,(%rax)
je     145b <v5dcreate_+0x31b>
mov    0x28(%rbp),%rax
cmpl   $0x4,(%rax)
je     145b <v5dcreate_+0x31b>
lea    0xc9e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x30(%rbp),%rax
mov    (%rax),%eax
add    $0x1,%eax
mov    %eax,%ecx
mov    %rcx,-0x8b8(%rbp)
sub    $0x6,%eax
ja     15e1 <v5dcreate_+0x4a1>
mov    -0x8b8(%rbp),%rax
lea    0xb84(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x4,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x0,-0x8ac(%rbp)
mov    0x38(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb46(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14de <v5dcreate_+0x39e>
lea    0xc38(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x38(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb0d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1517 <v5dcreate_+0x3d7>
lea    0xc27(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x38(%rbp),%rax
movss  0x8(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xad4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1550 <v5dcreate_+0x410>
lea    0xc15(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x38(%rbp),%rax
movss  0xc(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa9b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1589 <v5dcreate_+0x449>
lea    0xc02(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x6,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x5,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x7,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x4,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
mov    -0x50(%rbp),%rax
mov    (%rax),%eax
mov    -0x58(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x8ac(%rbp)
jmp    1605 <v5dcreate_+0x4c5>
movl   $0x0,-0x8ac(%rbp)
lea    0xbac(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
movl   $0x0,-0x8a4(%rbp)
mov    -0x8a4(%rbp),%eax
cmp    -0x8ac(%rbp),%eax
jge    1683 <v5dcreate_+0x543>
mov    0x38(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x9c3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     166a <v5dcreate_+0x52a>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xb62(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    166f <v5dcreate_+0x52f>
mov    -0x8a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8a4(%rbp)
jmp    160f <v5dcreate_+0x4cf>
mov    0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x8bc(%rbp)
sub    $0x2,%eax
jb     16b4 <v5dcreate_+0x574>
jmp    169d <v5dcreate_+0x55d>
mov    -0x8bc(%rbp),%eax
add    $0xfffffffe,%eax
sub    $0x2,%eax
jb     1734 <v5dcreate_+0x5f4>
jmp    1745 <v5dcreate_+0x605>
movl   $0x0,-0x8ac(%rbp)
mov    0x48(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x92e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     16f6 <v5dcreate_+0x5b6>
lea    0xaf4(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
mov    0x48(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8f5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     172f <v5dcreate_+0x5ef>
lea    0xae4(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    1769 <v5dcreate_+0x629>
mov    -0x8a8(%rbp),%eax
mov    %eax,-0x8ac(%rbp)
jmp    1769 <v5dcreate_+0x629>
movl   $0x0,-0x8ac(%rbp)
lea    0xad0(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
movl   $0x0,-0x8a4(%rbp)
mov    -0x8a4(%rbp),%eax
cmp    -0x8ac(%rbp),%eax
jge    17e7 <v5dcreate_+0x6a7>
mov    0x48(%rbp),%rax
movslq -0x8a4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x85f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     17ce <v5dcreate_+0x68e>
mov    -0x8a4(%rbp),%esi
add    $0x1,%esi
lea    0xa84(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1864 <v5dcreate_+0x724>
jmp    17d3 <v5dcreate_+0x693>
mov    -0x8a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8a4(%rbp)
jmp    1773 <v5dcreate_+0x633>
lea    -0xd0(%rbp),%rdi
mov    -0x40(%rbp),%rax
mov    (%rax),%esi
mov    -0x48(%rbp),%rax
mov    (%rax),%edx
mov    -0x50(%rbp),%rax
mov    (%rax),%ecx
mov    -0x58(%rbp),%rax
mov    (%rax),%r8d
mov    -0x60(%rbp),%r9
lea    -0x8a0(%rbp),%r13
mov    0x18(%rbp),%r12
mov    0x20(%rbp),%r15
mov    0x28(%rbp),%rax
mov    (%rax),%r14d
mov    0x30(%rbp),%rax
mov    (%rax),%ebx
mov    0x38(%rbp),%r11
mov    0x40(%rbp),%rax
mov    (%rax),%r10d
mov    0x48(%rbp),%rax
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15,0x10(%rsp)
mov    %r14d,0x18(%rsp)
mov    %ebx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10d,0x30(%rsp)
mov    %rax,0x38(%rsp)
call   1040 <v5dCreate@plt>
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x8d8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<v5dcreate_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x868,%rsp
mov    %r9,%rbx
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%r13
mov    %rsi,%rbp
mov    %rdi,%rsi
lea    0x20(%rsp),%rdi
mov    $0x64,%edx
call   1040 <copy_string@plt>
cmpl   $0x0,0x0(%rbp)
jle    119f <v5dcreate_+0x4f>
mov    0x0(%r13),%eax
test   %eax,%eax
jle    11a8 <v5dcreate_+0x58>
cmpl   $0x1,(%r15)
jg     11b1 <v5dcreate_+0x61>
lea    0x1072(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0x1092(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0x1072(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
cmpl   $0x2,(%r14)
jge    11d9 <v5dcreate_+0x89>
lea    0x103f(%rip),%rdi
call   1030 <puts@plt>
xor    %ebx,%ebx
mov    %ebx,%eax
add    $0x868,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rbp,0x18(%rsp)
mov    0x8a0(%rsp),%rbp
xor    %esi,%esi
xor    %r12d,%r12d
nopl   0x0(%rax,%rax,1)
mov    (%rbx,%rsi,4),%ecx
test   %ecx,%ecx
jle    12f8 <v5dcreate_+0x1a8>
cmp    %r12d,%ecx
cmovg  %ecx,%r12d
add    $0x1,%rsi
cmp    %rsi,%rax
jne    11f0 <v5dcreate_+0xa0>
mov    %r15,0x8(%rsp)
mov    %r14,0x10(%rsp)
lea    0x90(%rsp),%r15
xor    %r14d,%r14d
mov    %r15,%rdi
mov    %rbp,%rsi
mov    $0xa,%edx
call   1070 <copy_string2@plt>
test   %rax,%rax
je     1309 <v5dcreate_+0x1b9>
add    $0x1,%r14
movslq 0x0(%r13),%rdx
add    $0xa,%r15
add    $0xa,%rbp
cmp    %rdx,%r14
jl     1220 <v5dcreate_+0xd0>
mov    0x18(%rsp),%rax
mov    (%rax),%esi
test   %esi,%esi
mov    %rbx,%r9
mov    0x10(%rsp),%r8
mov    0x8(%rsp),%r14
mov    0x8a8(%rsp),%rcx
mov    0x8b0(%rsp),%rdi
jle    1295 <v5dcreate_+0x145>
xor    %eax,%eax
cmpl   $0x0,(%rcx,%rax,4)
js     131e <v5dcreate_+0x1ce>
cmpl   $0x0,(%rdi,%rax,4)
js     132d <v5dcreate_+0x1dd>
add    $0x1,%rax
cmp    %rax,%rsi
jne    1278 <v5dcreate_+0x128>
mov    0x8b8(%rsp),%rax
mov    (%rax),%ebp
cmp    $0x4,%ebp
ja     133c <v5dcreate_+0x1ec>
mov    $0x16,%eax
bt     %ebp,%eax
jae    133c <v5dcreate_+0x1ec>
mov    0x8c0(%rsp),%rax
mov    (%rax),%r10d
lea    0x1(%r10),%ecx
cmp    $0x6,%ecx
ja     1348 <v5dcreate_+0x1f8>
mov    $0x4,%eax
lea    0xd32(%rip),%rdi
movslq (%rdi,%rcx,4),%rcx
add    %rdi,%rcx
mov    0x8c8(%rsp),%rdi
jmp    *%rcx
mov    (%r8),%eax
add    (%r14),%eax
jg     13ca <v5dcreate_+0x27a>
jmp    13ee <v5dcreate_+0x29e>
add    $0x1,%esi
lea    0xd22(%rip),%rdi
xor    %ebx,%ebx
jmp    1457 <v5dcreate_+0x307>
add    $0x1,%r14d
lea    0xd27(%rip),%rdi
xor    %ebx,%ebx
mov    %r14d,%esi
jmp    1457 <v5dcreate_+0x307>
add    $0x1,%eax
lea    0xd33(%rip),%rdi
jmp    1453 <v5dcreate_+0x303>
add    $0x1,%eax
lea    0xd3e(%rip),%rdi
jmp    1453 <v5dcreate_+0x303>
lea    0xe9e(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0xe78(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
movss  (%rdi),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xc9c(%rip),%xmm0
jae    14ef <v5dcreate_+0x39f>
movss  0x4(%rdi),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xc85(%rip),%xmm0
jae    150a <v5dcreate_+0x3ba>
movss  0x8(%rdi),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xc6e(%rip),%xmm0
jae    1516 <v5dcreate_+0x3c6>
movss  0xc(%rdi),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xc57(%rip),%xmm0
jb     13ee <v5dcreate_+0x29e>
lea    0xd7e(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
mov    $0x6,%eax
jmp    13ca <v5dcreate_+0x27a>
mov    $0x5,%eax
jmp    13ca <v5dcreate_+0x27a>
mov    $0x7,%eax
mov    %eax,%ecx
xor    %eax,%eax
movsd  0xc2a(%rip),%xmm0
movss  (%rdi,%rax,4),%xmm1
cvtss2sd %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    1449 <v5dcreate_+0x2f9>
add    $0x1,%rax
cmp    %rax,%rcx
jne    13d6 <v5dcreate_+0x286>
mov    0x8d0(%rsp),%rax
mov    (%rax),%r11d
lea    -0x2(%r11),%eax
cmp    $0x2,%eax
jb     1463 <v5dcreate_+0x313>
cmp    $0x1,%r11d
ja     14d7 <v5dcreate_+0x387>
mov    0x8d8(%rsp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xbdc(%rip),%xmm0
jae    14e3 <v5dcreate_+0x393>
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
ucomisd 0xbc5(%rip),%xmm0
jb     1495 <v5dcreate_+0x345>
lea    0xc87(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
add    $0x1,%eax
lea    0xc3c(%rip),%rdi
xor    %ebx,%ebx
mov    %eax,%esi
xor    %eax,%eax
call   1060 <printf@plt>
jmp    11c5 <v5dcreate_+0x75>
test   %r12d,%r12d
jle    1495 <v5dcreate_+0x345>
mov    %r12d,%ecx
xor    %eax,%eax
movsd  0xb8b(%rip),%xmm0
mov    0x8d8(%rsp),%rbx
movss  (%rbx,%rax,4),%xmm1
cvtss2sd %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    14fb <v5dcreate_+0x3ab>
add    $0x1,%rax
cmp    %rax,%rcx
jne    1475 <v5dcreate_+0x325>
mov    (%r14),%ecx
mov    (%r8),%r8d
lea    0x90(%rsp),%rax
mov    %rdi,%rbx
lea    0x20(%rsp),%rdi
push   0x8d8(%rsp)
push   %r11
push   %rbx
push   %r10
push   %rbp
push   0x8d8(%rsp)
push   0x8d8(%rsp)
push   %rax
call   1050 <v5dCreate@plt>
add    $0x40,%rsp
mov    %eax,%ebx
jmp    11c5 <v5dcreate_+0x75>
lea    0xc3a(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0xc06(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0xcaa(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
add    $0x1,%eax
lea    0xba8(%rip),%rdi
jmp    1453 <v5dcreate_+0x303>
lea    0xc69(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>
lea    0xc38(%rip),%rdi
jmp    11be <v5dcreate_+0x6e>

LLVM IR (-O0):
@.str = [25 x i8] c"Error: numtimes invalid\0A\00"
@.str.1 = [24 x i8] c"Error: numvars invalid\0A\00"
@.str.2 = [19 x i8] c"Error: nr invalid\0A\00"
@.str.3 = [19 x i8] c"Error: nc invalid\0A\00"
@.str.4 = [23 x i8] c"Error: nl(%d) invalid\0A\00"
@.str.5 = [32 x i8] c"Error: unitialized varname(%d)\0A\00"
@.str.6 = [26 x i8] c"Error: times(%d) invalid\0A\00"
@.str.7 = [26 x i8] c"Error: dates(%d) invalid\0A\00"
@.str.8 = [29 x i8] c"Error: compressmode invalid\0A\00"
@.str.9 = [40 x i8] c"Error: northlat (proj_args(1)) invalid\0A\00"
@.str.10 = [39 x i8] c"Error: westlon (proj_args(2)) invalid\0A\00"
@.str.11 = [38 x i8] c"Error: latinc (proj_args(3)) invalid\0A\00"
@.str.12 = [38 x i8] c"Error: loninc (proj_args(4)) invalid\0A\00"
@.str.13 = [27 x i8] c"Error: projection invalid\0A\00"
@.str.14 = [30 x i8] c"Error: proj_args(%d) invalid\0A\00"
@.str.15 = [41 x i8] c"Error: bottomhgt (vert_args(1)) invalid\0A\00"
@.str.16 = [38 x i8] c"Error: hgtinc (vert_args(2)) invalid\0A\00"
@.str.17 = [25 x i8] c"Error: vertical invalid\0A\00"
@.str.18 = [30 x i8] c"Error: vert_args(%d) invalid\0A\00"
define i32 @v5dcreate_(i8* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, [10 x i8]* %6, i32* %7, i32* %8, i32* %9, i32* %10, float* %11, i32* %12, float* %13) {
%15 = alloca i32
%16 = alloca i8*
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca i32*
%22 = alloca [10 x i8]*
%23 = alloca i32*
%24 = alloca i32*
%25 = alloca i32*
%26 = alloca i32*
%27 = alloca float*
%28 = alloca i32*
%29 = alloca float*
%30 = alloca [100 x i8]
%31 = alloca [200 x [10 x i8]]
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
store i8* %0, i8** %16
store i32* %1, i32** %17
store i32* %2, i32** %18
store i32* %3, i32** %19
store i32* %4, i32** %20
store i32* %5, i32** %21
store [10 x i8]* %6, [10 x i8]** %22
store i32* %7, i32** %23
store i32* %8, i32** %24
store i32* %9, i32** %25
store i32* %10, i32** %26
store float* %11, float** %27
store i32* %12, i32** %28
store float* %13, float** %29
%35 = getelementptr inbounds [100 x i8], [100 x i8]* %30, i64 0, i64 0
%36 = load i8*, i8** %16
%37 = call i32 @copy_string(i8* %35, i8* %36, i32 100)
%38 = load i32*, i32** %17
%39 = load i32, i32* %38
%40 = icmp slt i32 %39, 1
br i1 %40, label %41, label %43
41: ; preds = %14
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %15
br label %307
43: ; preds = %14
%44 = load i32*, i32** %18
%45 = load i32, i32* %44
%46 = icmp slt i32 %45, 1
br i1 %46, label %47, label %49
47: ; preds = %43
%48 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %15
br label %307
49: ; preds = %43
%50 = load i32*, i32** %19
%51 = load i32, i32* %50
%52 = icmp slt i32 %51, 2
br i1 %52, label %53, label %55
53: ; preds = %49
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %15
br label %307
55: ; preds = %49
%56 = load i32*, i32** %20
%57 = load i32, i32* %56
%58 = icmp slt i32 %57, 2
br i1 %58, label %59, label %61
59: ; preds = %55
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
store i32 0, i32* %15
br label %307
61: ; preds = %55
store i32 0, i32* %33
store i32 0, i32* %32
br label %62
62: ; preds = %93, %61
%63 = load i32, i32* %32
%64 = load i32*, i32** %18
%65 = load i32, i32* %64
%66 = icmp slt i32 %63, %65
br i1 %66, label %67, label %96
67: ; preds = %62
%68 = load i32*, i32** %21
%69 = load i32, i32* %32
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds i32, i32* %68, i64 %70
%72 = load i32, i32* %71
%73 = icmp slt i32 %72, 1
br i1 %73, label %74, label %78
74: ; preds = %67
%75 = load i32, i32* %32
%76 = add nsw i32 %75, 1
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0), i32 %76)
store i32 0, i32* %15
br label %307
78: ; preds = %67
%79 = load i32*, i32** %21
%80 = load i32, i32* %32
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i32, i32* %79, i64 %81
%83 = load i32, i32* %82
%84 = load i32, i32* %33
%85 = icmp sgt i32 %83, %84
br i1 %85, label %86, label %92
86: ; preds = %78
%87 = load i32*, i32** %21
%88 = load i32, i32* %32
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i32, i32* %87, i64 %89
%91 = load i32, i32* %90
store i32 %91, i32* %33
br label %92
92: ; preds = %86, %78
br label %93
93: ; preds = %92
%94 = load i32, i32* %32
%95 = add nsw i32 %94, 1
store i32 %95, i32* %32
br label %62
96: ; preds = %62
store i32 0, i32* %32
br label %97
97: ; preds = %119, %96
%98 = load i32, i32* %32
%99 = load i32*, i32** %18
%100 = load i32, i32* %99
%101 = icmp slt i32 %98, %100
br i1 %101, label %102, label %122
102: ; preds = %97
%103 = load i32, i32* %32
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [200 x [10 x i8]], [200 x [10 x i8]]* %31, i64 0, i64 %104
%106 = getelementptr inbounds [10 x i8], [10 x i8]* %105, i64 0, i64 0
%107 = load [10 x i8]*, [10 x i8]** %22
%108 = load i32, i32* %32
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [10 x i8], [10 x i8]* %107, i64 %109
%111 = getelementptr inbounds [10 x i8], [10 x i8]* %110, i64 0, i64 0
%112 = call i64 @copy_string2(i8* %106, i8* %111, i32 10)
%113 = icmp eq i64 %112, 0
br i1 %113, label %114, label %118
114: ; preds = %102
%115 = load i32, i32* %32
%116 = add nsw i32 %115, 1
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0), i32 %116)
store i32 0, i32* %15
br label %307
118: ; preds = %102
br label %119
119: ; preds = %118
%120 = load i32, i32* %32
%121 = add nsw i32 %120, 1
store i32 %121, i32* %32
br label %97
122: ; preds = %97
store i32 0, i32* %32
br label %123
123: ; preds = %151, %122
%124 = load i32, i32* %32
%125 = load i32*, i32** %17
%126 = load i32, i32* %125
%127 = icmp slt i32 %124, %126
br i1 %127, label %128, label %154
128: ; preds = %123
%129 = load i32*, i32** %23
%130 = load i32, i32* %32
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i32, i32* %129, i64 %131
%133 = load i32, i32* %132
%134 = icmp slt i32 %133, 0
br i1 %134, label %135, label %139
135: ; preds = %128
%136 = load i32, i32* %32
%137 = add nsw i32 %136, 1
%138 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), i32 %137)
store i32 0, i32* %15
br label %307
139: ; preds = %128
%140 = load i32*, i32** %24
%141 = load i32, i32* %32
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds i32, i32* %140, i64 %142
%144 = load i32, i32* %143
%145 = icmp slt i32 %144, 0
br i1 %145, label %146, label %150
146: ; preds = %139
%147 = load i32, i32* %32
%148 = add nsw i32 %147, 1
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), i32 %148)
store i32 0, i32* %15
br label %307
150: ; preds = %139
br label %151
151: ; preds = %150
%152 = load i32, i32* %32
%153 = add nsw i32 %152, 1
store i32 %153, i32* %32
br label %123
154: ; preds = %123
%155 = load i32*, i32** %25
%156 = load i32, i32* %155
%157 = icmp ne i32 %156, 1
br i1 %157, label %158, label %168
158: ; preds = %154
%159 = load i32*, i32** %25
%160 = load i32, i32* %159
%161 = icmp ne i32 %160, 2
br i1 %161, label %162, label %168
162: ; preds = %158
%163 = load i32*, i32** %25
%164 = load i32, i32* %163
%165 = icmp ne i32 %164, 4
br i1 %165, label %166, label %168
166: ; preds = %162
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.8, i64 0, i64 0))
store i32 0, i32* %15
br label %307
168: ; preds = %162, %158, %154
%169 = load i32*, i32** %26
%170 = load i32, i32* %169
switch i32 %170, label %215 [
i32 0, label %171
i32 1, label %172
i32 2, label %205
i32 3, label %206
i32 4, label %207
i32 5, label %208
i32 -1, label %209
]
171: ; preds = %168
store i32 4, i32* %34
br label %217
172: ; preds = %168
store i32 0, i32* %34
%173 = load float*, float** %27
%174 = getelementptr inbounds float, float* %173, i64 0
%175 = load float, float* %174
%176 = fpext float %175 to double
%177 = fcmp oge double %176, 1.000000e+30
br i1 %177, label %178, label %180
178: ; preds = %172
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.9, i64 0, i64 0))
store i32 0, i32* %15
br label %307
180: ; preds = %172
%181 = load float*, float** %27
%182 = getelementptr inbounds float, float* %181, i64 1
%183 = load float, float* %182
%184 = fpext float %183 to double
%185 = fcmp oge double %184, 1.000000e+30
br i1 %185, label %186, label %188
186: ; preds = %180
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.10, i64 0, i64 0))
store i32 0, i32* %15
br label %307
188: ; preds = %180
%189 = load float*, float** %27
%190 = getelementptr inbounds float, float* %189, i64 2
%191 = load float, float* %190
%192 = fpext float %191 to double
%193 = fcmp oge double %192, 1.000000e+30
br i1 %193, label %194, label %196
194: ; preds = %188
%195 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.11, i64 0, i64 0))
store i32 0, i32* %15
br label %307
196: ; preds = %188
%197 = load float*, float** %27
%198 = getelementptr inbounds float, float* %197, i64 3
%199 = load float, float* %198
%200 = fpext float %199 to double
%201 = fcmp oge double %200, 1.000000e+30
br i1 %201, label %202, label %204
202: ; preds = %196
%203 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.12, i64 0, i64 0))
store i32 0, i32* %15
br label %307
204: ; preds = %196
br label %217
205: ; preds = %168
store i32 6, i32* %34
br label %217
206: ; preds = %168
store i32 5, i32* %34
br label %217
207: ; preds = %168
store i32 7, i32* %34
br label %217
208: ; preds = %168
store i32 4, i32* %34
br label %217
209: ; preds = %168
%210 = load i32*, i32** %19
%211 = load i32, i32* %210
%212 = load i32*, i32** %20
%213 = load i32, i32* %212
%214 = add nsw i32 %211, %213
store i32 %214, i32* %34
br label %217
215: ; preds = %168
store i32 0, i32* %34
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.13, i64 0, i64 0))
store i32 0, i32* %15
br label %307
217: ; preds = %209, %208, %207, %206, %205, %204, %171
store i32 0, i32* %32
br label %218
218: ; preds = %235, %217
%219 = load i32, i32* %32
%220 = load i32, i32* %34
%221 = icmp slt i32 %219, %220
br i1 %221, label %222, label %238
222: ; preds = %218
%223 = load float*, float** %27
%224 = load i32, i32* %32
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds float, float* %223, i64 %225
%227 = load float, float* %226
%228 = fpext float %227 to double
%229 = fcmp oge double %228, 1.000000e+30
br i1 %229, label %230, label %234
230: ; preds = %222
%231 = load i32, i32* %32
%232 = add nsw i32 %231, 1
%233 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.14, i64 0, i64 0), i32 %232)
store i32 0, i32* %15
br label %307
234: ; preds = %222
br label %235
235: ; preds = %234
%236 = load i32, i32* %32
%237 = add nsw i32 %236, 1
store i32 %237, i32* %32
br label %218
238: ; preds = %218
%239 = load i32*, i32** %28
%240 = load i32, i32* %239
switch i32 %240, label %260 [
i32 0, label %241
i32 1, label %241
i32 2, label %258
i32 3, label %258
]
241: ; preds = %238, %238
store i32 0, i32* %34
%242 = load float*, float** %29
%243 = getelementptr inbounds float, float* %242, i64 0
%244 = load float, float* %243
%245 = fpext float %244 to double
%246 = fcmp oge double %245, 1.000000e+30
br i1 %246, label %247, label %249
247: ; preds = %241
%248 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.15, i64 0, i64 0))
store i32 0, i32* %15
br label %307
249: ; preds = %241
%250 = load float*, float** %29
%251 = getelementptr inbounds float, float* %250, i64 1
%252 = load float, float* %251
%253 = fpext float %252 to double
%254 = fcmp oge double %253, 1.000000e+30
br i1 %254, label %255, label %257
255: ; preds = %249
%256 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.16, i64 0, i64 0))
store i32 0, i32* %15
br label %307
257: ; preds = %249
br label %262
258: ; preds = %238, %238
%259 = load i32, i32* %33
store i32 %259, i32* %34
br label %262
260: ; preds = %238
store i32 0, i32* %34
%261 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.17, i64 0, i64 0))
store i32 0, i32* %15
br label %307
262: ; preds = %258, %257
store i32 0, i32* %32
br label %263
263: ; preds = %280, %262
%264 = load i32, i32* %32
%265 = load i32, i32* %34
%266 = icmp slt i32 %264, %265
br i1 %266, label %267, label %283
267: ; preds = %263
%268 = load float*, float** %29
%269 = load i32, i32* %32
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds float, float* %268, i64 %270
%272 = load float, float* %271
%273 = fpext float %272 to double
%274 = fcmp oge double %273, 1.000000e+30
br i1 %274, label %275, label %279
275: ; preds = %267
%276 = load i32, i32* %32
%277 = add nsw i32 %276, 1
%278 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.18, i64 0, i64 0), i32 %277)
store i32 0, i32* %15
br label %307
279: ; preds = %267
br label %280
280: ; preds = %279
%281 = load i32, i32* %32
%282 = add nsw i32 %281, 1
store i32 %282, i32* %32
br label %263
283: ; preds = %263
%284 = getelementptr inbounds [100 x i8], [100 x i8]* %30, i64 0, i64 0
%285 = load i32*, i32** %17
%286 = load i32, i32* %285
%287 = load i32*, i32** %18
%288 = load i32, i32* %287
%289 = load i32*, i32** %19
%290 = load i32, i32* %289
%291 = load i32*, i32** %20
%292 = load i32, i32* %291
%293 = load i32*, i32** %21
%294 = getelementptr inbounds [200 x [10 x i8]], [200 x [10 x i8]]* %31, i64 0, i64 0
%295 = bitcast [10 x i8]* %294 to i8**
%296 = load i32*, i32** %23
%297 = load i32*, i32** %24
%298 = load i32*, i32** %25
%299 = load i32, i32* %298
%300 = load i32*, i32** %26
%301 = load i32, i32* %300
%302 = load float*, float** %27
%303 = load i32*, i32** %28
%304 = load i32, i32* %303
%305 = load float*, float** %29
%306 = call i32 @v5dCreate(i8* %284, i32 %286, i32 %288, i32 %290, i32 %292, i32* %293, i8** %295, i32* %296, i32* %297, i32 %299, i32 %301, float* %302, i32 %304, float* %305)
store i32 %306, i32* %15
br label %307
307: ; preds = %283, %275, %260, %255, %247, %230, %215, %202, %194, %186, %178, %166, %146, %135, %114, %74, %59, %53, %47, %41
%308 = load i32, i32* %15
ret i32 %308
}

LLVM IR (-O2):
@.str.4 = [23 x i8] c"Error: nl(%d) invalid\0A\00"
@.str.5 = [32 x i8] c"Error: unitialized varname(%d)\0A\00"
@.str.6 = [26 x i8] c"Error: times(%d) invalid\0A\00"
@.str.7 = [26 x i8] c"Error: dates(%d) invalid\0A\00"
@.str.14 = [30 x i8] c"Error: proj_args(%d) invalid\0A\00"
@.str.18 = [30 x i8] c"Error: vert_args(%d) invalid\0A\00"
@str = [37 x i8] c"Error: hgtinc (vert_args(2)) invalid\00"
@str.19 = [40 x i8] c"Error: bottomhgt (vert_args(1)) invalid\00"
@str.20 = [24 x i8] c"Error: vertical invalid\00"
@str.21 = [37 x i8] c"Error: loninc (proj_args(4)) invalid\00"
@str.22 = [37 x i8] c"Error: latinc (proj_args(3)) invalid\00"
@str.23 = [38 x i8] c"Error: westlon (proj_args(2)) invalid\00"
@str.24 = [39 x i8] c"Error: northlat (proj_args(1)) invalid\00"
@str.25 = [26 x i8] c"Error: projection invalid\00"
@str.26 = [28 x i8] c"Error: compressmode invalid\00"
@str.27 = [18 x i8] c"Error: nc invalid\00"
@str.28 = [18 x i8] c"Error: nr invalid\00"
@str.29 = [23 x i8] c"Error: numvars invalid\00"
@str.30 = [24 x i8] c"Error: numtimes invalid\00"
define i32 @v5dcreate_(i8* %0, i32* nocapture %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4, i32* %5, [10 x i8]* %6, i32* %7, i32* %8, i32* nocapture %9, i32* nocapture %10, float* %11, i32* nocapture %12, float* %13) {
%15 = alloca [100 x i8]
%16 = alloca [200 x [10 x i8]]
%17 = getelementptr inbounds [100 x i8], [100 x i8]* %15, i64 0, i64 0
%18 = getelementptr inbounds [200 x [10 x i8]], [200 x [10 x i8]]* %16, i64 0, i64 0, i64 0
%19 = call i32 @copy_string(i8* %17, i8* %0, i32 100)
%20 = load i32, i32* %1
%21 = icmp slt i32 %20, 1
br i1 %21, label %22, label %24
22: ; preds = %14
%23 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.30, i64 0, i64 0))
br label %194
24: ; preds = %14
%25 = load i32, i32* %2
%26 = icmp slt i32 %25, 1
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.29, i64 0, i64 0))
br label %194
29: ; preds = %24
%30 = load i32, i32* %3
%31 = icmp slt i32 %30, 2
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.28, i64 0, i64 0))
br label %194
34: ; preds = %29
%35 = load i32, i32* %4
%36 = icmp slt i32 %35, 2
br i1 %36, label %39, label %37
37: ; preds = %34
%38 = zext i32 %25 to i64
br label %41
39: ; preds = %34
%40 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.27, i64 0, i64 0))
br label %194
41: ; preds = %37, %51
%42 = phi i64 [ 0, %37 ], [ %54, %51 ]
%43 = phi i32 [ 0, %37 ], [ %53, %51 ]
%44 = getelementptr inbounds i32, i32* %5, i64 %42
%45 = load i32, i32* %44
%46 = icmp slt i32 %45, 1
br i1 %46, label %47, label %51
47: ; preds = %41
%48 = trunc i64 %42 to i32
%49 = add nuw nsw i32 %48, 1
%50 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0), i32 %49)
br label %194
51: ; preds = %41
%52 = icmp sgt i32 %45, %43
%53 = select i1 %52, i32 %45, i32 %43
%54 = add nuw nsw i64 %42, 1
%55 = icmp eq i64 %54, %38
br i1 %55, label %61, label %41
56: ; preds = %71
%57 = load i32, i32* %1
%58 = icmp sgt i32 %57, 0
br i1 %58, label %59, label %96
59: ; preds = %56
%60 = zext i32 %57 to i64
br label %76
61: ; preds = %51, %71
%62 = phi i64 [ %72, %71 ], [ 0, %51 ]
%63 = getelementptr inbounds [200 x [10 x i8]], [200 x [10 x i8]]* %16, i64 0, i64 %62, i64 0
%64 = getelementptr inbounds [10 x i8], [10 x i8]* %6, i64 %62, i64 0
%65 = call i64 @copy_string2(i8* %63, i8* %64, i32 10)
%66 = icmp eq i64 %65, 0
br i1 %66, label %67, label %71
67: ; preds = %61
%68 = trunc i64 %62 to i32
%69 = add nuw nsw i32 %68, 1
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0), i32 %69)
br label %194
71: ; preds = %61
%72 = add nuw nsw i64 %62, 1
%73 = load i32, i32* %2
%74 = sext i32 %73 to i64
%75 = icmp slt i64 %72, %74
br i1 %75, label %61, label %56
76: ; preds = %59, %93
%77 = phi i64 [ 0, %59 ], [ %94, %93 ]
%78 = getelementptr inbounds i32, i32* %7, i64 %77
%79 = load i32, i32* %78
%80 = icmp slt i32 %79, 0
br i1 %80, label %81, label %85
81: ; preds = %76
%82 = trunc i64 %77 to i32
%83 = add nuw nsw i32 %82, 1
%84 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.6, i64 0, i64 0), i32 %83)
br label %194
85: ; preds = %76
%86 = getelementptr inbounds i32, i32* %8, i64 %77
%87 = load i32, i32* %86
%88 = icmp slt i32 %87, 0
br i1 %88, label %89, label %93
89: ; preds = %85
%90 = trunc i64 %77 to i32
%91 = add nuw nsw i32 %90, 1
%92 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.7, i64 0, i64 0), i32 %91)
br label %194
93: ; preds = %85
%94 = add nuw nsw i64 %77, 1
%95 = icmp eq i64 %94, %60
br i1 %95, label %96, label %76
96: ; preds = %93, %56
%97 = load i32, i32* %9
switch i32 %97, label %98 [
i32 1, label %100
i32 2, label %100
i32 4, label %100
]
98: ; preds = %96
%99 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.26, i64 0, i64 0))
br label %194
100: ; preds = %96, %96, %96
%101 = load i32, i32* %10
switch i32 %101, label %132 [
i32 0, label %139
i32 1, label %102
i32 2, label %129
i32 3, label %130
i32 4, label %131
i32 5, label %139
i32 -1, label %134
]
102: ; preds = %100
%103 = load float, float* %11
%104 = fpext float %103 to double
%105 = fcmp ult double %104, 1.000000e+30
br i1 %105, label %108, label %106
106: ; preds = %102
%107 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.24, i64 0, i64 0))
br label %194
108: ; preds = %102
%109 = getelementptr inbounds float, float* %11, i64 1
%110 = load float, float* %109
%111 = fpext float %110 to double
%112 = fcmp ult double %111, 1.000000e+30
br i1 %112, label %115, label %113
113: ; preds = %108
%114 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @str.23, i64 0, i64 0))
br label %194
115: ; preds = %108
%116 = getelementptr inbounds float, float* %11, i64 2
%117 = load float, float* %116
%118 = fpext float %117 to double
%119 = fcmp ult double %118, 1.000000e+30
br i1 %119, label %122, label %120
120: ; preds = %115
%121 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.22, i64 0, i64 0))
br label %194
122: ; preds = %115
%123 = getelementptr inbounds float, float* %11, i64 3
%124 = load float, float* %123
%125 = fpext float %124 to double
%126 = fcmp ult double %125, 1.000000e+30
br i1 %126, label %155, label %127
127: ; preds = %122
%128 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.21, i64 0, i64 0))
br label %194
129: ; preds = %100
br label %139
130: ; preds = %100
br label %139
131: ; preds = %100
br label %139
132: ; preds = %100
%133 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.25, i64 0, i64 0))
br label %194
134: ; preds = %100
%135 = load i32, i32* %3
%136 = load i32, i32* %4
%137 = add nsw i32 %136, %135
%138 = icmp sgt i32 %137, 0
br i1 %138, label %139, label %155
139: ; preds = %100, %100, %129, %130, %131, %134
%140 = phi i32 [ %137, %134 ], [ 4, %100 ], [ 4, %100 ], [ 6, %129 ], [ 5, %130 ], [ 7, %131 ]
%141 = zext i32 %140 to i64
br label %142
142: ; preds = %139, %152
%143 = phi i64 [ 0, %139 ], [ %153, %152 ]
%144 = getelementptr inbounds float, float* %11, i64 %143
%145 = load float, float* %144
%146 = fpext float %145 to double
%147 = fcmp ult double %146, 1.000000e+30
br i1 %147, label %152, label %148
148: ; preds = %142
%149 = trunc i64 %143 to i32
%150 = add nuw nsw i32 %149, 1
%151 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.14, i64 0, i64 0), i32 %150)
br label %194
152: ; preds = %142
%153 = add nuw nsw i64 %143, 1
%154 = icmp eq i64 %153, %141
br i1 %154, label %155, label %142
155: ; preds = %152, %122, %134
%156 = load i32, i32* %12
switch i32 %156, label %170 [
i32 0, label %157
i32 1, label %157
i32 2, label %172
i32 3, label %172
]
157: ; preds = %155, %155
%158 = load float, float* %13
%159 = fpext float %158 to double
%160 = fcmp ult double %159, 1.000000e+30
br i1 %160, label %163, label %161
161: ; preds = %157
%162 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.19, i64 0, i64 0))
br label %194
163: ; preds = %157
%164 = getelementptr inbounds float, float* %13, i64 1
%165 = load float, float* %164
%166 = fpext float %165 to double
%167 = fcmp ult double %166, 1.000000e+30
br i1 %167, label %189, label %168
168: ; preds = %163
%169 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str, i64 0, i64 0))
br label %194
170: ; preds = %155
%171 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.20, i64 0, i64 0))
br label %194
172: ; preds = %155, %155
%173 = icmp sgt i32 %53, 0
br i1 %173, label %174, label %189
174: ; preds = %172
%175 = zext i32 %53 to i64
br label %176
176: ; preds = %174, %186
%177 = phi i64 [ 0, %174 ], [ %187, %186 ]
%178 = getelementptr inbounds float, float* %13, i64 %177
%179 = load float, float* %178
%180 = fpext float %179 to double
%181 = fcmp ult double %180, 1.000000e+30
br i1 %181, label %186, label %182
182: ; preds = %176
%183 = trunc i64 %177 to i32
%184 = add nuw nsw i32 %183, 1
%185 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.18, i64 0, i64 0), i32 %184)
br label %194
186: ; preds = %176
%187 = add nuw nsw i64 %177, 1
%188 = icmp eq i64 %187, %175
br i1 %188, label %189, label %176
189: ; preds = %186, %163, %172
%190 = load i32, i32* %3
%191 = load i32, i32* %4
%192 = bitcast [200 x [10 x i8]]* %16 to i8**
%193 = call i32 @v5dCreate(i8* %17, i32 %57, i32 %73, i32 %190, i32 %191, i32* %5, i8** %192, i32* %7, i32* %8, i32 %97, i32 %101, float* %11, i32 %156, float* %13)
br label %194
194: ; preds = %189, %182, %170, %168, %161, %148, %132, %127, %120, %113, %106, %98, %89, %81, %67, %47, %39, %32, %27, %22
%195 = phi i32 [ 0, %22 ], [ 0, %27 ], [ 0, %32 ], [ 0, %39 ], [ 0, %47 ], [ 0, %67 ], [ 0, %81 ], [ 0, %89 ], [ 0, %98 ], [ 0, %132 ], [ 0, %148 ], [ 0, %170 ], [ 0, %182 ], [ %193, %189 ], [ 0, %161 ], [ 0, %168 ], [ 0, %106 ], [ 0, %113 ], [ 0, %120 ], [ 0, %127 ]
ret i32 %195
}