#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*/ assert(int);
double **createVars(int, int);
int /*<<< orphan*/ destroyVars(double **);
int /*<<< orphan*/ readNcFile(char *, double **, int, int);
int /*<<< orphan*/ submitCdoCommand(char *);
int /*<<< orphan*/ writeNcFile(char *, double const *, int);
void testFdns() {
  const double array1[] = {-9.0E33, ((1.0) + 273.15), ((-1.0) + 273.15),
                           ((-1.0) + 273.15), ((-1.0) + 273.15)};
  const double array2[] = {0.0, 0.0, 1.0, 0.0, -9.0E33};
  int nvars = 1;
  int nts = 1;
  double **vars = createVars(nvars, nts);
  writeNcFile("in1.nc", array1, 1);
  writeNcFile("in2.nc", array2, 1);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((
      ((vars[0][0]) != (vars[0][0])) || ((-9.0E33) != (-9.0E33))
          ? (((vars[0][0]) != (vars[0][0])) && ((-9.0E33) != (-9.0E33)) ? 1 : 0)
          : !(vars[0][0] < -9.0E33 || -9.0E33 < vars[0][0])));
  writeNcFile("in1.nc", array1, 2);
  writeNcFile("in2.nc", array2, 2);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((0.) != (0.))
              ? (((vars[0][0]) != (vars[0][0])) && ((0.) != (0.)) ? 1 : 0)
              : !(vars[0][0] < 0. || 0. < vars[0][0])));
  writeNcFile("in1.nc", array1, 3);
  writeNcFile("in2.nc", array2, 3);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((0.) != (0.))
              ? (((vars[0][0]) != (vars[0][0])) && ((0.) != (0.)) ? 1 : 0)
              : !(vars[0][0] < 0. || 0. < vars[0][0])));
  writeNcFile("in1.nc", array1, 4);
  writeNcFile("in2.nc", array2, 4);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((1.) != (1.))
              ? (((vars[0][0]) != (vars[0][0])) && ((1.) != (1.)) ? 1 : 0)
              : !(vars[0][0] < 1. || 1. < vars[0][0])));
  writeNcFile("in1.nc", array1, 5);
  writeNcFile("in2.nc", array2, 5);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((1.) != (1.))
              ? (((vars[0][0]) != (vars[0][0])) && ((1.) != (1.)) ? 1 : 0)
              : !(vars[0][0] < 1. || 1. < vars[0][0])));
  writeNcFile("in1.nc", array1 + 4, 1);
  writeNcFile("in2.nc", array2 + 4, 1);
  submitCdoCommand("fdns in1.nc in2.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((
      ((vars[0][0]) != (vars[0][0])) || ((-9.0E33) != (-9.0E33))
          ? (((vars[0][0]) != (vars[0][0])) && ((-9.0E33) != (-9.0E33)) ? 1 : 0)
          : !(vars[0][0] < -9.0E33 || -9.0E33 < vars[0][0])));
  destroyVars(vars);
}


