#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*/ assert(int);
int rus_char_to_koi8_byte(int c) {
  assert(((0x410 <= (c) && (c) <= 0x44f) || (c) == 0x401 || (c) == 0x451));
  switch (c) {
  case 0x410:
    return 0xE1;
  case 0x411:
    return 0xE2;
  case 0x412:
    return 0xF7;
  case 0x413:
    return 0xE7;
  case 0x414:
    return 0xE4;
  case 0x415:
    return 0xE5;
  case 0x401:
    return 0xB3;
  case 0x416:
    return 0xF6;
  case 0x417:
    return 0xFA;
  case 0x418:
    return 0xE9;
  case 0x419:
    return 0xEA;
  case 0x41A:
    return 0xEB;
  case 0x41B:
    return 0xEC;
  case 0x41C:
    return 0xED;
  case 0x41D:
    return 0xEE;
  case 0x41E:
    return 0xEF;
  case 0x41F:
    return 0xF0;
  case 0x420:
    return 0xF2;
  case 0x421:
    return 0xF3;
  case 0x422:
    return 0xF4;
  case 0x423:
    return 0xF5;
  case 0x424:
    return 0xE6;
  case 0x425:
    return 0xE8;
  case 0x426:
    return 0xE3;
  case 0x427:
    return 0xFE;
  case 0x428:
    return 0xFB;
  case 0x429:
    return 0xFD;
  case 0x42A:
    return 0xFF;
  case 0x42B:
    return 0xF9;
  case 0x42C:
    return 0xF8;
  case 0x42D:
    return 0xFC;
  case 0x42E:
    return 0xE0;
  case 0x42F:
    return 0xF1;
  case 0x430:
    return 0xC1;
  case 0x431:
    return 0xC2;
  case 0x432:
    return 0xD7;
  case 0x433:
    return 0xC7;
  case 0x434:
    return 0xC4;
  case 0x435:
    return 0xC5;
  case 0x451:
    return 0xA3;
  case 0x436:
    return 0xD6;
  case 0x437:
    return 0xDA;
  case 0x438:
    return 0xC9;
  case 0x439:
    return 0xCA;
  case 0x43a:
    return 0xCB;
  case 0x43b:
    return 0xCC;
  case 0x43c:
    return 0xCD;
  case 0x43d:
    return 0xCE;
  case 0x43e:
    return 0xCF;
  case 0x43f:
    return 0xD0;
  case 0x440:
    return 0xD2;
  case 0x441:
    return 0xD3;
  case 0x442:
    return 0xD4;
  case 0x443:
    return 0xD5;
  case 0x444:
    return 0xC6;
  case 0x445:
    return 0xC8;
  case 0x446:
    return 0xC3;
  case 0x447:
    return 0xDE;
  case 0x448:
    return 0xDB;
  case 0x449:
    return 0xDD;
  case 0x44a:
    return 0xDF;
  case 0x44b:
    return 0xD9;
  case 0x44c:
    return 0xD8;
  case 0x44d:
    return 0xDC;
  case 0x44e:
    return 0xC0;
  case 0x44f:
    return 0xD1;
  }
  return c;
}


