#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 */
double fabs(float);
int /*<<< orphan*/ vis5d_get_dtx_projection(int, int *, float *);
int /*<<< orphan*/ vis5d_get_sizePRIME(int, int *, int *, int *, int *, int *,
                                       int *);
int /*<<< orphan*/ vis5d_rowcolPRIME_to_latlon(int, int /*<<< orphan*/,
                                               int /*<<< orphan*/, float, float,
                                               float *, float *);
void get_row_from_lat(int dindex, float lat, int type, float *row) {
  float projargs[100];
  int proj;
  float latitude, latitude1, latitude2, junk;
  *row = 0.0;
  vis5d_get_dtx_projection(dindex, &proj, projargs);
  if (proj == 0 || proj == 1 || proj == 20 || proj == 21 || proj == -1) {
    int Nr, Nc, Nl, LowLev, MaxNlVar, WindNl, WindLow;
    vis5d_get_sizePRIME(dindex, &Nr, &Nc, &Nl, &LowLev, &WindNl, &WindLow);
    vis5d_rowcolPRIME_to_latlon(dindex, 0, 0, 0.0, 0.0, &latitude1, &junk);
    vis5d_rowcolPRIME_to_latlon(dindex, 0, 0, Nr - 1, 0.0, &latitude2, &junk);
    *row = ((((float)(Nr - 1)) / (latitude2 - latitude1)) * (lat - latitude1));
  } else {
    float num, top, bottom, countdown, done, mpoint, edge;
    int Nr, Nc, Nl, LowLev, MaxNlVar, WindNl, WindLow;
    vis5d_get_sizePRIME(dindex, &Nr, &Nc, &Nl, &LowLev, &WindNl, &WindLow);
    top = 0.0;
    bottom = (float)(Nr - 1);
    countdown = 20;
    done = 0;
    if (type == 0) {
      edge = 0.0;
    } else {
      edge = (float)(Nc - 1);
    }
    while (!done && countdown >= 0) {
      mpoint = (top + bottom) / 2.0;
      *row = mpoint;
      vis5d_rowcolPRIME_to_latlon(dindex, 0, 0, mpoint, edge, &latitude, &junk);
      if (fabs(lat - latitude) < 0.001) {
        done = 1;
      } else if (latitude > lat) {
        countdown--;
        top = mpoint;
      } else {
        countdown--;
        bottom = mpoint;
      }
    }
  }
}


