int Cmy2A(int c, int m, int y) {
  int black;
  int maxim;
  int a;
  black =
      (((c) < ((((m) < (y)) ? (m) : (y)))) ? (c) : ((((m) < (y)) ? (m) : (y))));
  c -= black;
  m -= black;
  y -= black;
  if (!c && !m && !y)
    return (0);
  maxim =
      (((c) > ((((m) > (y)) ? (m) : (y)))) ? (c) : ((((m) > (y)) ? (m) : (y))));
  c = (255 * c) / maxim;
  m = (255 * m) / maxim;
  y = (255 * y) / maxim;
  if (c == 255) {
    if (!y)
      a = m;
    else
      a = 1530 - y;
  } else if (m == 255) {
    if (!c)
      a = 510 + y;
    else
      a = 510 - c;
  } else {
    if (!m)
      a = 1020 + c;
    else
      a = 1020 - m;
  }
  return (a);
}


x86 assembly (clang, -O0):
<Cmy2A>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    112a <Cmy2A+0x2a>
mov    -0xc(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    1130 <Cmy2A+0x30>
mov    -0x10(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x24(%rbp),%ecx
cmp    %ecx,%eax
jge    1149 <Cmy2A+0x49>
mov    -0x8(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    116c <Cmy2A+0x6c>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1160 <Cmy2A+0x60>
mov    -0xc(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    1166 <Cmy2A+0x66>
mov    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x8(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    11bd <Cmy2A+0xbd>
cmpl   $0x0,-0xc(%rbp)
jne    11bd <Cmy2A+0xbd>
cmpl   $0x0,-0x10(%rbp)
jne    11bd <Cmy2A+0xbd>
movl   $0x0,-0x4(%rbp)
jmp    12ea <Cmy2A+0x1ea>
mov    -0x8(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    11da <Cmy2A+0xda>
mov    -0xc(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    11e0 <Cmy2A+0xe0>
mov    -0x10(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x34(%rbp),%ecx
cmp    %ecx,%eax
jle    11f9 <Cmy2A+0xf9>
mov    -0x8(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    121c <Cmy2A+0x11c>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    1210 <Cmy2A+0x110>
mov    -0xc(%rbp),%eax
mov    %eax,-0x3c(%rbp)
jmp    1216 <Cmy2A+0x116>
mov    -0x10(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x18(%rbp)
imul   $0xff,-0x8(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,-0x8(%rbp)
imul   $0xff,-0xc(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,-0xc(%rbp)
imul   $0xff,-0x10(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,-0x10(%rbp)
cmpl   $0xff,-0x8(%rbp)
jne    127e <Cmy2A+0x17e>
cmpl   $0x0,-0x10(%rbp)
jne    126e <Cmy2A+0x16e>
mov    -0xc(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1279 <Cmy2A+0x179>
mov    $0x5fa,%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12e4 <Cmy2A+0x1e4>
cmpl   $0xff,-0xc(%rbp)
jne    12b5 <Cmy2A+0x1b5>
cmpl   $0x0,-0x8(%rbp)
jne    12a5 <Cmy2A+0x1a5>
mov    -0x10(%rbp),%eax
add    $0x1fe,%eax
mov    %eax,-0x1c(%rbp)
jmp    12b0 <Cmy2A+0x1b0>
mov    $0x1fe,%eax
sub    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12df <Cmy2A+0x1df>
cmpl   $0x0,-0xc(%rbp)
jne    12cf <Cmy2A+0x1cf>
mov    -0x8(%rbp),%eax
add    $0x3fc,%eax
mov    %eax,-0x1c(%rbp)
jmp    12da <Cmy2A+0x1da>
mov    $0x3fc,%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12df <Cmy2A+0x1df>
jmp    12e4 <Cmy2A+0x1e4>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<Cmy2A>:
mov    %edx,%ecx
cmp    %edx,%esi
mov    %edx,%eax
cmovl  %esi,%eax
cmp    %edi,%eax
cmovg  %edi,%eax
sub    %eax,%esi
sub    %eax,%ecx
sub    %eax,%edi
jne    1121 <Cmy2A+0x21>
test   %esi,%esi
jne    1121 <Cmy2A+0x21>
xor    %eax,%eax
test   %ecx,%ecx
jne    1121 <Cmy2A+0x21>
ret
cmp    %ecx,%esi
mov    %ecx,%r8d
cmovg  %esi,%r8d
cmp    %r8d,%edi
cmovg  %edi,%r8d
mov    %edi,%eax
shl    $0x8,%eax
sub    %edi,%eax
cltd
idiv   %r8d
mov    %eax,%edi
mov    %esi,%eax
shl    $0x8,%eax
sub    %esi,%eax
cltd
idiv   %r8d
mov    %eax,%esi
mov    %ecx,%eax
shl    $0x8,%eax
sub    %ecx,%eax
cltd
idiv   %r8d
mov    %eax,%ecx
cmp    $0xff,%edi
jne    116d <Cmy2A+0x6d>
mov    $0x5fa,%eax
sub    %ecx,%eax
test   %ecx,%ecx
cmove  %esi,%eax
ret
test   %esi,%esi
je     1185 <Cmy2A+0x85>
cmp    $0xff,%esi
jne    118e <Cmy2A+0x8e>
test   %edi,%edi
je     1196 <Cmy2A+0x96>
mov    $0x1fe,%eax
sub    %edi,%eax
ret
add    $0x3fc,%edi
mov    %edi,%eax
ret
mov    $0x3fc,%eax
sub    %esi,%eax
ret
add    $0x1fe,%ecx
mov    %ecx,%eax
ret

LLVM IR (-O0):
define i32 @Cmy2A(i32 %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32 %2, i32* %7
%11 = load i32, i32* %5
%12 = load i32, i32* %6
%13 = load i32, i32* %7
%14 = icmp slt i32 %12, %13
br i1 %14, label %15, label %17
15: ; preds = %3
%16 = load i32, i32* %6
br label %19
17: ; preds = %3
%18 = load i32, i32* %7
br label %19
19: ; preds = %17, %15
%20 = phi i32 [ %16, %15 ], [ %18, %17 ]
%21 = icmp slt i32 %11, %20
br i1 %21, label %22, label %24
22: ; preds = %19
%23 = load i32, i32* %5
br label %34
24: ; preds = %19
%25 = load i32, i32* %6
%26 = load i32, i32* %7
%27 = icmp slt i32 %25, %26
br i1 %27, label %28, label %30
28: ; preds = %24
%29 = load i32, i32* %6
br label %32
30: ; preds = %24
%31 = load i32, i32* %7
br label %32
32: ; preds = %30, %28
%33 = phi i32 [ %29, %28 ], [ %31, %30 ]
br label %34
34: ; preds = %32, %22
%35 = phi i32 [ %23, %22 ], [ %33, %32 ]
store i32 %35, i32* %8
%36 = load i32, i32* %8
%37 = load i32, i32* %5
%38 = sub nsw i32 %37, %36
store i32 %38, i32* %5
%39 = load i32, i32* %8
%40 = load i32, i32* %6
%41 = sub nsw i32 %40, %39
store i32 %41, i32* %6
%42 = load i32, i32* %8
%43 = load i32, i32* %7
%44 = sub nsw i32 %43, %42
store i32 %44, i32* %7
%45 = load i32, i32* %5
%46 = icmp ne i32 %45, 0
br i1 %46, label %54, label %47
47: ; preds = %34
%48 = load i32, i32* %6
%49 = icmp ne i32 %48, 0
br i1 %49, label %54, label %50
50: ; preds = %47
%51 = load i32, i32* %7
%52 = icmp ne i32 %51, 0
br i1 %52, label %54, label %53
53: ; preds = %50
store i32 0, i32* %4
br label %129
54: ; preds = %50, %47, %34
%55 = load i32, i32* %5
%56 = load i32, i32* %6
%57 = load i32, i32* %7
%58 = icmp sgt i32 %56, %57
br i1 %58, label %59, label %61
59: ; preds = %54
%60 = load i32, i32* %6
br label %63
61: ; preds = %54
%62 = load i32, i32* %7
br label %63
63: ; preds = %61, %59
%64 = phi i32 [ %60, %59 ], [ %62, %61 ]
%65 = icmp sgt i32 %55, %64
br i1 %65, label %66, label %68
66: ; preds = %63
%67 = load i32, i32* %5
br label %78
68: ; preds = %63
%69 = load i32, i32* %6
%70 = load i32, i32* %7
%71 = icmp sgt i32 %69, %70
br i1 %71, label %72, label %74
72: ; preds = %68
%73 = load i32, i32* %6
br label %76
74: ; preds = %68
%75 = load i32, i32* %7
br label %76
76: ; preds = %74, %72
%77 = phi i32 [ %73, %72 ], [ %75, %74 ]
br label %78
78: ; preds = %76, %66
%79 = phi i32 [ %67, %66 ], [ %77, %76 ]
store i32 %79, i32* %9
%80 = load i32, i32* %5
%81 = mul nsw i32 255, %80
%82 = load i32, i32* %9
%83 = sdiv i32 %81, %82
store i32 %83, i32* %5
%84 = load i32, i32* %6
%85 = mul nsw i32 255, %84
%86 = load i32, i32* %9
%87 = sdiv i32 %85, %86
store i32 %87, i32* %6
%88 = load i32, i32* %7
%89 = mul nsw i32 255, %88
%90 = load i32, i32* %9
%91 = sdiv i32 %89, %90
store i32 %91, i32* %7
%92 = load i32, i32* %5
%93 = icmp eq i32 %92, 255
br i1 %93, label %94, label %103
94: ; preds = %78
%95 = load i32, i32* %7
%96 = icmp ne i32 %95, 0
br i1 %96, label %99, label %97
97: ; preds = %94
%98 = load i32, i32* %6
store i32 %98, i32* %10
br label %102
99: ; preds = %94
%100 = load i32, i32* %7
%101 = sub nsw i32 1530, %100
store i32 %101, i32* %10
br label %102
102: ; preds = %99, %97
br label %127
103: ; preds = %78
%104 = load i32, i32* %6
%105 = icmp eq i32 %104, 255
br i1 %105, label %106, label %116
106: ; preds = %103
%107 = load i32, i32* %5
%108 = icmp ne i32 %107, 0
br i1 %108, label %112, label %109
109: ; preds = %106
%110 = load i32, i32* %7
%111 = add nsw i32 510, %110
store i32 %111, i32* %10
br label %115
112: ; preds = %106
%113 = load i32, i32* %5
%114 = sub nsw i32 510, %113
store i32 %114, i32* %10
br label %115
115: ; preds = %112, %109
br label %126
116: ; preds = %103
%117 = load i32, i32* %6
%118 = icmp ne i32 %117, 0
br i1 %118, label %122, label %119
119: ; preds = %116
%120 = load i32, i32* %5
%121 = add nsw i32 1020, %120
store i32 %121, i32* %10
br label %125
122: ; preds = %116
%123 = load i32, i32* %6
%124 = sub nsw i32 1020, %123
store i32 %124, i32* %10
br label %125
125: ; preds = %122, %119
br label %126
126: ; preds = %125, %115
br label %127
127: ; preds = %126, %102
%128 = load i32, i32* %10
store i32 %128, i32* %4
br label %129
129: ; preds = %127, %53
%130 = load i32, i32* %4
ret i32 %130
}

LLVM IR (-O2):
define i32 @Cmy2A(i32 %0, i32 %1, i32 %2) {
%4 = icmp slt i32 %1, %2
%5 = select i1 %4, i32 %1, i32 %2
%6 = icmp sgt i32 %5, %0
%7 = select i1 %6, i32 %0, i32 %5
%8 = sub nsw i32 %0, %7
%9 = sub nsw i32 %1, %7
%10 = sub nsw i32 %2, %7
%11 = icmp ne i32 %8, 0
%12 = icmp ne i32 %9, 0
%13 = select i1 %11, i1 true, i1 %12
%14 = icmp ne i32 %10, 0
%15 = select i1 %13, i1 true, i1 %14
br i1 %15, label %16, label %43
16: ; preds = %3
%17 = icmp sgt i32 %9, %10
%18 = select i1 %17, i32 %9, i32 %10
%19 = icmp sgt i32 %8, %18
%20 = select i1 %19, i32 %8, i32 %18
%21 = mul nsw i32 %8, 255
%22 = sdiv i32 %21, %20
%23 = mul nsw i32 %9, 255
%24 = sdiv i32 %23, %20
%25 = mul nsw i32 %10, 255
%26 = sdiv i32 %25, %20
%27 = icmp eq i32 %22, 255
br i1 %27, label %28, label %32
28: ; preds = %16
%29 = icmp eq i32 %26, 0
%30 = sub nsw i32 1530, %26
%31 = select i1 %29, i32 %24, i32 %30
br label %43
32: ; preds = %16
switch i32 %24, label %41 [
i32 255, label %33
i32 0, label %39
]
33: ; preds = %32
%34 = icmp eq i32 %22, 0
br i1 %34, label %35, label %37
35: ; preds = %33
%36 = add nsw i32 %26, 510
br label %43
37: ; preds = %33
%38 = sub nsw i32 510, %22
br label %43
39: ; preds = %32
%40 = add nsw i32 %22, 1020
br label %43
41: ; preds = %32
%42 = sub nsw i32 1020, %24
br label %43
43: ; preds = %28, %39, %41, %35, %37, %3
%44 = phi i32 [ 0, %3 ], [ %38, %37 ], [ %36, %35 ], [ %42, %41 ], [ %40, %39 ], [ %31, %28 ]
ret i32 %44
}