char *_rl_get_keyname(key)
int key;
{
  char *keyname;
  int i, c;
  keyname = (char *)xmalloc(8);
  c = key;
  if (c == (('[') & 0x1f)) {
    keyname[0] = '\\';
    keyname[1] = 'e';
    keyname[2] = '\0';
    return keyname;
  }
  if (key == 0x7f) {
    keyname[0] = '\\';
    keyname[1] = 'C';
    keyname[2] = '-';
    keyname[3] = '?';
    keyname[4] = '\0';
    return keyname;
  }
  i = 0;
  if (((c) < 0x020 && (((c)&0x80) == 0))) {
    keyname[i++] = '\\';
    keyname[i++] = 'C';
    keyname[i++] = '-';
    c = ((((unsigned char)((
               (((unsigned char)(((c) | 0x40)) == (((c) | 0x40))) &&
                (1 && islower(((c) | 0x40))))
                   ? toupper((unsigned char)((c) | 0x40))
                   : (((c) | 0x40)))) ==
           (((((unsigned char)(((c) | 0x40)) == (((c) | 0x40))) &&
              (1 && islower(((c) | 0x40))))
                 ? toupper((unsigned char)((c) | 0x40))
                 : (((c) | 0x40))))) &&
          (1 && isupper(((((unsigned char)(((c) | 0x40)) == (((c) | 0x40))) &&
                          (1 && islower(((c) | 0x40))))
                             ? toupper((unsigned char)((c) | 0x40))
                             : (((c) | 0x40))))))
             ? tolower(
                   (unsigned char)((((unsigned char)(((c) | 0x40)) ==
                                     (((c) | 0x40))) &&
                                    (1 && islower(((c) | 0x40))))
                                       ? toupper((unsigned char)((c) | 0x40))
                                       : (((c) | 0x40))))
             : (((((unsigned char)(((c) | 0x40)) == (((c) | 0x40))) &&
                  (1 && islower(((c) | 0x40))))
                     ? toupper((unsigned char)((c) | 0x40))
                     : (((c) | 0x40)))));
  }
  if (c >= 128 && c <= 159) {
    keyname[i++] = '\\';
    keyname[i++] = '2';
    c -= 128;
    keyname[i++] = (c / 8) + '0';
    c = (c % 8) + '0';
  }
  if (c == '\\' || c == '"')
    keyname[i++] = '\\';
  keyname[i++] = (char)c;
  keyname[i] = '\0';
  return keyname;
}


