#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 */
typedef int /*<<< orphan*/ uint64_t;

/* Variables and functions */
int /*<<< orphan*/ present_sbox(int /*<<< orphan*/ *, int /*<<< orphan*/ *,
                                int /*<<< orphan*/ *, int /*<<< orphan*/ *,
                                int /*<<< orphan*/, int /*<<< orphan*/,
                                int /*<<< orphan*/, int /*<<< orphan*/);
void sBoxLayer(uint64_t *Y, uint64_t *X) {
  present_sbox(Y + 0, Y + 1, Y + 2, Y + 3, X[0], X[1], X[2], X[3]);
  present_sbox(Y + 4, Y + 5, Y + 6, Y + 7, X[4], X[5], X[6], X[7]);
  present_sbox(Y + 8, Y + 9, Y + 10, Y + 11, X[8], X[9], X[10], X[11]);
  present_sbox(Y + 12, Y + 13, Y + 14, Y + 15, X[12], X[13], X[14], X[15]);
  present_sbox(Y + 16, Y + 17, Y + 18, Y + 19, X[16], X[17], X[18], X[19]);
  present_sbox(Y + 20, Y + 21, Y + 22, Y + 23, X[20], X[21], X[22], X[23]);
  present_sbox(Y + 24, Y + 25, Y + 26, Y + 27, X[24], X[25], X[26], X[27]);
  present_sbox(Y + 28, Y + 29, Y + 30, Y + 31, X[28], X[29], X[30], X[31]);
  present_sbox(Y + 32, Y + 33, Y + 34, Y + 35, X[32], X[33], X[34], X[35]);
  present_sbox(Y + 36, Y + 37, Y + 38, Y + 39, X[36], X[37], X[38], X[39]);
  present_sbox(Y + 40, Y + 41, Y + 42, Y + 43, X[40], X[41], X[42], X[43]);
  present_sbox(Y + 44, Y + 45, Y + 46, Y + 47, X[44], X[45], X[46], X[47]);
  present_sbox(Y + 48, Y + 49, Y + 50, Y + 51, X[48], X[49], X[50], X[51]);
  present_sbox(Y + 52, Y + 53, Y + 54, Y + 55, X[52], X[53], X[54], X[55]);
  present_sbox(Y + 56, Y + 57, Y + 58, Y + 59, X[56], X[57], X[58], X[59]);
  present_sbox(Y + 60, Y + 61, Y + 62, Y + 63, X[60], X[61], X[62], X[63]);
}


