char BNCCommand(int command) {
  char bnc[50];
  bnc[0] = 0x30;
  bnc[1] = 0x31;
  bnc[2] = 0x32;
  bnc[3] = 0x33;
  bnc[4] = 0x34;
  bnc[5] = 0x35;
  bnc[6] = 0x36;
  bnc[7] = 0x37;
  bnc[8] = 0x38;
  bnc[9] = 0x39;
  bnc[10] = 0x7A;
  bnc[11] = 0x79;
  bnc[12] = 0x78;
  bnc[13] = 0x6f;
  bnc[14] = 0x74;
  bnc[15] = 0x03;
  bnc[16] = 0x2E;
  bnc[17] = 0x2D;
  bnc[18] = 0x03;
  bnc[19] = 0x03;
  bnc[20] = 0x6D;
  bnc[21] = 0x6A;
  bnc[22] = 0x62;
  bnc[23] = 0x71;
  bnc[24] = 0x67;
  bnc[25] = 0x03;
  bnc[26] = 0x03;
  bnc[27] = 0x03;
  bnc[28] = 0x03;
  bnc[29] = 0x03;
  bnc[30] = 0x61;
  bnc[31] = 0x76;
  bnc[32] = 0x6B;
  bnc[33] = 0x65;
  bnc[34] = 0x66;
  bnc[35] = 0x3F;
  bnc[36] = 0x68;
  bnc[37] = 0x05;
  bnc[38] = 0x65;
  bnc[39] = 0x6b;
  bnc[40] = 0x70;
  bnc[41] = 0x6E;
  bnc[42] = 0x75;
  bnc[43] = 0x64;
  bnc[44] = 0x6C;
  bnc[45] = 0x72;
  bnc[46] = 0x66;
  bnc[47] = 0x03;
  bnc[48] = 0x73;
  bnc[49] = 0x43;
  return (bnc[command]);
}


