#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*/ printByteDebug(unsigned char);
int /*<<< orphan*/ printf(char *);
scalar_t__ strncmp(char *, char *, int);
unsigned char encodeMethod(char *method, unsigned char info) {
  unsigned char x;
  if (strncmp(method, "GET\0", 4) == 0) {
    printf("Processing GET request\n");
    x = 1;
  } else if (strncmp(method, "HEAD\0", 5) == 0) {
    printf("Processing HEAD request\n");
    x = 2;
  } else if (strncmp(method, "POST\0", 5) == 0) {
    printf("Processing POST request\n");
    x = 3;
  } else if (strncmp(method, "PUT\0", 4) == 0) {
    printf("Processing PUT request\n");
    x = 4;
  } else if (strncmp(method, "DELETE\0", 7) == 0) {
    printf("Processing DELETE request\n");
    x = 5;
  } else if (strncmp(method, "CONNECT\0", 8) == 0) {
    printf("Processing CONNECT request\n");
    x = 6;
  } else if (strncmp(method, "OPTIONS\0", 8) == 0) {
    printf("Processing OPTIONS request\n");
    x = 7;
  } else if (strncmp(method, "TRACE\0", 6) == 0) {
    printf("Processing TRACE request\n");
    x = 8;
  } else if (method == "" || method == NULL) {
    printf("\x1b[31m"
           "Request method missing\n"
           "\x1b[0m");
    printByteDebug(info);
    x = 0;
  } else {
    printf("\x1b[31m"
           "Request method not supported\n"
           "\x1b[0m");
    printByteDebug(info);
    x = 0;
  }
  printf("setting the method\n");
  info = (info & 15) | ((x << 4) & ~15);
  return info;
}


