unsigned char real_mode(unsigned char mode, unsigned char net_alg,
                        unsigned char flag_eco, unsigned char NetUpEco,
                        unsigned char NetUpLoad, unsigned char UNET,
                        unsigned char Pmax_On) {
  if (mode < 2 || mode > 3)
    return mode;
  if (NetUpEco == 0) {
    if ((NetUpLoad == 1) && (Pmax_On & 2 > 0) && (UNET > 100))
      return 18;
    if (mode == 2) {
      if (UNET > 100) {
        if (net_alg == 2)
          return 10;
        else if (net_alg == 3 && (flag_eco & 2) == 0)
          return 11;
        else if (net_alg == 3 && (flag_eco & 2) > 0)
          return 12;
      } else
        return 2;
    }
  }
  if (NetUpEco == 1) {
    if (mode == 3) {
      if (net_alg == 2 && (flag_eco & 1) > 0)
        return 15;
      else if (net_alg == 2 && (flag_eco & 1) == 0)
        return 13;
      else if (net_alg == 3 && (flag_eco & 2) > 0)
        return 12;
      else if (net_alg == 3 && (flag_eco & 2) == 0)
        return 16;
    }
  }
  if (NetUpEco == 2) {
    if (mode == 3) {
      if (net_alg == 2 && (flag_eco & 1) > 0)
        return 15;
      else if (net_alg == 2 && (flag_eco & 1) == 0)
        return 14;
      else if (net_alg == 3 && (flag_eco & 2) > 0)
        return 12;
      else if (net_alg == 3 && (flag_eco & 2) == 0)
        return 17;
    }
  }
  return mode;
}