x86 assembly (clang, -O0):
<testFdns>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
lea    -0x30(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   1050 <memset@plt>
movsd  0xe6d(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe78(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe63(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe56(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xe49(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
lea    -0x60(%rbp),%rdi
xor    %esi,%esi
mov    $0x28,%edx
call   1050 <memset@plt>
movsd  0xe24(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe0f(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movl   $0x1,-0x64(%rbp)
movl   $0x1,-0x68(%rbp)
mov    -0x64(%rbp),%edi
mov    -0x68(%rbp),%esi
call   1030 <createVars@plt>
mov    %rax,-0x70(%rbp)
lea    -0x30(%rbp),%rsi
lea    0xe02(%rip),%rdi
mov    $0x1,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
lea    0xdf4(%rip),%rdi
mov    $0x1,%edx
call   1080 <writeNcFile@plt>
lea    0xdea(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0xde7(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    1286 <testFdns+0x116>
jp     1286 <testFdns+0x116>
jmp    12d4 <testFdns+0x164>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x71(%rbp)
jne    12b2 <testFdns+0x142>
jp     12b2 <testFdns+0x142>
jmp    12bc <testFdns+0x14c>
xor    %eax,%eax
mov    %al,-0x71(%rbp)
jmp    12bc <testFdns+0x14c>
mov    -0x71(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x78(%rbp)
jmp    131c <testFdns+0x1ac>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
movsd  0xd1b(%rip),%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0x79(%rbp)
ja     130f <testFdns+0x19f>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  0xcfb(%rip),%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x79(%rbp)
mov    -0x79(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%edi
call   1060 <assert@plt>
lea    -0x30(%rbp),%rsi
lea    0xcf1(%rip),%rdi
mov    $0x2,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
lea    0xce3(%rip),%rdi
mov    $0x2,%edx
call   1080 <writeNcFile@plt>
lea    0xcd9(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0xcd6(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    1397 <testFdns+0x227>
jp     1397 <testFdns+0x227>
jmp    13e5 <testFdns+0x275>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x7a(%rbp)
jne    13c3 <testFdns+0x253>
jp     13c3 <testFdns+0x253>
jmp    13cd <testFdns+0x25d>
xor    %eax,%eax
mov    %al,-0x7a(%rbp)
jmp    13cd <testFdns+0x25d>
mov    -0x7a(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x80(%rbp)
jmp    142c <testFdns+0x2bc>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0x81(%rbp)
ja     141c <testFdns+0x2ac>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x81(%rbp)
mov    -0x81(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%edi
call   1060 <assert@plt>
lea    -0x30(%rbp),%rsi
lea    0xbe1(%rip),%rdi
mov    $0x3,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
lea    0xbd3(%rip),%rdi
mov    $0x3,%edx
call   1080 <writeNcFile@plt>
lea    0xbc9(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0xbc6(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    14a7 <testFdns+0x337>
jp     14a7 <testFdns+0x337>
jmp    1501 <testFdns+0x391>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x82(%rbp)
jne    14d6 <testFdns+0x366>
jp     14d6 <testFdns+0x366>
jmp    14e3 <testFdns+0x373>
xor    %eax,%eax
mov    %al,-0x82(%rbp)
jmp    14e3 <testFdns+0x373>
mov    -0x82(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x88(%rbp)
jmp    154b <testFdns+0x3db>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0x89(%rbp)
ja     1538 <testFdns+0x3c8>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x89(%rbp)
mov    -0x89(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%edi
call   1060 <assert@plt>
lea    -0x30(%rbp),%rsi
lea    0xabf(%rip),%rdi
mov    $0x4,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
lea    0xab1(%rip),%rdi
mov    $0x4,%edx
call   1080 <writeNcFile@plt>
lea    0xaa7(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0xaa4(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    15c9 <testFdns+0x459>
jp     15c9 <testFdns+0x459>
jmp    1623 <testFdns+0x4b3>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x8a(%rbp)
jne    15f8 <testFdns+0x488>
jp     15f8 <testFdns+0x488>
jmp    1605 <testFdns+0x495>
xor    %eax,%eax
mov    %al,-0x8a(%rbp)
jmp    1605 <testFdns+0x495>
mov    -0x8a(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x90(%rbp)
jmp    1677 <testFdns+0x507>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
movsd  0x9d4(%rip),%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0x91(%rbp)
ja     1664 <testFdns+0x4f4>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  0x9b1(%rip),%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x91(%rbp)
mov    -0x91(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%edi
call   1060 <assert@plt>
lea    -0x30(%rbp),%rsi
lea    0x993(%rip),%rdi
mov    $0x5,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
lea    0x985(%rip),%rdi
mov    $0x5,%edx
call   1080 <writeNcFile@plt>
lea    0x97b(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0x978(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    16f5 <testFdns+0x585>
jp     16f5 <testFdns+0x585>
jmp    174f <testFdns+0x5df>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x92(%rbp)
jne    1724 <testFdns+0x5b4>
jp     1724 <testFdns+0x5b4>
jmp    1731 <testFdns+0x5c1>
xor    %eax,%eax
mov    %al,-0x92(%rbp)
jmp    1731 <testFdns+0x5c1>
mov    -0x92(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x98(%rbp)
jmp    17a3 <testFdns+0x633>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
movsd  0x8a8(%rip),%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0x99(%rbp)
ja     1790 <testFdns+0x620>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  0x885(%rip),%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x99(%rbp)
mov    -0x99(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%edi
call   1060 <assert@plt>
lea    -0x30(%rbp),%rsi
add    $0x20,%rsi
lea    0x863(%rip),%rdi
mov    $0x1,%edx
call   1080 <writeNcFile@plt>
lea    -0x60(%rbp),%rsi
add    $0x20,%rsi
lea    0x851(%rip),%rdi
mov    $0x1,%edx
call   1080 <writeNcFile@plt>
lea    0x847(%rip),%rdi
call   1070 <submitCdoCommand@plt>
mov    -0x70(%rbp),%rsi
mov    -0x64(%rbp),%edx
mov    -0x68(%rbp),%ecx
lea    0x844(%rip),%rdi
call   1090 <readNcFile@plt>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
ucomisd (%rax),%xmm0
jne    1829 <testFdns+0x6b9>
jp     1829 <testFdns+0x6b9>
jmp    1883 <testFdns+0x713>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
xor    %eax,%eax
ucomisd (%rcx),%xmm0
mov    %al,-0x9a(%rbp)
jne    1858 <testFdns+0x6e8>
jp     1858 <testFdns+0x6e8>
jmp    1865 <testFdns+0x6f5>
xor    %eax,%eax
mov    %al,-0x9a(%rbp)
jmp    1865 <testFdns+0x6f5>
mov    -0x9a(%rbp),%dl
xor    %eax,%eax
mov    $0x1,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0xa0(%rbp)
jmp    18d7 <testFdns+0x767>
mov    -0x70(%rbp),%rax
mov    (%rax),%rcx
mov    $0x1,%al
movsd  0x76c(%rip),%xmm0
ucomisd (%rcx),%xmm0
mov    %al,-0xa1(%rbp)
ja     18c4 <testFdns+0x754>
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  0x749(%rip),%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0xa1(%rbp)
mov    -0xa1(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%edi
call   1060 <assert@plt>
mov    -0x70(%rbp),%rdi
call   1040 <destroyVars@plt>
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<testFdns>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
movaps 0xe8b(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe8f(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movabs $0x4071026666666666,%rax
02 71 40
mov    %rax,0x50(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm0,(%rsp)
movabs $0x3ff0000000000000,%rax
mov    %rax,0x10(%rsp)
movabs $0xc6fbbbbf868fa2d0,%rax
bb fb c6
mov    %rax,0x20(%rsp)
mov    $0x1,%edi
mov    $0x1,%esi
call   1030 <createVars@plt>
mov    %rax,%rbx
lea    0xe58(%rip),%r15
lea    0x30(%rsp),%r14
mov    %r15,%rdi
mov    %r14,%rsi
mov    $0x1,%edx
call   1070 <writeNcFile@plt>
lea    0xe43(%rip),%r12
mov    %rsp,%rsi
mov    %r12,%rdi
mov    $0x1,%edx
call   1070 <writeNcFile@plt>
lea    0xe33(%rip),%r13
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
lea    0xe37(%rip),%rbp
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
movsd  (%rax),%xmm0
ucomisd %xmm0,%xmm0
setnp  %al
movsd  0xddb(%rip),%xmm1
ucomisd %xmm0,%xmm1
sete   %cl
and    %al,%cl
movzbl %cl,%edi
call   1050 <assert@plt>
mov    %r15,%rdi
mov    %r14,%rsi
mov    $0x2,%edx
call   1070 <writeNcFile@plt>
mov    %r12,%rdi
mov    %rsp,%rsi
mov    $0x2,%edx
call   1070 <writeNcFile@plt>
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
xorpd  %xmm1,%xmm1
movsd  (%rax),%xmm0
cmpeqsd %xmm1,%xmm0
movq   %xmm0,%rdi
and    $0x1,%edi
call   1050 <assert@plt>
mov    %r15,%rdi
mov    %r14,%rsi
mov    $0x3,%edx
call   1070 <writeNcFile@plt>
mov    %r12,%rdi
mov    %rsp,%rsi
mov    %rsi,%r14
mov    $0x3,%edx
call   1070 <writeNcFile@plt>
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
xorpd  %xmm0,%xmm0
cmpeqsd (%rax),%xmm0
movq   %xmm0,%rdi
and    $0x1,%edi
call   1050 <assert@plt>
mov    %r15,%rdi
lea    0x30(%rsp),%rsi
mov    $0x4,%edx
call   1070 <writeNcFile@plt>
mov    %r12,%rdi
mov    %r14,%rsi
mov    $0x4,%edx
call   1070 <writeNcFile@plt>
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
movsd  (%rax),%xmm0
ucomisd %xmm0,%xmm0
setnp  %al
movsd  0xcca(%rip),%xmm1
ucomisd %xmm0,%xmm1
sete   %cl
and    %al,%cl
movzbl %cl,%edi
call   1050 <assert@plt>
mov    %r15,%rdi
lea    0x30(%rsp),%rsi
mov    $0x5,%edx
call   1070 <writeNcFile@plt>
mov    %r12,%rdi
mov    %r14,%rsi
mov    $0x5,%edx
call   1070 <writeNcFile@plt>
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
movsd  (%rax),%xmm0
ucomisd %xmm0,%xmm0
setnp  %al
movsd  0xc64(%rip),%xmm1
ucomisd %xmm0,%xmm1
sete   %cl
and    %al,%cl
movzbl %cl,%edi
call   1050 <assert@plt>
mov    %r15,%rdi
lea    0x50(%rsp),%rsi
mov    $0x1,%edx
call   1070 <writeNcFile@plt>
mov    %r12,%rdi
lea    0x20(%rsp),%rsi
mov    $0x1,%edx
call   1070 <writeNcFile@plt>
mov    %r13,%rdi
call   1060 <submitCdoCommand@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
mov    $0x1,%ecx
call   1080 <readNcFile@plt>
mov    (%rbx),%rax
movsd  (%rax),%xmm0
ucomisd %xmm0,%xmm0
setnp  %al
movsd  0xbf4(%rip),%xmm1
ucomisd %xmm0,%xmm1
sete   %cl
and    %al,%cl
movzbl %cl,%edi
call   1050 <assert@plt>
mov    %rbx,%rdi
call   1040 <destroyVars@plt>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [7 x i8] c"in1.nc\00"
@.str.1 = [7 x i8] c"in2.nc\00"
@.str.2 = [26 x i8] c"fdns in1.nc in2.nc out.nc\00"
@.str.3 = [7 x i8] c"out.nc\00"
define void @testFdns() {
%1 = alloca [5 x double]
%2 = alloca [5 x double]
%3 = alloca i32
%4 = alloca i32
%5 = alloca double**
%6 = bitcast [5 x double]* %1 to i8*
%7 = bitcast i8* %6 to [5 x double]*
%8 = getelementptr inbounds [5 x double], [5 x double]* %7, i32 0, i32 0
store double -9.000000e+33, double* %8
%9 = getelementptr inbounds [5 x double], [5 x double]* %7, i32 0, i32 1
store double 2.741500e+02, double* %9
%10 = getelementptr inbounds [5 x double], [5 x double]* %7, i32 0, i32 2
store double 2.721500e+02, double* %10
%11 = getelementptr inbounds [5 x double], [5 x double]* %7, i32 0, i32 3
store double 2.721500e+02, double* %11
%12 = getelementptr inbounds [5 x double], [5 x double]* %7, i32 0, i32 4
store double 2.721500e+02, double* %12
%13 = bitcast [5 x double]* %2 to i8*
%14 = bitcast i8* %13 to [5 x double]*
%15 = getelementptr inbounds [5 x double], [5 x double]* %14, i32 0, i32 2
store double 1.000000e+00, double* %15
%16 = getelementptr inbounds [5 x double], [5 x double]* %14, i32 0, i32 4
store double -9.000000e+33, double* %16
store i32 1, i32* %3
store i32 1, i32* %4
%17 = load i32, i32* %3
%18 = load i32, i32* %4
%19 = call double** @createVars(i32 %17, i32 %18)
store double** %19, double*** %5
%20 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%21 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %20, i32 1)
%22 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%23 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %22, i32 1)
%24 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%25 = load double**, double*** %5
%26 = load i32, i32* %3
%27 = load i32, i32* %4
%28 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %25, i32 %26, i32 %27)
%29 = load double**, double*** %5
%30 = getelementptr inbounds double*, double** %29, i64 0
%31 = load double*, double** %30
%32 = getelementptr inbounds double, double* %31, i64 0
%33 = load double, double* %32
%34 = load double**, double*** %5
%35 = getelementptr inbounds double*, double** %34, i64 0
%36 = load double*, double** %35
%37 = getelementptr inbounds double, double* %36, i64 0
%38 = load double, double* %37
%39 = fcmp une double %33, %38
br i1 %39, label %40, label %57
40: ; preds = %0
%41 = load double**, double*** %5
%42 = getelementptr inbounds double*, double** %41, i64 0
%43 = load double*, double** %42
%44 = getelementptr inbounds double, double* %43, i64 0
%45 = load double, double* %44
%46 = load double**, double*** %5
%47 = getelementptr inbounds double*, double** %46, i64 0
%48 = load double*, double** %47
%49 = getelementptr inbounds double, double* %48, i64 0
%50 = load double, double* %49
%51 = fcmp une double %45, %50
br i1 %51, label %52, label %53
52: ; preds = %40
br label %53
53: ; preds = %52, %40
%54 = phi i1 [ false, %40 ], [ false, %52 ]
%55 = zext i1 %54 to i64
%56 = select i1 %54, i32 1, i32 0
br label %75
57: ; preds = %0
%58 = load double**, double*** %5
%59 = getelementptr inbounds double*, double** %58, i64 0
%60 = load double*, double** %59
%61 = getelementptr inbounds double, double* %60, i64 0
%62 = load double, double* %61
%63 = fcmp olt double %62, -9.000000e+33
br i1 %63, label %71, label %64
64: ; preds = %57
%65 = load double**, double*** %5
%66 = getelementptr inbounds double*, double** %65, i64 0
%67 = load double*, double** %66
%68 = getelementptr inbounds double, double* %67, i64 0
%69 = load double, double* %68
%70 = fcmp olt double -9.000000e+33, %69
br label %71
71: ; preds = %64, %57
%72 = phi i1 [ true, %57 ], [ %70, %64 ]
%73 = xor i1 %72, true
%74 = zext i1 %73 to i32
br label %75
75: ; preds = %71, %53
%76 = phi i32 [ %56, %53 ], [ %74, %71 ]
%77 = call i32 @assert(i32 %76)
%78 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%79 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %78, i32 2)
%80 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%81 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %80, i32 2)
%82 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%83 = load double**, double*** %5
%84 = load i32, i32* %3
%85 = load i32, i32* %4
%86 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %83, i32 %84, i32 %85)
%87 = load double**, double*** %5
%88 = getelementptr inbounds double*, double** %87, i64 0
%89 = load double*, double** %88
%90 = getelementptr inbounds double, double* %89, i64 0
%91 = load double, double* %90
%92 = load double**, double*** %5
%93 = getelementptr inbounds double*, double** %92, i64 0
%94 = load double*, double** %93
%95 = getelementptr inbounds double, double* %94, i64 0
%96 = load double, double* %95
%97 = fcmp une double %91, %96
br i1 %97, label %98, label %115
98: ; preds = %75
%99 = load double**, double*** %5
%100 = getelementptr inbounds double*, double** %99, i64 0
%101 = load double*, double** %100
%102 = getelementptr inbounds double, double* %101, i64 0
%103 = load double, double* %102
%104 = load double**, double*** %5
%105 = getelementptr inbounds double*, double** %104, i64 0
%106 = load double*, double** %105
%107 = getelementptr inbounds double, double* %106, i64 0
%108 = load double, double* %107
%109 = fcmp une double %103, %108
br i1 %109, label %110, label %111
110: ; preds = %98
br label %111
111: ; preds = %110, %98
%112 = phi i1 [ false, %98 ], [ false, %110 ]
%113 = zext i1 %112 to i64
%114 = select i1 %112, i32 1, i32 0
br label %133
115: ; preds = %75
%116 = load double**, double*** %5
%117 = getelementptr inbounds double*, double** %116, i64 0
%118 = load double*, double** %117
%119 = getelementptr inbounds double, double* %118, i64 0
%120 = load double, double* %119
%121 = fcmp olt double %120, 0.000000e+00
br i1 %121, label %129, label %122
122: ; preds = %115
%123 = load double**, double*** %5
%124 = getelementptr inbounds double*, double** %123, i64 0
%125 = load double*, double** %124
%126 = getelementptr inbounds double, double* %125, i64 0
%127 = load double, double* %126
%128 = fcmp olt double 0.000000e+00, %127
br label %129
129: ; preds = %122, %115
%130 = phi i1 [ true, %115 ], [ %128, %122 ]
%131 = xor i1 %130, true
%132 = zext i1 %131 to i32
br label %133
133: ; preds = %129, %111
%134 = phi i32 [ %114, %111 ], [ %132, %129 ]
%135 = call i32 @assert(i32 %134)
%136 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%137 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %136, i32 3)
%138 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%139 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %138, i32 3)
%140 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%141 = load double**, double*** %5
%142 = load i32, i32* %3
%143 = load i32, i32* %4
%144 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %141, i32 %142, i32 %143)
%145 = load double**, double*** %5
%146 = getelementptr inbounds double*, double** %145, i64 0
%147 = load double*, double** %146
%148 = getelementptr inbounds double, double* %147, i64 0
%149 = load double, double* %148
%150 = load double**, double*** %5
%151 = getelementptr inbounds double*, double** %150, i64 0
%152 = load double*, double** %151
%153 = getelementptr inbounds double, double* %152, i64 0
%154 = load double, double* %153
%155 = fcmp une double %149, %154
br i1 %155, label %156, label %173
156: ; preds = %133
%157 = load double**, double*** %5
%158 = getelementptr inbounds double*, double** %157, i64 0
%159 = load double*, double** %158
%160 = getelementptr inbounds double, double* %159, i64 0
%161 = load double, double* %160
%162 = load double**, double*** %5
%163 = getelementptr inbounds double*, double** %162, i64 0
%164 = load double*, double** %163
%165 = getelementptr inbounds double, double* %164, i64 0
%166 = load double, double* %165
%167 = fcmp une double %161, %166
br i1 %167, label %168, label %169
168: ; preds = %156
br label %169
169: ; preds = %168, %156
%170 = phi i1 [ false, %156 ], [ false, %168 ]
%171 = zext i1 %170 to i64
%172 = select i1 %170, i32 1, i32 0
br label %191
173: ; preds = %133
%174 = load double**, double*** %5
%175 = getelementptr inbounds double*, double** %174, i64 0
%176 = load double*, double** %175
%177 = getelementptr inbounds double, double* %176, i64 0
%178 = load double, double* %177
%179 = fcmp olt double %178, 0.000000e+00
br i1 %179, label %187, label %180
180: ; preds = %173
%181 = load double**, double*** %5
%182 = getelementptr inbounds double*, double** %181, i64 0
%183 = load double*, double** %182
%184 = getelementptr inbounds double, double* %183, i64 0
%185 = load double, double* %184
%186 = fcmp olt double 0.000000e+00, %185
br label %187
187: ; preds = %180, %173
%188 = phi i1 [ true, %173 ], [ %186, %180 ]
%189 = xor i1 %188, true
%190 = zext i1 %189 to i32
br label %191
191: ; preds = %187, %169
%192 = phi i32 [ %172, %169 ], [ %190, %187 ]
%193 = call i32 @assert(i32 %192)
%194 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%195 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %194, i32 4)
%196 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%197 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %196, i32 4)
%198 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%199 = load double**, double*** %5
%200 = load i32, i32* %3
%201 = load i32, i32* %4
%202 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %199, i32 %200, i32 %201)
%203 = load double**, double*** %5
%204 = getelementptr inbounds double*, double** %203, i64 0
%205 = load double*, double** %204
%206 = getelementptr inbounds double, double* %205, i64 0
%207 = load double, double* %206
%208 = load double**, double*** %5
%209 = getelementptr inbounds double*, double** %208, i64 0
%210 = load double*, double** %209
%211 = getelementptr inbounds double, double* %210, i64 0
%212 = load double, double* %211
%213 = fcmp une double %207, %212
br i1 %213, label %214, label %231
214: ; preds = %191
%215 = load double**, double*** %5
%216 = getelementptr inbounds double*, double** %215, i64 0
%217 = load double*, double** %216
%218 = getelementptr inbounds double, double* %217, i64 0
%219 = load double, double* %218
%220 = load double**, double*** %5
%221 = getelementptr inbounds double*, double** %220, i64 0
%222 = load double*, double** %221
%223 = getelementptr inbounds double, double* %222, i64 0
%224 = load double, double* %223
%225 = fcmp une double %219, %224
br i1 %225, label %226, label %227
226: ; preds = %214
br label %227
227: ; preds = %226, %214
%228 = phi i1 [ false, %214 ], [ false, %226 ]
%229 = zext i1 %228 to i64
%230 = select i1 %228, i32 1, i32 0
br label %249
231: ; preds = %191
%232 = load double**, double*** %5
%233 = getelementptr inbounds double*, double** %232, i64 0
%234 = load double*, double** %233
%235 = getelementptr inbounds double, double* %234, i64 0
%236 = load double, double* %235
%237 = fcmp olt double %236, 1.000000e+00
br i1 %237, label %245, label %238
238: ; preds = %231
%239 = load double**, double*** %5
%240 = getelementptr inbounds double*, double** %239, i64 0
%241 = load double*, double** %240
%242 = getelementptr inbounds double, double* %241, i64 0
%243 = load double, double* %242
%244 = fcmp olt double 1.000000e+00, %243
br label %245
245: ; preds = %238, %231
%246 = phi i1 [ true, %231 ], [ %244, %238 ]
%247 = xor i1 %246, true
%248 = zext i1 %247 to i32
br label %249
249: ; preds = %245, %227
%250 = phi i32 [ %230, %227 ], [ %248, %245 ]
%251 = call i32 @assert(i32 %250)
%252 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%253 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %252, i32 5)
%254 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%255 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %254, i32 5)
%256 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%257 = load double**, double*** %5
%258 = load i32, i32* %3
%259 = load i32, i32* %4
%260 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %257, i32 %258, i32 %259)
%261 = load double**, double*** %5
%262 = getelementptr inbounds double*, double** %261, i64 0
%263 = load double*, double** %262
%264 = getelementptr inbounds double, double* %263, i64 0
%265 = load double, double* %264
%266 = load double**, double*** %5
%267 = getelementptr inbounds double*, double** %266, i64 0
%268 = load double*, double** %267
%269 = getelementptr inbounds double, double* %268, i64 0
%270 = load double, double* %269
%271 = fcmp une double %265, %270
br i1 %271, label %272, label %289
272: ; preds = %249
%273 = load double**, double*** %5
%274 = getelementptr inbounds double*, double** %273, i64 0
%275 = load double*, double** %274
%276 = getelementptr inbounds double, double* %275, i64 0
%277 = load double, double* %276
%278 = load double**, double*** %5
%279 = getelementptr inbounds double*, double** %278, i64 0
%280 = load double*, double** %279
%281 = getelementptr inbounds double, double* %280, i64 0
%282 = load double, double* %281
%283 = fcmp une double %277, %282
br i1 %283, label %284, label %285
284: ; preds = %272
br label %285
285: ; preds = %284, %272
%286 = phi i1 [ false, %272 ], [ false, %284 ]
%287 = zext i1 %286 to i64
%288 = select i1 %286, i32 1, i32 0
br label %307
289: ; preds = %249
%290 = load double**, double*** %5
%291 = getelementptr inbounds double*, double** %290, i64 0
%292 = load double*, double** %291
%293 = getelementptr inbounds double, double* %292, i64 0
%294 = load double, double* %293
%295 = fcmp olt double %294, 1.000000e+00
br i1 %295, label %303, label %296
296: ; preds = %289
%297 = load double**, double*** %5
%298 = getelementptr inbounds double*, double** %297, i64 0
%299 = load double*, double** %298
%300 = getelementptr inbounds double, double* %299, i64 0
%301 = load double, double* %300
%302 = fcmp olt double 1.000000e+00, %301
br label %303
303: ; preds = %296, %289
%304 = phi i1 [ true, %289 ], [ %302, %296 ]
%305 = xor i1 %304, true
%306 = zext i1 %305 to i32
br label %307
307: ; preds = %303, %285
%308 = phi i32 [ %288, %285 ], [ %306, %303 ]
%309 = call i32 @assert(i32 %308)
%310 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%311 = getelementptr inbounds double, double* %310, i64 4
%312 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %311, i32 1)
%313 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%314 = getelementptr inbounds double, double* %313, i64 4
%315 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %314, i32 1)
%316 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%317 = load double**, double*** %5
%318 = load i32, i32* %3
%319 = load i32, i32* %4
%320 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %317, i32 %318, i32 %319)
%321 = load double**, double*** %5
%322 = getelementptr inbounds double*, double** %321, i64 0
%323 = load double*, double** %322
%324 = getelementptr inbounds double, double* %323, i64 0
%325 = load double, double* %324
%326 = load double**, double*** %5
%327 = getelementptr inbounds double*, double** %326, i64 0
%328 = load double*, double** %327
%329 = getelementptr inbounds double, double* %328, i64 0
%330 = load double, double* %329
%331 = fcmp une double %325, %330
br i1 %331, label %332, label %349
332: ; preds = %307
%333 = load double**, double*** %5
%334 = getelementptr inbounds double*, double** %333, i64 0
%335 = load double*, double** %334
%336 = getelementptr inbounds double, double* %335, i64 0
%337 = load double, double* %336
%338 = load double**, double*** %5
%339 = getelementptr inbounds double*, double** %338, i64 0
%340 = load double*, double** %339
%341 = getelementptr inbounds double, double* %340, i64 0
%342 = load double, double* %341
%343 = fcmp une double %337, %342
br i1 %343, label %344, label %345
344: ; preds = %332
br label %345
345: ; preds = %344, %332
%346 = phi i1 [ false, %332 ], [ false, %344 ]
%347 = zext i1 %346 to i64
%348 = select i1 %346, i32 1, i32 0
br label %367
349: ; preds = %307
%350 = load double**, double*** %5
%351 = getelementptr inbounds double*, double** %350, i64 0
%352 = load double*, double** %351
%353 = getelementptr inbounds double, double* %352, i64 0
%354 = load double, double* %353
%355 = fcmp olt double %354, -9.000000e+33
br i1 %355, label %363, label %356
356: ; preds = %349
%357 = load double**, double*** %5
%358 = getelementptr inbounds double*, double** %357, i64 0
%359 = load double*, double** %358
%360 = getelementptr inbounds double, double* %359, i64 0
%361 = load double, double* %360
%362 = fcmp olt double -9.000000e+33, %361
br label %363
363: ; preds = %356, %349
%364 = phi i1 [ true, %349 ], [ %362, %356 ]
%365 = xor i1 %364, true
%366 = zext i1 %365 to i32
br label %367
367: ; preds = %363, %345
%368 = phi i32 [ %348, %345 ], [ %366, %363 ]
%369 = call i32 @assert(i32 %368)
%370 = load double**, double*** %5
%371 = call i32 @destroyVars(double** %370)
ret void
}

LLVM IR (-O2):
@.str = [7 x i8] c"in1.nc\00"
@.str.1 = [7 x i8] c"in2.nc\00"
@.str.2 = [26 x i8] c"fdns in1.nc in2.nc out.nc\00"
@.str.3 = [7 x i8] c"out.nc\00"
define void @testFdns() {
%1 = alloca [5 x double]
%2 = alloca [5 x double]
%3 = bitcast [5 x double]* %1 to i8*
%4 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 0
%5 = bitcast [5 x double]* %1 to <2 x double>*
store <2 x double> <double -9.000000e+33, double 2.741500e+02>, <2 x double>* %5
%6 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 2
%7 = bitcast double* %6 to <2 x double>*
store <2 x double> <double 2.721500e+02, double 2.721500e+02>, <2 x double>* %7
%8 = getelementptr inbounds [5 x double], [5 x double]* %1, i64 0, i64 4
store double 2.721500e+02, double* %8
%9 = bitcast [5 x double]* %2 to i8*
%10 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 2
store double 1.000000e+00, double* %10
%11 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 4
store double -9.000000e+33, double* %11
%12 = tail call double** @createVars(i32 1, i32 1)
%13 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %4, i32 1)
%14 = getelementptr inbounds [5 x double], [5 x double]* %2, i64 0, i64 0
%15 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %14, i32 1)
%16 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%17 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%18 = load double*, double** %12
%19 = load double, double* %18
%20 = fcmp ord double %19, 0.000000e+00
%21 = fcmp ueq double %19, -9.000000e+33
%22 = and i1 %20, %21
%23 = zext i1 %22 to i32
%24 = call i32 @assert(i32 %23)
%25 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %4, i32 2)
%26 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %14, i32 2)
%27 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%28 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%29 = load double*, double** %12
%30 = load double, double* %29
%31 = fcmp oeq double %30, 0.000000e+00
%32 = zext i1 %31 to i32
%33 = call i32 @assert(i32 %32)
%34 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %4, i32 3)
%35 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %14, i32 3)
%36 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%37 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%38 = load double*, double** %12
%39 = load double, double* %38
%40 = fcmp oeq double %39, 0.000000e+00
%41 = zext i1 %40 to i32
%42 = call i32 @assert(i32 %41)
%43 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %4, i32 4)
%44 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %14, i32 4)
%45 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%46 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%47 = load double*, double** %12
%48 = load double, double* %47
%49 = fcmp ord double %48, 0.000000e+00
%50 = fcmp ueq double %48, 1.000000e+00
%51 = and i1 %49, %50
%52 = zext i1 %51 to i32
%53 = call i32 @assert(i32 %52)
%54 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %4, i32 5)
%55 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %14, i32 5)
%56 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%57 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%58 = load double*, double** %12
%59 = load double, double* %58
%60 = fcmp ord double %59, 0.000000e+00
%61 = fcmp ueq double %59, 1.000000e+00
%62 = and i1 %60, %61
%63 = zext i1 %62 to i32
%64 = call i32 @assert(i32 %63)
%65 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0), double* %8, i32 1)
%66 = call i32 @writeNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double* %11, i32 1)
%67 = call i32 @submitCdoCommand(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.2, i64 0, i64 0))
%68 = call i32 @readNcFile(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), double** %12, i32 1, i32 1)
%69 = load double*, double** %12
%70 = load double, double* %69
%71 = fcmp ord double %70, 0.000000e+00
%72 = fcmp ueq double %70, -9.000000e+33
%73 = and i1 %71, %72
%74 = zext i1 %73 to i32
%75 = call i32 @assert(i32 %74)
%76 = call i32 @destroyVars(double** %12)
ret void
}