char *_rl_untranslate_macro_value(seq)
char *seq;
{
  char *ret, *r, *s;
  int c;
  r = ret = (char *)xmalloc(7 * strlen(seq) + 1);
  for (s = seq; *s; s++) {
    c = *s;
    if (((c) > 0x07f && (c) <= 255)) {
      *r++ = '\\';
      *r++ = 'M';
      *r++ = '-';
      c = ((c) & (~0x080));
    } else if (c == (('[') & 0x1f)) {
      *r++ = '\\';
      c = 'e';
    } else if (((c) < 0x020 && (((c)&0x80) == 0))) {
      *r++ = '\\';
      *r++ = 'C';
      *r++ = '-';
      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)))));
    } else if (c == 0x7f) {
      *r++ = '\\';
      *r++ = 'C';
      *r++ = '-';
      c = '?';
    }
    if (c == (('[') & 0x1f)) {
      *r++ = '\\';
      c = 'e';
    } else if (c == '\\' || c == '"')
      *r++ = '\\';
    *r++ = (unsigned char)c;
  }
  *r = '\0';
  return ret;
}


x86 assembly (clang, -O0):
<_rl_untranslate_macro_value>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
call   1050 <strlen@plt>
imul   $0x7,%rax,%rdi
add    $0x1,%rdi
mov    $0x0,%al
call   1060 <xmalloc@plt>
cltq
mov    %rax,-0x10(%rbp)
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmpb   $0x0,(%rax)
je     1511 <_rl_untranslate_macro_value+0x3b1>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x7f,-0x24(%rbp)
jle    120a <_rl_untranslate_macro_value+0xaa>
cmpl   $0xff,-0x24(%rbp)
jg     120a <_rl_untranslate_macro_value+0xaa>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x4d,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x2d,(%rax)
mov    -0x24(%rbp),%eax
and    $0xffffff7f,%eax
mov    %eax,-0x24(%rbp)
jmp    1497 <_rl_untranslate_macro_value+0x337>
cmpl   $0x1b,-0x24(%rbp)
jne    1232 <_rl_untranslate_macro_value+0xd2>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
movl   $0x65,-0x24(%rbp)
jmp    1492 <_rl_untranslate_macro_value+0x332>
cmpl   $0x20,-0x24(%rbp)
jge    1441 <_rl_untranslate_macro_value+0x2e1>
mov    -0x24(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
jne    1441 <_rl_untranslate_macro_value+0x2e1>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x43,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x2d,(%rax)
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x24(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    12c4 <_rl_untranslate_macro_value+0x164>
mov    -0x24(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     12c4 <_rl_untranslate_macro_value+0x164>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x28(%rbp)
jmp    12cd <_rl_untranslate_macro_value+0x16d>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
movzbl %al,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x24(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    1317 <_rl_untranslate_macro_value+0x1b7>
mov    -0x24(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     1317 <_rl_untranslate_macro_value+0x1b7>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x30(%rbp)
jmp    1320 <_rl_untranslate_macro_value+0x1c0>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x30(%rbp),%ecx
cmp    %ecx,%eax
jne    13e6 <_rl_untranslate_macro_value+0x286>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x24(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    136f <_rl_untranslate_macro_value+0x20f>
mov    -0x24(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     136f <_rl_untranslate_macro_value+0x20f>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x34(%rbp)
jmp    1378 <_rl_untranslate_macro_value+0x218>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%edi
call   1080 <isupper@plt>
cmp    $0x0,%eax
je     13e6 <_rl_untranslate_macro_value+0x286>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x24(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    13ca <_rl_untranslate_macro_value+0x26a>
mov    -0x24(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     13ca <_rl_untranslate_macro_value+0x26a>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x38(%rbp)
jmp    13d3 <_rl_untranslate_macro_value+0x273>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
movzbl %al,%edi
call   1070 <tolower@plt>
mov    %eax,-0x3c(%rbp)
jmp    1436 <_rl_untranslate_macro_value+0x2d6>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%eax
mov    -0x24(%rbp),%ecx
or     $0x40,%ecx
cmp    %ecx,%eax
jne    1427 <_rl_untranslate_macro_value+0x2c7>
mov    -0x24(%rbp),%edi
or     $0x40,%edi
call   1030 <islower@plt>
cmp    $0x0,%eax
je     1427 <_rl_untranslate_macro_value+0x2c7>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
movzbl %al,%edi
call   1040 <toupper@plt>
mov    %eax,-0x40(%rbp)
jmp    1430 <_rl_untranslate_macro_value+0x2d0>
mov    -0x24(%rbp),%eax
or     $0x40,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x24(%rbp)
jmp    148d <_rl_untranslate_macro_value+0x32d>
cmpl   $0x7f,-0x24(%rbp)
jne    1488 <_rl_untranslate_macro_value+0x328>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x43,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x2d,(%rax)
movl   $0x3f,-0x24(%rbp)
jmp    148d <_rl_untranslate_macro_value+0x32d>
jmp    1492 <_rl_untranslate_macro_value+0x332>
jmp    1497 <_rl_untranslate_macro_value+0x337>
cmpl   $0x1b,-0x24(%rbp)
jne    14bf <_rl_untranslate_macro_value+0x35f>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
movl   $0x65,-0x24(%rbp)
jmp    14ea <_rl_untranslate_macro_value+0x38a>
cmpl   $0x5c,-0x24(%rbp)
je     14d3 <_rl_untranslate_macro_value+0x373>
cmpl   $0x22,-0x24(%rbp)
jne    14e5 <_rl_untranslate_macro_value+0x385>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x5c,(%rax)
jmp    14ea <_rl_untranslate_macro_value+0x38a>
mov    -0x24(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1196 <_rl_untranslate_macro_value+0x36>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_rl_untranslate_macro_value>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r13
call   1050 <strlen@plt>
lea    0x0(,%rax,8),%rdi
sub    %rax,%rdi
add    $0x1,%rdi
xor    %eax,%eax
call   1060 <xmalloc@plt>
movslq %eax,%r14
mov    0x0(%r13),%al
mov    %r14,%rbx
test   %al,%al
je     12bf <_rl_untranslate_macro_value+0x15f>
add    $0x1,%r13
mov    %r14,%rbx
jmp    11d4 <_rl_untranslate_macro_value+0x74>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movb   $0x5c,(%rbx)
add    $0x1,%rbx
mov    $0x65,%ebp
mov    %bpl,(%rbx)
add    $0x1,%rbx
movzbl 0x0(%r13),%eax
add    $0x1,%r13
test   %al,%al
je     12bf <_rl_untranslate_macro_value+0x15f>
cmp    $0x1b,%al
je     11b0 <_rl_untranslate_macro_value+0x50>
movsbl %al,%ebp
cmp    $0x1f,%al
jg     1250 <_rl_untranslate_macro_value+0xf0>
mov    %ebp,%ecx
and    $0x80,%ecx
jne    1250 <_rl_untranslate_macro_value+0xf0>
movw   $0x435c,(%rbx)
movb   $0x2d,0x2(%rbx)
add    $0x3,%rbx
or     $0x40,%ebp
cmp    $0xff,%ebp
ja     129b <_rl_untranslate_macro_value+0x13b>
movzbl %bpl,%r15d
mov    %ebp,%edi
call   1030 <islower@plt>
test   %eax,%eax
je     126b <_rl_untranslate_macro_value+0x10b>
mov    %r15d,%edi
call   1040 <toupper@plt>
movzbl %al,%ebp
mov    %r15d,%edi
call   1040 <toupper@plt>
cmp    %eax,%ebp
jne    1291 <_rl_untranslate_macro_value+0x131>
mov    %r15d,%edi
call   1040 <toupper@plt>
mov    %eax,%edi
call   1080 <isupper@plt>
test   %eax,%eax
je     1291 <_rl_untranslate_macro_value+0x131>
mov    %r15d,%edi
call   1040 <toupper@plt>
mov    %eax,%ebp
jmp    1281 <_rl_untranslate_macro_value+0x121>
nopw   0x0(%rax,%rax,1)
cmp    $0x7f,%al
jne    129b <_rl_untranslate_macro_value+0x13b>
movw   $0x435c,(%rbx)
movb   $0x2d,0x2(%rbx)
add    $0x3,%rbx
mov    $0x3f,%ebp
jmp    11bc <_rl_untranslate_macro_value+0x5c>
mov    %eax,%r12d
cmp    $0x100,%ebp
jae    128c <_rl_untranslate_macro_value+0x12c>
mov    %ebp,%edi
call   1080 <isupper@plt>
test   %eax,%eax
je     128c <_rl_untranslate_macro_value+0x12c>
movzbl %bpl,%edi
call   1070 <tolower@plt>
jmp    1299 <_rl_untranslate_macro_value+0x139>
test   %r12d,%r12d
je     129b <_rl_untranslate_macro_value+0x13b>
mov    %r15d,%edi
call   1040 <toupper@plt>
mov    %eax,%ebp
cmp    $0x5c,%ebp
je     12b3 <_rl_untranslate_macro_value+0x153>
cmp    $0x22,%ebp
je     12b3 <_rl_untranslate_macro_value+0x153>
cmp    $0x1b,%ebp
je     11b0 <_rl_untranslate_macro_value+0x50>
jmp    11bc <_rl_untranslate_macro_value+0x5c>
movb   $0x5c,(%rbx)
add    $0x1,%rbx
jmp    11bc <_rl_untranslate_macro_value+0x5c>
movb   $0x0,(%rbx)
mov    %r14,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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