x86 assembly (clang, -O0):
<rus_char_to_koi8_byte>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x8(%rbp)
mov    $0x410,%eax
cmp    -0x8(%rbp),%eax
jg     113b <rus_char_to_koi8_byte+0x2b>
mov    $0x1,%al
cmpl   $0x44f,-0x8(%rbp)
mov    %al,-0x9(%rbp)
jle    115a <rus_char_to_koi8_byte+0x4a>
mov    $0x1,%al
cmpl   $0x401,-0x8(%rbp)
mov    %al,-0x9(%rbp)
je     115a <rus_char_to_koi8_byte+0x4a>
cmpl   $0x451,-0x8(%rbp)
sete   %al
mov    %al,-0x9(%rbp)
mov    -0x9(%rbp),%al
movzbl %al,%edi
and    $0x1,%edi
call   1030 <assert@plt>
mov    -0x8(%rbp),%eax
add    $0xfffffbff,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x50,%eax
ja     14ab <rus_char_to_koi8_byte+0x39b>
mov    -0x18(%rbp),%rax
lea    0xe76(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xe1,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe2,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf7,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe7,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe4,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe5,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xb3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf6,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xfa,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe9,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xea,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xeb,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xec,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xed,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xee,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xef,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf0,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf2,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf4,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf5,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe6,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe8,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xfe,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xfb,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xfd,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xff,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf9,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf8,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xfc,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xe0,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xf1,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc1,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc2,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd7,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc7,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc4,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc5,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xa3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd6,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xda,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc9,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xca,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xcb,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xcc,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xcd,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xce,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xcf,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd0,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd2,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd4,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd5,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc6,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc8,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc3,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xde,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xdb,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xdd,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xdf,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd9,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd8,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xdc,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xc0,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
movl   $0xd1,-0x4(%rbp)
jmp    14b1 <rus_char_to_koi8_byte+0x3a1>
mov    -0x8(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rus_char_to_koi8_byte>:
push   %rbx
mov    %edi,%ebx
lea    -0x410(%rbx),%eax
cmp    $0x40,%eax
setb   %al
cmp    $0x401,%edi
sete   %cl
cmp    $0x451,%edi
sete   %dl
or     %cl,%dl
or     %al,%dl
movzbl %dl,%edi
call   1030 <assert@plt>
lea    -0x401(%rbx),%ecx
cmp    $0x50,%ecx
ja     1164 <rus_char_to_koi8_byte+0x54>
mov    $0xe1,%eax
lea    0xeac(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xb3,%eax
pop    %rbx
ret
mov    %ebx,%eax
pop    %rbx
ret
mov    $0xe2,%eax
pop    %rbx
ret
mov    $0xf7,%eax
pop    %rbx
ret
mov    $0xe7,%eax
pop    %rbx
ret
mov    $0xe4,%eax
pop    %rbx
ret
mov    $0xe5,%eax
pop    %rbx
ret
mov    $0xf6,%eax
pop    %rbx
ret
mov    $0xfa,%eax
pop    %rbx
ret
mov    $0xe9,%eax
pop    %rbx
ret
mov    $0xea,%eax
pop    %rbx
ret
mov    $0xeb,%eax
pop    %rbx
ret
mov    $0xec,%eax
pop    %rbx
ret
mov    $0xed,%eax
pop    %rbx
ret
mov    $0xee,%eax
pop    %rbx
ret
mov    $0xef,%eax
pop    %rbx
ret
mov    $0xf0,%eax
pop    %rbx
ret
mov    $0xf2,%eax
pop    %rbx
ret
mov    $0xf3,%eax
pop    %rbx
ret
mov    $0xf4,%eax
pop    %rbx
ret
mov    $0xf5,%eax
pop    %rbx
ret
mov    $0xe6,%eax
pop    %rbx
ret
mov    $0xe8,%eax
pop    %rbx
ret
mov    $0xe3,%eax
pop    %rbx
ret
mov    $0xfe,%eax
pop    %rbx
ret
mov    $0xfb,%eax
pop    %rbx
ret
mov    $0xfd,%eax
pop    %rbx
ret
mov    $0xff,%eax
pop    %rbx
ret
mov    $0xf9,%eax
pop    %rbx
ret
mov    $0xf8,%eax
pop    %rbx
ret
mov    $0xfc,%eax
pop    %rbx
ret
mov    $0xe0,%eax
pop    %rbx
ret
mov    $0xf1,%eax
pop    %rbx
ret
mov    $0xc1,%eax
pop    %rbx
ret
mov    $0xc2,%eax
pop    %rbx
ret
mov    $0xd7,%eax
pop    %rbx
ret
mov    $0xc7,%eax
pop    %rbx
ret
mov    $0xc4,%eax
pop    %rbx
ret
mov    $0xc5,%eax
pop    %rbx
ret
mov    $0xd6,%eax
pop    %rbx
ret
mov    $0xda,%eax
pop    %rbx
ret
mov    $0xc9,%eax
pop    %rbx
ret
mov    $0xca,%eax
pop    %rbx
ret
mov    $0xcb,%eax
pop    %rbx
ret
mov    $0xcc,%eax
pop    %rbx
ret
mov    $0xcd,%eax
pop    %rbx
ret
mov    $0xce,%eax
pop    %rbx
ret
mov    $0xcf,%eax
pop    %rbx
ret
mov    $0xd0,%eax
pop    %rbx
ret
mov    $0xd2,%eax
pop    %rbx
ret
mov    $0xd3,%eax
pop    %rbx
ret
mov    $0xd4,%eax
pop    %rbx
ret
mov    $0xd5,%eax
pop    %rbx
ret
mov    $0xc6,%eax
pop    %rbx
ret
mov    $0xc8,%eax
pop    %rbx
ret
mov    $0xc3,%eax
pop    %rbx
ret
mov    $0xde,%eax
pop    %rbx
ret
mov    $0xdb,%eax
pop    %rbx
ret
mov    $0xdd,%eax
pop    %rbx
ret
mov    $0xdf,%eax
pop    %rbx
ret
mov    $0xd9,%eax
pop    %rbx
ret
mov    $0xd8,%eax
pop    %rbx
ret
mov    $0xdc,%eax
pop    %rbx
ret
mov    $0xc0,%eax
pop    %rbx
ret
mov    $0xd1,%eax
pop    %rbx
ret
mov    $0xa3,%eax
pop    %rbx
ret

LLVM IR (-O0):
define i32 @rus_char_to_koi8_byte(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
%5 = icmp sle i32 1040, %4
br i1 %5, label %6, label %9
6: ; preds = %1
%7 = load i32, i32* %3
%8 = icmp sle i32 %7, 1103
br i1 %8, label %15, label %9
9: ; preds = %6, %1
%10 = load i32, i32* %3
%11 = icmp eq i32 %10, 1025
br i1 %11, label %15, label %12
12: ; preds = %9
%13 = load i32, i32* %3
%14 = icmp eq i32 %13, 1105
br label %15
15: ; preds = %12, %9, %6
%16 = phi i1 [ true, %9 ], [ true, %6 ], [ %14, %12 ]
%17 = zext i1 %16 to i32
%18 = call i32 @assert(i32 %17)
%19 = load i32, i32* %3
switch i32 %19, label %86 [
i32 1040, label %20
i32 1041, label %21
i32 1042, label %22
i32 1043, label %23
i32 1044, label %24
i32 1045, label %25
i32 1025, label %26
i32 1046, label %27
i32 1047, label %28
i32 1048, label %29
i32 1049, label %30
i32 1050, label %31
i32 1051, label %32
i32 1052, label %33
i32 1053, label %34
i32 1054, label %35
i32 1055, label %36
i32 1056, label %37
i32 1057, label %38
i32 1058, label %39
i32 1059, label %40
i32 1060, label %41
i32 1061, label %42
i32 1062, label %43
i32 1063, label %44
i32 1064, label %45
i32 1065, label %46
i32 1066, label %47
i32 1067, label %48
i32 1068, label %49
i32 1069, label %50
i32 1070, label %51
i32 1071, label %52
i32 1072, label %53
i32 1073, label %54
i32 1074, label %55
i32 1075, label %56
i32 1076, label %57
i32 1077, label %58
i32 1105, label %59
i32 1078, label %60
i32 1079, label %61
i32 1080, label %62
i32 1081, label %63
i32 1082, label %64
i32 1083, label %65
i32 1084, label %66
i32 1085, label %67
i32 1086, label %68
i32 1087, label %69
i32 1088, label %70
i32 1089, label %71
i32 1090, label %72
i32 1091, label %73
i32 1092, label %74
i32 1093, label %75
i32 1094, label %76
i32 1095, label %77
i32 1096, label %78
i32 1097, label %79
i32 1098, label %80
i32 1099, label %81
i32 1100, label %82
i32 1101, label %83
i32 1102, label %84
i32 1103, label %85
]
20: ; preds = %15
store i32 225, i32* %2
br label %88
21: ; preds = %15
store i32 226, i32* %2
br label %88
22: ; preds = %15
store i32 247, i32* %2
br label %88
23: ; preds = %15
store i32 231, i32* %2
br label %88
24: ; preds = %15
store i32 228, i32* %2
br label %88
25: ; preds = %15
store i32 229, i32* %2
br label %88
26: ; preds = %15
store i32 179, i32* %2
br label %88
27: ; preds = %15
store i32 246, i32* %2
br label %88
28: ; preds = %15
store i32 250, i32* %2
br label %88
29: ; preds = %15
store i32 233, i32* %2
br label %88
30: ; preds = %15
store i32 234, i32* %2
br label %88
31: ; preds = %15
store i32 235, i32* %2
br label %88
32: ; preds = %15
store i32 236, i32* %2
br label %88
33: ; preds = %15
store i32 237, i32* %2
br label %88
34: ; preds = %15
store i32 238, i32* %2
br label %88
35: ; preds = %15
store i32 239, i32* %2
br label %88
36: ; preds = %15
store i32 240, i32* %2
br label %88
37: ; preds = %15
store i32 242, i32* %2
br label %88
38: ; preds = %15
store i32 243, i32* %2
br label %88
39: ; preds = %15
store i32 244, i32* %2
br label %88
40: ; preds = %15
store i32 245, i32* %2
br label %88
41: ; preds = %15
store i32 230, i32* %2
br label %88
42: ; preds = %15
store i32 232, i32* %2
br label %88
43: ; preds = %15
store i32 227, i32* %2
br label %88
44: ; preds = %15
store i32 254, i32* %2
br label %88
45: ; preds = %15
store i32 251, i32* %2
br label %88
46: ; preds = %15
store i32 253, i32* %2
br label %88
47: ; preds = %15
store i32 255, i32* %2
br label %88
48: ; preds = %15
store i32 249, i32* %2
br label %88
49: ; preds = %15
store i32 248, i32* %2
br label %88
50: ; preds = %15
store i32 252, i32* %2
br label %88
51: ; preds = %15
store i32 224, i32* %2
br label %88
52: ; preds = %15
store i32 241, i32* %2
br label %88
53: ; preds = %15
store i32 193, i32* %2
br label %88
54: ; preds = %15
store i32 194, i32* %2
br label %88
55: ; preds = %15
store i32 215, i32* %2
br label %88
56: ; preds = %15
store i32 199, i32* %2
br label %88
57: ; preds = %15
store i32 196, i32* %2
br label %88
58: ; preds = %15
store i32 197, i32* %2
br label %88
59: ; preds = %15
store i32 163, i32* %2
br label %88
60: ; preds = %15
store i32 214, i32* %2
br label %88
61: ; preds = %15
store i32 218, i32* %2
br label %88
62: ; preds = %15
store i32 201, i32* %2
br label %88
63: ; preds = %15
store i32 202, i32* %2
br label %88
64: ; preds = %15
store i32 203, i32* %2
br label %88
65: ; preds = %15
store i32 204, i32* %2
br label %88
66: ; preds = %15
store i32 205, i32* %2
br label %88
67: ; preds = %15
store i32 206, i32* %2
br label %88
68: ; preds = %15
store i32 207, i32* %2
br label %88
69: ; preds = %15
store i32 208, i32* %2
br label %88
70: ; preds = %15
store i32 210, i32* %2
br label %88
71: ; preds = %15
store i32 211, i32* %2
br label %88
72: ; preds = %15
store i32 212, i32* %2
br label %88
73: ; preds = %15
store i32 213, i32* %2
br label %88
74: ; preds = %15
store i32 198, i32* %2
br label %88
75: ; preds = %15
store i32 200, i32* %2
br label %88
76: ; preds = %15
store i32 195, i32* %2
br label %88
77: ; preds = %15
store i32 222, i32* %2
br label %88
78: ; preds = %15
store i32 219, i32* %2
br label %88
79: ; preds = %15
store i32 221, i32* %2
br label %88
80: ; preds = %15
store i32 223, i32* %2
br label %88
81: ; preds = %15
store i32 217, i32* %2
br label %88
82: ; preds = %15
store i32 216, i32* %2
br label %88
83: ; preds = %15
store i32 220, i32* %2
br label %88
84: ; preds = %15
store i32 192, i32* %2
br label %88
85: ; preds = %15
store i32 209, i32* %2
br label %88
86: ; preds = %15
%87 = load i32, i32* %3
store i32 %87, i32* %2
br label %88
88: ; preds = %86, %85, %84, %83, %82, %81, %80, %79, %78, %77, %76, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20
%89 = load i32, i32* %2
ret i32 %89
}

LLVM IR (-O2):
define i32 @rus_char_to_koi8_byte(i32 %0) {
%2 = add i32 %0, -1040
%3 = icmp ult i32 %2, 64
%4 = icmp eq i32 %0, 1025
%5 = or i1 %4, %3
%6 = icmp eq i32 %0, 1105
%7 = or i1 %6, %5
%8 = zext i1 %7 to i32
%9 = tail call i32 @assert(i32 %8)
switch i32 %0, label %75 [
i32 1040, label %76
i32 1041, label %10
i32 1042, label %11
i32 1043, label %12
i32 1044, label %13
i32 1045, label %14
i32 1025, label %15
i32 1046, label %16
i32 1047, label %17
i32 1048, label %18
i32 1049, label %19
i32 1050, label %20
i32 1051, label %21
i32 1052, label %22
i32 1053, label %23
i32 1054, label %24
i32 1055, label %25
i32 1056, label %26
i32 1057, label %27
i32 1058, label %28
i32 1059, label %29
i32 1060, label %30
i32 1061, label %31
i32 1062, label %32
i32 1063, label %33
i32 1064, label %34
i32 1065, label %35
i32 1066, label %36
i32 1067, label %37
i32 1068, label %38
i32 1069, label %39
i32 1070, label %40
i32 1071, label %41
i32 1072, label %42
i32 1073, label %43
i32 1074, label %44
i32 1075, label %45
i32 1076, label %46
i32 1077, label %47
i32 1105, label %48
i32 1078, label %49
i32 1079, label %50
i32 1080, label %51
i32 1081, label %52
i32 1082, label %53
i32 1083, label %54
i32 1084, label %55
i32 1085, label %56
i32 1086, label %57
i32 1087, label %58
i32 1088, label %59
i32 1089, label %60
i32 1090, label %61
i32 1091, label %62
i32 1092, label %63
i32 1093, label %64
i32 1094, label %65
i32 1095, label %66
i32 1096, label %67
i32 1097, label %68
i32 1098, label %69
i32 1099, label %70
i32 1100, label %71
i32 1101, label %72
i32 1102, label %73
i32 1103, label %74
]
10: ; preds = %1
br label %76
11: ; preds = %1
br label %76
12: ; preds = %1
br label %76
13: ; preds = %1
br label %76
14: ; preds = %1
br label %76
15: ; preds = %1
br label %76
16: ; preds = %1
br label %76
17: ; preds = %1
br label %76
18: ; preds = %1
br label %76
19: ; preds = %1
br label %76
20: ; preds = %1
br label %76
21: ; preds = %1
br label %76
22: ; preds = %1
br label %76
23: ; preds = %1
br label %76
24: ; preds = %1
br label %76
25: ; preds = %1
br label %76
26: ; preds = %1
br label %76
27: ; preds = %1
br label %76
28: ; preds = %1
br label %76
29: ; preds = %1
br label %76
30: ; preds = %1
br label %76
31: ; preds = %1
br label %76
32: ; preds = %1
br label %76
33: ; preds = %1
br label %76
34: ; preds = %1
br label %76
35: ; preds = %1
br label %76
36: ; preds = %1
br label %76
37: ; preds = %1
br label %76
38: ; preds = %1
br label %76
39: ; preds = %1
br label %76
40: ; preds = %1
br label %76
41: ; preds = %1
br label %76
42: ; preds = %1
br label %76
43: ; preds = %1
br label %76
44: ; preds = %1
br label %76
45: ; preds = %1
br label %76
46: ; preds = %1
br label %76
47: ; preds = %1
br label %76
48: ; preds = %1
br label %76
49: ; preds = %1
br label %76
50: ; preds = %1
br label %76
51: ; preds = %1
br label %76
52: ; preds = %1
br label %76
53: ; preds = %1
br label %76
54: ; preds = %1
br label %76
55: ; preds = %1
br label %76
56: ; preds = %1
br label %76
57: ; preds = %1
br label %76
58: ; preds = %1
br label %76
59: ; preds = %1
br label %76
60: ; preds = %1
br label %76
61: ; preds = %1
br label %76
62: ; preds = %1
br label %76
63: ; preds = %1
br label %76
64: ; preds = %1
br label %76
65: ; preds = %1
br label %76
66: ; preds = %1
br label %76
67: ; preds = %1
br label %76
68: ; preds = %1
br label %76
69: ; preds = %1
br label %76
70: ; preds = %1
br label %76
71: ; preds = %1
br label %76
72: ; preds = %1
br label %76
73: ; preds = %1
br label %76
74: ; preds = %1
br label %76
75: ; preds = %1
br label %76
76: ; preds = %1, %75, %74, %73, %72, %71, %70, %69, %68, %67, %66, %65, %64, %63, %62, %61, %60, %59, %58, %57, %56, %55, %54, %53, %52, %51, %50, %49, %48, %47, %46, %45, %44, %43, %42, %41, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29, %28, %27, %26, %25, %24, %23, %22, %21, %20, %19, %18, %17, %16, %15, %14, %13, %12, %11, %10
%77 = phi i32 [ %0, %75 ], [ 209, %74 ], [ 192, %73 ], [ 220, %72 ], [ 216, %71 ], [ 217, %70 ], [ 223, %69 ], [ 221, %68 ], [ 219, %67 ], [ 222, %66 ], [ 195, %65 ], [ 200, %64 ], [ 198, %63 ], [ 213, %62 ], [ 212, %61 ], [ 211, %60 ], [ 210, %59 ], [ 208, %58 ], [ 207, %57 ], [ 206, %56 ], [ 205, %55 ], [ 204, %54 ], [ 203, %53 ], [ 202, %52 ], [ 201, %51 ], [ 218, %50 ], [ 214, %49 ], [ 163, %48 ], [ 197, %47 ], [ 196, %46 ], [ 199, %45 ], [ 215, %44 ], [ 194, %43 ], [ 193, %42 ], [ 241, %41 ], [ 224, %40 ], [ 252, %39 ], [ 248, %38 ], [ 249, %37 ], [ 255, %36 ], [ 253, %35 ], [ 251, %34 ], [ 254, %33 ], [ 227, %32 ], [ 232, %31 ], [ 230, %30 ], [ 245, %29 ], [ 244, %28 ], [ 243, %27 ], [ 242, %26 ], [ 240, %25 ], [ 239, %24 ], [ 238, %23 ], [ 237, %22 ], [ 236, %21 ], [ 235, %20 ], [ 234, %19 ], [ 233, %18 ], [ 250, %17 ], [ 246, %16 ], [ 179, %15 ], [ 229, %14 ], [ 228, %13 ], [ 231, %12 ], [ 247, %11 ], [ 226, %10 ], [ 225, %1 ]
ret i32 %77
}