#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*/ abort();
int ya_random();
void rotate_1(double *pos, double *v, double *dv, double speed, double max_v) {
  double ppos = *pos;
  if (speed == 0)
    return;
  if (ppos < 0)
    ppos = -(ppos + *v);
  else
    ppos += *v;
  if (ppos > 1.0)
    ppos -= 1.0;
  else if (ppos < 0)
    ppos += 1.0;
  if (ppos < 0)
    abort();
  if (ppos > 1.0)
    abort();
  *pos = (*pos > 0 ? ppos : -ppos);
  *v += *dv;
  if (*v > max_v || *v < -max_v) {
    *dv = -*dv;
  } else if (*v < 0) {
    if (ya_random() % 4) {
      *v = 0;
      if (ya_random() % 2)
        *dv = 0;
      else if (*dv < 0)
        *dv = -*dv;
    } else {
      *v = -*v;
      *dv = -*dv;
      *pos = -*pos;
    }
  }
  if (!(ya_random() % 120))
    *dv = -*dv;
  if (!(ya_random() % 200)) {
    if (*dv == 0)
      *dv = 0.00001;
    else if (ya_random() & 1)
      *dv *= 1.2;
    else
      *dv *= 0.8;
  }
}


x86 assembly (clang, -O0):
<rotate_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movsd  %xmm0,-0x20(%rbp)
movsd  %xmm1,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1168 <rotate_1+0x48>
jp     1168 <rotate_1+0x48>
jmp    1501 <rotate_1+0x3e1>
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    11a4 <rotate_1+0x84>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
addsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    11b6 <rotate_1+0x96>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xe3d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11e8 <rotate_1+0xc8>
movsd  -0x30(%rbp),%xmm0
movsd  0xe26(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    120d <rotate_1+0xed>
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    1208 <rotate_1+0xe8>
movsd  0xe02(%rip),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    120d <rotate_1+0xed>
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    1222 <rotate_1+0x102>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  -0x30(%rbp),%xmm0
movsd  0xdd1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1240 <rotate_1+0x120>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1264 <rotate_1+0x144>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    1285 <rotate_1+0x165>
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x28(%rbp),%xmm0
ja     12e7 <rotate_1+0x1c7>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    1313 <rotate_1+0x1f3>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1430 <rotate_1+0x310>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    142b <rotate_1+0x30b>
mov    $0x0,%al
call   1040 <ya_random@plt>
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     13b1 <rotate_1+0x291>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    $0x0,%al
call   1040 <ya_random@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     136f <rotate_1+0x24f>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    13ac <rotate_1+0x28c>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    13a7 <rotate_1+0x287>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    13ac <rotate_1+0x28c>
jmp    1426 <rotate_1+0x306>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    142b <rotate_1+0x30b>
jmp    1430 <rotate_1+0x310>
mov    $0x0,%al
call   1040 <ya_random@plt>
mov    $0x78,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    146f <rotate_1+0x34f>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    $0x0,%al
call   1040 <ya_random@plt>
mov    $0xc8,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1501 <rotate_1+0x3e1>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14b7 <rotate_1+0x397>
jp     14b7 <rotate_1+0x397>
mov    -0x18(%rbp),%rax
movsd  0xb6a(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    14fc <rotate_1+0x3dc>
mov    $0x0,%al
call   1040 <ya_random@plt>
and    $0x1,%eax
cmp    $0x0,%eax
je     14e3 <rotate_1+0x3c3>
mov    -0x18(%rbp),%rax
movsd  0xb3a(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
jmp    14f7 <rotate_1+0x3d7>
mov    -0x18(%rbp),%rax
movsd  0xb19(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
jmp    14fc <rotate_1+0x3dc>
jmp    1501 <rotate_1+0x3e1>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rotate_1>:
push   %r15
push   %r14
push   %rbx
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jne    1135 <rotate_1+0x15>
jnp    1323 <rotate_1+0x203>
mov    %rdx,%r14
mov    %rsi,%rbx
mov    %rdi,%r15
movsd  (%rdi),%xmm0
movsd  (%rsi),%xmm4
addsd  %xmm0,%xmm4
movapd 0xeae(%rip),%xmm5
xorpd  %xmm4,%xmm5
movapd %xmm0,%xmm2
cmpltsd %xmm3,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm4,%xmm3
andpd  %xmm5,%xmm2
orpd   %xmm3,%xmm2
ucomisd 0xe99(%rip),%xmm2
jbe    1183 <rotate_1+0x63>
movsd  0xe97(%rip),%xmm3
jmp    1195 <rotate_1+0x75>
xorpd  %xmm3,%xmm3
ucomisd %xmm2,%xmm3
jbe    1199 <rotate_1+0x79>
movsd  0xe7b(%rip),%xmm3
addsd  %xmm3,%xmm2
xorpd  %xmm3,%xmm3
ucomisd %xmm2,%xmm3
ja     1329 <rotate_1+0x209>
ucomisd 0xe61(%rip),%xmm2
ja     1329 <rotate_1+0x209>
movapd 0xe43(%rip),%xmm5
movapd %xmm2,%xmm3
xorpd  %xmm5,%xmm3
xorpd  %xmm4,%xmm4
cmpltsd %xmm0,%xmm4
movapd %xmm4,%xmm0
andnpd %xmm3,%xmm0
andpd  %xmm2,%xmm4
orpd   %xmm0,%xmm4
movlpd %xmm4,(%r15)
movsd  (%r14),%xmm0
addsd  (%rbx),%xmm0
movsd  %xmm0,(%rbx)
ucomisd %xmm1,%xmm0
ja     1240 <rotate_1+0x120>
xorpd  %xmm5,%xmm1
ucomisd %xmm0,%xmm1
ja     1240 <rotate_1+0x120>
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jbe    1252 <rotate_1+0x132>
xor    %eax,%eax
call   1040 <ya_random@plt>
test   $0x3,%al
je     12d5 <rotate_1+0x1b5>
movq   $0x0,(%rbx)
xor    %eax,%eax
call   1040 <ya_random@plt>
test   $0x1,%al
jne    130a <rotate_1+0x1ea>
movsd  (%r14),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1245 <rotate_1+0x125>
jmp    1252 <rotate_1+0x132>
movsd  (%r14),%xmm0
xorpd  0xdb3(%rip),%xmm0
movlpd %xmm0,(%r14)
xor    %eax,%eax
call   1040 <ya_random@plt>
imul   $0xeeeeeeef,%eax,%eax
add    $0x8888888,%eax
ror    $0x3,%eax
cmp    $0x2222222,%eax
ja     1280 <rotate_1+0x160>
movsd  (%r14),%xmm0
xorpd  0xd85(%rip),%xmm0
movlpd %xmm0,(%r14)
xor    %eax,%eax
call   1040 <ya_random@plt>
imul   $0xc28f5c29,%eax,%eax
add    $0x51eb850,%eax
ror    $0x3,%eax
cmp    $0x147ae14,%eax
ja     1323 <rotate_1+0x203>
movsd  (%r14),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12bb <rotate_1+0x19b>
jp     12bb <rotate_1+0x19b>
movsd  0xd67(%rip),%xmm0
jmp    131e <rotate_1+0x1fe>
xor    %eax,%eax
call   1040 <ya_random@plt>
movsd  (%r14),%xmm0
test   $0x1,%al
jne    1316 <rotate_1+0x1f6>
mulsd  0xd5d(%rip),%xmm0
jmp    131e <rotate_1+0x1fe>
movsd  (%rbx),%xmm0
movapd 0xd1f(%rip),%xmm1
xorpd  %xmm1,%xmm0
movlpd %xmm0,(%rbx)
movsd  (%r14),%xmm0
xorpd  %xmm1,%xmm0
movlpd %xmm0,(%r14)
movsd  (%r15),%xmm0
xorpd  %xmm1,%xmm0
movlpd %xmm0,(%r15)
jmp    1252 <rotate_1+0x132>
movq   $0x0,(%r14)
jmp    1252 <rotate_1+0x132>
mulsd  0xd0a(%rip),%xmm0
movsd  %xmm0,(%r14)
pop    %rbx
pop    %r14
pop    %r15
ret
xor    %eax,%eax
call   1030 <abort@plt>

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

LLVM IR (-O2):
define void @rotate_1(double* nocapture %0, double* nocapture %1, double* nocapture %2, double %3, double %4) {
%6 = load double, double* %0
%7 = fcmp oeq double %3, 0.000000e+00
br i1 %7, label %92, label %8
8: ; preds = %5
%9 = fcmp olt double %6, 0.000000e+00
%10 = load double, double* %1
%11 = fadd double %6, %10
%12 = fneg double %11
%13 = select i1 %9, double %12, double %11
%14 = fcmp ogt double %13, 1.000000e+00
br i1 %14, label %15, label %17
15: ; preds = %8
%16 = fadd double %13, -1.000000e+00
br label %21
17: ; preds = %8
%18 = fcmp olt double %13, 0.000000e+00
br i1 %18, label %19, label %21
19: ; preds = %17
%20 = fadd double %13, 1.000000e+00
br label %21
21: ; preds = %17, %19, %15
%22 = phi double [ %16, %15 ], [ %20, %19 ], [ %13, %17 ]
%23 = fcmp olt double %22, 0.000000e+00
br i1 %23, label %24, label %26
24: ; preds = %21
%25 = tail call i32 (...) @abort()
unreachable
26: ; preds = %21
%27 = fcmp ogt double %22, 1.000000e+00
br i1 %27, label %28, label %30
28: ; preds = %26
%29 = tail call i32 (...) @abort()
unreachable
30: ; preds = %26
%31 = fcmp ogt double %6, 0.000000e+00
%32 = fneg double %22
%33 = select i1 %31, double %22, double %32
store double %33, double* %0
%34 = load double, double* %2
%35 = load double, double* %1
%36 = fadd double %34, %35
store double %36, double* %1
%37 = fcmp ogt double %36, %4
%38 = fneg double %4
%39 = fcmp olt double %36, %38
%40 = or i1 %37, %39
br i1 %40, label %41, label %44
41: ; preds = %30
%42 = load double, double* %2
%43 = fneg double %42
store double %43, double* %2
br label %67
44: ; preds = %30
%45 = fcmp olt double %36, 0.000000e+00
br i1 %45, label %46, label %67
46: ; preds = %44
%47 = tail call i32 (...) @ya_random()
%48 = and i32 %47, 3
%49 = icmp eq i32 %48, 0
br i1 %49, label %60, label %50
50: ; preds = %46
store double 0.000000e+00, double* %1
%51 = tail call i32 (...) @ya_random()
%52 = and i32 %51, 1
%53 = icmp eq i32 %52, 0
br i1 %53, label %55, label %54
54: ; preds = %50
store double 0.000000e+00, double* %2
br label %67
55: ; preds = %50
%56 = load double, double* %2
%57 = fcmp olt double %56, 0.000000e+00
br i1 %57, label %58, label %67
58: ; preds = %55
%59 = fneg double %56
store double %59, double* %2
br label %67
60: ; preds = %46
%61 = load double, double* %1
%62 = fneg double %61
store double %62, double* %1
%63 = load double, double* %2
%64 = fneg double %63
store double %64, double* %2
%65 = load double, double* %0
%66 = fneg double %65
store double %66, double* %0
br label %67
67: ; preds = %44, %54, %58, %55, %60, %41
%68 = tail call i32 (...) @ya_random()
%69 = srem i32 %68, 120
%70 = icmp eq i32 %69, 0
br i1 %70, label %71, label %74
71: ; preds = %67
%72 = load double, double* %2
%73 = fneg double %72
store double %73, double* %2
br label %74
74: ; preds = %71, %67
%75 = tail call i32 (...) @ya_random()
%76 = srem i32 %75, 200
%77 = icmp eq i32 %76, 0
br i1 %77, label %78, label %92
78: ; preds = %74
%79 = load double, double* %2
%80 = fcmp oeq double %79, 0.000000e+00
br i1 %80, label %90, label %81
81: ; preds = %78
%82 = tail call i32 (...) @ya_random()
%83 = and i32 %82, 1
%84 = icmp eq i32 %83, 0
%85 = load double, double* %2
br i1 %84, label %88, label %86
86: ; preds = %81
%87 = fmul double %85, 1.200000e+00
br label %90
88: ; preds = %81
%89 = fmul double %85, 8.000000e-01
br label %90
90: ; preds = %78, %88, %86
%91 = phi double [ %87, %86 ], [ %89, %88 ], [ 1.000000e-05, %78 ]
store double %91, double* %2
br label %92
92: ; preds = %90, %74, %5
ret void
}