#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 */
float max(float, float);
float min(float, float);
float nv_rect_intersect(float lx1, float ly1, float lx2, float ly2, float rx1,
                        float ry1, float rx2, float ry2) {
  float ax = lx1;
  float ay = ly1;
  float axl = lx2;
  float ayl = ly2;
  float bx = rx1;
  float by = ry1;
  float bxl = rx2;
  float byl = ry2;
  float area_i = (rx2 - rx1) * (ry2 - ry1);
  float area_j = 0;
  if (ax <= bx && bxl <= axl && ay <= by && byl <= axl) {
    area_j = (lx2 - lx1) * (ly2 - ly1);
    return 1.0f;
  }
  if (ax <= bx && axl >= bx) {
    if (ay <= by && ayl >= by) {
      float sx = bx;
      float sy = by;
      float ex = min(axl, bxl);
      float ey = min(ayl, byl);
      area_j = (ex - sx) * (ey - sy);
    } else if (ay <= byl && ayl >= byl) {
      float sx = bx;
      float sy = max(ay, by);
      float ex = min(axl, bxl);
      float ey = min(ayl, byl);
      area_j = (ex - sx) * (ey - sy);
    }
  } else if (ax >= bx && ax <= bxl) {
    if (by >= ay && by <= ayl) {
      float sx = ax;
      float sy = by;
      float ex = min(bxl, axl);
      float ey = min(byl, ayl);
      area_j = (ex - sx) * (ey - sy);
    } else if (byl >= ay && byl <= ayl) {
      float sx = ax;
      float sy = ay;
      float ex = min(bxl, axl);
      float ey = min(byl, ayl);
      area_j = (ex - sx) * (ey - sy);
    }
  }
  return area_j / area_i;
}