x86 assembly (clang, -O0):
<sBoxLayer>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0x8(%rbp),%rsi
add    $0x4,%rsi
mov    -0x8(%rbp),%rdx
add    $0x8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xc,%rcx
mov    -0x10(%rbp),%rax
mov    (%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x10,%rdi
mov    -0x8(%rbp),%rsi
add    $0x14,%rsi
mov    -0x8(%rbp),%rdx
add    $0x18,%rdx
mov    -0x8(%rbp),%rcx
add    $0x1c,%rcx
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x20,%rdi
mov    -0x8(%rbp),%rsi
add    $0x24,%rsi
mov    -0x8(%rbp),%rdx
add    $0x28,%rdx
mov    -0x8(%rbp),%rcx
add    $0x2c,%rcx
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x24(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x2c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x30,%rdi
mov    -0x8(%rbp),%rsi
add    $0x34,%rsi
mov    -0x8(%rbp),%rdx
add    $0x38,%rdx
mov    -0x8(%rbp),%rcx
add    $0x3c,%rcx
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x34(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x3c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x40,%rdi
mov    -0x8(%rbp),%rsi
add    $0x44,%rsi
mov    -0x8(%rbp),%rdx
add    $0x48,%rdx
mov    -0x8(%rbp),%rcx
add    $0x4c,%rcx
mov    -0x10(%rbp),%rax
mov    0x40(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x44(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x48(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x4c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x50,%rdi
mov    -0x8(%rbp),%rsi
add    $0x54,%rsi
mov    -0x8(%rbp),%rdx
add    $0x58,%rdx
mov    -0x8(%rbp),%rcx
add    $0x5c,%rcx
mov    -0x10(%rbp),%rax
mov    0x50(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x54(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x58(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x5c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x60,%rdi
mov    -0x8(%rbp),%rsi
add    $0x64,%rsi
mov    -0x8(%rbp),%rdx
add    $0x68,%rdx
mov    -0x8(%rbp),%rcx
add    $0x6c,%rcx
mov    -0x10(%rbp),%rax
mov    0x60(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x64(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x68(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x6c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x70,%rdi
mov    -0x8(%rbp),%rsi
add    $0x74,%rsi
mov    -0x8(%rbp),%rdx
add    $0x78,%rdx
mov    -0x8(%rbp),%rcx
add    $0x7c,%rcx
mov    -0x10(%rbp),%rax
mov    0x70(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x74(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x78(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x7c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x80,%rdi
mov    -0x8(%rbp),%rsi
add    $0x84,%rsi
mov    -0x8(%rbp),%rdx
add    $0x88,%rdx
mov    -0x8(%rbp),%rcx
add    $0x8c,%rcx
mov    -0x10(%rbp),%rax
mov    0x80(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x84(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x88(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x8c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0x90,%rdi
mov    -0x8(%rbp),%rsi
add    $0x94,%rsi
mov    -0x8(%rbp),%rdx
add    $0x98,%rdx
mov    -0x8(%rbp),%rcx
add    $0x9c,%rcx
mov    -0x10(%rbp),%rax
mov    0x90(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0x94(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0x98(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0x9c(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xa0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xa4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xa8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xac,%rcx
mov    -0x10(%rbp),%rax
mov    0xa0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xa4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xa8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xac(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xb0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xb4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xb8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xbc,%rcx
mov    -0x10(%rbp),%rax
mov    0xb0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xb4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xb8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xbc(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xc0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xc4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xc8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xcc,%rcx
mov    -0x10(%rbp),%rax
mov    0xc0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xc4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xc8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xcc(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xd0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xd4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xd8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xdc,%rcx
mov    -0x10(%rbp),%rax
mov    0xd0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xd4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xd8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xdc(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xe0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xe4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xe8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xec,%rcx
mov    -0x10(%rbp),%rax
mov    0xe0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xe4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xe8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xec(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
mov    -0x8(%rbp),%rdi
add    $0xf0,%rdi
mov    -0x8(%rbp),%rsi
add    $0xf4,%rsi
mov    -0x8(%rbp),%rdx
add    $0xf8,%rdx
mov    -0x8(%rbp),%rcx
add    $0xfc,%rcx
mov    -0x10(%rbp),%rax
mov    0xf0(%rax),%r8d
mov    -0x10(%rbp),%rax
mov    0xf4(%rax),%r9d
mov    -0x10(%rbp),%rax
mov    0xf8(%rax),%r10d
mov    -0x10(%rbp),%rax
mov    0xfc(%rax),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
call   1030 <present_sbox@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sBoxLayer>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
lea    0x4(%rdi),%rsi
lea    0x8(%rdi),%rdx
lea    0xc(%rdi),%rcx
mov    (%r14),%r8d
mov    0x4(%r14),%r9d
mov    0x8(%r14),%r10d
mov    0xc(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x10(%rbx),%rdi
lea    0x14(%rbx),%rsi
lea    0x18(%rbx),%rdx
lea    0x1c(%rbx),%rcx
mov    0x10(%r14),%r8d
mov    0x14(%r14),%r9d
mov    0x18(%r14),%r10d
mov    0x1c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x20(%rbx),%rdi
lea    0x24(%rbx),%rsi
lea    0x28(%rbx),%rdx
lea    0x2c(%rbx),%rcx
mov    0x20(%r14),%r8d
mov    0x24(%r14),%r9d
mov    0x28(%r14),%r10d
mov    0x2c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x30(%rbx),%rdi
lea    0x34(%rbx),%rsi
lea    0x38(%rbx),%rdx
lea    0x3c(%rbx),%rcx
mov    0x30(%r14),%r8d
mov    0x34(%r14),%r9d
mov    0x38(%r14),%r10d
mov    0x3c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x40(%rbx),%rdi
lea    0x44(%rbx),%rsi
lea    0x48(%rbx),%rdx
lea    0x4c(%rbx),%rcx
mov    0x40(%r14),%r8d
mov    0x44(%r14),%r9d
mov    0x48(%r14),%r10d
mov    0x4c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x50(%rbx),%rdi
lea    0x54(%rbx),%rsi
lea    0x58(%rbx),%rdx
lea    0x5c(%rbx),%rcx
mov    0x50(%r14),%r8d
mov    0x54(%r14),%r9d
mov    0x58(%r14),%r10d
mov    0x5c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x60(%rbx),%rdi
lea    0x64(%rbx),%rsi
lea    0x68(%rbx),%rdx
lea    0x6c(%rbx),%rcx
mov    0x60(%r14),%r8d
mov    0x64(%r14),%r9d
mov    0x68(%r14),%r10d
mov    0x6c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x70(%rbx),%rdi
lea    0x74(%rbx),%rsi
lea    0x78(%rbx),%rdx
lea    0x7c(%rbx),%rcx
mov    0x70(%r14),%r8d
mov    0x74(%r14),%r9d
mov    0x78(%r14),%r10d
mov    0x7c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x80(%rbx),%rdi
lea    0x84(%rbx),%rsi
lea    0x88(%rbx),%rdx
lea    0x8c(%rbx),%rcx
mov    0x80(%r14),%r8d
mov    0x84(%r14),%r9d
mov    0x88(%r14),%r10d
mov    0x8c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0x90(%rbx),%rdi
lea    0x94(%rbx),%rsi
lea    0x98(%rbx),%rdx
lea    0x9c(%rbx),%rcx
mov    0x90(%r14),%r8d
mov    0x94(%r14),%r9d
mov    0x98(%r14),%r10d
mov    0x9c(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xa0(%rbx),%rdi
lea    0xa4(%rbx),%rsi
lea    0xa8(%rbx),%rdx
lea    0xac(%rbx),%rcx
mov    0xa0(%r14),%r8d
mov    0xa4(%r14),%r9d
mov    0xa8(%r14),%r10d
mov    0xac(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xb0(%rbx),%rdi
lea    0xb4(%rbx),%rsi
lea    0xb8(%rbx),%rdx
lea    0xbc(%rbx),%rcx
mov    0xb0(%r14),%r8d
mov    0xb4(%r14),%r9d
mov    0xb8(%r14),%r10d
mov    0xbc(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xc0(%rbx),%rdi
lea    0xc4(%rbx),%rsi
lea    0xc8(%rbx),%rdx
lea    0xcc(%rbx),%rcx
mov    0xc0(%r14),%r8d
mov    0xc4(%r14),%r9d
mov    0xc8(%r14),%r10d
mov    0xcc(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xd0(%rbx),%rdi
lea    0xd4(%rbx),%rsi
lea    0xd8(%rbx),%rdx
lea    0xdc(%rbx),%rcx
mov    0xd0(%r14),%r8d
mov    0xd4(%r14),%r9d
mov    0xd8(%r14),%r10d
mov    0xdc(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xe0(%rbx),%rdi
lea    0xe4(%rbx),%rsi
lea    0xe8(%rbx),%rdx
lea    0xec(%rbx),%rcx
mov    0xe0(%r14),%r8d
mov    0xe4(%r14),%r9d
mov    0xe8(%r14),%r10d
mov    0xec(%r14),%eax
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x10,%rsp
lea    0xf0(%rbx),%rdi
lea    0xf4(%rbx),%rsi
lea    0xf8(%rbx),%rdx
add    $0xfc,%rbx
mov    0xf0(%r14),%r8d
mov    0xf4(%r14),%r9d
mov    0xf8(%r14),%r10d
mov    0xfc(%r14),%eax
mov    %rbx,%rcx
push   %rax
push   %r10
call   1030 <present_sbox@plt>
add    $0x18,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @sBoxLayer(i32* %0, i32* %1) {
%3 = alloca i32*
%4 = alloca i32*
store i32* %0, i32** %3
store i32* %1, i32** %4
%5 = load i32*, i32** %3
%6 = getelementptr inbounds i32, i32* %5, i64 0
%7 = load i32*, i32** %3
%8 = getelementptr inbounds i32, i32* %7, i64 1
%9 = load i32*, i32** %3
%10 = getelementptr inbounds i32, i32* %9, i64 2
%11 = load i32*, i32** %3
%12 = getelementptr inbounds i32, i32* %11, i64 3
%13 = load i32*, i32** %4
%14 = getelementptr inbounds i32, i32* %13, i64 0
%15 = load i32, i32* %14
%16 = load i32*, i32** %4
%17 = getelementptr inbounds i32, i32* %16, i64 1
%18 = load i32, i32* %17
%19 = load i32*, i32** %4
%20 = getelementptr inbounds i32, i32* %19, i64 2
%21 = load i32, i32* %20
%22 = load i32*, i32** %4
%23 = getelementptr inbounds i32, i32* %22, i64 3
%24 = load i32, i32* %23
%25 = call i32 @present_sbox(i32* %6, i32* %8, i32* %10, i32* %12, i32 %15, i32 %18, i32 %21, i32 %24)
%26 = load i32*, i32** %3
%27 = getelementptr inbounds i32, i32* %26, i64 4
%28 = load i32*, i32** %3
%29 = getelementptr inbounds i32, i32* %28, i64 5
%30 = load i32*, i32** %3
%31 = getelementptr inbounds i32, i32* %30, i64 6
%32 = load i32*, i32** %3
%33 = getelementptr inbounds i32, i32* %32, i64 7
%34 = load i32*, i32** %4
%35 = getelementptr inbounds i32, i32* %34, i64 4
%36 = load i32, i32* %35
%37 = load i32*, i32** %4
%38 = getelementptr inbounds i32, i32* %37, i64 5
%39 = load i32, i32* %38
%40 = load i32*, i32** %4
%41 = getelementptr inbounds i32, i32* %40, i64 6
%42 = load i32, i32* %41
%43 = load i32*, i32** %4
%44 = getelementptr inbounds i32, i32* %43, i64 7
%45 = load i32, i32* %44
%46 = call i32 @present_sbox(i32* %27, i32* %29, i32* %31, i32* %33, i32 %36, i32 %39, i32 %42, i32 %45)
%47 = load i32*, i32** %3
%48 = getelementptr inbounds i32, i32* %47, i64 8
%49 = load i32*, i32** %3
%50 = getelementptr inbounds i32, i32* %49, i64 9
%51 = load i32*, i32** %3
%52 = getelementptr inbounds i32, i32* %51, i64 10
%53 = load i32*, i32** %3
%54 = getelementptr inbounds i32, i32* %53, i64 11
%55 = load i32*, i32** %4
%56 = getelementptr inbounds i32, i32* %55, i64 8
%57 = load i32, i32* %56
%58 = load i32*, i32** %4
%59 = getelementptr inbounds i32, i32* %58, i64 9
%60 = load i32, i32* %59
%61 = load i32*, i32** %4
%62 = getelementptr inbounds i32, i32* %61, i64 10
%63 = load i32, i32* %62
%64 = load i32*, i32** %4
%65 = getelementptr inbounds i32, i32* %64, i64 11
%66 = load i32, i32* %65
%67 = call i32 @present_sbox(i32* %48, i32* %50, i32* %52, i32* %54, i32 %57, i32 %60, i32 %63, i32 %66)
%68 = load i32*, i32** %3
%69 = getelementptr inbounds i32, i32* %68, i64 12
%70 = load i32*, i32** %3
%71 = getelementptr inbounds i32, i32* %70, i64 13
%72 = load i32*, i32** %3
%73 = getelementptr inbounds i32, i32* %72, i64 14
%74 = load i32*, i32** %3
%75 = getelementptr inbounds i32, i32* %74, i64 15
%76 = load i32*, i32** %4
%77 = getelementptr inbounds i32, i32* %76, i64 12
%78 = load i32, i32* %77
%79 = load i32*, i32** %4
%80 = getelementptr inbounds i32, i32* %79, i64 13
%81 = load i32, i32* %80
%82 = load i32*, i32** %4
%83 = getelementptr inbounds i32, i32* %82, i64 14
%84 = load i32, i32* %83
%85 = load i32*, i32** %4
%86 = getelementptr inbounds i32, i32* %85, i64 15
%87 = load i32, i32* %86
%88 = call i32 @present_sbox(i32* %69, i32* %71, i32* %73, i32* %75, i32 %78, i32 %81, i32 %84, i32 %87)
%89 = load i32*, i32** %3
%90 = getelementptr inbounds i32, i32* %89, i64 16
%91 = load i32*, i32** %3
%92 = getelementptr inbounds i32, i32* %91, i64 17
%93 = load i32*, i32** %3
%94 = getelementptr inbounds i32, i32* %93, i64 18
%95 = load i32*, i32** %3
%96 = getelementptr inbounds i32, i32* %95, i64 19
%97 = load i32*, i32** %4
%98 = getelementptr inbounds i32, i32* %97, i64 16
%99 = load i32, i32* %98
%100 = load i32*, i32** %4
%101 = getelementptr inbounds i32, i32* %100, i64 17
%102 = load i32, i32* %101
%103 = load i32*, i32** %4
%104 = getelementptr inbounds i32, i32* %103, i64 18
%105 = load i32, i32* %104
%106 = load i32*, i32** %4
%107 = getelementptr inbounds i32, i32* %106, i64 19
%108 = load i32, i32* %107
%109 = call i32 @present_sbox(i32* %90, i32* %92, i32* %94, i32* %96, i32 %99, i32 %102, i32 %105, i32 %108)
%110 = load i32*, i32** %3
%111 = getelementptr inbounds i32, i32* %110, i64 20
%112 = load i32*, i32** %3
%113 = getelementptr inbounds i32, i32* %112, i64 21
%114 = load i32*, i32** %3
%115 = getelementptr inbounds i32, i32* %114, i64 22
%116 = load i32*, i32** %3
%117 = getelementptr inbounds i32, i32* %116, i64 23
%118 = load i32*, i32** %4
%119 = getelementptr inbounds i32, i32* %118, i64 20
%120 = load i32, i32* %119
%121 = load i32*, i32** %4
%122 = getelementptr inbounds i32, i32* %121, i64 21
%123 = load i32, i32* %122
%124 = load i32*, i32** %4
%125 = getelementptr inbounds i32, i32* %124, i64 22
%126 = load i32, i32* %125
%127 = load i32*, i32** %4
%128 = getelementptr inbounds i32, i32* %127, i64 23
%129 = load i32, i32* %128
%130 = call i32 @present_sbox(i32* %111, i32* %113, i32* %115, i32* %117, i32 %120, i32 %123, i32 %126, i32 %129)
%131 = load i32*, i32** %3
%132 = getelementptr inbounds i32, i32* %131, i64 24
%133 = load i32*, i32** %3
%134 = getelementptr inbounds i32, i32* %133, i64 25
%135 = load i32*, i32** %3
%136 = getelementptr inbounds i32, i32* %135, i64 26
%137 = load i32*, i32** %3
%138 = getelementptr inbounds i32, i32* %137, i64 27
%139 = load i32*, i32** %4
%140 = getelementptr inbounds i32, i32* %139, i64 24
%141 = load i32, i32* %140
%142 = load i32*, i32** %4
%143 = getelementptr inbounds i32, i32* %142, i64 25
%144 = load i32, i32* %143
%145 = load i32*, i32** %4
%146 = getelementptr inbounds i32, i32* %145, i64 26
%147 = load i32, i32* %146
%148 = load i32*, i32** %4
%149 = getelementptr inbounds i32, i32* %148, i64 27
%150 = load i32, i32* %149
%151 = call i32 @present_sbox(i32* %132, i32* %134, i32* %136, i32* %138, i32 %141, i32 %144, i32 %147, i32 %150)
%152 = load i32*, i32** %3
%153 = getelementptr inbounds i32, i32* %152, i64 28
%154 = load i32*, i32** %3
%155 = getelementptr inbounds i32, i32* %154, i64 29
%156 = load i32*, i32** %3
%157 = getelementptr inbounds i32, i32* %156, i64 30
%158 = load i32*, i32** %3
%159 = getelementptr inbounds i32, i32* %158, i64 31
%160 = load i32*, i32** %4
%161 = getelementptr inbounds i32, i32* %160, i64 28
%162 = load i32, i32* %161
%163 = load i32*, i32** %4
%164 = getelementptr inbounds i32, i32* %163, i64 29
%165 = load i32, i32* %164
%166 = load i32*, i32** %4
%167 = getelementptr inbounds i32, i32* %166, i64 30
%168 = load i32, i32* %167
%169 = load i32*, i32** %4
%170 = getelementptr inbounds i32, i32* %169, i64 31
%171 = load i32, i32* %170
%172 = call i32 @present_sbox(i32* %153, i32* %155, i32* %157, i32* %159, i32 %162, i32 %165, i32 %168, i32 %171)
%173 = load i32*, i32** %3
%174 = getelementptr inbounds i32, i32* %173, i64 32
%175 = load i32*, i32** %3
%176 = getelementptr inbounds i32, i32* %175, i64 33
%177 = load i32*, i32** %3
%178 = getelementptr inbounds i32, i32* %177, i64 34
%179 = load i32*, i32** %3
%180 = getelementptr inbounds i32, i32* %179, i64 35
%181 = load i32*, i32** %4
%182 = getelementptr inbounds i32, i32* %181, i64 32
%183 = load i32, i32* %182
%184 = load i32*, i32** %4
%185 = getelementptr inbounds i32, i32* %184, i64 33
%186 = load i32, i32* %185
%187 = load i32*, i32** %4
%188 = getelementptr inbounds i32, i32* %187, i64 34
%189 = load i32, i32* %188
%190 = load i32*, i32** %4
%191 = getelementptr inbounds i32, i32* %190, i64 35
%192 = load i32, i32* %191
%193 = call i32 @present_sbox(i32* %174, i32* %176, i32* %178, i32* %180, i32 %183, i32 %186, i32 %189, i32 %192)
%194 = load i32*, i32** %3
%195 = getelementptr inbounds i32, i32* %194, i64 36
%196 = load i32*, i32** %3
%197 = getelementptr inbounds i32, i32* %196, i64 37
%198 = load i32*, i32** %3
%199 = getelementptr inbounds i32, i32* %198, i64 38
%200 = load i32*, i32** %3
%201 = getelementptr inbounds i32, i32* %200, i64 39
%202 = load i32*, i32** %4
%203 = getelementptr inbounds i32, i32* %202, i64 36
%204 = load i32, i32* %203
%205 = load i32*, i32** %4
%206 = getelementptr inbounds i32, i32* %205, i64 37
%207 = load i32, i32* %206
%208 = load i32*, i32** %4
%209 = getelementptr inbounds i32, i32* %208, i64 38
%210 = load i32, i32* %209
%211 = load i32*, i32** %4
%212 = getelementptr inbounds i32, i32* %211, i64 39
%213 = load i32, i32* %212
%214 = call i32 @present_sbox(i32* %195, i32* %197, i32* %199, i32* %201, i32 %204, i32 %207, i32 %210, i32 %213)
%215 = load i32*, i32** %3
%216 = getelementptr inbounds i32, i32* %215, i64 40
%217 = load i32*, i32** %3
%218 = getelementptr inbounds i32, i32* %217, i64 41
%219 = load i32*, i32** %3
%220 = getelementptr inbounds i32, i32* %219, i64 42
%221 = load i32*, i32** %3
%222 = getelementptr inbounds i32, i32* %221, i64 43
%223 = load i32*, i32** %4
%224 = getelementptr inbounds i32, i32* %223, i64 40
%225 = load i32, i32* %224
%226 = load i32*, i32** %4
%227 = getelementptr inbounds i32, i32* %226, i64 41
%228 = load i32, i32* %227
%229 = load i32*, i32** %4
%230 = getelementptr inbounds i32, i32* %229, i64 42
%231 = load i32, i32* %230
%232 = load i32*, i32** %4
%233 = getelementptr inbounds i32, i32* %232, i64 43
%234 = load i32, i32* %233
%235 = call i32 @present_sbox(i32* %216, i32* %218, i32* %220, i32* %222, i32 %225, i32 %228, i32 %231, i32 %234)
%236 = load i32*, i32** %3
%237 = getelementptr inbounds i32, i32* %236, i64 44
%238 = load i32*, i32** %3
%239 = getelementptr inbounds i32, i32* %238, i64 45
%240 = load i32*, i32** %3
%241 = getelementptr inbounds i32, i32* %240, i64 46
%242 = load i32*, i32** %3
%243 = getelementptr inbounds i32, i32* %242, i64 47
%244 = load i32*, i32** %4
%245 = getelementptr inbounds i32, i32* %244, i64 44
%246 = load i32, i32* %245
%247 = load i32*, i32** %4
%248 = getelementptr inbounds i32, i32* %247, i64 45
%249 = load i32, i32* %248
%250 = load i32*, i32** %4
%251 = getelementptr inbounds i32, i32* %250, i64 46
%252 = load i32, i32* %251
%253 = load i32*, i32** %4
%254 = getelementptr inbounds i32, i32* %253, i64 47
%255 = load i32, i32* %254
%256 = call i32 @present_sbox(i32* %237, i32* %239, i32* %241, i32* %243, i32 %246, i32 %249, i32 %252, i32 %255)
%257 = load i32*, i32** %3
%258 = getelementptr inbounds i32, i32* %257, i64 48
%259 = load i32*, i32** %3
%260 = getelementptr inbounds i32, i32* %259, i64 49
%261 = load i32*, i32** %3
%262 = getelementptr inbounds i32, i32* %261, i64 50
%263 = load i32*, i32** %3
%264 = getelementptr inbounds i32, i32* %263, i64 51
%265 = load i32*, i32** %4
%266 = getelementptr inbounds i32, i32* %265, i64 48
%267 = load i32, i32* %266
%268 = load i32*, i32** %4
%269 = getelementptr inbounds i32, i32* %268, i64 49
%270 = load i32, i32* %269
%271 = load i32*, i32** %4
%272 = getelementptr inbounds i32, i32* %271, i64 50
%273 = load i32, i32* %272
%274 = load i32*, i32** %4
%275 = getelementptr inbounds i32, i32* %274, i64 51
%276 = load i32, i32* %275
%277 = call i32 @present_sbox(i32* %258, i32* %260, i32* %262, i32* %264, i32 %267, i32 %270, i32 %273, i32 %276)
%278 = load i32*, i32** %3
%279 = getelementptr inbounds i32, i32* %278, i64 52
%280 = load i32*, i32** %3
%281 = getelementptr inbounds i32, i32* %280, i64 53
%282 = load i32*, i32** %3
%283 = getelementptr inbounds i32, i32* %282, i64 54
%284 = load i32*, i32** %3
%285 = getelementptr inbounds i32, i32* %284, i64 55
%286 = load i32*, i32** %4
%287 = getelementptr inbounds i32, i32* %286, i64 52
%288 = load i32, i32* %287
%289 = load i32*, i32** %4
%290 = getelementptr inbounds i32, i32* %289, i64 53
%291 = load i32, i32* %290
%292 = load i32*, i32** %4
%293 = getelementptr inbounds i32, i32* %292, i64 54
%294 = load i32, i32* %293
%295 = load i32*, i32** %4
%296 = getelementptr inbounds i32, i32* %295, i64 55
%297 = load i32, i32* %296
%298 = call i32 @present_sbox(i32* %279, i32* %281, i32* %283, i32* %285, i32 %288, i32 %291, i32 %294, i32 %297)
%299 = load i32*, i32** %3
%300 = getelementptr inbounds i32, i32* %299, i64 56
%301 = load i32*, i32** %3
%302 = getelementptr inbounds i32, i32* %301, i64 57
%303 = load i32*, i32** %3
%304 = getelementptr inbounds i32, i32* %303, i64 58
%305 = load i32*, i32** %3
%306 = getelementptr inbounds i32, i32* %305, i64 59
%307 = load i32*, i32** %4
%308 = getelementptr inbounds i32, i32* %307, i64 56
%309 = load i32, i32* %308
%310 = load i32*, i32** %4
%311 = getelementptr inbounds i32, i32* %310, i64 57
%312 = load i32, i32* %311
%313 = load i32*, i32** %4
%314 = getelementptr inbounds i32, i32* %313, i64 58
%315 = load i32, i32* %314
%316 = load i32*, i32** %4
%317 = getelementptr inbounds i32, i32* %316, i64 59
%318 = load i32, i32* %317
%319 = call i32 @present_sbox(i32* %300, i32* %302, i32* %304, i32* %306, i32 %309, i32 %312, i32 %315, i32 %318)
%320 = load i32*, i32** %3
%321 = getelementptr inbounds i32, i32* %320, i64 60
%322 = load i32*, i32** %3
%323 = getelementptr inbounds i32, i32* %322, i64 61
%324 = load i32*, i32** %3
%325 = getelementptr inbounds i32, i32* %324, i64 62
%326 = load i32*, i32** %3
%327 = getelementptr inbounds i32, i32* %326, i64 63
%328 = load i32*, i32** %4
%329 = getelementptr inbounds i32, i32* %328, i64 60
%330 = load i32, i32* %329
%331 = load i32*, i32** %4
%332 = getelementptr inbounds i32, i32* %331, i64 61
%333 = load i32, i32* %332
%334 = load i32*, i32** %4
%335 = getelementptr inbounds i32, i32* %334, i64 62
%336 = load i32, i32* %335
%337 = load i32*, i32** %4
%338 = getelementptr inbounds i32, i32* %337, i64 63
%339 = load i32, i32* %338
%340 = call i32 @present_sbox(i32* %321, i32* %323, i32* %325, i32* %327, i32 %330, i32 %333, i32 %336, i32 %339)
ret void
}

LLVM IR (-O2):
define void @sBoxLayer(i32* %0, i32* %1) {
%3 = getelementptr inbounds i32, i32* %0, i64 1
%4 = getelementptr inbounds i32, i32* %0, i64 2
%5 = getelementptr inbounds i32, i32* %0, i64 3
%6 = load i32, i32* %1
%7 = getelementptr inbounds i32, i32* %1, i64 1
%8 = load i32, i32* %7
%9 = getelementptr inbounds i32, i32* %1, i64 2
%10 = load i32, i32* %9
%11 = getelementptr inbounds i32, i32* %1, i64 3
%12 = load i32, i32* %11
%13 = tail call i32 @present_sbox(i32* %0, i32* %3, i32* %4, i32* %5, i32 %6, i32 %8, i32 %10, i32 %12)
%14 = getelementptr inbounds i32, i32* %0, i64 4
%15 = getelementptr inbounds i32, i32* %0, i64 5
%16 = getelementptr inbounds i32, i32* %0, i64 6
%17 = getelementptr inbounds i32, i32* %0, i64 7
%18 = getelementptr inbounds i32, i32* %1, i64 4
%19 = load i32, i32* %18
%20 = getelementptr inbounds i32, i32* %1, i64 5
%21 = load i32, i32* %20
%22 = getelementptr inbounds i32, i32* %1, i64 6
%23 = load i32, i32* %22
%24 = getelementptr inbounds i32, i32* %1, i64 7
%25 = load i32, i32* %24
%26 = tail call i32 @present_sbox(i32* %14, i32* %15, i32* %16, i32* %17, i32 %19, i32 %21, i32 %23, i32 %25)
%27 = getelementptr inbounds i32, i32* %0, i64 8
%28 = getelementptr inbounds i32, i32* %0, i64 9
%29 = getelementptr inbounds i32, i32* %0, i64 10
%30 = getelementptr inbounds i32, i32* %0, i64 11
%31 = getelementptr inbounds i32, i32* %1, i64 8
%32 = load i32, i32* %31
%33 = getelementptr inbounds i32, i32* %1, i64 9
%34 = load i32, i32* %33
%35 = getelementptr inbounds i32, i32* %1, i64 10
%36 = load i32, i32* %35
%37 = getelementptr inbounds i32, i32* %1, i64 11
%38 = load i32, i32* %37
%39 = tail call i32 @present_sbox(i32* %27, i32* %28, i32* %29, i32* %30, i32 %32, i32 %34, i32 %36, i32 %38)
%40 = getelementptr inbounds i32, i32* %0, i64 12
%41 = getelementptr inbounds i32, i32* %0, i64 13
%42 = getelementptr inbounds i32, i32* %0, i64 14
%43 = getelementptr inbounds i32, i32* %0, i64 15
%44 = getelementptr inbounds i32, i32* %1, i64 12
%45 = load i32, i32* %44
%46 = getelementptr inbounds i32, i32* %1, i64 13
%47 = load i32, i32* %46
%48 = getelementptr inbounds i32, i32* %1, i64 14
%49 = load i32, i32* %48
%50 = getelementptr inbounds i32, i32* %1, i64 15
%51 = load i32, i32* %50
%52 = tail call i32 @present_sbox(i32* %40, i32* %41, i32* %42, i32* %43, i32 %45, i32 %47, i32 %49, i32 %51)
%53 = getelementptr inbounds i32, i32* %0, i64 16
%54 = getelementptr inbounds i32, i32* %0, i64 17
%55 = getelementptr inbounds i32, i32* %0, i64 18
%56 = getelementptr inbounds i32, i32* %0, i64 19
%57 = getelementptr inbounds i32, i32* %1, i64 16
%58 = load i32, i32* %57
%59 = getelementptr inbounds i32, i32* %1, i64 17
%60 = load i32, i32* %59
%61 = getelementptr inbounds i32, i32* %1, i64 18
%62 = load i32, i32* %61
%63 = getelementptr inbounds i32, i32* %1, i64 19
%64 = load i32, i32* %63
%65 = tail call i32 @present_sbox(i32* %53, i32* %54, i32* %55, i32* %56, i32 %58, i32 %60, i32 %62, i32 %64)
%66 = getelementptr inbounds i32, i32* %0, i64 20
%67 = getelementptr inbounds i32, i32* %0, i64 21
%68 = getelementptr inbounds i32, i32* %0, i64 22
%69 = getelementptr inbounds i32, i32* %0, i64 23
%70 = getelementptr inbounds i32, i32* %1, i64 20
%71 = load i32, i32* %70
%72 = getelementptr inbounds i32, i32* %1, i64 21
%73 = load i32, i32* %72
%74 = getelementptr inbounds i32, i32* %1, i64 22
%75 = load i32, i32* %74
%76 = getelementptr inbounds i32, i32* %1, i64 23
%77 = load i32, i32* %76
%78 = tail call i32 @present_sbox(i32* %66, i32* %67, i32* %68, i32* %69, i32 %71, i32 %73, i32 %75, i32 %77)
%79 = getelementptr inbounds i32, i32* %0, i64 24
%80 = getelementptr inbounds i32, i32* %0, i64 25
%81 = getelementptr inbounds i32, i32* %0, i64 26
%82 = getelementptr inbounds i32, i32* %0, i64 27
%83 = getelementptr inbounds i32, i32* %1, i64 24
%84 = load i32, i32* %83
%85 = getelementptr inbounds i32, i32* %1, i64 25
%86 = load i32, i32* %85
%87 = getelementptr inbounds i32, i32* %1, i64 26
%88 = load i32, i32* %87
%89 = getelementptr inbounds i32, i32* %1, i64 27
%90 = load i32, i32* %89
%91 = tail call i32 @present_sbox(i32* %79, i32* %80, i32* %81, i32* %82, i32 %84, i32 %86, i32 %88, i32 %90)
%92 = getelementptr inbounds i32, i32* %0, i64 28
%93 = getelementptr inbounds i32, i32* %0, i64 29
%94 = getelementptr inbounds i32, i32* %0, i64 30
%95 = getelementptr inbounds i32, i32* %0, i64 31
%96 = getelementptr inbounds i32, i32* %1, i64 28
%97 = load i32, i32* %96
%98 = getelementptr inbounds i32, i32* %1, i64 29
%99 = load i32, i32* %98
%100 = getelementptr inbounds i32, i32* %1, i64 30
%101 = load i32, i32* %100
%102 = getelementptr inbounds i32, i32* %1, i64 31
%103 = load i32, i32* %102
%104 = tail call i32 @present_sbox(i32* %92, i32* %93, i32* %94, i32* %95, i32 %97, i32 %99, i32 %101, i32 %103)
%105 = getelementptr inbounds i32, i32* %0, i64 32
%106 = getelementptr inbounds i32, i32* %0, i64 33
%107 = getelementptr inbounds i32, i32* %0, i64 34
%108 = getelementptr inbounds i32, i32* %0, i64 35
%109 = getelementptr inbounds i32, i32* %1, i64 32
%110 = load i32, i32* %109
%111 = getelementptr inbounds i32, i32* %1, i64 33
%112 = load i32, i32* %111
%113 = getelementptr inbounds i32, i32* %1, i64 34
%114 = load i32, i32* %113
%115 = getelementptr inbounds i32, i32* %1, i64 35
%116 = load i32, i32* %115
%117 = tail call i32 @present_sbox(i32* %105, i32* %106, i32* %107, i32* %108, i32 %110, i32 %112, i32 %114, i32 %116)
%118 = getelementptr inbounds i32, i32* %0, i64 36
%119 = getelementptr inbounds i32, i32* %0, i64 37
%120 = getelementptr inbounds i32, i32* %0, i64 38
%121 = getelementptr inbounds i32, i32* %0, i64 39
%122 = getelementptr inbounds i32, i32* %1, i64 36
%123 = load i32, i32* %122
%124 = getelementptr inbounds i32, i32* %1, i64 37
%125 = load i32, i32* %124
%126 = getelementptr inbounds i32, i32* %1, i64 38
%127 = load i32, i32* %126
%128 = getelementptr inbounds i32, i32* %1, i64 39
%129 = load i32, i32* %128
%130 = tail call i32 @present_sbox(i32* %118, i32* %119, i32* %120, i32* %121, i32 %123, i32 %125, i32 %127, i32 %129)
%131 = getelementptr inbounds i32, i32* %0, i64 40
%132 = getelementptr inbounds i32, i32* %0, i64 41
%133 = getelementptr inbounds i32, i32* %0, i64 42
%134 = getelementptr inbounds i32, i32* %0, i64 43
%135 = getelementptr inbounds i32, i32* %1, i64 40
%136 = load i32, i32* %135
%137 = getelementptr inbounds i32, i32* %1, i64 41
%138 = load i32, i32* %137
%139 = getelementptr inbounds i32, i32* %1, i64 42
%140 = load i32, i32* %139
%141 = getelementptr inbounds i32, i32* %1, i64 43
%142 = load i32, i32* %141
%143 = tail call i32 @present_sbox(i32* %131, i32* %132, i32* %133, i32* %134, i32 %136, i32 %138, i32 %140, i32 %142)
%144 = getelementptr inbounds i32, i32* %0, i64 44
%145 = getelementptr inbounds i32, i32* %0, i64 45
%146 = getelementptr inbounds i32, i32* %0, i64 46
%147 = getelementptr inbounds i32, i32* %0, i64 47
%148 = getelementptr inbounds i32, i32* %1, i64 44
%149 = load i32, i32* %148
%150 = getelementptr inbounds i32, i32* %1, i64 45
%151 = load i32, i32* %150
%152 = getelementptr inbounds i32, i32* %1, i64 46
%153 = load i32, i32* %152
%154 = getelementptr inbounds i32, i32* %1, i64 47
%155 = load i32, i32* %154
%156 = tail call i32 @present_sbox(i32* %144, i32* %145, i32* %146, i32* %147, i32 %149, i32 %151, i32 %153, i32 %155)
%157 = getelementptr inbounds i32, i32* %0, i64 48
%158 = getelementptr inbounds i32, i32* %0, i64 49
%159 = getelementptr inbounds i32, i32* %0, i64 50
%160 = getelementptr inbounds i32, i32* %0, i64 51
%161 = getelementptr inbounds i32, i32* %1, i64 48
%162 = load i32, i32* %161
%163 = getelementptr inbounds i32, i32* %1, i64 49
%164 = load i32, i32* %163
%165 = getelementptr inbounds i32, i32* %1, i64 50
%166 = load i32, i32* %165
%167 = getelementptr inbounds i32, i32* %1, i64 51
%168 = load i32, i32* %167
%169 = tail call i32 @present_sbox(i32* %157, i32* %158, i32* %159, i32* %160, i32 %162, i32 %164, i32 %166, i32 %168)
%170 = getelementptr inbounds i32, i32* %0, i64 52
%171 = getelementptr inbounds i32, i32* %0, i64 53
%172 = getelementptr inbounds i32, i32* %0, i64 54
%173 = getelementptr inbounds i32, i32* %0, i64 55
%174 = getelementptr inbounds i32, i32* %1, i64 52
%175 = load i32, i32* %174
%176 = getelementptr inbounds i32, i32* %1, i64 53
%177 = load i32, i32* %176
%178 = getelementptr inbounds i32, i32* %1, i64 54
%179 = load i32, i32* %178
%180 = getelementptr inbounds i32, i32* %1, i64 55
%181 = load i32, i32* %180
%182 = tail call i32 @present_sbox(i32* %170, i32* %171, i32* %172, i32* %173, i32 %175, i32 %177, i32 %179, i32 %181)
%183 = getelementptr inbounds i32, i32* %0, i64 56
%184 = getelementptr inbounds i32, i32* %0, i64 57
%185 = getelementptr inbounds i32, i32* %0, i64 58
%186 = getelementptr inbounds i32, i32* %0, i64 59
%187 = getelementptr inbounds i32, i32* %1, i64 56
%188 = load i32, i32* %187
%189 = getelementptr inbounds i32, i32* %1, i64 57
%190 = load i32, i32* %189
%191 = getelementptr inbounds i32, i32* %1, i64 58
%192 = load i32, i32* %191
%193 = getelementptr inbounds i32, i32* %1, i64 59
%194 = load i32, i32* %193
%195 = tail call i32 @present_sbox(i32* %183, i32* %184, i32* %185, i32* %186, i32 %188, i32 %190, i32 %192, i32 %194)
%196 = getelementptr inbounds i32, i32* %0, i64 60
%197 = getelementptr inbounds i32, i32* %0, i64 61
%198 = getelementptr inbounds i32, i32* %0, i64 62
%199 = getelementptr inbounds i32, i32* %0, i64 63
%200 = getelementptr inbounds i32, i32* %1, i64 60
%201 = load i32, i32* %200
%202 = getelementptr inbounds i32, i32* %1, i64 61
%203 = load i32, i32* %202
%204 = getelementptr inbounds i32, i32* %1, i64 62
%205 = load i32, i32* %204
%206 = getelementptr inbounds i32, i32* %1, i64 63
%207 = load i32, i32* %206
%208 = tail call i32 @present_sbox(i32* %196, i32* %197, i32* %198, i32* %199, i32 %201, i32 %203, i32 %205, i32 %207)
ret void
}