x86 assembly (clang, -O0):
<get_row_from_lat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x230,%rsp
mov    %edi,-0x4(%rbp)
movss  %xmm0,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
mov    -0x4(%rbp),%edi
lea    -0x1b0(%rbp),%rdx
lea    -0x1b4(%rbp),%rsi
call   1050 <vis5d_get_dtx_projection@plt>
cmpl   $0x0,-0x1b4(%rbp)
je     11bc <get_row_from_lat+0x7c>
cmpl   $0x1,-0x1b4(%rbp)
je     11bc <get_row_from_lat+0x7c>
cmpl   $0x14,-0x1b4(%rbp)
je     11bc <get_row_from_lat+0x7c>
cmpl   $0x15,-0x1b4(%rbp)
je     11bc <get_row_from_lat+0x7c>
cmpl   $0xffffffff,-0x1b4(%rbp)
jne    127b <get_row_from_lat+0x13b>
mov    -0x4(%rbp),%edi
lea    -0x1c8(%rbp),%rsi
lea    -0x1cc(%rbp),%rdx
lea    -0x1d0(%rbp),%rcx
lea    -0x1d4(%rbp),%r8
lea    -0x1dc(%rbp),%r9
lea    -0x1e0(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <vis5d_get_sizePRIME@plt>
mov    -0x4(%rbp),%edi
xor    %edx,%edx
xorps  %xmm1,%xmm1
lea    -0x1bc(%rbp),%rcx
lea    -0x1c4(%rbp),%r8
mov    %edx,%esi
movaps %xmm1,%xmm0
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
mov    -0x4(%rbp),%edi
mov    -0x1c8(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
xor    %edx,%edx
xorps  %xmm1,%xmm1
lea    -0x1c0(%rbp),%rcx
lea    -0x1c4(%rbp),%r8
mov    %edx,%esi
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
mov    -0x1c8(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
movss  -0x1c0(%rbp),%xmm1
ff
subss  -0x1bc(%rbp),%xmm1
ff
divss  %xmm1,%xmm0
movss  -0x8(%rbp),%xmm1
subss  -0x1bc(%rbp),%xmm1
ff
mulss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1484 <get_row_from_lat+0x344>
mov    -0x4(%rbp),%edi
lea    -0x200(%rbp),%rsi
lea    -0x204(%rbp),%rdx
lea    -0x208(%rbp),%rcx
lea    -0x20c(%rbp),%r8
lea    -0x214(%rbp),%r9
lea    -0x218(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <vis5d_get_sizePRIME@plt>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1e8(%rbp)
ff
mov    -0x200(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x1ec(%rbp)
ff
movss  0xd27(%rip),%xmm0
movss  %xmm0,-0x1f0(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1f4(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
jne    1306 <get_row_from_lat+0x1c6>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1fc(%rbp)
jmp    131b <get_row_from_lat+0x1db>
mov    -0x204(%rbp),%eax
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x1fc(%rbp)
ff
jmp    1320 <get_row_from_lat+0x1e0>
movss  -0x1f4(%rbp),%xmm0
ff
xor    %eax,%eax
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
mov    %al,-0x219(%rbp)
jne    1359 <get_row_from_lat+0x219>
jp     1359 <get_row_from_lat+0x219>
movss  -0x1f0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
setae  %al
mov    %al,-0x219(%rbp)
mov    -0x219(%rbp),%al
test   $0x1,%al
jne    136c <get_row_from_lat+0x22c>
jmp    147f <get_row_from_lat+0x33f>
movss  -0x1e8(%rbp),%xmm0
ff
addss  -0x1ec(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xc90(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1f8(%rbp)
ff
movss  -0x1f8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x4(%rbp),%edi
movss  -0x1f8(%rbp),%xmm0
ff
movss  -0x1fc(%rbp),%xmm1
ff
xor    %edx,%edx
lea    -0x1b8(%rbp),%rcx
lea    -0x1c4(%rbp),%r8
mov    %edx,%esi
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
movss  -0x8(%rbp),%xmm0
subss  -0x1b8(%rbp),%xmm0
ff
call   1030 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0xc21(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    140e <get_row_from_lat+0x2ce>
movss  0xc07(%rip),%xmm0
movss  %xmm0,-0x1f4(%rbp)
ff
jmp    147a <get_row_from_lat+0x33a>
movss  -0x1b8(%rbp),%xmm0
ff
ucomiss -0x8(%rbp),%xmm0
jbe    144d <get_row_from_lat+0x30d>
movss  0xbdc(%rip),%xmm0
addss  -0x1f0(%rbp),%xmm0
ff
movss  %xmm0,-0x1f0(%rbp)
ff
movss  -0x1f8(%rbp),%xmm0
ff
movss  %xmm0,-0x1e8(%rbp)
ff
jmp    1475 <get_row_from_lat+0x335>
movss  0xbaf(%rip),%xmm0
addss  -0x1f0(%rbp),%xmm0
ff
movss  %xmm0,-0x1f0(%rbp)
ff
movss  -0x1f8(%rbp),%xmm0
ff
movss  %xmm0,-0x1ec(%rbp)
ff
jmp    147a <get_row_from_lat+0x33a>
jmp    1320 <get_row_from_lat+0x1e0>
jmp    1484 <get_row_from_lat+0x344>
add    $0x230,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_row_from_lat>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x1f8,%rsp
mov    %rdx,%rbx
mov    %esi,%r14d
movss  %xmm0,0x10(%rsp)
mov    %edi,%ebp
movl   $0x0,(%rdx)
lea    0x38(%rsp),%rsi
lea    0x60(%rsp),%rdx
call   1050 <vis5d_get_dtx_projection@plt>
mov    0x38(%rsp),%eax
add    $0x1,%eax
cmp    $0x16,%eax
ja     123b <get_row_from_lat+0xfb>
mov    $0x600007,%ecx
bt     %eax,%ecx
jae    123b <get_row_from_lat+0xfb>
lea    0x3c(%rsp),%rax
mov    %rax,(%rsp)
lea    0x8(%rsp),%rsi
lea    0x30(%rsp),%rdx
lea    0x2c(%rsp),%rcx
lea    0x28(%rsp),%r8
lea    0x24(%rsp),%r9
mov    %ebp,%edi
call   1040 <vis5d_get_sizePRIME@plt>
lea    0xc(%rsp),%rcx
lea    0x34(%rsp),%r14
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
mov    %ebp,%edi
xor    %esi,%esi
xor    %edx,%edx
mov    %r14,%r8
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
mov    0x8(%rsp),%eax
add    $0xffffffff,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
lea    0x14(%rsp),%rcx
xorps  %xmm1,%xmm1
mov    %ebp,%edi
xor    %esi,%esi
xor    %edx,%edx
mov    %r14,%r8
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
mov    0x8(%rsp),%eax
add    $0xffffffff,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  0x14(%rsp),%xmm1
movss  0xc(%rsp),%xmm2
subss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x10(%rsp),%xmm1
subss  %xmm2,%xmm1
mulss  %xmm0,%xmm1
movss  %xmm1,(%rbx)
add    $0x1f8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x24(%rsp),%rax
mov    %rax,(%rsp)
lea    0x14(%rsp),%rsi
lea    0x8(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x2c(%rsp),%r8
lea    0x28(%rsp),%r9
mov    %ebp,%edi
call   1040 <vis5d_get_sizePRIME@plt>
mov    0x14(%rsp),%eax
add    $0xffffffff,%eax
xorps  %xmm0,%xmm0
movss  %xmm0,0x18(%rsp)
test   %r14d,%r14d
je     128d <get_row_from_lat+0x14d>
mov    0x8(%rsp),%ecx
add    $0xffffffff,%ecx
xorps  %xmm0,%xmm0
cvtsi2ss %ecx,%xmm0
movss  %xmm0,0x18(%rsp)
cvtsi2ss %eax,%xmm3
movss  0xd67(%rip),%xmm0
movss  %xmm0,0x1c(%rsp)
lea    0xc(%rsp),%r14
lea    0x34(%rsp),%r15
xorps  %xmm0,%xmm0
jmp    12d1 <get_row_from_lat+0x191>
xchg   %ax,%ax
cmpltss %xmm1,%xmm2
andps  %xmm2,%xmm3
andnps %xmm6,%xmm2
orps   %xmm2,%xmm3
movss  %xmm4,0x1c(%rsp)
ucomiss 0xd41(%rip),%xmm4
jb     122d <get_row_from_lat+0xed>
movss  %xmm0,0x20(%rsp)
movaps %xmm3,0x50(%rsp)
addss  %xmm0,%xmm3
mulss  0xd1c(%rip),%xmm3
movss  %xmm3,(%rbx)
mov    %ebp,%edi
xor    %esi,%esi
xor    %edx,%edx
movaps %xmm3,0x40(%rsp)
movaps %xmm3,%xmm0
movss  0x18(%rsp),%xmm1
mov    %r14,%rcx
mov    %r15,%r8
call   1060 <vis5d_rowcolPRIME_to_latlon@plt>
movss  0x10(%rsp),%xmm0
subss  0xc(%rsp),%xmm0
call   1030 <fabs@plt>
movss  0x20(%rsp),%xmm5
movaps 0x50(%rsp),%xmm3
movsd  0xce1(%rip),%xmm1
ucomisd %xmm0,%xmm1
ja     122d <get_row_from_lat+0xed>
movss  0xc(%rsp),%xmm1
movss  0x10(%rsp),%xmm2
ucomiss %xmm2,%xmm1
movss  0x1c(%rsp),%xmm4
addss  0xcb2(%rip),%xmm4
movaps 0x40(%rsp),%xmm6
movaps %xmm6,%xmm0
ja     12b0 <get_row_from_lat+0x170>
movaps %xmm5,%xmm0
jmp    12b0 <get_row_from_lat+0x170>

LLVM IR (-O0):
define void @get_row_from_lat(i32 %0, float %1, i32 %2, float* %3) {
%5 = alloca i32
%6 = alloca float
%7 = alloca i32
%8 = alloca float*
%9 = alloca [100 x float]
%10 = alloca i32
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
store i32 %0, i32* %5
store float %1, float* %6
store i32 %2, i32* %7
store float* %3, float** %8
%36 = load float*, float** %8
store float 0.000000e+00, float* %36
%37 = load i32, i32* %5
%38 = getelementptr inbounds [100 x float], [100 x float]* %9, i64 0, i64 0
%39 = call i32 @vis5d_get_dtx_projection(i32 %37, i32* %10, float* %38)
%40 = load i32, i32* %10
%41 = icmp eq i32 %40, 0
br i1 %41, label %54, label %42
42: ; preds = %4
%43 = load i32, i32* %10
%44 = icmp eq i32 %43, 1
br i1 %44, label %54, label %45
45: ; preds = %42
%46 = load i32, i32* %10
%47 = icmp eq i32 %46, 20
br i1 %47, label %54, label %48
48: ; preds = %45
%49 = load i32, i32* %10
%50 = icmp eq i32 %49, 21
br i1 %50, label %54, label %51
51: ; preds = %48
%52 = load i32, i32* %10
%53 = icmp eq i32 %52, -1
br i1 %53, label %54, label %76
54: ; preds = %51, %48, %45, %42, %4
%55 = load i32, i32* %5
%56 = call i32 @vis5d_get_sizePRIME(i32 %55, i32* %15, i32* %16, i32* %17, i32* %18, i32* %20, i32* %21)
%57 = load i32, i32* %5
%58 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %57, i32 0, i32 0, float 0.000000e+00, float 0.000000e+00, float* %12, float* %14)
%59 = load i32, i32* %5
%60 = load i32, i32* %15
%61 = sub nsw i32 %60, 1
%62 = sitofp i32 %61 to float
%63 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %59, i32 0, i32 0, float %62, float 0.000000e+00, float* %13, float* %14)
%64 = load i32, i32* %15
%65 = sub nsw i32 %64, 1
%66 = sitofp i32 %65 to float
%67 = load float, float* %13
%68 = load float, float* %12
%69 = fsub float %67, %68
%70 = fdiv float %66, %69
%71 = load float, float* %6
%72 = load float, float* %12
%73 = fsub float %71, %72
%74 = fmul float %70, %73
%75 = load float*, float** %8
store float %74, float* %75
br label %132
76: ; preds = %51
%77 = load i32, i32* %5
%78 = call i32 @vis5d_get_sizePRIME(i32 %77, i32* %29, i32* %30, i32* %31, i32* %32, i32* %34, i32* %35)
store float 0.000000e+00, float* %23
%79 = load i32, i32* %29
%80 = sub nsw i32 %79, 1
%81 = sitofp i32 %80 to float
store float %81, float* %24
store float 2.000000e+01, float* %25
store float 0.000000e+00, float* %26
%82 = load i32, i32* %7
%83 = icmp eq i32 %82, 0
br i1 %83, label %84, label %85
84: ; preds = %76
store float 0.000000e+00, float* %28
br label %89
85: ; preds = %76
%86 = load i32, i32* %30
%87 = sub nsw i32 %86, 1
%88 = sitofp i32 %87 to float
store float %88, float* %28
br label %89
89: ; preds = %85, %84
br label %90
90: ; preds = %130, %89
%91 = load float, float* %26
%92 = fcmp une float %91, 0.000000e+00
br i1 %92, label %96, label %93
93: ; preds = %90
%94 = load float, float* %25
%95 = fcmp oge float %94, 0.000000e+00
br label %96
96: ; preds = %93, %90
%97 = phi i1 [ false, %90 ], [ %95, %93 ]
br i1 %97, label %98, label %131
98: ; preds = %96
%99 = load float, float* %23
%100 = load float, float* %24
%101 = fadd float %99, %100
%102 = fpext float %101 to double
%103 = fdiv double %102, 2.000000e+00
%104 = fptrunc double %103 to float
store float %104, float* %27
%105 = load float, float* %27
%106 = load float*, float** %8
store float %105, float* %106
%107 = load i32, i32* %5
%108 = load float, float* %27
%109 = load float, float* %28
%110 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %107, i32 0, i32 0, float %108, float %109, float* %11, float* %14)
%111 = load float, float* %6
%112 = load float, float* %11
%113 = fsub float %111, %112
%114 = call double @fabs(float %113)
%115 = fcmp olt double %114, 1.000000e-03
br i1 %115, label %116, label %117
116: ; preds = %98
store float 1.000000e+00, float* %26
br label %130
117: ; preds = %98
%118 = load float, float* %11
%119 = load float, float* %6
%120 = fcmp ogt float %118, %119
br i1 %120, label %121, label %125
121: ; preds = %117
%122 = load float, float* %25
%123 = fadd float %122, -1.000000e+00
store float %123, float* %25
%124 = load float, float* %27
store float %124, float* %23
br label %129
125: ; preds = %117
%126 = load float, float* %25
%127 = fadd float %126, -1.000000e+00
store float %127, float* %25
%128 = load float, float* %27
store float %128, float* %24
br label %129
129: ; preds = %125, %121
br label %130
130: ; preds = %129, %116
br label %90
131: ; preds = %96
br label %132
132: ; preds = %131, %54
ret void
}

LLVM IR (-O2):
define void @get_row_from_lat(i32 %0, float %1, i32 %2, float* nocapture writeonly %3) {
%5 = alloca [100 x float]
%6 = alloca i32
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = bitcast [100 x float]* %5 to i8*
%24 = bitcast i32* %6 to i8*
%25 = bitcast float* %7 to i8*
%26 = bitcast float* %8 to i8*
%27 = bitcast float* %9 to i8*
%28 = bitcast float* %10 to i8*
store float 0.000000e+00, float* %3
%29 = getelementptr inbounds [100 x float], [100 x float]* %5, i64 0, i64 0
%30 = call i32 @vis5d_get_dtx_projection(i32 %0, i32* %6, float* %29)
%31 = load i32, i32* %6
switch i32 %31, label %54 [
i32 -1, label %32
i32 21, label %32
i32 20, label %32
i32 1, label %32
i32 0, label %32
]
32: ; preds = %4, %4, %4, %4, %4
%33 = bitcast i32* %11 to i8*
%34 = bitcast i32* %12 to i8*
%35 = bitcast i32* %13 to i8*
%36 = bitcast i32* %14 to i8*
%37 = bitcast i32* %15 to i8*
%38 = bitcast i32* %16 to i8*
%39 = call i32 @vis5d_get_sizePRIME(i32 %0, i32* %11, i32* %12, i32* %13, i32* %14, i32* %15, i32* %16)
%40 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %0, i32 0, i32 0, float 0.000000e+00, float 0.000000e+00, float* %8, float* %10)
%41 = load i32, i32* %11
%42 = add nsw i32 %41, -1
%43 = sitofp i32 %42 to float
%44 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %0, i32 0, i32 0, float %43, float 0.000000e+00, float* %9, float* %10)
%45 = load i32, i32* %11
%46 = add nsw i32 %45, -1
%47 = sitofp i32 %46 to float
%48 = load float, float* %9
%49 = load float, float* %8
%50 = fsub float %48, %49
%51 = fdiv float %47, %50
%52 = fsub float %1, %49
%53 = fmul float %52, %51
store float %53, float* %3
br label %89
54: ; preds = %4
%55 = bitcast i32* %17 to i8*
%56 = bitcast i32* %18 to i8*
%57 = bitcast i32* %19 to i8*
%58 = bitcast i32* %20 to i8*
%59 = bitcast i32* %21 to i8*
%60 = bitcast i32* %22 to i8*
%61 = call i32 @vis5d_get_sizePRIME(i32 %0, i32* %17, i32* %18, i32* %19, i32* %20, i32* %21, i32* %22)
%62 = load i32, i32* %17
%63 = add nsw i32 %62, -1
%64 = sitofp i32 %63 to float
%65 = icmp eq i32 %2, 0
%66 = load i32, i32* %18
%67 = add nsw i32 %66, -1
%68 = sitofp i32 %67 to float
%69 = select i1 %65, float 0.000000e+00, float %68
br label %70
70: ; preds = %54, %81
%71 = phi float [ 0.000000e+00, %54 ], [ %86, %81 ]
%72 = phi float [ %64, %54 ], [ %85, %81 ]
%73 = phi float [ 2.000000e+01, %54 ], [ %84, %81 ]
%74 = fadd float %72, %71
%75 = fmul float %74, 5.000000e-01
store float %75, float* %3
%76 = call i32 @vis5d_rowcolPRIME_to_latlon(i32 %0, i32 0, i32 0, float %75, float %69, float* %7, float* %10)
%77 = load float, float* %7
%78 = fsub float %1, %77
%79 = call double @fabs(float %78)
%80 = fcmp olt double %79, 1.000000e-03
br i1 %80, label %88, label %81
81: ; preds = %70
%82 = load float, float* %7
%83 = fcmp ogt float %82, %1
%84 = fadd float %73, -1.000000e+00
%85 = select i1 %83, float %72, float %75
%86 = select i1 %83, float %75, float %71
%87 = fcmp ult float %84, 0.000000e+00
br i1 %87, label %88, label %70
88: ; preds = %70, %81
br label %89
89: ; preds = %88, %32
ret void
}