x86 assembly (clang, -O0):
<nv_rect_intersect>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movss  %xmm0,-0x8(%rbp)
movss  %xmm1,-0xc(%rbp)
movss  %xmm2,-0x10(%rbp)
movss  %xmm3,-0x14(%rbp)
movss  %xmm4,-0x18(%rbp)
movss  %xmm5,-0x1c(%rbp)
movss  %xmm6,-0x20(%rbp)
movss  %xmm7,-0x24(%rbp)
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x20(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  -0x24(%rbp),%xmm1
subss  -0x1c(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x28(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1243 <nv_rect_intersect+0x123>
movss  -0x40(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1243 <nv_rect_intersect+0x123>
movss  -0x2c(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1243 <nv_rect_intersect+0x123>
movss  -0x44(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1243 <nv_rect_intersect+0x123>
movss  -0x10(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
movss  -0x14(%rbp),%xmm1
subss  -0xc(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xdc7(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    14c1 <nv_rect_intersect+0x3a1>
movss  -0x28(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1374 <nv_rect_intersect+0x254>
movss  -0x30(%rbp),%xmm0
ucomiss -0x38(%rbp),%xmm0
jb     1374 <nv_rect_intersect+0x254>
movss  -0x2c(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     12e5 <nv_rect_intersect+0x1c5>
movss  -0x34(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jb     12e5 <nv_rect_intersect+0x1c5>
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x30(%rbp),%xmm0
movss  -0x40(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x58(%rbp)
movss  -0x34(%rbp),%xmm0
movss  -0x44(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x5c(%rbp)
movss  -0x58(%rbp),%xmm0
subss  -0x50(%rbp),%xmm0
movss  -0x5c(%rbp),%xmm1
subss  -0x54(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    136f <nv_rect_intersect+0x24f>
movss  -0x2c(%rbp),%xmm1
movss  -0x44(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     136a <nv_rect_intersect+0x24a>
movss  -0x34(%rbp),%xmm0
ucomiss -0x44(%rbp),%xmm0
jb     136a <nv_rect_intersect+0x24a>
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
call   1040 <max@plt>
movss  %xmm0,-0x64(%rbp)
movss  -0x30(%rbp),%xmm0
movss  -0x40(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x68(%rbp)
movss  -0x34(%rbp),%xmm0
movss  -0x44(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x6c(%rbp)
movss  -0x68(%rbp),%xmm0
subss  -0x60(%rbp),%xmm0
movss  -0x6c(%rbp),%xmm1
subss  -0x64(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    136f <nv_rect_intersect+0x24f>
jmp    14b2 <nv_rect_intersect+0x392>
movss  -0x28(%rbp),%xmm0
ucomiss -0x38(%rbp),%xmm0
jb     14ad <nv_rect_intersect+0x38d>
movss  -0x28(%rbp),%xmm1
movss  -0x40(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     14ad <nv_rect_intersect+0x38d>
movss  -0x3c(%rbp),%xmm0
ucomiss -0x2c(%rbp),%xmm0
jb     1416 <nv_rect_intersect+0x2f6>
movss  -0x3c(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1416 <nv_rect_intersect+0x2f6>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x30(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x7c(%rbp)
movss  -0x78(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
movss  -0x7c(%rbp),%xmm1
subss  -0x74(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    14a8 <nv_rect_intersect+0x388>
movss  -0x44(%rbp),%xmm0
ucomiss -0x2c(%rbp),%xmm0
jb     14a3 <nv_rect_intersect+0x383>
movss  -0x44(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     14a3 <nv_rect_intersect+0x383>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x40(%rbp),%xmm0
movss  -0x30(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x34(%rbp),%xmm1
call   1030 <min@plt>
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
subss  -0x80(%rbp),%xmm0
movss  -0x8c(%rbp),%xmm1
ff
subss  -0x84(%rbp),%xmm1
ff
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    14a8 <nv_rect_intersect+0x388>
jmp    14ad <nv_rect_intersect+0x38d>
jmp    14b2 <nv_rect_intersect+0x392>
movss  -0x4c(%rbp),%xmm0
divss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nv_rect_intersect>:
sub    $0x28,%rsp
movaps %xmm1,%xmm8
movaps %xmm0,%xmm9
ucomiss %xmm7,%xmm2
jb     114f <nv_rect_intersect+0x2f>
ucomiss %xmm8,%xmm5
jb     114f <nv_rect_intersect+0x2f>
ucomiss %xmm9,%xmm4
jb     114f <nv_rect_intersect+0x2f>
ucomiss %xmm6,%xmm2
jb     114f <nv_rect_intersect+0x2f>
movss  0xeb6(%rip),%xmm0
add    $0x28,%rsp
ret
movaps %xmm6,%xmm0
subss  %xmm4,%xmm0
movaps %xmm7,%xmm1
subss  %xmm5,%xmm1
mulss  %xmm0,%xmm1
ucomiss %xmm9,%xmm4
jb     11a0 <nv_rect_intersect+0x80>
ucomiss %xmm4,%xmm2
jb     11a0 <nv_rect_intersect+0x80>
ucomiss %xmm8,%xmm5
jb     11ed <nv_rect_intersect+0xcd>
ucomiss %xmm5,%xmm3
jb     11ed <nv_rect_intersect+0xcd>
movaps %xmm2,%xmm0
movss  %xmm1,0x20(%rsp)
movaps %xmm6,%xmm1
movss  %xmm7,0x1c(%rsp)
movss  %xmm3,0x18(%rsp)
movss  %xmm5,0x10(%rsp)
movss  %xmm4,0x14(%rsp)
jmp    1245 <nv_rect_intersect+0x125>
ucomiss %xmm4,%xmm9
xorps  %xmm0,%xmm0
jb     12c7 <nv_rect_intersect+0x1a7>
ucomiss %xmm9,%xmm6
jb     12c7 <nv_rect_intersect+0x1a7>
ucomiss %xmm8,%xmm5
jb     125e <nv_rect_intersect+0x13e>
ucomiss %xmm5,%xmm3
jb     125e <nv_rect_intersect+0x13e>
movaps %xmm6,%xmm0
movss  %xmm1,0x20(%rsp)
movaps %xmm2,%xmm1
movss  %xmm7,0x1c(%rsp)
movss  %xmm3,0x18(%rsp)
movss  %xmm5,0x10(%rsp)
jmp    1288 <nv_rect_intersect+0x168>
ucomiss %xmm8,%xmm7
xorps  %xmm0,%xmm0
jb     12c7 <nv_rect_intersect+0x1a7>
ucomiss %xmm7,%xmm3
jb     12c7 <nv_rect_intersect+0x1a7>
movaps %xmm8,%xmm0
movss  %xmm1,0x20(%rsp)
movaps %xmm5,%xmm1
movss  %xmm7,0x1c(%rsp)
movss  %xmm3,0x18(%rsp)
movss  %xmm6,0xc(%rsp)
movss  %xmm2,0x24(%rsp)
movss  %xmm4,0x14(%rsp)
call   1040 <max@plt>
movss  %xmm0,0x10(%rsp)
movss  0x24(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1030 <min@plt>
movss  %xmm0,0xc(%rsp)
movss  0x18(%rsp),%xmm0
movss  0x1c(%rsp),%xmm1
jmp    12a6 <nv_rect_intersect+0x186>
ucomiss %xmm8,%xmm7
jb     12c7 <nv_rect_intersect+0x1a7>
ucomiss %xmm7,%xmm3
jb     12c7 <nv_rect_intersect+0x1a7>
movaps %xmm6,%xmm0
movss  %xmm1,0x20(%rsp)
movaps %xmm2,%xmm1
movss  %xmm7,0x1c(%rsp)
movss  %xmm3,0x18(%rsp)
movss  %xmm8,0x10(%rsp)
movss  %xmm9,0x14(%rsp)
call   1030 <min@plt>
movss  %xmm0,0xc(%rsp)
movss  0x1c(%rsp),%xmm0
movss  0x18(%rsp),%xmm1
call   1030 <min@plt>
movss  0x20(%rsp),%xmm1
movss  0xc(%rsp),%xmm2
subss  0x14(%rsp),%xmm2
subss  0x10(%rsp),%xmm0
mulss  %xmm2,%xmm0
divss  %xmm1,%xmm0
add    $0x28,%rsp
ret

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

LLVM IR (-O2):
define float @nv_rect_intersect(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7) {
%9 = fsub float %6, %4
%10 = fsub float %7, %5
%11 = fmul float %9, %10
%12 = fcmp ugt float %0, %4
%13 = fcmp ugt float %6, %2
%14 = or i1 %12, %13
%15 = fcmp ugt float %1, %5
%16 = or i1 %15, %14
%17 = fcmp ugt float %7, %2
%18 = or i1 %17, %16
br i1 %18, label %19, label %68
19: ; preds = %8
%20 = fcmp ult float %2, %4
%21 = or i1 %12, %20
br i1 %21, label %42, label %22
22: ; preds = %19
%23 = fcmp ult float %3, %5
%24 = or i1 %15, %23
br i1 %24, label %31, label %25
25: ; preds = %22
%26 = tail call float @min(float %2, float %6)
%27 = tail call float @min(float %3, float %7)
%28 = fsub float %26, %4
%29 = fsub float %27, %5
%30 = fmul float %28, %29
br label %65
31: ; preds = %22
%32 = fcmp ugt float %1, %7
%33 = fcmp ult float %3, %7
%34 = or i1 %32, %33
br i1 %34, label %65, label %35
35: ; preds = %31
%36 = tail call float @max(float %1, float %5)
%37 = tail call float @min(float %2, float %6)
%38 = tail call float @min(float %3, float %7)
%39 = fsub float %37, %4
%40 = fsub float %38, %36
%41 = fmul float %39, %40
br label %65
42: ; preds = %19
%43 = fcmp ult float %0, %4
%44 = fcmp ugt float %0, %6
%45 = or i1 %43, %44
br i1 %45, label %65, label %46
46: ; preds = %42
%47 = fcmp ugt float %5, %3
%48 = or i1 %15, %47
br i1 %48, label %55, label %49
49: ; preds = %46
%50 = tail call float @min(float %6, float %2)
%51 = tail call float @min(float %7, float %3)
%52 = fsub float %50, %0
%53 = fsub float %51, %5
%54 = fmul float %52, %53
br label %65
55: ; preds = %46
%56 = fcmp ult float %7, %1
%57 = fcmp ugt float %7, %3
%58 = or i1 %56, %57
br i1 %58, label %65, label %59
59: ; preds = %55
%60 = tail call float @min(float %6, float %2)
%61 = tail call float @min(float %7, float %3)
%62 = fsub float %60, %0
%63 = fsub float %61, %1
%64 = fmul float %62, %63
br label %65
65: ; preds = %42, %55, %59, %49, %25, %35, %31
%66 = phi float [ %30, %25 ], [ %41, %35 ], [ 0.000000e+00, %31 ], [ %54, %49 ], [ %64, %59 ], [ 0.000000e+00, %55 ], [ 0.000000e+00, %42 ]
%67 = fdiv float %66, %11
br label %68
68: ; preds = %8, %65
%69 = phi float [ %67, %65 ], [ 1.000000e+00, %8 ]
ret float %69
}