#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*/ send_frame(unsigned long *, int, int);
int /*<<< orphan*/ usleep(unsigned int);
void blendPixels(unsigned long int led_strip_colors1[],
                 unsigned long int led_strip_colors2[], unsigned int stepNum,
                 unsigned int delayVal) {
  int i;
  float stepVal[9];
  float pixVal[9];
  float pix1, pix2;
  unsigned long int led_strip_colors[3];
  int j;
  int stepCnt;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      pix1 = (float)((led_strip_colors1[i] >> (8 * j)) & 0xff);
      pixVal[i * 3 + j] = pix1;
      pix2 = (float)((led_strip_colors2[i] >> (8 * j)) & 0xff);
      stepVal[i * 3 + j] = (pix2 - pix1) / (float)stepNum;
    }
  }
  for (stepCnt = 0; stepCnt < stepNum; stepCnt++) {
    for (i = 0; i < 3; i++) {
      led_strip_colors[i] = ((unsigned long int)pixVal[i * 3 + 2] << 16) |
                            ((unsigned long int)pixVal[i * 3 + 1] << 8) |
                            ((unsigned long int)pixVal[i * 3]);
    }
    for (i = 0; i < 9; i++) {
      pixVal[i] = pixVal[i] + stepVal[i];
      if (pixVal[i] > 127.0f)
        pixVal[i] = 127.0f;
      if (pixVal[i] < 0.0f)
        pixVal[i] = 0.0f;
    }
    send_frame(led_strip_colors, 32, 32);
    usleep(delayVal);
  }
}


