#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 */
struct csx_surf64 {
  int dummy;
};

/* Variables and functions */
int /*<<< orphan*/ store_to_q0(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q1(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q2(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q3(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q4(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q5(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q6(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q7(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q8(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_q9(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qA(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qB(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qC(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qD(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qE(struct csx_surf64 *, int const, int const,
                               float const, float const);
int /*<<< orphan*/ store_to_qF(struct csx_surf64 *, int const, int const,
                               float const, float const);
__attribute__((visibility("hidden"))) void
store_dxdy(struct csx_surf64 *d, const int lx, const int ly, const float dx,
           const float dy) {
  if (lx < -3) {
    if (ly < -3)
      store_to_q0(d, lx, ly, dx, dy);
    if (ly >= -7 && ly < 2)
      store_to_q1(d, lx, ly, dx, dy);
    if (ly >= -2 && ly < 7)
      store_to_q2(d, lx, ly, dx, dy);
    if (ly >= 3)
      store_to_q3(d, lx, ly, dx, dy);
  }
  if (lx >= -7 && lx < 2) {
    if (ly < -3)
      store_to_q4(d, lx, ly, dx, dy);
    if (ly >= -7 && ly < 2)
      store_to_q5(d, lx, ly, dx, dy);
    if (ly >= -2 && ly < 7)
      store_to_q6(d, lx, ly, dx, dy);
    if (ly >= 3)
      store_to_q7(d, lx, ly, dx, dy);
  }
  if (lx >= -2 && lx < 7) {
    if (ly < -3)
      store_to_q8(d, lx, ly, dx, dy);
    if (ly >= -7 && ly < 2)
      store_to_q9(d, lx, ly, dx, dy);
    if (ly >= -2 && ly < 7)
      store_to_qA(d, lx, ly, dx, dy);
    if (ly >= 3)
      store_to_qB(d, lx, ly, dx, dy);
  }
  if (lx >= 3) {
    if (ly < -3)
      store_to_qC(d, lx, ly, dx, dy);
    if (ly >= -7 && ly < 2)
      store_to_qD(d, lx, ly, dx, dy);
    if (ly >= -2 && ly < 7)
      store_to_qE(d, lx, ly, dx, dy);
    if (ly >= 3)
      store_to_qF(d, lx, ly, dx, dy);
  }
}


x86 assembly (clang, -O0):
<store_dxdy>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movss  %xmm0,-0x14(%rbp)
movss  %xmm1,-0x18(%rbp)
cmpl   $0xfffffffd,-0xc(%rbp)
jge    12cb <store_dxdy+0xcb>
cmpl   $0xfffffffd,-0x10(%rbp)
jge    1249 <store_dxdy+0x49>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1090 <store_to_q0@plt>
cmpl   $0xfffffff9,-0x10(%rbp)
jl     1276 <store_dxdy+0x76>
cmpl   $0x2,-0x10(%rbp)
jge    1276 <store_dxdy+0x76>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1120 <store_to_q1@plt>
cmpl   $0xfffffffe,-0x10(%rbp)
jl     12a3 <store_dxdy+0xa3>
cmpl   $0x7,-0x10(%rbp)
jge    12a3 <store_dxdy+0xa3>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1080 <store_to_q2@plt>
cmpl   $0x3,-0x10(%rbp)
jl     12c6 <store_dxdy+0xc6>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1100 <store_to_q3@plt>
jmp    12cb <store_dxdy+0xcb>
cmpl   $0xfffffff9,-0xc(%rbp)
jl     1384 <store_dxdy+0x184>
cmpl   $0x2,-0xc(%rbp)
jge    1384 <store_dxdy+0x184>
cmpl   $0xfffffffd,-0x10(%rbp)
jge    1302 <store_dxdy+0x102>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1060 <store_to_q4@plt>
cmpl   $0xfffffff9,-0x10(%rbp)
jl     132f <store_dxdy+0x12f>
cmpl   $0x2,-0x10(%rbp)
jge    132f <store_dxdy+0x12f>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10e0 <store_to_q5@plt>
cmpl   $0xfffffffe,-0x10(%rbp)
jl     135c <store_dxdy+0x15c>
cmpl   $0x7,-0x10(%rbp)
jge    135c <store_dxdy+0x15c>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1070 <store_to_q6@plt>
cmpl   $0x3,-0x10(%rbp)
jl     137f <store_dxdy+0x17f>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10f0 <store_to_q7@plt>
jmp    1384 <store_dxdy+0x184>
cmpl   $0xfffffffe,-0xc(%rbp)
jl     143d <store_dxdy+0x23d>
cmpl   $0x7,-0xc(%rbp)
jge    143d <store_dxdy+0x23d>
cmpl   $0xfffffffd,-0x10(%rbp)
jge    13bb <store_dxdy+0x1bb>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10a0 <store_to_q8@plt>
cmpl   $0xfffffff9,-0x10(%rbp)
jl     13e8 <store_dxdy+0x1e8>
cmpl   $0x2,-0x10(%rbp)
jge    13e8 <store_dxdy+0x1e8>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1110 <store_to_q9@plt>
cmpl   $0xfffffffe,-0x10(%rbp)
jl     1415 <store_dxdy+0x215>
cmpl   $0x7,-0x10(%rbp)
jge    1415 <store_dxdy+0x215>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10c0 <store_to_qA@plt>
cmpl   $0x3,-0x10(%rbp)
jl     1438 <store_dxdy+0x238>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1040 <store_to_qB@plt>
jmp    143d <store_dxdy+0x23d>
cmpl   $0x3,-0xc(%rbp)
jl     14ec <store_dxdy+0x2ec>
cmpl   $0xfffffffd,-0x10(%rbp)
jge    146a <store_dxdy+0x26a>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10b0 <store_to_qC@plt>
cmpl   $0xfffffff9,-0x10(%rbp)
jl     1497 <store_dxdy+0x297>
cmpl   $0x2,-0x10(%rbp)
jge    1497 <store_dxdy+0x297>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1050 <store_to_qD@plt>
cmpl   $0xfffffffe,-0x10(%rbp)
jl     14c4 <store_dxdy+0x2c4>
cmpl   $0x7,-0x10(%rbp)
jge    14c4 <store_dxdy+0x2c4>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   10d0 <store_to_qE@plt>
cmpl   $0x3,-0x10(%rbp)
jl     14e7 <store_dxdy+0x2e7>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
movss  -0x14(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
call   1030 <store_to_qF@plt>
jmp    14ec <store_dxdy+0x2ec>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<store_dxdy>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
movss  %xmm1,0xc(%rsp)
movss  %xmm0,0x8(%rsp)
mov    %edx,%ebx
mov    %esi,%r14d
mov    %rdi,%r15
cmp    $0xfffffffc,%esi
jg     12a0 <store_dxdy+0xa0>
cmp    $0xfffffffc,%ebx
jg     1240 <store_dxdy+0x40>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1090 <store_to_q0@plt>
lea    0x7(%rbx),%eax
cmp    $0x8,%eax
ja     1261 <store_dxdy+0x61>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1120 <store_to_q1@plt>
lea    0x2(%rbx),%eax
cmp    $0x8,%eax
ja     1282 <store_dxdy+0x82>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1080 <store_to_q2@plt>
cmp    $0x3,%ebx
jl     12a0 <store_dxdy+0xa0>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1100 <store_to_q3@plt>
lea    0x7(%r14),%eax
cmp    $0x8,%eax
ja     1327 <store_dxdy+0x127>
cmp    $0xfffffffc,%ebx
jg     12c7 <store_dxdy+0xc7>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1060 <store_to_q4@plt>
lea    0x7(%rbx),%eax
cmp    $0x8,%eax
ja     12e8 <store_dxdy+0xe8>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10e0 <store_to_q5@plt>
lea    0x2(%rbx),%eax
cmp    $0x8,%eax
ja     1309 <store_dxdy+0x109>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1070 <store_to_q6@plt>
cmp    $0x3,%ebx
jl     1327 <store_dxdy+0x127>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10f0 <store_to_q7@plt>
lea    0x2(%r14),%eax
cmp    $0x8,%eax
ja     13ae <store_dxdy+0x1ae>
cmp    $0xfffffffc,%ebx
jg     134e <store_dxdy+0x14e>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10a0 <store_to_q8@plt>
lea    0x7(%rbx),%eax
cmp    $0x8,%eax
ja     136f <store_dxdy+0x16f>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1110 <store_to_q9@plt>
lea    0x2(%rbx),%eax
cmp    $0x8,%eax
ja     1390 <store_dxdy+0x190>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10c0 <store_to_qA@plt>
cmp    $0x3,%ebx
jl     13ae <store_dxdy+0x1ae>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1040 <store_to_qB@plt>
cmp    $0x3,%r14d
jl     143f <store_dxdy+0x23f>
cmp    $0xfffffffc,%ebx
jg     13d6 <store_dxdy+0x1d6>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10b0 <store_to_qC@plt>
lea    0x7(%rbx),%eax
cmp    $0x8,%eax
ja     13f7 <store_dxdy+0x1f7>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   1050 <store_to_qD@plt>
lea    0x2(%rbx),%eax
cmp    $0x8,%eax
ja     1418 <store_dxdy+0x218>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
call   10d0 <store_to_qE@plt>
cmp    $0x3,%ebx
jl     143f <store_dxdy+0x23f>
mov    %r15,%rdi
mov    %r14d,%esi
mov    %ebx,%edx
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
jmp    1030 <store_to_qF@plt>
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
%struct.csx_surf64 = type { i32 }
define hidden void @store_dxdy(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4) {
%6 = icmp slt i32 %1, -3
br i1 %6, label %7, label %25
7: ; preds = %5
%8 = icmp slt i32 %2, -3
br i1 %8, label %9, label %11
9: ; preds = %7
%10 = tail call i32 @store_to_q0(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %11
11: ; preds = %9, %7
%12 = add i32 %2, 7
%13 = icmp ult i32 %12, 9
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = tail call i32 @store_to_q1(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %16
16: ; preds = %14, %11
%17 = add i32 %2, 2
%18 = icmp ult i32 %17, 9
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = tail call i32 @store_to_q2(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %21
21: ; preds = %19, %16
%22 = icmp sgt i32 %2, 2
br i1 %22, label %23, label %25
23: ; preds = %21
%24 = tail call i32 @store_to_q3(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %25
25: ; preds = %21, %23, %5
%26 = add i32 %1, 7
%27 = icmp ult i32 %26, 9
br i1 %27, label %28, label %46
28: ; preds = %25
%29 = icmp slt i32 %2, -3
br i1 %29, label %30, label %32
30: ; preds = %28
%31 = tail call i32 @store_to_q4(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %32
32: ; preds = %30, %28
%33 = add i32 %2, 7
%34 = icmp ult i32 %33, 9
br i1 %34, label %35, label %37
35: ; preds = %32
%36 = tail call i32 @store_to_q5(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %37
37: ; preds = %35, %32
%38 = add i32 %2, 2
%39 = icmp ult i32 %38, 9
br i1 %39, label %40, label %42
40: ; preds = %37
%41 = tail call i32 @store_to_q6(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %42
42: ; preds = %40, %37
%43 = icmp sgt i32 %2, 2
br i1 %43, label %44, label %46
44: ; preds = %42
%45 = tail call i32 @store_to_q7(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %46
46: ; preds = %42, %44, %25
%47 = add i32 %1, 2
%48 = icmp ult i32 %47, 9
br i1 %48, label %49, label %67
49: ; preds = %46
%50 = icmp slt i32 %2, -3
br i1 %50, label %51, label %53
51: ; preds = %49
%52 = tail call i32 @store_to_q8(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %53
53: ; preds = %51, %49
%54 = add i32 %2, 7
%55 = icmp ult i32 %54, 9
br i1 %55, label %56, label %58
56: ; preds = %53
%57 = tail call i32 @store_to_q9(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %58
58: ; preds = %56, %53
%59 = add i32 %2, 2
%60 = icmp ult i32 %59, 9
br i1 %60, label %61, label %63
61: ; preds = %58
%62 = tail call i32 @store_to_qA(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %63
63: ; preds = %61, %58
%64 = icmp sgt i32 %2, 2
br i1 %64, label %65, label %67
65: ; preds = %63
%66 = tail call i32 @store_to_qB(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %67
67: ; preds = %63, %65, %46
%68 = icmp sgt i32 %1, 2
br i1 %68, label %69, label %87
69: ; preds = %67
%70 = icmp slt i32 %2, -3
br i1 %70, label %71, label %73
71: ; preds = %69
%72 = tail call i32 @store_to_qC(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %73
73: ; preds = %71, %69
%74 = add i32 %2, 7
%75 = icmp ult i32 %74, 9
br i1 %75, label %76, label %78
76: ; preds = %73
%77 = tail call i32 @store_to_qD(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %78
78: ; preds = %76, %73
%79 = add i32 %2, 2
%80 = icmp ult i32 %79, 9
br i1 %80, label %81, label %83
81: ; preds = %78
%82 = tail call i32 @store_to_qE(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %83
83: ; preds = %81, %78
%84 = icmp sgt i32 %2, 2
br i1 %84, label %85, label %87
85: ; preds = %83
%86 = tail call i32 @store_to_qF(%struct.csx_surf64* %0, i32 %1, i32 %2, float %3, float %4)
br label %87
87: ; preds = %83, %85, %67
ret void
}