x86 assembly (clang, -O0):
<BNCCommand>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movb   $0x30,-0x40(%rbp)
movb   $0x31,-0x3f(%rbp)
movb   $0x32,-0x3e(%rbp)
movb   $0x33,-0x3d(%rbp)
movb   $0x34,-0x3c(%rbp)
movb   $0x35,-0x3b(%rbp)
movb   $0x36,-0x3a(%rbp)
movb   $0x37,-0x39(%rbp)
movb   $0x38,-0x38(%rbp)
movb   $0x39,-0x37(%rbp)
movb   $0x7a,-0x36(%rbp)
movb   $0x79,-0x35(%rbp)
movb   $0x78,-0x34(%rbp)
movb   $0x6f,-0x33(%rbp)
movb   $0x74,-0x32(%rbp)
movb   $0x3,-0x31(%rbp)
movb   $0x2e,-0x30(%rbp)
movb   $0x2d,-0x2f(%rbp)
movb   $0x3,-0x2e(%rbp)
movb   $0x3,-0x2d(%rbp)
movb   $0x6d,-0x2c(%rbp)
movb   $0x6a,-0x2b(%rbp)
movb   $0x62,-0x2a(%rbp)
movb   $0x71,-0x29(%rbp)
movb   $0x67,-0x28(%rbp)
movb   $0x3,-0x27(%rbp)
movb   $0x3,-0x26(%rbp)
movb   $0x3,-0x25(%rbp)
movb   $0x3,-0x24(%rbp)
movb   $0x3,-0x23(%rbp)
movb   $0x61,-0x22(%rbp)
movb   $0x76,-0x21(%rbp)
movb   $0x6b,-0x20(%rbp)
movb   $0x65,-0x1f(%rbp)
movb   $0x66,-0x1e(%rbp)
movb   $0x3f,-0x1d(%rbp)
movb   $0x68,-0x1c(%rbp)
movb   $0x5,-0x1b(%rbp)
movb   $0x65,-0x1a(%rbp)
movb   $0x6b,-0x19(%rbp)
movb   $0x70,-0x18(%rbp)
movb   $0x6e,-0x17(%rbp)
movb   $0x75,-0x16(%rbp)
movb   $0x64,-0x15(%rbp)
movb   $0x6c,-0x14(%rbp)
movb   $0x72,-0x13(%rbp)
movb   $0x66,-0x12(%rbp)
movb   $0x3,-0x11(%rbp)
movb   $0x73,-0x10(%rbp)
movb   $0x43,-0xf(%rbp)
movslq -0x4(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<BNCCommand>:
movaps 0xef9(%rip),%xmm0
movaps %xmm0,-0x38(%rsp)
movabs $0x71626a6d03032d2e,%rax
6a 62 71
mov    %rax,-0x28(%rsp)
movb   $0x67,-0x20(%rsp)
movl   $0x3030303,-0x1f(%rsp)
03
movb   $0x3,-0x1b(%rsp)
movaps 0xedc(%rip),%xmm0
movups %xmm0,-0x1a(%rsp)
movl   $0x43730366,-0xa(%rsp)
43
movslq %edi,%rax
mov    -0x38(%rsp,%rax,1),%al
ret

LLVM IR (-O0):
define signext i8 @BNCCommand(i32 %0) {
%2 = alloca i32
%3 = alloca [50 x i8]
store i32 %0, i32* %2
%4 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 0
store i8 48, i8* %4
%5 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 1
store i8 49, i8* %5
%6 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 2
store i8 50, i8* %6
%7 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 3
store i8 51, i8* %7
%8 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 4
store i8 52, i8* %8
%9 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 5
store i8 53, i8* %9
%10 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 6
store i8 54, i8* %10
%11 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 7
store i8 55, i8* %11
%12 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 8
store i8 56, i8* %12
%13 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 9
store i8 57, i8* %13
%14 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 10
store i8 122, i8* %14
%15 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 11
store i8 121, i8* %15
%16 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 12
store i8 120, i8* %16
%17 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 13
store i8 111, i8* %17
%18 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 14
store i8 116, i8* %18
%19 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 15
store i8 3, i8* %19
%20 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 16
store i8 46, i8* %20
%21 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 17
store i8 45, i8* %21
%22 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 18
store i8 3, i8* %22
%23 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 19
store i8 3, i8* %23
%24 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 20
store i8 109, i8* %24
%25 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 21
store i8 106, i8* %25
%26 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 22
store i8 98, i8* %26
%27 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 23
store i8 113, i8* %27
%28 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 24
store i8 103, i8* %28
%29 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 25
store i8 3, i8* %29
%30 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 26
store i8 3, i8* %30
%31 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 27
store i8 3, i8* %31
%32 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 28
store i8 3, i8* %32
%33 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 29
store i8 3, i8* %33
%34 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 30
store i8 97, i8* %34
%35 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 31
store i8 118, i8* %35
%36 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 32
store i8 107, i8* %36
%37 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 33
store i8 101, i8* %37
%38 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 34
store i8 102, i8* %38
%39 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 35
store i8 63, i8* %39
%40 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 36
store i8 104, i8* %40
%41 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 37
store i8 5, i8* %41
%42 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 38
store i8 101, i8* %42
%43 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 39
store i8 107, i8* %43
%44 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 40
store i8 112, i8* %44
%45 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 41
store i8 110, i8* %45
%46 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 42
store i8 117, i8* %46
%47 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 43
store i8 100, i8* %47
%48 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 44
store i8 108, i8* %48
%49 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 45
store i8 114, i8* %49
%50 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 46
store i8 102, i8* %50
%51 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 47
store i8 3, i8* %51
%52 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 48
store i8 115, i8* %52
%53 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 49
store i8 67, i8* %53
%54 = load i32, i32* %2
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 %55
%57 = load i8, i8* %56
ret i8 %57
}

LLVM IR (-O2):
define signext i8 @BNCCommand(i32 %0) {
%2 = alloca [50 x i8]
%3 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 0
%4 = bitcast [50 x i8]* %2 to <16 x i8>*
store <16 x i8> <i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 122, i8 121, i8 120, i8 111, i8 116, i8 3>, <16 x i8>* %4
%5 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 16
store i8 46, i8* %5
%6 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 17
store i8 45, i8* %6
%7 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 18
store i8 3, i8* %7
%8 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 19
store i8 3, i8* %8
%9 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 20
store i8 109, i8* %9
%10 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 21
store i8 106, i8* %10
%11 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 22
store i8 98, i8* %11
%12 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 23
store i8 113, i8* %12
%13 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 24
store i8 103, i8* %13
%14 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 25
%15 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 30
%16 = bitcast i8* %15 to <16 x i8>*
store <16 x i8> <i8 97, i8 118, i8 107, i8 101, i8 102, i8 63, i8 104, i8 5, i8 101, i8 107, i8 112, i8 110, i8 117, i8 100, i8 108, i8 114>, <16 x i8>* %16
%17 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 46
store i8 102, i8* %17
%18 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 47
store i8 3, i8* %18
%19 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 48
store i8 115, i8* %19
%20 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 49
store i8 67, i8* %20
%21 = sext i32 %0 to i64
%22 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 %21
%23 = load i8, i8* %22
ret i8 %23
}