x86 assembly (clang, -O0):
<encodeMethod>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %sil,%al
mov    %rdi,-0x8(%rbp)
mov    %al,-0x9(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xeb3(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1176 <encodeMethod+0x46>
lea    0xec7(%rip),%rdi
call   1040 <printf@plt>
movb   $0x1,-0xa(%rbp)
jmp    135d <encodeMethod+0x22d>
mov    -0x8(%rbp),%rdi
lea    0xe84(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    11aa <encodeMethod+0x7a>
lea    0xeab(%rip),%rdi
call   1040 <printf@plt>
movb   $0x2,-0xa(%rbp)
jmp    1358 <encodeMethod+0x228>
mov    -0x8(%rbp),%rdi
lea    0xe56(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    11de <encodeMethod+0xae>
lea    0xe90(%rip),%rdi
call   1040 <printf@plt>
movb   $0x3,-0xa(%rbp)
jmp    1353 <encodeMethod+0x223>
mov    -0x8(%rbp),%rdi
lea    0xe28(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1212 <encodeMethod+0xe2>
lea    0xe75(%rip),%rdi
call   1040 <printf@plt>
movb   $0x4,-0xa(%rbp)
jmp    134e <encodeMethod+0x21e>
mov    -0x8(%rbp),%rdi
lea    0xf3d(%rip),%rsi
mov    $0x7,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1246 <encodeMethod+0x116>
lea    0xe59(%rip),%rdi
call   1040 <printf@plt>
movb   $0x5,-0xa(%rbp)
jmp    1349 <encodeMethod+0x219>
mov    -0x8(%rbp),%rdi
lea    0xdc5(%rip),%rsi
mov    $0x8,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    127a <encodeMethod+0x14a>
lea    0xe40(%rip),%rdi
call   1040 <printf@plt>
movb   $0x6,-0xa(%rbp)
jmp    1344 <encodeMethod+0x214>
mov    -0x8(%rbp),%rdi
lea    0xd9a(%rip),%rsi
mov    $0x8,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    12ae <encodeMethod+0x17e>
lea    0xe28(%rip),%rdi
call   1040 <printf@plt>
movb   $0x7,-0xa(%rbp)
jmp    133f <encodeMethod+0x20f>
mov    -0x8(%rbp),%rdi
lea    0xd6f(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    12e2 <encodeMethod+0x1b2>
lea    0xe10(%rip),%rdi
call   1040 <printf@plt>
movb   $0x8,-0xa(%rbp)
jmp    133a <encodeMethod+0x20a>
lea    0xe70(%rip),%rax
cmp    %rax,-0x8(%rbp)
je     12fe <encodeMethod+0x1ce>
cmpq   $0x0,-0x8(%rbp)
jne    131c <encodeMethod+0x1ec>
lea    0xdf9(%rip),%rdi
call   1040 <printf@plt>
movzbl -0x9(%rbp),%edi
call   1050 <printByteDebug@plt>
movb   $0x0,-0xa(%rbp)
jmp    1335 <encodeMethod+0x205>
lea    0xdfc(%rip),%rdi
call   1040 <printf@plt>
movzbl -0x9(%rbp),%edi
call   1050 <printByteDebug@plt>
movb   $0x0,-0xa(%rbp)
jmp    133a <encodeMethod+0x20a>
jmp    133f <encodeMethod+0x20f>
jmp    1344 <encodeMethod+0x214>
jmp    1349 <encodeMethod+0x219>
jmp    134e <encodeMethod+0x21e>
jmp    1353 <encodeMethod+0x223>
jmp    1358 <encodeMethod+0x228>
jmp    135d <encodeMethod+0x22d>
lea    0xde2(%rip),%rdi
call   1040 <printf@plt>
movzbl -0x9(%rbp),%eax
and    $0xf,%eax
movzbl -0xa(%rbp),%ecx
shl    $0x4,%ecx
and    $0xfffffff0,%ecx
or     %ecx,%eax
mov    %al,-0x9(%rbp)
movzbl -0x9(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<encodeMethod>:
push   %rbp
push   %rbx
push   %rax
mov    %esi,%ebp
mov    %rdi,%rbx
lea    0xeb1(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1252 <encodeMethod+0x112>
lea    0xe9c(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1265 <encodeMethod+0x125>
lea    0xe85(%rip),%rsi
mov    %rbx,%rdi
mov    $0x5,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1275 <encodeMethod+0x135>
lea    0xe6e(%rip),%rsi
mov    %rbx,%rdi
mov    $0x4,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1285 <encodeMethod+0x145>
lea    0xe6f(%rip),%rsi
mov    %rbx,%rdi
mov    $0x7,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1295 <encodeMethod+0x155>
lea    0xe39(%rip),%rsi
mov    %rbx,%rdi
mov    $0x8,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     12a5 <encodeMethod+0x165>
lea    0xe25(%rip),%rsi
mov    %rbx,%rdi
mov    $0x8,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     12b5 <encodeMethod+0x175>
lea    0xe11(%rip),%rsi
mov    %rbx,%rdi
mov    $0x6,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     12c5 <encodeMethod+0x185>
lea    0xe5d(%rip),%rax
cmp    %rax,%rbx
je     12d5 <encodeMethod+0x195>
test   %rbx,%rbx
je     12d5 <encodeMethod+0x195>
lea    0xe0b(%rip),%rdi
jmp    12dc <encodeMethod+0x19c>
lea    0xee9(%rip),%rdi
call   1040 <puts@plt>
mov    $0x10,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xebe(%rip),%rdi
call   1040 <puts@plt>
mov    $0x20,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xe96(%rip),%rdi
call   1040 <puts@plt>
mov    $0x30,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xe6f(%rip),%rdi
call   1040 <puts@plt>
mov    $0x40,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xe45(%rip),%rdi
call   1040 <puts@plt>
mov    $0x50,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xe1a(%rip),%rdi
call   1040 <puts@plt>
mov    $0x60,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xdef(%rip),%rdi
call   1040 <puts@plt>
mov    $0x70,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xdc6(%rip),%rdi
call   1040 <puts@plt>
mov    $0x80,%bl
jmp    12ec <encodeMethod+0x1ac>
lea    0xd5b(%rip),%rdi
call   1050 <printf@plt>
movzbl %bpl,%edi
call   1060 <printByteDebug@plt>
xor    %ebx,%ebx
lea    0xd8c(%rip),%rdi
call   1040 <puts@plt>
and    $0xf,%bpl
or     %bl,%bpl
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
@.str = [5 x i8] c"GET\00\00"
@.str.1 = [24 x i8] c"Processing GET request\0A\00"
@.str.2 = [6 x i8] c"HEAD\00\00"
@.str.3 = [25 x i8] c"Processing HEAD request\0A\00"
@.str.4 = [6 x i8] c"POST\00\00"
@.str.5 = [25 x i8] c"Processing POST request\0A\00"
@.str.6 = [5 x i8] c"PUT\00\00"
@.str.7 = [24 x i8] c"Processing PUT request\0A\00"
@.str.8 = [8 x i8] c"DELETE\00\00"
@.str.9 = [27 x i8] c"Processing DELETE request\0A\00"
@.str.10 = [9 x i8] c"CONNECT\00\00"
@.str.11 = [28 x i8] c"Processing CONNECT request\0A\00"
@.str.12 = [9 x i8] c"OPTIONS\00\00"
@.str.13 = [28 x i8] c"Processing OPTIONS request\0A\00"
@.str.14 = [7 x i8] c"TRACE\00\00"
@.str.15 = [26 x i8] c"Processing TRACE request\0A\00"
@.str.16 = [1 x i8] zeroinitializer
@.str.17 = [33 x i8] c"\1B[31mRequest method missing\0A\1B[0m\00"
@.str.18 = [39 x i8] c"\1B[31mRequest method not supported\0A\1B[0m\00"
@.str.19 = [20 x i8] c"setting the method\0A\00"
define zeroext i8 @encodeMethod(i8* %0, i8 zeroext %1) {
%3 = alloca i8*
%4 = alloca i8
%5 = alloca i8
store i8* %0, i8** %3
store i8 %1, i8* %4
%6 = load i8*, i8** %3
%7 = call i64 @strncmp(i8* %6, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 4)
%8 = icmp eq i64 %7, 0
br i1 %8, label %9, label %11
9: ; preds = %2
%10 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.1, i64 0, i64 0))
store i8 1, i8* %5
br label %75
11: ; preds = %2
%12 = load i8*, i8** %3
%13 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 5)
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %17
15: ; preds = %11
%16 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.3, i64 0, i64 0))
store i8 2, i8* %5
br label %74
17: ; preds = %11
%18 = load i8*, i8** %3
%19 = call i64 @strncmp(i8* %18, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i32 5)
%20 = icmp eq i64 %19, 0
br i1 %20, label %21, label %23
21: ; preds = %17
%22 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.5, i64 0, i64 0))
store i8 3, i8* %5
br label %73
23: ; preds = %17
%24 = load i8*, i8** %3
%25 = call i64 @strncmp(i8* %24, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 4)
%26 = icmp eq i64 %25, 0
br i1 %26, label %27, label %29
27: ; preds = %23
%28 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0))
store i8 4, i8* %5
br label %72
29: ; preds = %23
%30 = load i8*, i8** %3
%31 = call i64 @strncmp(i8* %30, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 7)
%32 = icmp eq i64 %31, 0
br i1 %32, label %33, label %35
33: ; preds = %29
%34 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.9, i64 0, i64 0))
store i8 5, i8* %5
br label %71
35: ; preds = %29
%36 = load i8*, i8** %3
%37 = call i64 @strncmp(i8* %36, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 8)
%38 = icmp eq i64 %37, 0
br i1 %38, label %39, label %41
39: ; preds = %35
%40 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0))
store i8 6, i8* %5
br label %70
41: ; preds = %35
%42 = load i8*, i8** %3
%43 = call i64 @strncmp(i8* %42, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i32 8)
%44 = icmp eq i64 %43, 0
br i1 %44, label %45, label %47
45: ; preds = %41
%46 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.13, i64 0, i64 0))
store i8 7, i8* %5
br label %69
47: ; preds = %41
%48 = load i8*, i8** %3
%49 = call i64 @strncmp(i8* %48, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0), i32 6)
%50 = icmp eq i64 %49, 0
br i1 %50, label %51, label %53
51: ; preds = %47
%52 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.15, i64 0, i64 0))
store i8 8, i8* %5
br label %68
53: ; preds = %47
%54 = load i8*, i8** %3
%55 = icmp eq i8* %54, getelementptr inbounds ([1 x i8], [1 x i8]* @.str.16, i64 0, i64 0)
br i1 %55, label %59, label %56
56: ; preds = %53
%57 = load i8*, i8** %3
%58 = icmp eq i8* %57, null
br i1 %58, label %59, label %63
59: ; preds = %56, %53
%60 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.17, i64 0, i64 0))
%61 = load i8, i8* %4
%62 = call i32 @printByteDebug(i8 zeroext %61)
store i8 0, i8* %5
br label %67
63: ; preds = %56
%64 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.18, i64 0, i64 0))
%65 = load i8, i8* %4
%66 = call i32 @printByteDebug(i8 zeroext %65)
store i8 0, i8* %5
br label %67
67: ; preds = %63, %59
br label %68
68: ; preds = %67, %51
br label %69
69: ; preds = %68, %45
br label %70
70: ; preds = %69, %39
br label %71
71: ; preds = %70, %33
br label %72
72: ; preds = %71, %27
br label %73
73: ; preds = %72, %21
br label %74
74: ; preds = %73, %15
br label %75
75: ; preds = %74, %9
%76 = call i32 @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.19, i64 0, i64 0))
%77 = load i8, i8* %4
%78 = zext i8 %77 to i32
%79 = and i32 %78, 15
%80 = load i8, i8* %5
%81 = zext i8 %80 to i32
%82 = shl i32 %81, 4
%83 = and i32 %82, -16
%84 = or i32 %79, %83
%85 = trunc i32 %84 to i8
store i8 %85, i8* %4
%86 = load i8, i8* %4
ret i8 %86
}

