#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 random();
int /*<<< orphan*/ srand(int /*<<< orphan*/);
int /*<<< orphan*/ time(int /*<<< orphan*/ *);
int cslls(int numg, int prcg, int nums, int diff, int whr, int prcc) {
  srand(time(NULL));
  int slls = 0, x, a;
  if (diff == 1) {
    a = numg * 0.4;
    x = (random() % a);
    slls += ((prcc / prcg) * numg * 0.4);
    slls += x;
    slls += nums * numg * 0.15;
    slls += (1 / whr) * numg * 0.2;
  } else if (diff == 2) {
    a = numg * 0.5;
    x = (random() % a);
    slls += ((prcc / prcg) * numg * 0.3);
    slls += x;
    slls += nums * numg * 0.1;
    slls += (1 / whr) * numg * 0.15;
  } else if (diff == 3) {
    a = numg * 0.6;
    x = (random() % a);
    slls += ((prcc / prcg) * numg * 0.2);
    slls += x;
    slls += nums * numg * 0.05;
    slls += (1 / whr) * numg * 0.1;
  }
  if (slls > numg) {
    slls = numg;
  }
  if (numg > 30) {
    a = (numg - 30);
    x = (random() % a);
    slls -= x * 0.7;
  }
  return slls;
}


x86 assembly (clang, -O0):
<cslls>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   1040 <time@plt>
mov    %eax,%edi
call   1030 <srand@plt>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x1,-0x10(%rbp)
jne    1220 <cslls+0xf0>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  0xebe(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x24(%rbp)
mov    $0x0,%al
call   1050 <random@plt>
cltd
idivl  -0x24(%rbp)
mov    %edx,-0x20(%rbp)
mov    -0x18(%rbp),%eax
cltd
idivl  -0x8(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xe89(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xe41(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x1,%eax
cltd
idivl  -0x14(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xe04(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
jmp    139f <cslls+0x26f>
cmpl   $0x2,-0x10(%rbp)
jne    12dd <cslls+0x1ad>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  0xdf9(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x24(%rbp)
mov    $0x0,%al
call   1050 <random@plt>
cltd
idivl  -0x24(%rbp)
mov    %edx,-0x20(%rbp)
mov    -0x18(%rbp),%eax
cltd
idivl  -0x8(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xdbc(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xd64(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x1,%eax
cltd
idivl  -0x14(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xd57(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
jmp    139a <cslls+0x26a>
cmpl   $0x3,-0x10(%rbp)
jne    1395 <cslls+0x265>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  0xd24(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x24(%rbp)
mov    $0x0,%al
call   1050 <random@plt>
cltd
idivl  -0x24(%rbp)
mov    %edx,-0x20(%rbp)
mov    -0x18(%rbp),%eax
cltd
idivl  -0x8(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xce7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xcaf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    $0x1,%eax
cltd
idivl  -0x14(%rbp)
imul   -0x4(%rbp),%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xc7a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
jmp    139a <cslls+0x26a>
jmp    139f <cslls+0x26f>
mov    -0x1c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jle    13b1 <cslls+0x281>
mov    -0x4(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x1e,-0x4(%rbp)
jle    140a <cslls+0x2da>
mov    -0x4(%rbp),%eax
sub    $0x1e,%eax
mov    %eax,-0x24(%rbp)
mov    $0x0,%al
call   1050 <random@plt>
cltd
idivl  -0x24(%rbp)
mov    %edx,-0x20(%rbp)
cvtsi2sdl -0x20(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xc45(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cslls>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r9d,%r12d
mov    %r8,(%rsp)
mov    %ecx,%r14d
mov    %edx,%r13d
mov    %esi,%r15d
mov    %edi,%ebx
xor    %ebp,%ebp
xor    %edi,%edi
call   1040 <time@plt>
mov    %eax,%edi
call   1030 <srand@plt>
cmp    $0x3,%r14d
je     120d <cslls+0xdd>
cmp    $0x2,%r14d
je     129f <cslls+0x16f>
cmp    $0x1,%r14d
jne    1334 <cslls+0x204>
cvtsi2sd %ebx,%xmm0
mulsd  0xeb1(%rip),%xmm0
cvttsd2si %xmm0,%r14d
xor    %ebp,%ebp
xor    %eax,%eax
call   1050 <random@plt>
cltd
idiv   %r14d
mov    %edx,%ecx
mov    %r12d,%eax
cltd
idiv   %r15d
imul   %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe84(%rip),%xmm0
xorpd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%eax
add    %ecx,%eax
imul   %ebx,%r13d
xorps  %xmm0,%xmm0
cvtsi2sd %r13d,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xe53(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    (%rsp),%rcx
lea    0x1(%rcx),%eax
cmp    $0x3,%eax
cmovb  %ecx,%ebp
imul   %ebx,%ebp
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mulsd  0xe00(%rip),%xmm1
jmp    132c <cslls+0x1fc>
cvtsi2sd %ebx,%xmm0
mulsd  0xde7(%rip),%xmm0
cvttsd2si %xmm0,%r14d
xor    %ebp,%ebp
xor    %eax,%eax
call   1050 <random@plt>
cltd
idiv   %r14d
mov    %edx,%ecx
mov    %r12d,%eax
cltd
idiv   %r15d
imul   %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdc2(%rip),%xmm0
xorpd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%eax
add    %ecx,%eax
imul   %ebx,%r13d
xorps  %xmm0,%xmm0
cvtsi2sd %r13d,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xda1(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    (%rsp),%rcx
lea    0x1(%rcx),%eax
cmp    $0x3,%eax
cmovb  %ecx,%ebp
imul   %ebx,%ebp
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mulsd  0xd7e(%rip),%xmm1
jmp    132c <cslls+0x1fc>
cvtsi2sd %ebx,%xmm0
mulsd  0xd75(%rip),%xmm0
cvttsd2si %xmm0,%r14d
xor    %ebp,%ebp
xor    %eax,%eax
call   1050 <random@plt>
cltd
idiv   %r14d
mov    %edx,%ecx
mov    %r12d,%eax
cltd
idiv   %r15d
imul   %ebx,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd50(%rip),%xmm0
xorpd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%eax
add    %ecx,%eax
imul   %ebx,%r13d
xorps  %xmm0,%xmm0
cvtsi2sd %r13d,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0xd17(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    (%rsp),%rcx
lea    0x1(%rcx),%eax
cmp    $0x3,%eax
cmovb  %ecx,%ebp
imul   %ebx,%ebp
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mulsd  0xd04(%rip),%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%ebp
cmp    %ebx,%ebp
cmovg  %ebx,%ebp
cmp    $0x1f,%ebx
jl     1369 <cslls+0x239>
add    $0xffffffe2,%ebx
xor    %eax,%eax
call   1050 <random@plt>
cltd
idiv   %ebx
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
mulsd  0xcdf(%rip),%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @cslls(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store i32 %4, i32* %11
store i32 %5, i32* %12
%16 = call i32 @time(i32* null)
%17 = call i32 @srand(i32 %16)
store i32 0, i32* %13
%18 = load i32, i32* %10
%19 = icmp eq i32 %18, 1
br i1 %19, label %20, label %58
20: ; preds = %6
%21 = load i32, i32* %7
%22 = sitofp i32 %21 to double
%23 = fmul double %22, 4.000000e-01
%24 = fptosi double %23 to i32
store i32 %24, i32* %15
%25 = call i32 (...) @random()
%26 = load i32, i32* %15
%27 = srem i32 %25, %26
store i32 %27, i32* %14
%28 = load i32, i32* %12
%29 = load i32, i32* %8
%30 = sdiv i32 %28, %29
%31 = load i32, i32* %7
%32 = mul nsw i32 %30, %31
%33 = sitofp i32 %32 to double
%34 = load i32, i32* %13
%35 = sitofp i32 %34 to double
%36 = call double @llvm.fmuladd.f64(double %33, double 4.000000e-01, double %35)
%37 = fptosi double %36 to i32
store i32 %37, i32* %13
%38 = load i32, i32* %14
%39 = load i32, i32* %13
%40 = add nsw i32 %39, %38
store i32 %40, i32* %13
%41 = load i32, i32* %9
%42 = load i32, i32* %7
%43 = mul nsw i32 %41, %42
%44 = sitofp i32 %43 to double
%45 = load i32, i32* %13
%46 = sitofp i32 %45 to double
%47 = call double @llvm.fmuladd.f64(double %44, double 1.500000e-01, double %46)
%48 = fptosi double %47 to i32
store i32 %48, i32* %13
%49 = load i32, i32* %11
%50 = sdiv i32 1, %49
%51 = load i32, i32* %7
%52 = mul nsw i32 %50, %51
%53 = sitofp i32 %52 to double
%54 = load i32, i32* %13
%55 = sitofp i32 %54 to double
%56 = call double @llvm.fmuladd.f64(double %53, double 2.000000e-01, double %55)
%57 = fptosi double %56 to i32
store i32 %57, i32* %13
br label %142
58: ; preds = %6
%59 = load i32, i32* %10
%60 = icmp eq i32 %59, 2
br i1 %60, label %61, label %99
61: ; preds = %58
%62 = load i32, i32* %7
%63 = sitofp i32 %62 to double
%64 = fmul double %63, 5.000000e-01
%65 = fptosi double %64 to i32
store i32 %65, i32* %15
%66 = call i32 (...) @random()
%67 = load i32, i32* %15
%68 = srem i32 %66, %67
store i32 %68, i32* %14
%69 = load i32, i32* %12
%70 = load i32, i32* %8
%71 = sdiv i32 %69, %70
%72 = load i32, i32* %7
%73 = mul nsw i32 %71, %72
%74 = sitofp i32 %73 to double
%75 = load i32, i32* %13
%76 = sitofp i32 %75 to double
%77 = call double @llvm.fmuladd.f64(double %74, double 3.000000e-01, double %76)
%78 = fptosi double %77 to i32
store i32 %78, i32* %13
%79 = load i32, i32* %14
%80 = load i32, i32* %13
%81 = add nsw i32 %80, %79
store i32 %81, i32* %13
%82 = load i32, i32* %9
%83 = load i32, i32* %7
%84 = mul nsw i32 %82, %83
%85 = sitofp i32 %84 to double
%86 = load i32, i32* %13
%87 = sitofp i32 %86 to double
%88 = call double @llvm.fmuladd.f64(double %85, double 1.000000e-01, double %87)
%89 = fptosi double %88 to i32
store i32 %89, i32* %13
%90 = load i32, i32* %11
%91 = sdiv i32 1, %90
%92 = load i32, i32* %7
%93 = mul nsw i32 %91, %92
%94 = sitofp i32 %93 to double
%95 = load i32, i32* %13
%96 = sitofp i32 %95 to double
%97 = call double @llvm.fmuladd.f64(double %94, double 1.500000e-01, double %96)
%98 = fptosi double %97 to i32
store i32 %98, i32* %13
br label %141
99: ; preds = %58
%100 = load i32, i32* %10
%101 = icmp eq i32 %100, 3
br i1 %101, label %102, label %140
102: ; preds = %99
%103 = load i32, i32* %7
%104 = sitofp i32 %103 to double
%105 = fmul double %104, 6.000000e-01
%106 = fptosi double %105 to i32
store i32 %106, i32* %15
%107 = call i32 (...) @random()
%108 = load i32, i32* %15
%109 = srem i32 %107, %108
store i32 %109, i32* %14
%110 = load i32, i32* %12
%111 = load i32, i32* %8
%112 = sdiv i32 %110, %111
%113 = load i32, i32* %7
%114 = mul nsw i32 %112, %113
%115 = sitofp i32 %114 to double
%116 = load i32, i32* %13
%117 = sitofp i32 %116 to double
%118 = call double @llvm.fmuladd.f64(double %115, double 2.000000e-01, double %117)
%119 = fptosi double %118 to i32
store i32 %119, i32* %13
%120 = load i32, i32* %14
%121 = load i32, i32* %13
%122 = add nsw i32 %121, %120
store i32 %122, i32* %13
%123 = load i32, i32* %9
%124 = load i32, i32* %7
%125 = mul nsw i32 %123, %124
%126 = sitofp i32 %125 to double
%127 = load i32, i32* %13
%128 = sitofp i32 %127 to double
%129 = call double @llvm.fmuladd.f64(double %126, double 5.000000e-02, double %128)
%130 = fptosi double %129 to i32
store i32 %130, i32* %13
%131 = load i32, i32* %11
%132 = sdiv i32 1, %131
%133 = load i32, i32* %7
%134 = mul nsw i32 %132, %133
%135 = sitofp i32 %134 to double
%136 = load i32, i32* %13
%137 = sitofp i32 %136 to double
%138 = call double @llvm.fmuladd.f64(double %135, double 1.000000e-01, double %137)
%139 = fptosi double %138 to i32
store i32 %139, i32* %13
br label %140
140: ; preds = %102, %99
br label %141
141: ; preds = %140, %61
br label %142
142: ; preds = %141, %20
%143 = load i32, i32* %13
%144 = load i32, i32* %7
%145 = icmp sgt i32 %143, %144
br i1 %145, label %146, label %148
146: ; preds = %142
%147 = load i32, i32* %7
store i32 %147, i32* %13
br label %148
148: ; preds = %146, %142
%149 = load i32, i32* %7
%150 = icmp sgt i32 %149, 30
br i1 %150, label %151, label %164
151: ; preds = %148
%152 = load i32, i32* %7
%153 = sub nsw i32 %152, 30
store i32 %153, i32* %15
%154 = call i32 (...) @random()
%155 = load i32, i32* %15
%156 = srem i32 %154, %155
store i32 %156, i32* %14
%157 = load i32, i32* %14
%158 = sitofp i32 %157 to double
%159 = load i32, i32* %13
%160 = sitofp i32 %159 to double
%161 = fneg double %158
%162 = call double @llvm.fmuladd.f64(double %161, double 0x3FE6666666666666, double %160)
%163 = fptosi double %162 to i32
store i32 %163, i32* %13
br label %164
164: ; preds = %151, %148
%165 = load i32, i32* %13
ret i32 %165
}

LLVM IR (-O2):
define i32 @cslls(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = tail call i32 @time(i32* null)
%8 = tail call i32 @srand(i32 %7)
switch i32 %3, label %84 [
i32 1, label %9
i32 2, label %34
i32 3, label %59
]
9: ; preds = %6
%10 = sitofp i32 %0 to double
%11 = fmul double %10, 4.000000e-01
%12 = fptosi double %11 to i32
%13 = tail call i32 (...) @random()
%14 = srem i32 %13, %12
%15 = sdiv i32 %5, %1
%16 = mul nsw i32 %15, %0
%17 = sitofp i32 %16 to double
%18 = tail call double @llvm.fmuladd.f64(double %17, double 4.000000e-01, double 0.000000e+00)
%19 = fptosi double %18 to i32
%20 = add nsw i32 %14, %19
%21 = mul nsw i32 %2, %0
%22 = sitofp i32 %21 to double
%23 = sitofp i32 %20 to double
%24 = tail call double @llvm.fmuladd.f64(double %22, double 1.500000e-01, double %23)
%25 = fptosi double %24 to i32
%26 = add i32 %4, 1
%27 = icmp ult i32 %26, 3
%28 = select i1 %27, i32 %4, i32 0
%29 = mul nsw i32 %28, %0
%30 = sitofp i32 %29 to double
%31 = sitofp i32 %25 to double
%32 = tail call double @llvm.fmuladd.f64(double %30, double 2.000000e-01, double %31)
%33 = fptosi double %32 to i32
br label %84
34: ; preds = %6
%35 = sitofp i32 %0 to double
%36 = fmul double %35, 5.000000e-01
%37 = fptosi double %36 to i32
%38 = tail call i32 (...) @random()
%39 = srem i32 %38, %37
%40 = sdiv i32 %5, %1
%41 = mul nsw i32 %40, %0
%42 = sitofp i32 %41 to double
%43 = tail call double @llvm.fmuladd.f64(double %42, double 3.000000e-01, double 0.000000e+00)
%44 = fptosi double %43 to i32
%45 = add nsw i32 %39, %44
%46 = mul nsw i32 %2, %0
%47 = sitofp i32 %46 to double
%48 = sitofp i32 %45 to double
%49 = tail call double @llvm.fmuladd.f64(double %47, double 1.000000e-01, double %48)
%50 = fptosi double %49 to i32
%51 = add i32 %4, 1
%52 = icmp ult i32 %51, 3
%53 = select i1 %52, i32 %4, i32 0
%54 = mul nsw i32 %53, %0
%55 = sitofp i32 %54 to double
%56 = sitofp i32 %50 to double
%57 = tail call double @llvm.fmuladd.f64(double %55, double 1.500000e-01, double %56)
%58 = fptosi double %57 to i32
br label %84
59: ; preds = %6
%60 = sitofp i32 %0 to double
%61 = fmul double %60, 6.000000e-01
%62 = fptosi double %61 to i32
%63 = tail call i32 (...) @random()
%64 = srem i32 %63, %62
%65 = sdiv i32 %5, %1
%66 = mul nsw i32 %65, %0
%67 = sitofp i32 %66 to double
%68 = tail call double @llvm.fmuladd.f64(double %67, double 2.000000e-01, double 0.000000e+00)
%69 = fptosi double %68 to i32
%70 = add nsw i32 %64, %69
%71 = mul nsw i32 %2, %0
%72 = sitofp i32 %71 to double
%73 = sitofp i32 %70 to double
%74 = tail call double @llvm.fmuladd.f64(double %72, double 5.000000e-02, double %73)
%75 = fptosi double %74 to i32
%76 = add i32 %4, 1
%77 = icmp ult i32 %76, 3
%78 = select i1 %77, i32 %4, i32 0
%79 = mul nsw i32 %78, %0
%80 = sitofp i32 %79 to double
%81 = sitofp i32 %75 to double
%82 = tail call double @llvm.fmuladd.f64(double %80, double 1.000000e-01, double %81)
%83 = fptosi double %82 to i32
br label %84
84: ; preds = %6, %34, %59, %9
%85 = phi i32 [ %33, %9 ], [ %58, %34 ], [ %83, %59 ], [ 0, %6 ]
%86 = icmp sgt i32 %85, %0
%87 = select i1 %86, i32 %0, i32 %85
%88 = icmp sgt i32 %0, 30
br i1 %88, label %89, label %98
89: ; preds = %84
%90 = add nsw i32 %0, -30
%91 = tail call i32 (...) @random()
%92 = srem i32 %91, %90
%93 = sitofp i32 %92 to double
%94 = sitofp i32 %87 to double
%95 = fneg double %93
%96 = tail call double @llvm.fmuladd.f64(double %95, double 0x3FE6666666666666, double %94)
%97 = fptosi double %96 to i32
br label %98
98: ; preds = %89, %84
%99 = phi i32 [ %97, %89 ], [ %87, %84 ]
ret i32 %99
}