float median6(float yy, float kaa, float koo, float nee, float vii, float kuu) {
  float array[6];
  float tmp;
  int i, j;
  array[0] = yy;
  array[1] = kaa;
  array[2] = koo;
  array[3] = nee;
  array[4] = vii;
  array[5] = kuu;
  for (j = 0; j < 6 - 1; j++)
    for (i = 0; i < 6 - 1 - j; i++) {
      if (array[i] > array[i + 1]) {
        tmp = array[i];
        array[i] = array[i + 1];
        array[i + 1] = tmp;
      }
    }
  return (array[3]);
}


x86 assembly (clang, -O0):
<median6>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
movss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movl   $0x0,-0x3c(%rbp)
cmpl   $0x5,-0x3c(%rbp)
jge    1206 <median6+0x106>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    $0x5,%ecx
sub    -0x3c(%rbp),%ecx
cmp    %ecx,%eax
jge    11f3 <median6+0xf3>
movslq -0x38(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
mov    -0x38(%rbp),%eax
add    $0x1,%eax
cltq
ucomiss -0x30(%rbp,%rax,4),%xmm0
jbe    11e0 <median6+0xe0>
movslq -0x38(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
cltq
movss  -0x30(%rbp,%rax,4),%xmm0
movslq -0x38(%rbp),%rax
movss  %xmm0,-0x30(%rbp,%rax,4)
movss  -0x34(%rbp),%xmm0
mov    -0x38(%rbp),%eax
add    $0x1,%eax
cltq
movss  %xmm0,-0x30(%rbp,%rax,4)
jmp    11e5 <median6+0xe5>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1176 <median6+0x76>
jmp    11f8 <median6+0xf8>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1165 <median6+0x65>
movss  -0x24(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<median6>:
movaps %xmm1,%xmm6
minss  %xmm0,%xmm6
maxss  %xmm1,%xmm0
movaps %xmm2,%xmm1
minss  %xmm0,%xmm1
maxss  %xmm2,%xmm0
movaps %xmm3,%xmm2
minss  %xmm0,%xmm2
maxss  %xmm3,%xmm0
movaps %xmm4,%xmm3
minss  %xmm0,%xmm3
maxss  %xmm4,%xmm0
minss  %xmm0,%xmm5
movaps %xmm1,%xmm0
minss  %xmm6,%xmm0
maxss  %xmm1,%xmm6
movaps %xmm2,%xmm1
minss  %xmm6,%xmm1
maxss  %xmm1,%xmm0
maxss  %xmm2,%xmm6
movaps %xmm3,%xmm1
minss  %xmm6,%xmm1
maxss  %xmm1,%xmm0
maxss  %xmm3,%xmm6
minss  %xmm6,%xmm5
maxss  %xmm5,%xmm0
ret

LLVM IR (-O0):
define float @median6(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca [6 x float]
%14 = alloca float
%15 = alloca i32
%16 = alloca i32
store float %0, float* %7
store float %1, float* %8
store float %2, float* %9
store float %3, float* %10
store float %4, float* %11
store float %5, float* %12
%17 = load float, float* %7
%18 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 0
store float %17, float* %18
%19 = load float, float* %8
%20 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 1
store float %19, float* %20
%21 = load float, float* %9
%22 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 2
store float %21, float* %22
%23 = load float, float* %10
%24 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 3
store float %23, float* %24
%25 = load float, float* %11
%26 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 4
store float %25, float* %26
%27 = load float, float* %12
%28 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 5
store float %27, float* %28
store i32 0, i32* %16
br label %29
29: ; preds = %72, %6
%30 = load i32, i32* %16
%31 = icmp slt i32 %30, 5
br i1 %31, label %32, label %75
32: ; preds = %29
store i32 0, i32* %15
br label %33
33: ; preds = %68, %32
%34 = load i32, i32* %15
%35 = load i32, i32* %16
%36 = sub nsw i32 5, %35
%37 = icmp slt i32 %34, %36
br i1 %37, label %38, label %71
38: ; preds = %33
%39 = load i32, i32* %15
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %40
%42 = load float, float* %41
%43 = load i32, i32* %15
%44 = add nsw i32 %43, 1
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %45
%47 = load float, float* %46
%48 = fcmp ogt float %42, %47
br i1 %48, label %49, label %67
49: ; preds = %38
%50 = load i32, i32* %15
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %51
%53 = load float, float* %52
store float %53, float* %14
%54 = load i32, i32* %15
%55 = add nsw i32 %54, 1
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %56
%58 = load float, float* %57
%59 = load i32, i32* %15
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %60
store float %58, float* %61
%62 = load float, float* %14
%63 = load i32, i32* %15
%64 = add nsw i32 %63, 1
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 %65
store float %62, float* %66
br label %67
67: ; preds = %49, %38
br label %68
68: ; preds = %67
%69 = load i32, i32* %15
%70 = add nsw i32 %69, 1
store i32 %70, i32* %15
br label %33
71: ; preds = %33
br label %72
72: ; preds = %71
%73 = load i32, i32* %16
%74 = add nsw i32 %73, 1
store i32 %74, i32* %16
br label %29
75: ; preds = %29
%76 = getelementptr inbounds [6 x float], [6 x float]* %13, i64 0, i64 3
%77 = load float, float* %76
ret float %77
}

LLVM IR (-O2):
define float @median6(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = fcmp ogt float %0, %1
%8 = select i1 %7, float %1, float %0
%9 = select i1 %7, float %0, float %1
%10 = fcmp ogt float %9, %2
%11 = select i1 %10, float %2, float %9
%12 = select i1 %10, float %9, float %2
%13 = fcmp ogt float %12, %3
%14 = select i1 %13, float %3, float %12
%15 = select i1 %13, float %12, float %3
%16 = fcmp ogt float %15, %4
%17 = select i1 %16, float %4, float %15
%18 = select i1 %16, float %15, float %4
%19 = fcmp ogt float %18, %5
%20 = select i1 %19, float %5, float %18
%21 = fcmp ogt float %8, %11
%22 = select i1 %21, float %11, float %8
%23 = select i1 %21, float %8, float %11
%24 = fcmp ogt float %23, %14
%25 = select i1 %24, float %14, float %23
%26 = select i1 %24, float %23, float %14
%27 = fcmp ogt float %26, %17
%28 = select i1 %27, float %17, float %26
%29 = select i1 %27, float %26, float %17
%30 = fcmp ogt float %29, %20
%31 = select i1 %30, float %20, float %29
%32 = fcmp ogt float %22, %25
%33 = select i1 %32, float %22, float %25
%34 = fcmp ogt float %33, %28
%35 = select i1 %34, float %33, float %28
%36 = fcmp ogt float %35, %31
%37 = select i1 %36, float %35, float %31
ret float %37
}