LLVM IR (-O2):
@.str = [5 x i8] c"GET\00\00"
@.str.2 = [6 x i8] c"HEAD\00\00"
@.str.4 = [6 x i8] c"POST\00\00"
@.str.6 = [5 x i8] c"PUT\00\00"
@.str.8 = [8 x i8] c"DELETE\00\00"
@.str.10 = [9 x i8] c"CONNECT\00\00"
@.str.12 = [9 x i8] c"OPTIONS\00\00"
@.str.14 = [7 x i8] c"TRACE\00\00"
@.str.16 = [1 x i8] zeroinitializer
@.str.17 = [33 x i8] c"\1B[31mRequest method missing\0A\1B[0m\00"
@.str.18 = [39 x i8] c"\1B[31mRequest method not supported\0A\1B[0m\00"
@str = [19 x i8] c"setting the method\00"
@str.20 = [25 x i8] c"Processing TRACE request\00"
@str.21 = [27 x i8] c"Processing OPTIONS request\00"
@str.22 = [27 x i8] c"Processing CONNECT request\00"
@str.23 = [26 x i8] c"Processing DELETE request\00"
@str.24 = [23 x i8] c"Processing PUT request\00"
@str.25 = [24 x i8] c"Processing POST request\00"
@str.26 = [24 x i8] c"Processing HEAD request\00"
@str.27 = [23 x i8] c"Processing GET request\00"
define zeroext i8 @encodeMethod(i8* %0, i8 zeroext %1) {
%3 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 4)
%4 = icmp eq i64 %3, 0
br i1 %4, label %5, label %7
5: ; preds = %2
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.27, i64 0, i64 0))
br label %52
7: ; preds = %2
%8 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 5)
%9 = icmp eq i64 %8, 0
br i1 %9, label %10, label %12
10: ; preds = %7
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.26, i64 0, i64 0))
br label %52
12: ; preds = %7
%13 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), i32 5)
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %17
15: ; preds = %12
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.25, i64 0, i64 0))
br label %52
17: ; preds = %12
%18 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 4)
%19 = icmp eq i64 %18, 0
br i1 %19, label %20, label %22
20: ; preds = %17
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.24, i64 0, i64 0))
br label %52
22: ; preds = %17
%23 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i32 7)
%24 = icmp eq i64 %23, 0
br i1 %24, label %25, label %27
25: ; preds = %22
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.23, i64 0, i64 0))
br label %52
27: ; preds = %22
%28 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 8)
%29 = icmp eq i64 %28, 0
br i1 %29, label %30, label %32
30: ; preds = %27
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.22, i64 0, i64 0))
br label %52
32: ; preds = %27
%33 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i32 8)
%34 = icmp eq i64 %33, 0
br i1 %34, label %35, label %37
35: ; preds = %32
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.21, i64 0, i64 0))
br label %52
37: ; preds = %32
%38 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0), i32 6)
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %42
40: ; preds = %37
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.20, i64 0, i64 0))
br label %52
42: ; preds = %37
%43 = icmp eq i8* %0, getelementptr inbounds ([1 x i8], [1 x i8]* @.str.16, i64 0, i64 0)
%44 = icmp eq i8* %0, null
%45 = or i1 %43, %44
br i1 %45, label %46, label %49
46: ; preds = %42
%47 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.17, i64 0, i64 0))
%48 = tail call i32 @printByteDebug(i8 zeroext %1)
br label %52
49: ; preds = %42
%50 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.18, i64 0, i64 0))
%51 = tail call i32 @printByteDebug(i8 zeroext %1)
br label %52
52: ; preds = %10, %20, %30, %40, %49, %46, %35, %25, %15, %5
%53 = phi i8 [ 16, %5 ], [ 32, %10 ], [ 48, %15 ], [ 64, %20 ], [ 80, %25 ], [ 96, %30 ], [ 112, %35 ], [ -128, %40 ], [ 0, %46 ], [ 0, %49 ]
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str, i64 0, i64 0))
%55 = and i8 %1, 15
%56 = or i8 %53, %55
ret i8 %56
}