x86 assembly (clang, -O0):
<blendPixels>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x3,-0x1c(%rbp)
jge    1219 <blendPixels+0xf9>
movl   $0x0,-0x94(%rbp)
cmpl   $0x3,-0x94(%rbp)
jge    1206 <blendPixels+0xe6>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x94(%rbp),%cl
shl    $0x3,%cl
shr    %cl,%rax
movzbl %al,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x74(%rbp),%xmm0
mov    -0x1c(%rbp),%ecx
mov    %ecx,%eax
lea    (%rax,%rax,2),%eax
mov    -0x94(%rbp),%ecx
add    %ecx,%eax
cltq
movss  %xmm0,-0x70(%rbp,%rax,4)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x94(%rbp),%cl
shl    $0x3,%cl
shr    %cl,%rax
movzbl %al,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x78(%rbp),%xmm0
movss  -0x74(%rbp),%xmm1
subss  %xmm1,%xmm0
mov    -0x14(%rbp),%eax
cvtsi2ss %rax,%xmm1
divss  %xmm1,%xmm0
imul   $0x3,-0x1c(%rbp),%eax
add    -0x94(%rbp),%eax
cltq
movss  %xmm0,-0x40(%rbp,%rax,4)
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    1154 <blendPixels+0x34>
jmp    120b <blendPixels+0xeb>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1140 <blendPixels+0x20>
movl   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x14(%rbp),%eax
jae    13a6 <blendPixels+0x286>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x3,-0x1c(%rbp)
jge    12e9 <blendPixels+0x1c9>
mov    -0x1c(%rbp),%ecx
mov    %ecx,%eax
lea    (%rax,%rax,2),%eax
cltq
movss  -0x68(%rbp,%rax,4),%xmm0
movaps %xmm0,%xmm1
cvttss2si %xmm1,%rcx
mov    %rcx,%rsi
sar    $0x3f,%rsi
movss  0xd9a(%rip),%xmm1
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rdx
and    %rsi,%rdx
or     %rdx,%rcx
shl    $0x10,%rcx
movss  -0x70(%rbp,%rax,4),%xmm0
movss  -0x6c(%rbp,%rax,4),%xmm2
movaps %xmm2,%xmm3
cvttss2si %xmm3,%rax
mov    %rax,%rsi
sar    $0x3f,%rsi
subss  %xmm1,%xmm2
cvttss2si %xmm2,%rdx
and    %rsi,%rdx
or     %rdx,%rax
shl    $0x8,%rax
or     %rax,%rcx
movaps %xmm0,%xmm2
cvttss2si %xmm2,%rax
mov    %rax,%rsi
sar    $0x3f,%rsi
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rdx
and    %rsi,%rdx
or     %rdx,%rax
or     %rax,%rcx
movslq -0x1c(%rbp),%rax
mov    %rcx,-0x90(%rbp,%rax,8)
ff
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1239 <blendPixels+0x119>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x9,-0x1c(%rbp)
jge    1377 <blendPixels+0x257>
movslq -0x1c(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
movslq -0x1c(%rbp),%rax
addss  -0x40(%rbp,%rax,4),%xmm0
movslq -0x1c(%rbp),%rax
movss  %xmm0,-0x70(%rbp,%rax,4)
movslq -0x1c(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
movss  0xcd6(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    1345 <blendPixels+0x225>
movslq -0x1c(%rbp),%rax
movss  0xcc1(%rip),%xmm0
movss  %xmm0,-0x70(%rbp,%rax,4)
movslq -0x1c(%rbp),%rax
xorps  %xmm0,%xmm0
ucomiss -0x70(%rbp,%rax,4),%xmm0
jbe    1364 <blendPixels+0x244>
movslq -0x1c(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp,%rax,4)
jmp    1369 <blendPixels+0x249>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12f0 <blendPixels+0x1d0>
lea    -0x90(%rbp),%rdi
mov    $0x20,%edx
mov    %edx,%esi
call   1030 <send_frame@plt>
mov    -0x18(%rbp),%edi
call   1040 <usleep@plt>
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    1223 <blendPixels+0x103>
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<blendPixels>:
push   %rbp
push   %r14
push   %rbx
sub    $0x80,%rsp
test   %edx,%edx
je     1467 <blendPixels+0x347>
mov    %ecx,%ebx
mov    %edx,%ebp
mov    %edx,%eax
cvtsi2ss %rax,%xmm8
mov    (%rdi),%rcx
movzbl %cl,%eax
cvtsi2ss %eax,%xmm4
mov    (%rsi),%rdx
movzbl %dl,%eax
cvtsi2ss %eax,%xmm0
mov    0x8(%rdi),%rax
mov    0x8(%rsi),%r8
subss  %xmm4,%xmm0
divss  %xmm8,%xmm0
movss  %xmm0,0xc(%rsp)
movq   %rcx,%xmm1
pshufd $0x44,%xmm1,%xmm2
psrlq  $0x10,%xmm1
psrlq  $0x8,%xmm2
movsd  %xmm1,%xmm2
movq   %rdx,%xmm3
pshufd $0x44,%xmm3,%xmm1
psrlq  $0x10,%xmm3
psrlq  $0x8,%xmm1
movsd  %xmm3,%xmm1
mov    %rax,%rcx
shr    $0x8,%rcx
mov    %r8,%rdx
movq   %r8,%xmm9
shr    $0x8,%r8
movq   %rax,%xmm0
shr    $0x10,%rax
shr    $0x10,%rdx
movq   0x10(%rdi),%xmm5
pshufd $0x44,%xmm5,%xmm6
movdqa %xmm5,%xmm7
psrlq  $0x10,%xmm7
psrlq  $0x8,%xmm6
movsd  %xmm7,%xmm6
movq   %rax,%xmm7
punpcklqdq %xmm7,%xmm5
movq   %rcx,%xmm7
punpcklqdq %xmm0,%xmm7
movdqa 0xe11(%rip),%xmm0
pand   %xmm0,%xmm7
andpd  %xmm0,%xmm2
packuswb %xmm2,%xmm7
pand   %xmm0,%xmm5
andpd  %xmm0,%xmm6
packuswb %xmm5,%xmm6
cvtdq2ps %xmm6,%xmm3
cvtdq2ps %xmm7,%xmm7
movq   0x10(%rsi),%xmm2
pshufd $0x44,%xmm2,%xmm5
movdqa %xmm2,%xmm6
psrlq  $0x10,%xmm6
psrlq  $0x8,%xmm5
movsd  %xmm6,%xmm5
movq   %rdx,%xmm6
punpcklqdq %xmm6,%xmm2
movq   %r8,%xmm6
punpcklqdq %xmm9,%xmm6
pand   %xmm0,%xmm6
andpd  %xmm0,%xmm1
packuswb %xmm1,%xmm6
pand   %xmm0,%xmm2
andpd  %xmm0,%xmm5
packuswb %xmm2,%xmm5
cvtdq2ps %xmm5,%xmm0
cvtdq2ps %xmm6,%xmm1
subps  %xmm7,%xmm1
subps  %xmm3,%xmm0
shufps $0x0,%xmm8,%xmm8
divps  %xmm8,%xmm0
movaps %xmm0,0x40(%rsp)
divps  %xmm8,%xmm1
movaps %xmm1,0x30(%rsp)
lea    0x10(%rsp),%r14
nopl   0x0(%rax)
movaps %xmm7,%xmm0
unpckhpd %xmm7,%xmm0
cvttss2si %xmm0,%rax
movss  0xd8c(%rip),%xmm1
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rdx
sar    $0x3f,%rdx
and    %rcx,%rdx
or     %rax,%rdx
shl    $0x10,%rdx
movaps %xmm7,%xmm0
shufps $0xff,%xmm7,%xmm0
cvttss2si %xmm0,%rax
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rsi
sar    $0x3f,%rsi
and    %rcx,%rsi
or     %rax,%rsi
shl    $0x8,%rsi
movaps %xmm4,%xmm0
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rax
cvttss2si %xmm4,%rcx
or     %rdx,%rsi
mov    %rcx,%rdx
sar    $0x3f,%rdx
and    %rax,%rdx
or     %rcx,%rdx
or     %rsi,%rdx
movaps %xmm3,%xmm0
shufps $0xff,%xmm3,%xmm0
cvttss2si %xmm0,%rax
mov    %rdx,0x10(%rsp)
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rdx
sar    $0x3f,%rdx
and    %rcx,%rdx
or     %rax,%rdx
movaps %xmm7,%xmm0
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rax
cvttss2si %xmm7,%rcx
shl    $0x10,%rdx
mov    %rcx,%rsi
sar    $0x3f,%rsi
and    %rax,%rsi
or     %rcx,%rsi
shl    $0x8,%rsi
movaps %xmm7,%xmm0
shufps $0x55,%xmm7,%xmm0
cvttss2si %xmm0,%rax
or     %rdx,%rsi
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rdx
sar    $0x3f,%rdx
and    %rcx,%rdx
or     %rax,%rdx
or     %rsi,%rdx
mov    %rdx,0x18(%rsp)
movaps %xmm3,%xmm0
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rax
cvttss2si %xmm3,%rcx
mov    %rcx,%rdx
sar    $0x3f,%rdx
and    %rax,%rdx
or     %rcx,%rdx
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
cvttss2si %xmm0,%rax
shl    $0x10,%rdx
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rsi
sar    $0x3f,%rsi
and    %rcx,%rsi
or     %rax,%rsi
shl    $0x8,%rsi
or     %rdx,%rsi
movaps %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
cvttss2si %xmm0,%rax
subss  %xmm1,%xmm0
cvttss2si %xmm0,%rcx
mov    %rax,%rdx
sar    $0x3f,%rdx
and    %rcx,%rdx
or     %rax,%rdx
or     %rsi,%rdx
mov    %rdx,0x20(%rsp)
addss  0xc(%rsp),%xmm4
movss  0xc2f(%rip),%xmm0
minss  %xmm4,%xmm0
xorps  %xmm1,%xmm1
maxss  %xmm0,%xmm1
movaps %xmm1,0x70(%rsp)
addps  0x40(%rsp),%xmm3
addps  0x30(%rsp),%xmm7
movaps 0xbfa(%rip),%xmm1
movaps %xmm1,%xmm0
minps  %xmm7,%xmm0
minps  %xmm3,%xmm1
pxor   %xmm2,%xmm2
maxps  %xmm1,%xmm2
movaps %xmm2,0x60(%rsp)
xorps  %xmm1,%xmm1
maxps  %xmm0,%xmm1
movaps %xmm1,0x50(%rsp)
mov    %r14,%rdi
mov    $0x20,%esi
mov    $0x20,%edx
call   1030 <send_frame@plt>
mov    %ebx,%edi
call   1040 <usleep@plt>
movaps 0x50(%rsp),%xmm7
movaps 0x60(%rsp),%xmm3
movaps 0x70(%rsp),%xmm4
add    $0xffffffff,%ebp
jne    1280 <blendPixels+0x160>
add    $0x80,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
define void @blendPixels(i64* %0, i64* %1, i32 %2, i32 %3) {
%5 = alloca i64*
%6 = alloca i64*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca [9 x float]
%11 = alloca [9 x float]
%12 = alloca float
%13 = alloca float
%14 = alloca [3 x i64]
%15 = alloca i32
%16 = alloca i32
store i64* %0, i64** %5
store i64* %1, i64** %6
store i32 %2, i32* %7
store i32 %3, i32* %8
store i32 0, i32* %9
br label %17
17: ; preds = %70, %4
%18 = load i32, i32* %9
%19 = icmp slt i32 %18, 3
br i1 %19, label %20, label %73
20: ; preds = %17
store i32 0, i32* %15
br label %21
21: ; preds = %66, %20
%22 = load i32, i32* %15
%23 = icmp slt i32 %22, 3
br i1 %23, label %24, label %69
24: ; preds = %21
%25 = load i64*, i64** %5
%26 = load i32, i32* %9
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i64, i64* %25, i64 %27
%29 = load i64, i64* %28
%30 = load i32, i32* %15
%31 = mul nsw i32 8, %30
%32 = zext i32 %31 to i64
%33 = lshr i64 %29, %32
%34 = and i64 %33, 255
%35 = uitofp i64 %34 to float
store float %35, float* %12
%36 = load float, float* %12
%37 = load i32, i32* %9
%38 = mul nsw i32 %37, 3
%39 = load i32, i32* %15
%40 = add nsw i32 %38, %39
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %41
store float %36, float* %42
%43 = load i64*, i64** %6
%44 = load i32, i32* %9
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i64, i64* %43, i64 %45
%47 = load i64, i64* %46
%48 = load i32, i32* %15
%49 = mul nsw i32 8, %48
%50 = zext i32 %49 to i64
%51 = lshr i64 %47, %50
%52 = and i64 %51, 255
%53 = uitofp i64 %52 to float
store float %53, float* %13
%54 = load float, float* %13
%55 = load float, float* %12
%56 = fsub float %54, %55
%57 = load i32, i32* %7
%58 = uitofp i32 %57 to float
%59 = fdiv float %56, %58
%60 = load i32, i32* %9
%61 = mul nsw i32 %60, 3
%62 = load i32, i32* %15
%63 = add nsw i32 %61, %62
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [9 x float], [9 x float]* %10, i64 0, i64 %64
store float %59, float* %65
br label %66
66: ; preds = %24
%67 = load i32, i32* %15
%68 = add nsw i32 %67, 1
store i32 %68, i32* %15
br label %21
69: ; preds = %21
br label %70
70: ; preds = %69
%71 = load i32, i32* %9
%72 = add nsw i32 %71, 1
store i32 %72, i32* %9
br label %17
73: ; preds = %17
store i32 0, i32* %16
br label %74
74: ; preds = %158, %73
%75 = load i32, i32* %16
%76 = load i32, i32* %7
%77 = icmp ult i32 %75, %76
br i1 %77, label %78, label %161
78: ; preds = %74
store i32 0, i32* %9
br label %79
79: ; preds = %110, %78
%80 = load i32, i32* %9
%81 = icmp slt i32 %80, 3
br i1 %81, label %82, label %113
82: ; preds = %79
%83 = load i32, i32* %9
%84 = mul nsw i32 %83, 3
%85 = add nsw i32 %84, 2
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %86
%88 = load float, float* %87
%89 = fptoui float %88 to i64
%90 = shl i64 %89, 16
%91 = load i32, i32* %9
%92 = mul nsw i32 %91, 3
%93 = add nsw i32 %92, 1
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %94
%96 = load float, float* %95
%97 = fptoui float %96 to i64
%98 = shl i64 %97, 8
%99 = or i64 %90, %98
%100 = load i32, i32* %9
%101 = mul nsw i32 %100, 3
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %102
%104 = load float, float* %103
%105 = fptoui float %104 to i64
%106 = or i64 %99, %105
%107 = load i32, i32* %9
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [3 x i64], [3 x i64]* %14, i64 0, i64 %108
store i64 %106, i64* %109
br label %110
110: ; preds = %82
%111 = load i32, i32* %9
%112 = add nsw i32 %111, 1
store i32 %112, i32* %9
br label %79
113: ; preds = %79
store i32 0, i32* %9
br label %114
114: ; preds = %150, %113
%115 = load i32, i32* %9
%116 = icmp slt i32 %115, 9
br i1 %116, label %117, label %153
117: ; preds = %114
%118 = load i32, i32* %9
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %119
%121 = load float, float* %120
%122 = load i32, i32* %9
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [9 x float], [9 x float]* %10, i64 0, i64 %123
%125 = load float, float* %124
%126 = fadd float %121, %125
%127 = load i32, i32* %9
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %128
store float %126, float* %129
%130 = load i32, i32* %9
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %131
%133 = load float, float* %132
%134 = fcmp ogt float %133, 1.270000e+02
br i1 %134, label %135, label %139
135: ; preds = %117
%136 = load i32, i32* %9
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %137
store float 1.270000e+02, float* %138
br label %139
139: ; preds = %135, %117
%140 = load i32, i32* %9
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %141
%143 = load float, float* %142
%144 = fcmp olt float %143, 0.000000e+00
br i1 %144, label %145, label %149
145: ; preds = %139
%146 = load i32, i32* %9
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds [9 x float], [9 x float]* %11, i64 0, i64 %147
store float 0.000000e+00, float* %148
br label %149
149: ; preds = %145, %139
br label %150
150: ; preds = %149
%151 = load i32, i32* %9
%152 = add nsw i32 %151, 1
store i32 %152, i32* %9
br label %114
153: ; preds = %114
%154 = getelementptr inbounds [3 x i64], [3 x i64]* %14, i64 0, i64 0
%155 = call i32 @send_frame(i64* %154, i32 32, i32 32)
%156 = load i32, i32* %8
%157 = call i32 @usleep(i32 %156)
br label %158
158: ; preds = %153
%159 = load i32, i32* %16
%160 = add nsw i32 %159, 1
store i32 %160, i32* %16
br label %74
161: ; preds = %74
ret void
}

LLVM IR (-O2):
define void @blendPixels(i64* nocapture %0, i64* nocapture %1, i32 %2, i32 %3) {
%5 = alloca [3 x i64]
%6 = bitcast [3 x i64]* %5 to i8*
%7 = uitofp i32 %2 to float
%8 = load i64, i64* %0
%9 = load i64, i64* %1
%10 = and i64 %8, 255
%11 = uitofp i64 %10 to float
%12 = and i64 %9, 255
%13 = uitofp i64 %12 to float
%14 = fsub float %13, %11
%15 = fdiv float %14, %7
%16 = insertelement <2 x i64> poison, i64 %8, i64 0
%17 = shufflevector <2 x i64> %16, <2 x i64> poison, <2 x i32> zeroinitializer
%18 = lshr <2 x i64> %17, <i64 16, i64 8>
%19 = insertelement <2 x i64> poison, i64 %9, i64 0
%20 = shufflevector <2 x i64> %19, <2 x i64> poison, <2 x i32> zeroinitializer
%21 = lshr <2 x i64> %20, <i64 16, i64 8>
%22 = getelementptr inbounds i64, i64* %0, i64 1
%23 = load i64, i64* %22
%24 = getelementptr inbounds i64, i64* %1, i64 1
%25 = load i64, i64* %24
%26 = lshr i64 %23, 8
%27 = lshr i64 %25, 8
%28 = lshr i64 %23, 16
%29 = lshr i64 %25, 16
%30 = getelementptr inbounds i64, i64* %0, i64 2
%31 = load i64, i64* %30
%32 = getelementptr inbounds i64, i64* %1, i64 2
%33 = load i64, i64* %32
%34 = insertelement <2 x i64> poison, i64 %31, i64 0
%35 = shufflevector <2 x i64> %34, <2 x i64> poison, <2 x i32> zeroinitializer
%36 = lshr <2 x i64> %35, <i64 16, i64 8>
%37 = shufflevector <2 x i64> %36, <2 x i64> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%38 = insertelement <8 x i64> %37, i64 %31, i64 2
%39 = insertelement <8 x i64> %38, i64 %28, i64 3
%40 = insertelement <8 x i64> %39, i64 %26, i64 4
%41 = insertelement <8 x i64> %40, i64 %23, i64 5
%42 = shufflevector <2 x i64> %18, <2 x i64> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%43 = shufflevector <8 x i64> %41, <8 x i64> %42, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
%44 = and <8 x i64> %43, <i64 255, i64 255, i64 255, i64 255, i64 255, i64 255, i64 255, i64 255>
%45 = uitofp <8 x i64> %44 to <8 x float>
%46 = insertelement <2 x i64> poison, i64 %33, i64 0
%47 = shufflevector <2 x i64> %46, <2 x i64> poison, <2 x i32> zeroinitializer
%48 = lshr <2 x i64> %47, <i64 16, i64 8>
%49 = shufflevector <2 x i64> %48, <2 x i64> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%50 = insertelement <8 x i64> %49, i64 %33, i64 2
%51 = insertelement <8 x i64> %50, i64 %29, i64 3
%52 = insertelement <8 x i64> %51, i64 %27, i64 4
%53 = insertelement <8 x i64> %52, i64 %25, i64 5
%54 = shufflevector <2 x i64> %21, <2 x i64> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%55 = shufflevector <8 x i64> %53, <8 x i64> %54, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>
%56 = and <8 x i64> %55, <i64 255, i64 255, i64 255, i64 255, i64 255, i64 255, i64 255, i64 255>
%57 = uitofp <8 x i64> %56 to <8 x float>
%58 = fsub <8 x float> %57, %45
%59 = insertelement <8 x float> poison, float %7, i64 0
%60 = shufflevector <8 x float> %59, <8 x float> poison, <8 x i32> zeroinitializer
%61 = fdiv <8 x float> %58, %60
%62 = icmp eq i32 %2, 0
br i1 %62, label %114, label %63
63: ; preds = %4
%64 = getelementptr inbounds [3 x i64], [3 x i64]* %5, i64 0, i64 0
%65 = getelementptr inbounds [3 x i64], [3 x i64]* %5, i64 0, i64 1
%66 = getelementptr inbounds [3 x i64], [3 x i64]* %5, i64 0, i64 2
br label %67
67: ; preds = %63, %67
%68 = phi float [ %11, %63 ], [ %104, %67 ]
%69 = phi i32 [ 0, %63 ], [ %112, %67 ]
%70 = phi <8 x float> [ %45, %63 ], [ %109, %67 ]
%71 = extractelement <8 x float> %70, i64 6
%72 = fptoui float %71 to i64
%73 = shl i64 %72, 16
%74 = extractelement <8 x float> %70, i64 7
%75 = fptoui float %74 to i64
%76 = shl i64 %75, 8
%77 = or i64 %76, %73
%78 = fptoui float %68 to i64
%79 = or i64 %77, %78
store i64 %79, i64* %64
%80 = extractelement <8 x float> %70, i64 3
%81 = fptoui float %80 to i64
%82 = shl i64 %81, 16
%83 = extractelement <8 x float> %70, i64 4
%84 = fptoui float %83 to i64
%85 = shl i64 %84, 8
%86 = or i64 %85, %82
%87 = extractelement <8 x float> %70, i64 5
%88 = fptoui float %87 to i64
%89 = or i64 %86, %88
store i64 %89, i64* %65
%90 = extractelement <8 x float> %70, i64 0
%91 = fptoui float %90 to i64
%92 = shl i64 %91, 16
%93 = extractelement <8 x float> %70, i64 1
%94 = fptoui float %93 to i64
%95 = shl i64 %94, 8
%96 = or i64 %95, %92
%97 = extractelement <8 x float> %70, i64 2
%98 = fptoui float %97 to i64
%99 = or i64 %96, %98
store i64 %99, i64* %66
%100 = fadd float %68, %15
%101 = fcmp ogt float %100, 1.270000e+02
%102 = select i1 %101, float 1.270000e+02, float %100
%103 = fcmp olt float %102, 0.000000e+00
%104 = select i1 %103, float 0.000000e+00, float %102
%105 = fadd <8 x float> %70, %61
%106 = fcmp ogt <8 x float> %105, <float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02>
%107 = select <8 x i1> %106, <8 x float> <float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02, float 1.270000e+02>, <8 x float> %105
%108 = fcmp olt <8 x float> %107, zeroinitializer
%109 = select <8 x i1> %108, <8 x float> zeroinitializer, <8 x float> %107
%110 = call i32 @send_frame(i64* %64, i32 32, i32 32)
%111 = call i32 @usleep(i32 %3)
%112 = add nuw i32 %69, 1
%113 = icmp eq i32 %112, %2
br i1 %113, label %114, label %67
114: ; preds = %67, %4
ret void
}