x86 assembly (clang, -O0):
<_rl_get_keyname>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %edi,-0xc(%rbp)
mov    $0x8,%edi
mov    $0x0,%al
call   1050 <xmalloc@plt>
cltq
mov    %rax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x1b,-0x20(%rbp)
jne    11a1 <_rl_get_keyname+0x51>
mov    -0x18(%rbp),%rax
movb   $0x5c,(%rax)
mov    -0x18(%rbp),%rax
movb   $0x65,0x1(%rax)
mov    -0x18(%rbp),%rax
movb   $0x0,0x2(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14db <_rl_get_keyname+0x38b>
cmpl   $0x7f,-0xc(%rbp)
jne    11df <_rl_get_keyname+0x8f>
mov    -0x18(%rbp),%rax
movb   $0x5c,(%rax)
mov    -0x18(%rbp),%rax
movb   $0x43,0x1(%rax)
mov    -0x18(%rbp),%rax
movb   $0x2d,0x2(%rax)
mov    -0x18(%rbp),%rax
movb   $0x3f,0x3(%rax)
mov    -0x18(%rbp),%rax
movb   $0x0,0x4(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14db <_rl_get_keyname+0x38b>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x20,-0x20(%rbp)
jge    13fc <_rl_get_keyname+0x2ac>
mov    -0x20(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
jne    13fc <_rl_get_keyname+0x2ac>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x43,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x2d,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x20(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    1284 <_rl_get_keyname+0x134>
mov    -0x20(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     1284 <_rl_get_keyname+0x134>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x24(%rbp)
jmp    128d <_rl_get_keyname+0x13d>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
movzbl %al,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x20(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    12d7 <_rl_get_keyname+0x187>
mov    -0x20(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     12d7 <_rl_get_keyname+0x187>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x2c(%rbp)
jmp    12e0 <_rl_get_keyname+0x190>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x2c(%rbp),%ecx
cmp    %ecx,%eax
jne    13a6 <_rl_get_keyname+0x256>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x20(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    132f <_rl_get_keyname+0x1df>
mov    -0x20(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     132f <_rl_get_keyname+0x1df>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x30(%rbp)
jmp    1338 <_rl_get_keyname+0x1e8>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%edi
call   1070 <isupper@plt>
cmp    $0x0,%eax
je     13a6 <_rl_get_keyname+0x256>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x20(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    138a <_rl_get_keyname+0x23a>
mov    -0x20(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     138a <_rl_get_keyname+0x23a>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x34(%rbp)
jmp    1393 <_rl_get_keyname+0x243>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
movzbl %al,%edi
call   1060 <tolower@plt>
mov    %eax,-0x38(%rbp)
jmp    13f6 <_rl_get_keyname+0x2a6>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x20(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    13e7 <_rl_get_keyname+0x297>
mov    -0x20(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     13e7 <_rl_get_keyname+0x297>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x3c(%rbp)
jmp    13f0 <_rl_get_keyname+0x2a0>
mov    -0x20(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x80,-0x20(%rbp)
jl     1483 <_rl_get_keyname+0x333>
cmpl   $0x9f,-0x20(%rbp)
jg     1483 <_rl_get_keyname+0x333>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x32,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
sub    $0x80,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
add    $0x30,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
add    $0x30,%edx
mov    %edx,-0x20(%rbp)
cmpl   $0x5c,-0x20(%rbp)
je     1497 <_rl_get_keyname+0x347>
cmpl   $0x22,-0x20(%rbp)
jne    14ad <_rl_get_keyname+0x35d>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_rl_get_keyname>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %edi,%ebp
mov    $0x8,%edi
xor    %eax,%eax
call   1050 <xmalloc@plt>
movslq %eax,%rbx
cmp    $0x7f,%ebp
je     1183 <_rl_get_keyname+0x33>
cmp    $0x1b,%ebp
jne    1194 <_rl_get_keyname+0x44>
movw   $0x655c,(%rbx)
mov    $0x2,%r12d
jmp    128a <_rl_get_keyname+0x13a>
movl   $0x3f2d435c,(%rbx)
mov    $0x4,%r12d
jmp    128a <_rl_get_keyname+0x13a>
xor    %r12d,%r12d
cmp    $0x1f,%ebp
jg     123c <_rl_get_keyname+0xec>
mov    %ebp,%eax
and    $0x80,%eax
jne    123c <_rl_get_keyname+0xec>
movw   $0x435c,(%rbx)
movb   $0x2d,0x2(%rbx)
or     $0x40,%ebp
mov    $0x3,%r12d
cmp    $0xff,%ebp
ja     123c <_rl_get_keyname+0xec>
movzbl %bpl,%r14d
mov    %ebp,%edi
call   1030 <islower@plt>
test   %eax,%eax
je     120c <_rl_get_keyname+0xbc>
mov    %r14d,%edi
call   1040 <toupper@plt>
movzbl %al,%ebp
mov    %r14d,%edi
call   1040 <toupper@plt>
cmp    %eax,%ebp
jne    1232 <_rl_get_keyname+0xe2>
mov    %r14d,%edi
call   1040 <toupper@plt>
mov    %eax,%edi
call   1070 <isupper@plt>
test   %eax,%eax
je     1232 <_rl_get_keyname+0xe2>
mov    %r14d,%edi
call   1040 <toupper@plt>
mov    %eax,%ebp
jmp    1222 <_rl_get_keyname+0xd2>
mov    %eax,%r15d
cmp    $0x100,%ebp
jae    122d <_rl_get_keyname+0xdd>
mov    %ebp,%edi
call   1070 <isupper@plt>
test   %eax,%eax
je     122d <_rl_get_keyname+0xdd>
movzbl %bpl,%edi
call   1060 <tolower@plt>
jmp    123a <_rl_get_keyname+0xea>
test   %r15d,%r15d
je     123c <_rl_get_keyname+0xec>
mov    %r14d,%edi
call   1040 <toupper@plt>
mov    %eax,%ebp
mov    %ebp,%eax
and    $0xffffffe0,%eax
cmp    $0x80,%eax
jne    126a <_rl_get_keyname+0x11a>
mov    %r12d,%eax
movw   $0x325c,(%rbx,%rax,1)
mov    %ebp,%ecx
shr    $0x3,%cl
xor    $0x10,%cl
add    $0x30,%cl
add    $0x3,%r12d
mov    %cl,0x2(%rbx,%rax,1)
and    $0x7,%ebp
or     $0x30,%ebp
cmp    $0x5c,%ebp
je     1274 <_rl_get_keyname+0x124>
cmp    $0x22,%ebp
jne    127f <_rl_get_keyname+0x12f>
mov    %r12d,%eax
add    $0x1,%r12d
movb   $0x5c,(%rbx,%rax,1)
mov    %r12d,%eax
add    $0x1,%r12d
mov    %bpl,(%rbx,%rax,1)
movb   $0x0,(%rbx,%r12,1)
mov    %rbx,%rax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i8* @_rl_get_keyname(i32 %0) {
%2 = alloca i8*
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
store i32 %0, i32* %3
%7 = call i32 (i32, ...) bitcast (i32 (...)* @xmalloc to i32 (i32, ...)*)(i32 8)
%8 = sext i32 %7 to i64
%9 = inttoptr i64 %8 to i8*
store i8* %9, i8** %4
%10 = load i32, i32* %3
store i32 %10, i32* %6
%11 = load i32, i32* %6
%12 = icmp eq i32 %11, 27
br i1 %12, label %13, label %21
13: ; preds = %1
%14 = load i8*, i8** %4
%15 = getelementptr inbounds i8, i8* %14, i64 0
store i8 92, i8* %15
%16 = load i8*, i8** %4
%17 = getelementptr inbounds i8, i8* %16, i64 1
store i8 101, i8* %17
%18 = load i8*, i8** %4
%19 = getelementptr inbounds i8, i8* %18, i64 2
store i8 0, i8* %19
%20 = load i8*, i8** %4
store i8* %20, i8** %2
br label %243
21: ; preds = %1
%22 = load i32, i32* %3
%23 = icmp eq i32 %22, 127
br i1 %23, label %24, label %36
24: ; preds = %21
%25 = load i8*, i8** %4
%26 = getelementptr inbounds i8, i8* %25, i64 0
store i8 92, i8* %26
%27 = load i8*, i8** %4
%28 = getelementptr inbounds i8, i8* %27, i64 1
store i8 67, i8* %28
%29 = load i8*, i8** %4
%30 = getelementptr inbounds i8, i8* %29, i64 2
store i8 45, i8* %30
%31 = load i8*, i8** %4
%32 = getelementptr inbounds i8, i8* %31, i64 3
store i8 63, i8* %32
%33 = load i8*, i8** %4
%34 = getelementptr inbounds i8, i8* %33, i64 4
store i8 0, i8* %34
%35 = load i8*, i8** %4
store i8* %35, i8** %2
br label %243
36: ; preds = %21
store i32 0, i32* %5
%37 = load i32, i32* %6
%38 = icmp slt i32 %37, 32
br i1 %38, label %39, label %187
39: ; preds = %36
%40 = load i32, i32* %6
%41 = and i32 %40, 128
%42 = icmp eq i32 %41, 0
br i1 %42, label %43, label %187
43: ; preds = %39
%44 = load i8*, i8** %4
%45 = load i32, i32* %5
%46 = add nsw i32 %45, 1
store i32 %46, i32* %5
%47 = sext i32 %45 to i64
%48 = getelementptr inbounds i8, i8* %44, i64 %47
store i8 92, i8* %48
%49 = load i8*, i8** %4
%50 = load i32, i32* %5
%51 = add nsw i32 %50, 1
store i32 %51, i32* %5
%52 = sext i32 %50 to i64
%53 = getelementptr inbounds i8, i8* %49, i64 %52
store i8 67, i8* %53
%54 = load i8*, i8** %4
%55 = load i32, i32* %5
%56 = add nsw i32 %55, 1
store i32 %56, i32* %5
%57 = sext i32 %55 to i64
%58 = getelementptr inbounds i8, i8* %54, i64 %57
store i8 45, i8* %58
%59 = load i32, i32* %6
%60 = or i32 %59, 64
%61 = trunc i32 %60 to i8
%62 = zext i8 %61 to i32
%63 = load i32, i32* %6
%64 = or i32 %63, 64
%65 = icmp eq i32 %62, %64
br i1 %65, label %66, label %77
66: ; preds = %43
%67 = load i32, i32* %6
%68 = or i32 %67, 64
%69 = call i32 @islower(i32 %68)
%70 = icmp ne i32 %69, 0
br i1 %70, label %71, label %77
71: ; preds = %66
%72 = load i32, i32* %6
%73 = or i32 %72, 64
%74 = trunc i32 %73 to i8
%75 = zext i8 %74 to i32
%76 = call i32 @toupper(i32 %75)
br label %80
77: ; preds = %66, %43
%78 = load i32, i32* %6
%79 = or i32 %78, 64
br label %80
80: ; preds = %77, %71
%81 = phi i32 [ %76, %71 ], [ %79, %77 ]
%82 = trunc i32 %81 to i8
%83 = zext i8 %82 to i32
%84 = load i32, i32* %6
%85 = or i32 %84, 64
%86 = trunc i32 %85 to i8
%87 = zext i8 %86 to i32
%88 = load i32, i32* %6
%89 = or i32 %88, 64
%90 = icmp eq i32 %87, %89
br i1 %90, label %91, label %102
91: ; preds = %80
%92 = load i32, i32* %6
%93 = or i32 %92, 64
%94 = call i32 @islower(i32 %93)
%95 = icmp ne i32 %94, 0
br i1 %95, label %96, label %102
96: ; preds = %91
%97 = load i32, i32* %6
%98 = or i32 %97, 64
%99 = trunc i32 %98 to i8
%100 = zext i8 %99 to i32
%101 = call i32 @toupper(i32 %100)
br label %105
102: ; preds = %91, %80
%103 = load i32, i32* %6
%104 = or i32 %103, 64
br label %105
105: ; preds = %102, %96
%106 = phi i32 [ %101, %96 ], [ %104, %102 ]
%107 = icmp eq i32 %83, %106
br i1 %107, label %108, label %161
108: ; preds = %105
%109 = load i32, i32* %6
%110 = or i32 %109, 64
%111 = trunc i32 %110 to i8
%112 = zext i8 %111 to i32
%113 = load i32, i32* %6
%114 = or i32 %113, 64
%115 = icmp eq i32 %112, %114
br i1 %115, label %116, label %127
116: ; preds = %108
%117 = load i32, i32* %6
%118 = or i32 %117, 64
%119 = call i32 @islower(i32 %118)
%120 = icmp ne i32 %119, 0
br i1 %120, label %121, label %127
121: ; preds = %116
%122 = load i32, i32* %6
%123 = or i32 %122, 64
%124 = trunc i32 %123 to i8
%125 = zext i8 %124 to i32
%126 = call i32 @toupper(i32 %125)
br label %130
127: ; preds = %116, %108
%128 = load i32, i32* %6
%129 = or i32 %128, 64
br label %130
130: ; preds = %127, %121
%131 = phi i32 [ %126, %121 ], [ %129, %127 ]
%132 = call i32 @isupper(i32 %131)
%133 = icmp ne i32 %132, 0
br i1 %133, label %134, label %161
134: ; preds = %130
%135 = load i32, i32* %6
%136 = or i32 %135, 64
%137 = trunc i32 %136 to i8
%138 = zext i8 %137 to i32
%139 = load i32, i32* %6
%140 = or i32 %139, 64
%141 = icmp eq i32 %138, %140
br i1 %141, label %142, label %153
142: ; preds = %134
%143 = load i32, i32* %6
%144 = or i32 %143, 64
%145 = call i32 @islower(i32 %144)
%146 = icmp ne i32 %145, 0
br i1 %146, label %147, label %153
147: ; preds = %142
%148 = load i32, i32* %6
%149 = or i32 %148, 64
%150 = trunc i32 %149 to i8
%151 = zext i8 %150 to i32
%152 = call i32 @toupper(i32 %151)
br label %156
153: ; preds = %142, %134
%154 = load i32, i32* %6
%155 = or i32 %154, 64
br label %156
156: ; preds = %153, %147
%157 = phi i32 [ %152, %147 ], [ %155, %153 ]
%158 = trunc i32 %157 to i8
%159 = zext i8 %158 to i32
%160 = call i32 @tolower(i32 %159)
br label %185
161: ; preds = %130, %105
%162 = load i32, i32* %6
%163 = or i32 %162, 64
%164 = trunc i32 %163 to i8
%165 = zext i8 %164 to i32
%166 = load i32, i32* %6
%167 = or i32 %166, 64
%168 = icmp eq i32 %165, %167
br i1 %168, label %169, label %180
169: ; preds = %161
%170 = load i32, i32* %6
%171 = or i32 %170, 64
%172 = call i32 @islower(i32 %171)
%173 = icmp ne i32 %172, 0
br i1 %173, label %174, label %180
174: ; preds = %169
%175 = load i32, i32* %6
%176 = or i32 %175, 64
%177 = trunc i32 %176 to i8
%178 = zext i8 %177 to i32
%179 = call i32 @toupper(i32 %178)
br label %183
180: ; preds = %169, %161
%181 = load i32, i32* %6
%182 = or i32 %181, 64
br label %183
183: ; preds = %180, %174
%184 = phi i32 [ %179, %174 ], [ %182, %180 ]
br label %185
185: ; preds = %183, %156
%186 = phi i32 [ %160, %156 ], [ %184, %183 ]
store i32 %186, i32* %6
br label %187
187: ; preds = %185, %39, %36
%188 = load i32, i32* %6
%189 = icmp sge i32 %188, 128
br i1 %189, label %190, label %218
190: ; preds = %187
%191 = load i32, i32* %6
%192 = icmp sle i32 %191, 159
br i1 %192, label %193, label %218
193: ; preds = %190
%194 = load i8*, i8** %4
%195 = load i32, i32* %5
%196 = add nsw i32 %195, 1
store i32 %196, i32* %5
%197 = sext i32 %195 to i64
%198 = getelementptr inbounds i8, i8* %194, i64 %197
store i8 92, i8* %198
%199 = load i8*, i8** %4
%200 = load i32, i32* %5
%201 = add nsw i32 %200, 1
store i32 %201, i32* %5
%202 = sext i32 %200 to i64
%203 = getelementptr inbounds i8, i8* %199, i64 %202
store i8 50, i8* %203
%204 = load i32, i32* %6
%205 = sub nsw i32 %204, 128
store i32 %205, i32* %6
%206 = load i32, i32* %6
%207 = sdiv i32 %206, 8
%208 = add nsw i32 %207, 48
%209 = trunc i32 %208 to i8
%210 = load i8*, i8** %4
%211 = load i32, i32* %5
%212 = add nsw i32 %211, 1
store i32 %212, i32* %5
%213 = sext i32 %211 to i64
%214 = getelementptr inbounds i8, i8* %210, i64 %213
store i8 %209, i8* %214
%215 = load i32, i32* %6
%216 = srem i32 %215, 8
%217 = add nsw i32 %216, 48
store i32 %217, i32* %6
br label %218
218: ; preds = %193, %190, %187
%219 = load i32, i32* %6
%220 = icmp eq i32 %219, 92
br i1 %220, label %224, label %221
221: ; preds = %218
%222 = load i32, i32* %6
%223 = icmp eq i32 %222, 34
br i1 %223, label %224, label %230
224: ; preds = %221, %218
%225 = load i8*, i8** %4
%226 = load i32, i32* %5
%227 = add nsw i32 %226, 1
store i32 %227, i32* %5
%228 = sext i32 %226 to i64
%229 = getelementptr inbounds i8, i8* %225, i64 %228
store i8 92, i8* %229
br label %230
230: ; preds = %224, %221
%231 = load i32, i32* %6
%232 = trunc i32 %231 to i8
%233 = load i8*, i8** %4
%234 = load i32, i32* %5
%235 = add nsw i32 %234, 1
store i32 %235, i32* %5
%236 = sext i32 %234 to i64
%237 = getelementptr inbounds i8, i8* %233, i64 %236
store i8 %232, i8* %237
%238 = load i8*, i8** %4
%239 = load i32, i32* %5
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds i8, i8* %238, i64 %240
store i8 0, i8* %241
%242 = load i8*, i8** %4
store i8* %242, i8** %2
br label %243
243: ; preds = %230, %24, %13
%244 = load i8*, i8** %2
ret i8* %244
}

LLVM IR (-O2):
define i8* @_rl_get_keyname(i32 %0) {
%2 = tail call i32 (i32, ...) bitcast (i32 (...)* @xmalloc to i32 (i32, ...)*)(i32 8)
%3 = sext i32 %2 to i64
%4 = inttoptr i64 %3 to i8*
switch i32 %0, label %11 [
i32 27, label %5
i32 127, label %7
]
5: ; preds = %1
store i8 92, i8* %4
%6 = getelementptr inbounds i8, i8* %4, i64 1
store i8 101, i8* %6
br label %83
7: ; preds = %1
store i8 92, i8* %4
%8 = getelementptr inbounds i8, i8* %4, i64 1
store i8 67, i8* %8
%9 = getelementptr inbounds i8, i8* %4, i64 2
store i8 45, i8* %9
%10 = getelementptr inbounds i8, i8* %4, i64 3
store i8 63, i8* %10
br label %83
11: ; preds = %1
%12 = icmp slt i32 %0, 32
%13 = and i32 %0, 128
%14 = icmp eq i32 %13, 0
%15 = and i1 %12, %14
br i1 %15, label %16, label %48
16: ; preds = %11
store i8 92, i8* %4
%17 = getelementptr inbounds i8, i8* %4, i64 1
store i8 67, i8* %17
%18 = getelementptr inbounds i8, i8* %4, i64 2
store i8 45, i8* %18
%19 = or i32 %0, 64
%20 = and i32 %19, 255
%21 = icmp ult i32 %19, 256
br i1 %21, label %22, label %48
22: ; preds = %16
%23 = tail call i32 @islower(i32 %19)
%24 = icmp eq i32 %23, 0
br i1 %24, label %25, label %27
25: ; preds = %22
%26 = icmp ult i32 %19, 256
br i1 %26, label %32, label %45
27: ; preds = %22
%28 = tail call i32 @toupper(i32 %20)
%29 = and i32 %28, 255
%30 = tail call i32 @toupper(i32 %20)
%31 = icmp eq i32 %29, %30
br i1 %31, label %35, label %46
32: ; preds = %25
%33 = tail call i32 @isupper(i32 %19)
%34 = icmp eq i32 %33, 0
br i1 %34, label %45, label %41
35: ; preds = %27
%36 = tail call i32 @toupper(i32 %20)
%37 = tail call i32 @isupper(i32 %36)
%38 = icmp eq i32 %37, 0
br i1 %38, label %46, label %39
39: ; preds = %35
%40 = tail call i32 @toupper(i32 %20)
br label %41
41: ; preds = %32, %39
%42 = phi i32 [ %40, %39 ], [ %19, %32 ]
%43 = and i32 %42, 255
%44 = tail call i32 @tolower(i32 %43)
br label %48
45: ; preds = %25, %32
br i1 %24, label %48, label %46
46: ; preds = %35, %27, %45
%47 = tail call i32 @toupper(i32 %20)
br label %48
48: ; preds = %16, %41, %46, %45, %11
%49 = phi i32 [ 0, %11 ], [ 3, %45 ], [ 3, %46 ], [ 3, %41 ], [ 3, %16 ]
%50 = phi i32 [ %0, %11 ], [ %19, %45 ], [ %47, %46 ], [ %44, %41 ], [ %19, %16 ]
%51 = and i32 %50, -32
%52 = icmp eq i32 %51, 128
br i1 %52, label %53, label %69
53: ; preds = %48
%54 = add nuw nsw i32 %49, 1
%55 = zext i32 %49 to i64
%56 = getelementptr inbounds i8, i8* %4, i64 %55
store i8 92, i8* %56
%57 = add nuw nsw i32 %49, 2
%58 = zext i32 %54 to i64
%59 = getelementptr inbounds i8, i8* %4, i64 %58
store i8 50, i8* %59
%60 = trunc i32 %50 to i8
%61 = lshr i8 %60, 3
%62 = xor i8 %61, 16
%63 = add nuw nsw i8 %62, 48
%64 = add nuw nsw i32 %49, 3
%65 = zext i32 %57 to i64
%66 = getelementptr inbounds i8, i8* %4, i64 %65
store i8 %63, i8* %66
%67 = and i32 %50, 7
%68 = or i32 %67, 48
br label %69
69: ; preds = %53, %48
%70 = phi i32 [ %64, %53 ], [ %49, %48 ]
%71 = phi i32 [ %68, %53 ], [ %50, %48 ]
switch i32 %71, label %76 [
i32 92, label %72
i32 34, label %72
]
72: ; preds = %69, %69
%73 = add nuw nsw i32 %70, 1
%74 = zext i32 %70 to i64
%75 = getelementptr inbounds i8, i8* %4, i64 %74
store i8 92, i8* %75
br label %76
76: ; preds = %69, %72
%77 = phi i32 [ %73, %72 ], [ %70, %69 ]
%78 = trunc i32 %71 to i8
%79 = add nuw nsw i32 %77, 1
%80 = zext i32 %77 to i64
%81 = getelementptr inbounds i8, i8* %4, i64 %80
store i8 %78, i8* %81
%82 = zext i32 %79 to i64
br label %83
83: ; preds = %76, %7, %5
%84 = phi i64 [ %82, %76 ], [ 4, %7 ], [ 2, %5 ]
%85 = getelementptr inbounds i8, i8* %4, i64 %84
store i8 0, i8* %85
ret i8* %4
}