#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*/ printf(char *);
int /*<<< orphan*/ test_caesar(char *, char *, int);
int main() {
  test_caesar("", "", 0);
  test_caesar("", "", 1);
  test_caesar("abcdef", "abcdef", 0);
  test_caesar("abcdef", "bcdefg", 1);
  test_caesar("abcdef", "cdefgh", 2);
  test_caesar("abcdef", "{|}~ !", 26);
  test_caesar("abcdef", "|}~ !\"", 27);
  test_caesar("vwxyz", "wxyz{", 1);
  test_caesar("bcdefg", "abcdef", -1);
  test_caesar("cdefgh", "abcdef", -2);
  test_caesar("abcdef", "`abcde", -1);
  test_caesar("ABCDEF", "ABCDEF", 0);
  test_caesar("ABCDEF", "BCDEFG", 1);
  test_caesar("ABCDEF", "CDEFGH", 2);
  test_caesar("ABCDEF", "[\\]^_`", 26);
  test_caesar("ABCDEF", "\\]^_`a", 27);
  test_caesar("VWXYZ", "WXYZ[", 1);
  test_caesar("BCDEFG", "ABCDEF", -1);
  test_caesar("CDEFGH", "ABCDEF", -2);
  test_caesar("ABCDEF", "@ABCDE", -1);
  test_caesar("012345", "012345", 0);
  test_caesar("012345", "123456", 1);
  test_caesar("012345", "234567", 2);
  test_caesar("012345", ":;<=>?", 10);
  test_caesar("012345", ";<=>?@", 11);
  test_caesar("67890", "789:1", 1);
  test_caesar("123456", "012345", -1);
  test_caesar("234567", "012345", -2);
  test_caesar("012345", "/01234", -1);
  printf("Caesar cipher passed all tests\n");
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xf8b(%rip),%rsi
xor    %edx,%edx
mov    %rsi,%rdi
call   1030 <test_caesar@plt>
lea    0xf7a(%rip),%rsi
mov    $0x1,%edx
mov    %rsi,%rdi
call   1030 <test_caesar@plt>
lea    0xea5(%rip),%rsi
xor    %edx,%edx
mov    %rsi,%rdi
call   1030 <test_caesar@plt>
lea    0xe94(%rip),%rdi
lea    0xe94(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xe7c(%rip),%rdi
lea    0xe83(%rip),%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xe64(%rip),%rdi
lea    0xe72(%rip),%rsi
mov    $0x1a,%edx
call   1030 <test_caesar@plt>
lea    0xe4c(%rip),%rdi
lea    0xe61(%rip),%rsi
mov    $0x1b,%edx
call   1030 <test_caesar@plt>
lea    0xe57(%rip),%rdi
lea    0xe56(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xe23(%rip),%rdi
lea    0xe15(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xe12(%rip),%rdi
lea    0xdfd(%rip),%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xdec(%rip),%rdi
lea    0xe14(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xe0a(%rip),%rsi
xor    %edx,%edx
mov    %rsi,%rdi
call   1030 <test_caesar@plt>
lea    0xdf9(%rip),%rdi
lea    0xdf9(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xde1(%rip),%rdi
lea    0xde8(%rip),%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xdc9(%rip),%rdi
lea    0xdd7(%rip),%rsi
mov    $0x1a,%edx
call   1030 <test_caesar@plt>
lea    0xdb1(%rip),%rdi
lea    0xdc6(%rip),%rsi
mov    $0x1b,%edx
call   1030 <test_caesar@plt>
lea    0xdbc(%rip),%rdi
lea    0xdbb(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xd88(%rip),%rdi
lea    0xd7a(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xd77(%rip),%rdi
lea    0xd62(%rip),%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xd51(%rip),%rdi
lea    0xd79(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xd6f(%rip),%rsi
xor    %edx,%edx
mov    %rsi,%rdi
call   1030 <test_caesar@plt>
lea    0xd5e(%rip),%rdi
lea    0xd5e(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xd46(%rip),%rdi
lea    0xd4d(%rip),%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xd2e(%rip),%rdi
lea    0xd3c(%rip),%rsi
mov    $0xa,%edx
call   1030 <test_caesar@plt>
lea    0xd16(%rip),%rdi
lea    0xd2b(%rip),%rsi
mov    $0xb,%edx
call   1030 <test_caesar@plt>
lea    0xd21(%rip),%rdi
lea    0xd20(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xced(%rip),%rdi
lea    0xcdf(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xcdc(%rip),%rdi
lea    0xcc7(%rip),%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xcb6(%rip),%rdi
lea    0xcde(%rip),%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xcd4(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
lea    0xeef(%rip),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
call   1030 <test_caesar@plt>
mov    %rbx,%rdi
mov    %rbx,%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xeb0(%rip),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
call   1030 <test_caesar@plt>
lea    0xea3(%rip),%r14
mov    %rbx,%rdi
mov    %r14,%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xe93(%rip),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xe83(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1a,%edx
call   1030 <test_caesar@plt>
lea    0xe76(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1b,%edx
call   1030 <test_caesar@plt>
lea    0xe69(%rip),%rdi
lea    0xe68(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xe3d(%rip),%rsi
mov    %rbx,%rdi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xe30(%rip),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
call   1030 <test_caesar@plt>
lea    0xe23(%rip),%r14
mov    %rbx,%rdi
mov    %r14,%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xe13(%rip),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xe03(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1a,%edx
call   1030 <test_caesar@plt>
lea    0xdf6(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1b,%edx
call   1030 <test_caesar@plt>
lea    0xde9(%rip),%rdi
lea    0xde8(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xdbd(%rip),%rsi
mov    %rbx,%rdi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xdb0(%rip),%rbx
mov    %rbx,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
call   1030 <test_caesar@plt>
lea    0xda3(%rip),%r14
mov    %rbx,%rdi
mov    %r14,%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
lea    0xd93(%rip),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <test_caesar@plt>
lea    0xd83(%rip),%rsi
mov    %rbx,%rdi
mov    $0xa,%edx
call   1030 <test_caesar@plt>
lea    0xd76(%rip),%rsi
mov    %rbx,%rdi
mov    $0xb,%edx
call   1030 <test_caesar@plt>
lea    0xd69(%rip),%rdi
lea    0xd68(%rip),%rsi
mov    $0x1,%edx
call   1030 <test_caesar@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xfffffffe,%edx
call   1030 <test_caesar@plt>
lea    0xd3d(%rip),%rsi
mov    %rbx,%rdi
mov    $0xffffffff,%edx
call   1030 <test_caesar@plt>
lea    0xd30(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [1 x i8] zeroinitializer
@.str.1 = [7 x i8] c"abcdef\00"
@.str.2 = [7 x i8] c"bcdefg\00"
@.str.3 = [7 x i8] c"cdefgh\00"
@.str.4 = [7 x i8] c"{|}~ !\00"
@.str.5 = [7 x i8] c"|}~ !\22\00"
@.str.6 = [6 x i8] c"vwxyz\00"
@.str.7 = [6 x i8] c"wxyz{\00"
@.str.8 = [7 x i8] c"`abcde\00"
@.str.9 = [7 x i8] c"ABCDEF\00"
@.str.10 = [7 x i8] c"BCDEFG\00"
@.str.11 = [7 x i8] c"CDEFGH\00"
@.str.12 = [7 x i8] c"[\\]^_`\00"
@.str.13 = [7 x i8] c"\\]^_`a\00"
@.str.14 = [6 x i8] c"VWXYZ\00"
@.str.15 = [6 x i8] c"WXYZ[\00"
@.str.16 = [7 x i8] c"@ABCDE\00"
@.str.17 = [7 x i8] c"012345\00"
@.str.18 = [7 x i8] c"123456\00"
@.str.19 = [7 x i8] c"234567\00"
@.str.20 = [7 x i8] c":;<=>?\00"
@.str.21 = [7 x i8] c";<=>?@\00"
@.str.22 = [6 x i8] c"67890\00"
@.str.23 = [6 x i8] c"789:1\00"
@.str.24 = [7 x i8] c"/01234\00"
@.str.25 = [32 x i8] c"Caesar cipher passed all tests\0A\00"
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 @test_caesar(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i32 0)
%3 = call i32 @test_caesar(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i32 1)
%4 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 0)
%5 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i32 1)
%6 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i32 2)
%7 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i32 26)
%8 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i32 27)
%9 = call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%10 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 -1)
%11 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 -2)
%12 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%13 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 0)
%14 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.10, i64 0, i64 0), i32 1)
%15 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32 2)
%16 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), i32 26)
%17 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0), i32 27)
%18 = call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i32 1)
%19 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 -1)
%20 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 -2)
%21 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i32 -1)
%22 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 0)
%23 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0), i32 1)
%24 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), i32 2)
%25 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.20, i64 0, i64 0), i32 10)
%26 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i32 11)
%27 = call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i32 1)
%28 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 -1)
%29 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 -2)
%30 = call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0), i32 -1)
%31 = call i32 @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.25, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str = [1 x i8] zeroinitializer
@.str.1 = [7 x i8] c"abcdef\00"
@.str.2 = [7 x i8] c"bcdefg\00"
@.str.3 = [7 x i8] c"cdefgh\00"
@.str.4 = [7 x i8] c"{|}~ !\00"
@.str.5 = [7 x i8] c"|}~ !\22\00"
@.str.6 = [6 x i8] c"vwxyz\00"
@.str.7 = [6 x i8] c"wxyz{\00"
@.str.8 = [7 x i8] c"`abcde\00"
@.str.9 = [7 x i8] c"ABCDEF\00"
@.str.10 = [7 x i8] c"BCDEFG\00"
@.str.11 = [7 x i8] c"CDEFGH\00"
@.str.12 = [7 x i8] c"[\\]^_`\00"
@.str.13 = [7 x i8] c"\\]^_`a\00"
@.str.14 = [6 x i8] c"VWXYZ\00"
@.str.15 = [6 x i8] c"WXYZ[\00"
@.str.16 = [7 x i8] c"@ABCDE\00"
@.str.17 = [7 x i8] c"012345\00"
@.str.18 = [7 x i8] c"123456\00"
@.str.19 = [7 x i8] c"234567\00"
@.str.20 = [7 x i8] c":;<=>?\00"
@.str.21 = [7 x i8] c";<=>?@\00"
@.str.22 = [6 x i8] c"67890\00"
@.str.23 = [6 x i8] c"789:1\00"
@.str.24 = [7 x i8] c"/01234\00"
@str = [31 x i8] c"Caesar cipher passed all tests\00"
define i32 @main() {
%1 = tail call i32 @test_caesar(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i32 0)
%2 = tail call i32 @test_caesar(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i32 1)
%3 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 0)
%4 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i32 1)
%5 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i32 2)
%6 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i32 26)
%7 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), i32 27)
%8 = tail call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%9 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 -1)
%10 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 -2)
%11 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%12 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 0)
%13 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.10, i64 0, i64 0), i32 1)
%14 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32 2)
%15 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0), i32 26)
%16 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0), i32 27)
%17 = tail call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i32 1)
%18 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.10, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 -1)
%19 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i32 -2)
%20 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i32 -1)
%21 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 0)
%22 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0), i32 1)
%23 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), i32 2)
%24 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.20, i64 0, i64 0), i32 10)
%25 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i32 11)
%26 = tail call i32 @test_caesar(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.23, i64 0, i64 0), i32 1)
%27 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 -1)
%28 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i32 -2)
%29 = tail call i32 @test_caesar(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0), i32 -1)
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str, i64 0, i64 0))
ret i32 0
}