x86 assembly (clang, -O0):
<real_mode>:
push   %rbp
mov    %rsp,%rbp
mov    %r8d,-0x18(%rbp)
mov    %ecx,%eax
mov    -0x18(%rbp),%ecx
mov    %eax,-0x14(%rbp)
mov    %edx,%eax
mov    -0x14(%rbp),%edx
mov    %eax,-0x10(%rbp)
mov    %esi,%eax
mov    -0x10(%rbp),%esi
mov    %eax,-0xc(%rbp)
mov    %edi,%r8d
mov    -0xc(%rbp),%edi
mov    %r9b,%al
mov    0x10(%rbp),%r9b
mov    %r8b,-0x2(%rbp)
mov    %dil,-0x3(%rbp)
mov    %sil,-0x4(%rbp)
mov    %dl,-0x5(%rbp)
mov    %cl,-0x6(%rbp)
mov    %al,-0x7(%rbp)
movzbl -0x2(%rbp),%eax
cmp    $0x2,%eax
jl     115c <real_mode+0x5c>
movzbl -0x2(%rbp),%eax
cmp    $0x3,%eax
jle    1167 <real_mode+0x67>
mov    -0x2(%rbp),%al
mov    %al,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jne    1245 <real_mode+0x145>
movzbl -0x6(%rbp),%eax
cmp    $0x1,%eax
jne    11a7 <real_mode+0xa7>
movzbl 0x10(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     11a7 <real_mode+0xa7>
movzbl -0x7(%rbp),%eax
cmp    $0x64,%eax
jle    11a7 <real_mode+0xa7>
movb   $0x12,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x2(%rbp),%eax
cmp    $0x2,%eax
jne    1240 <real_mode+0x140>
movzbl -0x7(%rbp),%eax
cmp    $0x64,%eax
jle    1232 <real_mode+0x132>
movzbl -0x3(%rbp),%eax
cmp    $0x2,%eax
jne    11d7 <real_mode+0xd7>
movb   $0xa,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    11fd <real_mode+0xfd>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jne    11fd <real_mode+0xfd>
movb   $0xb,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    1223 <real_mode+0x123>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jle    1223 <real_mode+0x123>
movb   $0xc,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
jmp    1228 <real_mode+0x128>
jmp    122d <real_mode+0x12d>
jmp    123b <real_mode+0x13b>
movb   $0x2,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
jmp    1240 <real_mode+0x140>
jmp    1245 <real_mode+0x145>
movzbl -0x5(%rbp),%eax
cmp    $0x1,%eax
jne    1310 <real_mode+0x210>
movzbl -0x2(%rbp),%eax
cmp    $0x3,%eax
jne    130b <real_mode+0x20b>
movzbl -0x3(%rbp),%eax
cmp    $0x2,%eax
jne    1285 <real_mode+0x185>
movzbl -0x4(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jle    1285 <real_mode+0x185>
movb   $0xf,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x2,%eax
jne    12ab <real_mode+0x1ab>
movzbl -0x4(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jne    12ab <real_mode+0x1ab>
movb   $0xd,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    12d1 <real_mode+0x1d1>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jle    12d1 <real_mode+0x1d1>
movb   $0xc,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    12f7 <real_mode+0x1f7>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jne    12f7 <real_mode+0x1f7>
movb   $0x10,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
jmp    12fc <real_mode+0x1fc>
jmp    1301 <real_mode+0x201>
jmp    1306 <real_mode+0x206>
jmp    130b <real_mode+0x20b>
jmp    1310 <real_mode+0x210>
movzbl -0x5(%rbp),%eax
cmp    $0x2,%eax
jne    13db <real_mode+0x2db>
movzbl -0x2(%rbp),%eax
cmp    $0x3,%eax
jne    13d6 <real_mode+0x2d6>
movzbl -0x3(%rbp),%eax
cmp    $0x2,%eax
jne    1350 <real_mode+0x250>
movzbl -0x4(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jle    1350 <real_mode+0x250>
movb   $0xf,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x2,%eax
jne    1376 <real_mode+0x276>
movzbl -0x4(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jne    1376 <real_mode+0x276>
movb   $0xe,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    139c <real_mode+0x29c>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jle    139c <real_mode+0x29c>
movb   $0xc,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
movzbl -0x3(%rbp),%eax
cmp    $0x3,%eax
jne    13c2 <real_mode+0x2c2>
movzbl -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
jne    13c2 <real_mode+0x2c2>
movb   $0x11,-0x1(%rbp)
jmp    13e1 <real_mode+0x2e1>
jmp    13c7 <real_mode+0x2c7>
jmp    13cc <real_mode+0x2cc>
jmp    13d1 <real_mode+0x2d1>
jmp    13d6 <real_mode+0x2d6>
jmp    13db <real_mode+0x2db>
mov    -0x2(%rbp),%al
mov    %al,-0x1(%rbp)
movzbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<real_mode>:
mov    %edi,%eax
and    $0xfe,%al
cmp    $0x2,%al
jne    11fb <real_mode+0xfb>
test   %cl,%cl
je     1131 <real_mode+0x31>
cmp    $0x3,%dil
jne    1184 <real_mode+0x84>
cmp    $0x1,%cl
jne    1184 <real_mode+0x84>
test   $0x1,%dl
je     11c6 <real_mode+0xc6>
mov    $0xf,%al
cmp    $0x2,%sil
jne    11c6 <real_mode+0xc6>
ret
cmp    $0x1,%r8b
jne    1148 <real_mode+0x48>
cmp    $0x65,%r9b
jb     1148 <real_mode+0x48>
mov    0x8(%rsp),%cl
mov    $0x12,%al
and    $0x1,%cl
jne    1130 <real_mode+0x30>
cmp    $0x2,%dil
jne    11fb <real_mode+0xfb>
mov    $0x2,%al
cmp    $0x65,%r9b
jb     1130 <real_mode+0x30>
mov    $0xa,%al
cmp    $0x2,%sil
je     1130 <real_mode+0x30>
cmp    $0x3,%sil
jne    1171 <real_mode+0x71>
mov    %edx,%ecx
mov    $0xb,%al
and    $0x2,%cl
je     1130 <real_mode+0x30>
test   $0x2,%dl
je     11fb <real_mode+0xfb>
mov    $0xc,%al
cmp    $0x3,%sil
je     1130 <real_mode+0x30>
jmp    11fb <real_mode+0xfb>
cmp    $0x3,%dil
jne    11fb <real_mode+0xfb>
cmp    $0x2,%cl
jne    11fb <real_mode+0xfb>
test   $0x1,%dl
je     119c <real_mode+0x9c>
mov    $0xf,%al
cmp    $0x2,%sil
je     1130 <real_mode+0x30>
cmp    $0x2,%sil
jne    11ab <real_mode+0xab>
mov    %edx,%ecx
mov    $0xe,%al
and    $0x1,%cl
je     1130 <real_mode+0x30>
test   $0x2,%dl
je     11bc <real_mode+0xbc>
mov    $0xc,%al
cmp    $0x3,%sil
je     1130 <real_mode+0x30>
cmp    $0x3,%sil
jne    11fb <real_mode+0xfb>
mov    $0x11,%al
jmp    11f2 <real_mode+0xf2>
cmp    $0x2,%sil
jne    11d9 <real_mode+0xd9>
mov    %edx,%ecx
mov    $0xd,%al
and    $0x1,%cl
je     1130 <real_mode+0x30>
test   $0x2,%dl
je     11ea <real_mode+0xea>
mov    $0xc,%al
cmp    $0x3,%sil
je     1130 <real_mode+0x30>
cmp    $0x3,%sil
jne    11fb <real_mode+0xfb>
mov    $0x10,%al
and    $0x2,%dl
je     1130 <real_mode+0x30>
mov    %edi,%eax
ret

LLVM IR (-O0):
define zeroext i8 @real_mode(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3, i8 zeroext %4, i8 zeroext %5, i8 zeroext %6) {
%8 = alloca i8
%9 = alloca i8
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
%13 = alloca i8
%14 = alloca i8
%15 = alloca i8
store i8 %0, i8* %9
store i8 %1, i8* %10
store i8 %2, i8* %11
store i8 %3, i8* %12
store i8 %4, i8* %13
store i8 %5, i8* %14
store i8 %6, i8* %15
%16 = load i8, i8* %9
%17 = zext i8 %16 to i32
%18 = icmp slt i32 %17, 2
br i1 %18, label %23, label %19
19: ; preds = %7
%20 = load i8, i8* %9
%21 = zext i8 %20 to i32
%22 = icmp sgt i32 %21, 3
br i1 %22, label %23, label %25
23: ; preds = %19, %7
%24 = load i8, i8* %9
store i8 %24, i8* %8
br label %190
25: ; preds = %19
%26 = load i8, i8* %12
%27 = zext i8 %26 to i32
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %82
29: ; preds = %25
%30 = load i8, i8* %13
%31 = zext i8 %30 to i32
%32 = icmp eq i32 %31, 1
br i1 %32, label %33, label %43
33: ; preds = %29
%34 = load i8, i8* %15
%35 = zext i8 %34 to i32
%36 = and i32 %35, 1
%37 = icmp ne i32 %36, 0
br i1 %37, label %38, label %43
38: ; preds = %33
%39 = load i8, i8* %14
%40 = zext i8 %39 to i32
%41 = icmp sgt i32 %40, 100
br i1 %41, label %42, label %43
42: ; preds = %38
store i8 18, i8* %8
br label %190
43: ; preds = %38, %33, %29
%44 = load i8, i8* %9
%45 = zext i8 %44 to i32
%46 = icmp eq i32 %45, 2
br i1 %46, label %47, label %81
47: ; preds = %43
%48 = load i8, i8* %14
%49 = zext i8 %48 to i32
%50 = icmp sgt i32 %49, 100
br i1 %50, label %51, label %79
51: ; preds = %47
%52 = load i8, i8* %10
%53 = zext i8 %52 to i32
%54 = icmp eq i32 %53, 2
br i1 %54, label %55, label %56
55: ; preds = %51
store i8 10, i8* %8
br label %190
56: ; preds = %51
%57 = load i8, i8* %10
%58 = zext i8 %57 to i32
%59 = icmp eq i32 %58, 3
br i1 %59, label %60, label %66
60: ; preds = %56
%61 = load i8, i8* %11
%62 = zext i8 %61 to i32
%63 = and i32 %62, 2
%64 = icmp eq i32 %63, 0
br i1 %64, label %65, label %66
65: ; preds = %60
store i8 11, i8* %8
br label %190
66: ; preds = %60, %56
%67 = load i8, i8* %10
%68 = zext i8 %67 to i32
%69 = icmp eq i32 %68, 3
br i1 %69, label %70, label %76
70: ; preds = %66
%71 = load i8, i8* %11
%72 = zext i8 %71 to i32
%73 = and i32 %72, 2
%74 = icmp sgt i32 %73, 0
br i1 %74, label %75, label %76
75: ; preds = %70
store i8 12, i8* %8
br label %190
76: ; preds = %70, %66
br label %77
77: ; preds = %76
br label %78
78: ; preds = %77
br label %80
79: ; preds = %47
store i8 2, i8* %8
br label %190
80: ; preds = %78
br label %81
81: ; preds = %80, %43
br label %82
82: ; preds = %81, %25
%83 = load i8, i8* %12
%84 = zext i8 %83 to i32
%85 = icmp eq i32 %84, 1
br i1 %85, label %86, label %135
86: ; preds = %82
%87 = load i8, i8* %9
%88 = zext i8 %87 to i32
%89 = icmp eq i32 %88, 3
br i1 %89, label %90, label %134
90: ; preds = %86
%91 = load i8, i8* %10
%92 = zext i8 %91 to i32
%93 = icmp eq i32 %92, 2
br i1 %93, label %94, label %100
94: ; preds = %90
%95 = load i8, i8* %11
%96 = zext i8 %95 to i32
%97 = and i32 %96, 1
%98 = icmp sgt i32 %97, 0
br i1 %98, label %99, label %100
99: ; preds = %94
store i8 15, i8* %8
br label %190
100: ; preds = %94, %90
%101 = load i8, i8* %10
%102 = zext i8 %101 to i32
%103 = icmp eq i32 %102, 2
br i1 %103, label %104, label %110
104: ; preds = %100
%105 = load i8, i8* %11
%106 = zext i8 %105 to i32
%107 = and i32 %106, 1
%108 = icmp eq i32 %107, 0
br i1 %108, label %109, label %110
109: ; preds = %104
store i8 13, i8* %8
br label %190
110: ; preds = %104, %100
%111 = load i8, i8* %10
%112 = zext i8 %111 to i32
%113 = icmp eq i32 %112, 3
br i1 %113, label %114, label %120
114: ; preds = %110
%115 = load i8, i8* %11
%116 = zext i8 %115 to i32
%117 = and i32 %116, 2
%118 = icmp sgt i32 %117, 0
br i1 %118, label %119, label %120
119: ; preds = %114
store i8 12, i8* %8
br label %190
120: ; preds = %114, %110
%121 = load i8, i8* %10
%122 = zext i8 %121 to i32
%123 = icmp eq i32 %122, 3
br i1 %123, label %124, label %130
124: ; preds = %120
%125 = load i8, i8* %11
%126 = zext i8 %125 to i32
%127 = and i32 %126, 2
%128 = icmp eq i32 %127, 0
br i1 %128, label %129, label %130
129: ; preds = %124
store i8 16, i8* %8
br label %190
130: ; preds = %124, %120
br label %131
131: ; preds = %130
br label %132
132: ; preds = %131
br label %133
133: ; preds = %132
br label %134
134: ; preds = %133, %86
br label %135
135: ; preds = %134, %82
%136 = load i8, i8* %12
%137 = zext i8 %136 to i32
%138 = icmp eq i32 %137, 2
br i1 %138, label %139, label %188
139: ; preds = %135
%140 = load i8, i8* %9
%141 = zext i8 %140 to i32
%142 = icmp eq i32 %141, 3
br i1 %142, label %143, label %187
143: ; preds = %139
%144 = load i8, i8* %10
%145 = zext i8 %144 to i32
%146 = icmp eq i32 %145, 2
br i1 %146, label %147, label %153
147: ; preds = %143
%148 = load i8, i8* %11
%149 = zext i8 %148 to i32
%150 = and i32 %149, 1
%151 = icmp sgt i32 %150, 0
br i1 %151, label %152, label %153
152: ; preds = %147
store i8 15, i8* %8
br label %190
153: ; preds = %147, %143
%154 = load i8, i8* %10
%155 = zext i8 %154 to i32
%156 = icmp eq i32 %155, 2
br i1 %156, label %157, label %163
157: ; preds = %153
%158 = load i8, i8* %11
%159 = zext i8 %158 to i32
%160 = and i32 %159, 1
%161 = icmp eq i32 %160, 0
br i1 %161, label %162, label %163
162: ; preds = %157
store i8 14, i8* %8
br label %190
163: ; preds = %157, %153
%164 = load i8, i8* %10
%165 = zext i8 %164 to i32
%166 = icmp eq i32 %165, 3
br i1 %166, label %167, label %173
167: ; preds = %163
%168 = load i8, i8* %11
%169 = zext i8 %168 to i32
%170 = and i32 %169, 2
%171 = icmp sgt i32 %170, 0
br i1 %171, label %172, label %173
172: ; preds = %167
store i8 12, i8* %8
br label %190
173: ; preds = %167, %163
%174 = load i8, i8* %10
%175 = zext i8 %174 to i32
%176 = icmp eq i32 %175, 3
br i1 %176, label %177, label %183
177: ; preds = %173
%178 = load i8, i8* %11
%179 = zext i8 %178 to i32
%180 = and i32 %179, 2
%181 = icmp eq i32 %180, 0
br i1 %181, label %182, label %183
182: ; preds = %177
store i8 17, i8* %8
br label %190
183: ; preds = %177, %173
br label %184
184: ; preds = %183
br label %185
185: ; preds = %184
br label %186
186: ; preds = %185
br label %187
187: ; preds = %186, %139
br label %188
188: ; preds = %187, %135
%189 = load i8, i8* %9
store i8 %189, i8* %8
br label %190
190: ; preds = %188, %182, %172, %162, %152, %129, %119, %109, %99, %79, %75, %65, %55, %42, %23
%191 = load i8, i8* %8
ret i8 %191
}

LLVM IR (-O2):
define zeroext i8 @real_mode(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2, i8 zeroext %3, i8 zeroext %4, i8 zeroext %5, i8 zeroext %6) {
%8 = and i8 %0, -2
%9 = icmp eq i8 %8, 2
br i1 %9, label %10, label %73
10: ; preds = %7
%11 = icmp eq i8 %3, 0
br i1 %11, label %12, label %33
12: ; preds = %10
%13 = icmp eq i8 %4, 1
br i1 %13, label %14, label %19
14: ; preds = %12
%15 = and i8 %6, 1
%16 = icmp ne i8 %15, 0
%17 = icmp ugt i8 %5, 100
%18 = and i1 %17, %16
br i1 %18, label %73, label %19
19: ; preds = %14, %12
%20 = icmp eq i8 %0, 2
br i1 %20, label %21, label %72
21: ; preds = %19
%22 = icmp ugt i8 %5, 100
br i1 %22, label %23, label %73
23: ; preds = %21
%24 = icmp eq i8 %1, 2
br i1 %24, label %73, label %25
25: ; preds = %23
%26 = icmp eq i8 %1, 3
%27 = and i8 %2, 2
%28 = icmp eq i8 %27, 0
%29 = and i1 %26, %28
br i1 %29, label %73, label %30
30: ; preds = %25
%31 = xor i1 %26, true
%32 = or i1 %28, %31
br i1 %32, label %72, label %73
33: ; preds = %10
%34 = icmp eq i8 %3, 1
%35 = icmp eq i8 %0, 3
%36 = and i1 %35, %34
br i1 %36, label %37, label %53
37: ; preds = %33
%38 = icmp eq i8 %1, 2
%39 = xor i1 %38, true
%40 = and i8 %2, 1
%41 = icmp eq i8 %40, 0
%42 = or i1 %41, %39
br i1 %42, label %43, label %73
43: ; preds = %37
%44 = and i1 %38, %41
br i1 %44, label %73, label %45
45: ; preds = %43
%46 = icmp eq i8 %1, 3
%47 = xor i1 %46, true
%48 = and i8 %2, 2
%49 = icmp eq i8 %48, 0
%50 = or i1 %49, %47
br i1 %50, label %51, label %73
51: ; preds = %45
%52 = and i1 %46, %49
br i1 %52, label %73, label %72
53: ; preds = %33
%54 = icmp eq i8 %3, 2
%55 = and i1 %35, %54
br i1 %55, label %56, label %72
56: ; preds = %53
%57 = icmp eq i8 %1, 2
%58 = xor i1 %57, true
%59 = and i8 %2, 1
%60 = icmp eq i8 %59, 0
%61 = or i1 %60, %58
br i1 %61, label %62, label %73
62: ; preds = %56
%63 = and i1 %57, %60
br i1 %63, label %73, label %64
64: ; preds = %62
%65 = icmp eq i8 %1, 3
%66 = xor i1 %65, true
%67 = and i8 %2, 2
%68 = icmp eq i8 %67, 0
%69 = or i1 %68, %66
br i1 %69, label %70, label %73
70: ; preds = %64
%71 = and i1 %65, %68
br i1 %71, label %73, label %72
72: ; preds = %30, %19, %51, %70, %53
br label %73
73: ; preds = %70, %64, %62, %56, %51, %45, %43, %37, %21, %30, %25, %23, %14, %7, %72
%74 = phi i8 [ %0, %72 ], [ %0, %7 ], [ 18, %14 ], [ 10, %23 ], [ 11, %25 ], [ 12, %30 ], [ 2, %21 ], [ 15, %37 ], [ 13, %43 ], [ 12, %45 ], [ 16, %51 ], [ 15, %56 ], [ 14, %62 ], [ 12, %64 ], [ 17, %70 ]
ret i8 %74
}