#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*/ TEM_DEC(unsigned char const *, int, unsigned char const *,
                           unsigned long long, int /*<<< orphan*/,
                           unsigned char *, unsigned char *);
int AEAD_MGEN(const unsigned char *_K, const unsigned char *_N,
              const unsigned char *_C, unsigned long long _clen,
              unsigned char *M_, unsigned long long *mlen_) {
  int d, pad, cnt;
  unsigned long long i, blocknum, len;
  const unsigned char *cp;
  unsigned char *mp, in[32], out[32];
  i = 1;
  cp = _C;
  mp = M_;
  pad = 0;
  cnt = 0;
  len = 0;
  blocknum = _clen / 32;
  while (blocknum > 1) {
    do {
      int u;
      for (u = 0; u < 32; u++)
        (in)[u] = (cp)[u];
    } while (0);
    TEM_DEC(_K, 0x40, _N, i, 0, in, out);
    do {
      int u;
      for (u = 0; u < 32; u++)
        (mp)[u] = (out)[u];
    } while (0);
    i += 2;
    blocknum--;
    cp += 32;
    mp += 32;
    len += 32;
  }
  do {
    int u;
    for (u = 0; u < 32; u++)
      (in)[u] = (cp)[u];
  } while (0);
  TEM_DEC(_K, 0x40, _N, i, 0, in, out);
  for (d = 32 - 1; d >= 0; d--) {
    if (out[d] == 0x80) {
      do {
        int u;
        for (u = 0; u < d; u++)
          (mp)[u] = (out)[u];
      } while (0);
      *mlen_ = len + d;
      return 0;
    }
    if (out[d] != 0x00)
      break;
  }
  return -1;
}


x86 assembly (clang, -O0):
<AEAD_MGEN>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
movq   $0x1,-0x50(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x70(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
movq   $0x0,-0x60(%rbp)
mov    -0x28(%rbp),%rax
shr    $0x5,%rax
mov    %rax,-0x58(%rbp)
cmpq   $0x1,-0x58(%rbp)
jbe    1281 <AEAD_MGEN+0x171>
jmp    117d <AEAD_MGEN+0x6d>
movl   $0x0,-0xb4(%rbp)
cmpl   $0x20,-0xb4(%rbp)
jge    11c4 <AEAD_MGEN+0xb4>
mov    -0x68(%rbp),%rax
movslq -0xb4(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0xb4(%rbp),%rax
mov    %cl,-0x90(%rbp,%rax,1)
mov    -0xb4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb4(%rbp)
jmp    1187 <AEAD_MGEN+0x77>
jmp    11c9 <AEAD_MGEN+0xb9>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    -0x50(%rbp),%rcx
lea    -0x90(%rbp),%r9
lea    -0xb0(%rbp),%rax
mov    $0x40,%esi
xor    %r8d,%r8d
mov    %rax,(%rsp)
call   1030 <TEM_DEC@plt>
movl   $0x0,-0xb8(%rbp)
cmpl   $0x20,-0xb8(%rbp)
jge    123b <AEAD_MGEN+0x12b>
movslq -0xb8(%rbp),%rax
mov    -0xb0(%rbp,%rax,1),%dl
mov    -0x70(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
jmp    11fe <AEAD_MGEN+0xee>
jmp    1240 <AEAD_MGEN+0x130>
mov    -0x50(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
jmp    116d <AEAD_MGEN+0x5d>
jmp    1286 <AEAD_MGEN+0x176>
movl   $0x0,-0xbc(%rbp)
cmpl   $0x20,-0xbc(%rbp)
jge    12cd <AEAD_MGEN+0x1bd>
mov    -0x68(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0xbc(%rbp),%rax
mov    %cl,-0x90(%rbp,%rax,1)
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    1290 <AEAD_MGEN+0x180>
jmp    12d2 <AEAD_MGEN+0x1c2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    -0x50(%rbp),%rcx
lea    -0x90(%rbp),%r9
lea    -0xb0(%rbp),%rax
mov    $0x40,%esi
xor    %r8d,%r8d
mov    %rax,(%rsp)
call   1030 <TEM_DEC@plt>
movl   $0x1f,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jl     13c3 <AEAD_MGEN+0x2b3>
movslq -0x3c(%rbp),%rax
movzbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x80,%eax
jne    1396 <AEAD_MGEN+0x286>
jmp    132a <AEAD_MGEN+0x21a>
movl   $0x0,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1373 <AEAD_MGEN+0x263>
movslq -0xc0(%rbp),%rax
mov    -0xb0(%rbp,%rax,1),%dl
mov    -0x70(%rbp),%rax
movslq -0xc0(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc0(%rbp)
jmp    1334 <AEAD_MGEN+0x224>
jmp    1378 <AEAD_MGEN+0x268>
mov    -0x60(%rbp),%rcx
movslq -0x3c(%rbp),%rax
add    %rax,%rcx
mov    -0x38(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    13ca <AEAD_MGEN+0x2ba>
movslq -0x3c(%rbp),%rax
movzbl -0xb0(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     13b0 <AEAD_MGEN+0x2a0>
jmp    13c3 <AEAD_MGEN+0x2b3>
jmp    13b5 <AEAD_MGEN+0x2a5>
mov    -0x3c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x3c(%rbp)
jmp    1304 <AEAD_MGEN+0x1f4>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<AEAD_MGEN>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9,0x30(%rsp)
mov    %r8,%r12
mov    %rdx,%rbx
mov    %rsi,%r13
cmp    $0x40,%rcx
jb     11c8 <AEAD_MGEN+0xb8>
mov    %rcx,%r14
shr    $0x5,%r14
mov    $0x1,%ebp
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r15,0x38(%rsp)
movups (%rbx,%r15,1),%xmm0
movups 0x10(%rbx,%r15,1),%xmm1
movaps %xmm1,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
lea    0x10(%rsp),%rsi
mov    %rsi,(%rsp)
mov    %rdi,%r15
mov    $0x40,%esi
mov    %r13,%rdx
mov    %rbp,%rcx
xor    %r8d,%r8d
lea    0x40(%rsp),%r9
call   1030 <TEM_DEC@plt>
mov    %r15,%rdi
mov    0x38(%rsp),%r15
movaps 0x10(%rsp),%xmm0
movaps 0x20(%rsp),%xmm1
movups %xmm0,(%r12,%r15,1)
movups %xmm1,0x10(%r12,%r15,1)
add    $0x2,%rbp
add    $0xffffffffffffffff,%r14
add    $0x20,%r15
cmp    $0x1,%r14
ja     1150 <AEAD_MGEN+0x40>
add    %r15,%r12
mov    %r12,%r14
add    %r15,%rbx
jmp    11d3 <AEAD_MGEN+0xc3>
mov    %r12,%r14
mov    $0x1,%ebp
xor    %r15d,%r15d
movups (%rbx),%xmm0
movaps %xmm0,0x40(%rsp)
movups 0x10(%rbx),%xmm0
movaps %xmm0,0x50(%rsp)
lea    0x10(%rsp),%r12
mov    %r12,(%rsp)
xor    %ebx,%ebx
lea    0x40(%rsp),%r9
mov    $0x40,%esi
mov    %r13,%rdx
mov    %rbp,%rcx
xor    %r8d,%r8d
call   1030 <TEM_DEC@plt>
mov    $0xffffffff,%eax
mov    0x2f(%rsp),%cl
test   %cl,%cl
je     1227 <AEAD_MGEN+0x117>
cmp    $0x80,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    $0x1f,%eax
jmp    14c2 <AEAD_MGEN+0x3b2>
mov    0x2e(%rsp),%cl
cmp    $0x80,%cl
je     14bb <AEAD_MGEN+0x3ab>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x2d(%rsp),%cl
cmp    $0x80,%cl
mov    %r14,%r9
je     15d5 <AEAD_MGEN+0x4c5>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x2c(%rsp),%cl
cmp    $0x80,%cl
je     1697 <AEAD_MGEN+0x587>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x2b(%rsp),%cl
cmp    $0x80,%cl
je     169e <AEAD_MGEN+0x58e>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x2a(%rsp),%cl
cmp    $0x80,%cl
je     16a5 <AEAD_MGEN+0x595>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x29(%rsp),%cl
cmp    $0x80,%cl
je     16ac <AEAD_MGEN+0x59c>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x28(%rsp),%cl
cmp    $0x80,%cl
je     16b3 <AEAD_MGEN+0x5a3>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x27(%rsp),%cl
cmp    $0x80,%cl
je     16ba <AEAD_MGEN+0x5aa>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x26(%rsp),%cl
cmp    $0x80,%cl
je     16d0 <AEAD_MGEN+0x5c0>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x25(%rsp),%cl
cmp    $0x80,%cl
je     16da <AEAD_MGEN+0x5ca>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x24(%rsp),%cl
cmp    $0x80,%cl
je     16e4 <AEAD_MGEN+0x5d4>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x23(%rsp),%cl
cmp    $0x80,%cl
je     16ee <AEAD_MGEN+0x5de>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x22(%rsp),%cl
cmp    $0x80,%cl
je     16f8 <AEAD_MGEN+0x5e8>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x21(%rsp),%cl
cmp    $0x80,%cl
je     1702 <AEAD_MGEN+0x5f2>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x20(%rsp),%cl
cmp    $0x80,%cl
je     170c <AEAD_MGEN+0x5fc>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    $0x1,%cl
mov    0x1f(%rsp),%dl
cmp    $0x80,%dl
je     1716 <AEAD_MGEN+0x606>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x1e(%rsp),%dl
cmp    $0x80,%dl
je     1722 <AEAD_MGEN+0x612>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x1d(%rsp),%dl
cmp    $0x80,%dl
je     172e <AEAD_MGEN+0x61e>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x1c(%rsp),%dl
cmp    $0x80,%dl
je     173a <AEAD_MGEN+0x62a>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x1b(%rsp),%dl
cmp    $0x80,%dl
je     1746 <AEAD_MGEN+0x636>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x1a(%rsp),%dl
cmp    $0x80,%dl
je     1752 <AEAD_MGEN+0x642>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x19(%rsp),%dl
cmp    $0x80,%dl
je     175e <AEAD_MGEN+0x64e>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    0x18(%rsp),%dl
cmp    $0x80,%dl
je     176a <AEAD_MGEN+0x65a>
test   %dl,%dl
jne    1568 <AEAD_MGEN+0x458>
mov    $0x1,%bl
mov    0x17(%rsp),%cl
cmp    $0x80,%cl
je     1776 <AEAD_MGEN+0x666>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x16(%rsp),%cl
cmp    $0x80,%cl
je     1782 <AEAD_MGEN+0x672>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x15(%rsp),%cl
cmp    $0x80,%cl
je     178e <AEAD_MGEN+0x67e>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x14(%rsp),%cl
cmp    $0x80,%cl
je     179a <AEAD_MGEN+0x68a>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x13(%rsp),%cl
cmp    $0x80,%cl
je     17a6 <AEAD_MGEN+0x696>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x12(%rsp),%cl
cmp    $0x80,%cl
je     17b2 <AEAD_MGEN+0x6a2>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
mov    0x11(%rsp),%cl
cmp    $0x80,%cl
je     17be <AEAD_MGEN+0x6ae>
test   %cl,%cl
jne    1568 <AEAD_MGEN+0x458>
cmpb   $0x80,0x10(%rsp)
jne    1568 <AEAD_MGEN+0x458>
xor    %eax,%eax
mov    0x30(%rsp),%r8
jmp    1560 <AEAD_MGEN+0x450>
mov    $0x1e,%eax
xor    %ebx,%ebx
xor    %ecx,%ecx
mov    %r14,%r9
test   %bl,%bl
jne    14e9 <AEAD_MGEN+0x3d9>
lea    (%rsp,%rax,1),%rdx
add    $0x10,%rdx
cmp    %rdx,%r9
jae    1577 <AEAD_MGEN+0x467>
lea    (%r9,%rax,1),%rdx
cmp    %rdx,%r12
jae    1577 <AEAD_MGEN+0x467>
xor    %ecx,%ecx
mov    0x30(%rsp),%r8
mov    %rcx,%rdx
not    %rdx
add    %rax,%rdx
mov    %rax,%rsi
and    $0x3,%rsi
je     1523 <AEAD_MGEN+0x413>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl 0x10(%rsp,%rcx,1),%ebx
mov    %bl,(%r9,%rcx,1)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1510 <AEAD_MGEN+0x400>
cmp    $0x3,%rdx
jb     1560 <AEAD_MGEN+0x450>
nopl   0x0(%rax)
movzbl 0x10(%rsp,%rcx,1),%edx
mov    %dl,(%r9,%rcx,1)
movzbl 0x11(%rsp,%rcx,1),%edx
mov    %dl,0x1(%r9,%rcx,1)
movzbl 0x12(%rsp,%rcx,1),%edx
mov    %dl,0x2(%r9,%rcx,1)
movzbl 0x13(%rsp,%rcx,1),%edx
mov    %dl,0x3(%r9,%rcx,1)
add    $0x4,%rcx
cmp    %rcx,%rax
jne    1530 <AEAD_MGEN+0x420>
add    %rax,%r15
mov    %r15,(%r8)
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
test   %cl,%cl
je     15ad <AEAD_MGEN+0x49d>
xor    %ecx,%ecx
mov    0x30(%rsp),%r8
mov    %rcx,%rdx
mov    %eax,%ecx
and    $0xfffffff8,%ecx
nopw   0x0(%rax,%rax,1)
mov    0x10(%rsp,%rdx,1),%rsi
mov    %rsi,(%r9,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    1590 <AEAD_MGEN+0x480>
cmp    %rcx,%rax
jne    14f0 <AEAD_MGEN+0x3e0>
jmp    1560 <AEAD_MGEN+0x450>
mov    %eax,%ecx
and    $0xfffffff0,%ecx
lea    -0x10(%rcx),%rdi
mov    %rdi,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
mov    %esi,%edx
and    $0x7,%edx
cmp    $0x70,%rdi
mov    0x30(%rsp),%r8
jae    15df <AEAD_MGEN+0x4cf>
xor    %edi,%edi
jmp    1654 <AEAD_MGEN+0x544>
mov    $0x1d,%eax
jmp    16bf <AEAD_MGEN+0x5af>
and    $0xfffffffffffffff8,%rsi
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nop
movaps 0x10(%rsp,%rdi,1),%xmm0
movups %xmm0,(%r9,%rdi,1)
movaps 0x20(%rsp,%rdi,1),%xmm0
movups %xmm0,0x10(%r9,%rdi,1)
movaps 0x30(%rsp,%rdi,1),%xmm0
movups %xmm0,0x20(%r9,%rdi,1)
movaps 0x40(%rsp,%rdi,1),%xmm0
movups %xmm0,0x30(%r9,%rdi,1)
movaps 0x50(%rsp,%rdi,1),%xmm0
movups %xmm0,0x40(%r9,%rdi,1)
movaps 0x60(%rsp,%rdi,1),%xmm0
movups %xmm0,0x50(%r9,%rdi,1)
movaps 0x70(%rsp,%rdi,1),%xmm0
movups %xmm0,0x60(%r9,%rdi,1)
movaps 0x80(%rsp,%rdi,1),%xmm0
movups %xmm0,0x70(%r9,%rdi,1)
sub    $0xffffffffffffff80,%rdi
add    $0xfffffffffffffff8,%rsi
jne    15f0 <AEAD_MGEN+0x4e0>
test   %rdx,%rdx
je     1681 <AEAD_MGEN+0x571>
lea    (%r9,%rdi,1),%rsi
add    %rsp,%rdi
add    $0x10,%rdi
shl    $0x4,%rdx
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
movaps (%rdi,%rbx,1),%xmm0
movups %xmm0,(%rsi,%rbx,1)
add    $0x10,%rbx
cmp    %rbx,%rdx
jne    1670 <AEAD_MGEN+0x560>
cmp    %rcx,%rax
je     1560 <AEAD_MGEN+0x450>
test   $0x8,%al
je     14f0 <AEAD_MGEN+0x3e0>
jmp    1582 <AEAD_MGEN+0x472>
mov    $0x1c,%eax
jmp    16bf <AEAD_MGEN+0x5af>
mov    $0x1b,%eax
jmp    16bf <AEAD_MGEN+0x5af>
mov    $0x1a,%eax
jmp    16bf <AEAD_MGEN+0x5af>
mov    $0x19,%eax
jmp    16bf <AEAD_MGEN+0x5af>
mov    $0x18,%eax
jmp    16bf <AEAD_MGEN+0x5af>
mov    $0x17,%eax
xor    %ebx,%ebx
xor    %ecx,%ecx
test   %bl,%bl
je     14cb <AEAD_MGEN+0x3bb>
jmp    14e9 <AEAD_MGEN+0x3d9>
mov    $0x16,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x15,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x14,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x13,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x12,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x11,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0x10,%eax
jmp    14c0 <AEAD_MGEN+0x3b0>
mov    $0xf,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0xe,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0xd,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0xc,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0xb,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0xa,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x9,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x8,%eax
xor    %ebx,%ebx
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x7,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x6,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x5,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x4,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x3,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x2,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>
mov    $0x1,%eax
mov    $0x1,%cl
jmp    14c4 <AEAD_MGEN+0x3b4>

LLVM IR (-O0):
define i32 @AEAD_MGEN(i8* %0, i8* %1, i8* %2, i64 %3, i8* %4, i64* %5) {
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i8*
%11 = alloca i64
%12 = alloca i8*
%13 = alloca i64*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i64
%18 = alloca i64
%19 = alloca i64
%20 = alloca i8*
%21 = alloca i8*
%22 = alloca [32 x i8]
%23 = alloca [32 x i8]
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
store i8* %0, i8** %8
store i8* %1, i8** %9
store i8* %2, i8** %10
store i64 %3, i64* %11
store i8* %4, i8** %12
store i64* %5, i64** %13
store i64 1, i64* %17
%28 = load i8*, i8** %10
store i8* %28, i8** %20
%29 = load i8*, i8** %12
store i8* %29, i8** %21
store i32 0, i32* %15
store i32 0, i32* %16
store i64 0, i64* %19
%30 = load i64, i64* %11
%31 = udiv i64 %30, 32
store i64 %31, i64* %18
br label %32
32: ; preds = %77, %6
%33 = load i64, i64* %18
%34 = icmp ugt i64 %33, 1
br i1 %34, label %35, label %88
35: ; preds = %32
br label %36
36: ; preds = %35
store i32 0, i32* %24
br label %37
37: ; preds = %49, %36
%38 = load i32, i32* %24
%39 = icmp slt i32 %38, 32
br i1 %39, label %40, label %52
40: ; preds = %37
%41 = load i8*, i8** %20
%42 = load i32, i32* %24
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %41, i64 %43
%45 = load i8, i8* %44
%46 = load i32, i32* %24
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [32 x i8], [32 x i8]* %22, i64 0, i64 %47
store i8 %45, i8* %48
br label %49
49: ; preds = %40
%50 = load i32, i32* %24
%51 = add nsw i32 %50, 1
store i32 %51, i32* %24
br label %37
52: ; preds = %37
br label %53
53: ; preds = %52
%54 = load i8*, i8** %8
%55 = load i8*, i8** %9
%56 = load i64, i64* %17
%57 = getelementptr inbounds [32 x i8], [32 x i8]* %22, i64 0, i64 0
%58 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 0
%59 = call i32 @TEM_DEC(i8* %54, i32 64, i8* %55, i64 %56, i32 0, i8* %57, i8* %58)
br label %60
60: ; preds = %53
store i32 0, i32* %25
br label %61
61: ; preds = %73, %60
%62 = load i32, i32* %25
%63 = icmp slt i32 %62, 32
br i1 %63, label %64, label %76
64: ; preds = %61
%65 = load i32, i32* %25
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 %66
%68 = load i8, i8* %67
%69 = load i8*, i8** %21
%70 = load i32, i32* %25
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds i8, i8* %69, i64 %71
store i8 %68, i8* %72
br label %73
73: ; preds = %64
%74 = load i32, i32* %25
%75 = add nsw i32 %74, 1
store i32 %75, i32* %25
br label %61
76: ; preds = %61
br label %77
77: ; preds = %76
%78 = load i64, i64* %17
%79 = add i64 %78, 2
store i64 %79, i64* %17
%80 = load i64, i64* %18
%81 = add i64 %80, -1
store i64 %81, i64* %18
%82 = load i8*, i8** %20
%83 = getelementptr inbounds i8, i8* %82, i64 32
store i8* %83, i8** %20
%84 = load i8*, i8** %21
%85 = getelementptr inbounds i8, i8* %84, i64 32
store i8* %85, i8** %21
%86 = load i64, i64* %19
%87 = add i64 %86, 32
store i64 %87, i64* %19
br label %32
88: ; preds = %32
br label %89
89: ; preds = %88
store i32 0, i32* %26
br label %90
90: ; preds = %102, %89
%91 = load i32, i32* %26
%92 = icmp slt i32 %91, 32
br i1 %92, label %93, label %105
93: ; preds = %90
%94 = load i8*, i8** %20
%95 = load i32, i32* %26
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i8, i8* %94, i64 %96
%98 = load i8, i8* %97
%99 = load i32, i32* %26
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [32 x i8], [32 x i8]* %22, i64 0, i64 %100
store i8 %98, i8* %101
br label %102
102: ; preds = %93
%103 = load i32, i32* %26
%104 = add nsw i32 %103, 1
store i32 %104, i32* %26
br label %90
105: ; preds = %90
br label %106
106: ; preds = %105
%107 = load i8*, i8** %8
%108 = load i8*, i8** %9
%109 = load i64, i64* %17
%110 = getelementptr inbounds [32 x i8], [32 x i8]* %22, i64 0, i64 0
%111 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 0
%112 = call i32 @TEM_DEC(i8* %107, i32 64, i8* %108, i64 %109, i32 0, i8* %110, i8* %111)
store i32 31, i32* %14
br label %113
113: ; preds = %157, %106
%114 = load i32, i32* %14
%115 = icmp sge i32 %114, 0
br i1 %115, label %116, label %160
116: ; preds = %113
%117 = load i32, i32* %14
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 %118
%120 = load i8, i8* %119
%121 = zext i8 %120 to i32
%122 = icmp eq i32 %121, 128
br i1 %122, label %123, label %148
123: ; preds = %116
br label %124
124: ; preds = %123
store i32 0, i32* %27
br label %125
125: ; preds = %138, %124
%126 = load i32, i32* %27
%127 = load i32, i32* %14
%128 = icmp slt i32 %126, %127
br i1 %128, label %129, label %141
129: ; preds = %125
%130 = load i32, i32* %27
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 %131
%133 = load i8, i8* %132
%134 = load i8*, i8** %21
%135 = load i32, i32* %27
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i8, i8* %134, i64 %136
store i8 %133, i8* %137
br label %138
138: ; preds = %129
%139 = load i32, i32* %27
%140 = add nsw i32 %139, 1
store i32 %140, i32* %27
br label %125
141: ; preds = %125
br label %142
142: ; preds = %141
%143 = load i64, i64* %19
%144 = load i32, i32* %14
%145 = sext i32 %144 to i64
%146 = add i64 %143, %145
%147 = load i64*, i64** %13
store i64 %146, i64* %147
store i32 0, i32* %7
br label %161
148: ; preds = %116
%149 = load i32, i32* %14
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [32 x i8], [32 x i8]* %23, i64 0, i64 %150
%152 = load i8, i8* %151
%153 = zext i8 %152 to i32
%154 = icmp ne i32 %153, 0
br i1 %154, label %155, label %156
155: ; preds = %148
br label %160
156: ; preds = %148
br label %157
157: ; preds = %156
%158 = load i32, i32* %14
%159 = add nsw i32 %158, -1
store i32 %159, i32* %14
br label %113
160: ; preds = %155, %113
store i32 -1, i32* %7
br label %161
161: ; preds = %160, %142
%162 = load i32, i32* %7
ret i32 %162
}

LLVM IR (-O2):
define i32 @AEAD_MGEN(i8* %0, i8* %1, i8* nocapture %2, i64 %3, i8* nocapture writeonly %4, i64* nocapture writeonly %5) {
%7 = alloca [32 x i8]
%8 = getelementptr inbounds [32 x i8], [32 x i8]* %7, i64 0, i64 0
%9 = alloca [32 x i8]
%10 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 0
%11 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 0
%12 = getelementptr inbounds [32 x i8], [32 x i8]* %7, i64 0, i64 0
%13 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 0
%14 = icmp ugt i64 %3, 63
br i1 %14, label %15, label %30
15: ; preds = %6
%16 = lshr i64 %3, 5
br label %17
17: ; preds = %15, %17
%18 = phi i8* [ %27, %17 ], [ %4, %15 ]
%19 = phi i8* [ %26, %17 ], [ %2, %15 ]
%20 = phi i64 [ %28, %17 ], [ 0, %15 ]
%21 = phi i64 [ %25, %17 ], [ %16, %15 ]
%22 = phi i64 [ %24, %17 ], [ 1, %15 ]
%23 = call i32 @TEM_DEC(i8* %0, i32 64, i8* %1, i64 %22, i32 0, i8* %12, i8* %13)
%24 = add i64 %22, 2
%25 = add i64 %21, -1
%26 = getelementptr inbounds i8, i8* %19, i64 32
%27 = getelementptr inbounds i8, i8* %18, i64 32
%28 = add i64 %20, 32
%29 = icmp ugt i64 %25, 1
br i1 %29, label %17, label %30
30: ; preds = %17, %6
%31 = phi i64 [ 1, %6 ], [ %24, %17 ]
%32 = phi i64 [ 0, %6 ], [ %28, %17 ]
%33 = phi i8* [ %2, %6 ], [ %26, %17 ]
%34 = phi i8* [ %4, %6 ], [ %27, %17 ]
%35 = bitcast i8* %33 to <16 x i8>*
%36 = load <16 x i8>, <16 x i8>* %35
%37 = bitcast [32 x i8]* %7 to <16 x i8>*
store <16 x i8> %36, <16 x i8>* %37
%38 = getelementptr inbounds i8, i8* %33, i64 16
%39 = getelementptr inbounds [32 x i8], [32 x i8]* %7, i64 0, i64 16
%40 = bitcast i8* %38 to <16 x i8>*
%41 = load <16 x i8>, <16 x i8>* %40
%42 = bitcast i8* %39 to <16 x i8>*
store <16 x i8> %41, <16 x i8>* %42
%43 = call i32 @TEM_DEC(i8* %0, i32 64, i8* %1, i64 %31, i32 0, i8* %12, i8* %13)
%44 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 31
%45 = load i8, i8* %44
switch i8 %45, label %285 [
i8 -128, label %46
i8 0, label %192
]
46: ; preds = %279, %276, %273, %270, %267, %264, %261, %258, %255, %252, %249, %246, %243, %240, %237, %234, %231, %228, %225, %222, %219, %216, %213, %210, %207, %204, %201, %198, %195, %192, %30
%47 = phi i1 [ true, %279 ], [ true, %276 ], [ true, %273 ], [ true, %270 ], [ true, %267 ], [ true, %264 ], [ true, %261 ], [ false, %258 ], [ false, %255 ], [ false, %252 ], [ false, %249 ], [ false, %246 ], [ false, %243 ], [ false, %240 ], [ false, %237 ], [ false, %234 ], [ false, %231 ], [ false, %228 ], [ false, %225 ], [ false, %222 ], [ false, %219 ], [ false, %216 ], [ false, %213 ], [ false, %210 ], [ false, %207 ], [ false, %204 ], [ false, %201 ], [ false, %198 ], [ false, %195 ], [ false, %192 ], [ false, %30 ]
%48 = phi i1 [ true, %279 ], [ true, %276 ], [ true, %273 ], [ true, %270 ], [ true, %267 ], [ true, %264 ], [ true, %261 ], [ true, %258 ], [ true, %255 ], [ true, %252 ], [ true, %249 ], [ true, %246 ], [ true, %243 ], [ true, %240 ], [ true, %237 ], [ false, %234 ], [ false, %231 ], [ false, %228 ], [ false, %225 ], [ false, %222 ], [ false, %219 ], [ false, %216 ], [ false, %213 ], [ false, %210 ], [ false, %207 ], [ false, %204 ], [ false, %201 ], [ false, %198 ], [ false, %195 ], [ false, %192 ], [ false, %30 ]
%49 = phi i64 [ 1, %279 ], [ 2, %276 ], [ 3, %273 ], [ 4, %270 ], [ 5, %267 ], [ 6, %264 ], [ 7, %261 ], [ 8, %258 ], [ 9, %255 ], [ 10, %252 ], [ 11, %249 ], [ 12, %246 ], [ 13, %243 ], [ 14, %240 ], [ 15, %237 ], [ 16, %234 ], [ 17, %231 ], [ 18, %228 ], [ 19, %225 ], [ 20, %222 ], [ 21, %219 ], [ 22, %216 ], [ 23, %213 ], [ 24, %210 ], [ 25, %207 ], [ 26, %204 ], [ 27, %201 ], [ 28, %198 ], [ 29, %195 ], [ 30, %192 ], [ 31, %30 ]
br i1 %47, label %152, label %50
50: ; preds = %46
%51 = getelementptr i8, i8* %34, i64 %49
%52 = getelementptr [32 x i8], [32 x i8]* %9, i64 0, i64 %49
%53 = icmp ult i8* %34, %52
%54 = icmp ult i8* %10, %51
%55 = and i1 %53, %54
br i1 %55, label %152, label %56
56: ; preds = %50
br i1 %48, label %138, label %57
57: ; preds = %56
%58 = and i64 %49, 16
%59 = add nsw i64 %58, -16
%60 = lshr exact i64 %59, 4
%61 = add nuw nsw i64 %60, 1
%62 = and i64 %61, 7
%63 = icmp ult i64 %59, 112
br i1 %63, label %119, label %64
64: ; preds = %57
%65 = and i64 %61, 2305843009213693944
br label %66
66: ; preds = %66, %64
%67 = phi i64 [ 0, %64 ], [ %116, %66 ]
%68 = phi i64 [ 0, %64 ], [ %117, %66 ]
%69 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %67
%70 = bitcast i8* %69 to <16 x i8>*
%71 = load <16 x i8>, <16 x i8>* %70
%72 = getelementptr inbounds i8, i8* %34, i64 %67
%73 = bitcast i8* %72 to <16 x i8>*
store <16 x i8> %71, <16 x i8>* %73
%74 = or i64 %67, 16
%75 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %74
%76 = bitcast i8* %75 to <16 x i8>*
%77 = load <16 x i8>, <16 x i8>* %76
%78 = getelementptr inbounds i8, i8* %34, i64 %74
%79 = bitcast i8* %78 to <16 x i8>*
store <16 x i8> %77, <16 x i8>* %79
%80 = or i64 %67, 32
%81 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %80
%82 = bitcast i8* %81 to <16 x i8>*
%83 = load <16 x i8>, <16 x i8>* %82
%84 = getelementptr inbounds i8, i8* %34, i64 %80
%85 = bitcast i8* %84 to <16 x i8>*
store <16 x i8> %83, <16 x i8>* %85
%86 = or i64 %67, 48
%87 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %86
%88 = bitcast i8* %87 to <16 x i8>*
%89 = load <16 x i8>, <16 x i8>* %88
%90 = getelementptr inbounds i8, i8* %34, i64 %86
%91 = bitcast i8* %90 to <16 x i8>*
store <16 x i8> %89, <16 x i8>* %91
%92 = or i64 %67, 64
%93 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %92
%94 = bitcast i8* %93 to <16 x i8>*
%95 = load <16 x i8>, <16 x i8>* %94
%96 = getelementptr inbounds i8, i8* %34, i64 %92
%97 = bitcast i8* %96 to <16 x i8>*
store <16 x i8> %95, <16 x i8>* %97
%98 = or i64 %67, 80
%99 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %98
%100 = bitcast i8* %99 to <16 x i8>*
%101 = load <16 x i8>, <16 x i8>* %100
%102 = getelementptr inbounds i8, i8* %34, i64 %98
%103 = bitcast i8* %102 to <16 x i8>*
store <16 x i8> %101, <16 x i8>* %103
%104 = or i64 %67, 96
%105 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %104
%106 = bitcast i8* %105 to <16 x i8>*
%107 = load <16 x i8>, <16 x i8>* %106
%108 = getelementptr inbounds i8, i8* %34, i64 %104
%109 = bitcast i8* %108 to <16 x i8>*
store <16 x i8> %107, <16 x i8>* %109
%110 = or i64 %67, 112
%111 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %110
%112 = bitcast i8* %111 to <16 x i8>*
%113 = load <16 x i8>, <16 x i8>* %112
%114 = getelementptr inbounds i8, i8* %34, i64 %110
%115 = bitcast i8* %114 to <16 x i8>*
store <16 x i8> %113, <16 x i8>* %115
%116 = add nuw i64 %67, 128
%117 = add i64 %68, 8
%118 = icmp eq i64 %117, %65
br i1 %118, label %119, label %66
119: ; preds = %66, %57
%120 = phi i64 [ 0, %57 ], [ %116, %66 ]
%121 = icmp eq i64 %62, 0
br i1 %121, label %133, label %122
122: ; preds = %119, %122
%123 = phi i64 [ %130, %122 ], [ %120, %119 ]
%124 = phi i64 [ %131, %122 ], [ 0, %119 ]
%125 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %123
%126 = bitcast i8* %125 to <16 x i8>*
%127 = load <16 x i8>, <16 x i8>* %126
%128 = getelementptr inbounds i8, i8* %34, i64 %123
%129 = bitcast i8* %128 to <16 x i8>*
store <16 x i8> %127, <16 x i8>* %129
%130 = add nuw i64 %123, 16
%131 = add i64 %124, 1
%132 = icmp eq i64 %131, %62
br i1 %132, label %133, label %122
133: ; preds = %122, %119
%134 = icmp eq i64 %49, %58
br i1 %134, label %189, label %135
135: ; preds = %133
%136 = and i64 %49, 8
%137 = icmp eq i64 %136, 0
br i1 %137, label %152, label %138
138: ; preds = %56, %135
%139 = phi i64 [ %58, %135 ], [ 0, %56 ]
%140 = and i64 %49, 24
br label %141
141: ; preds = %141, %138
%142 = phi i64 [ %139, %138 ], [ %148, %141 ]
%143 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %142
%144 = bitcast i8* %143 to <8 x i8>*
%145 = load <8 x i8>, <8 x i8>* %144
%146 = getelementptr inbounds i8, i8* %34, i64 %142
%147 = bitcast i8* %146 to <8 x i8>*
store <8 x i8> %145, <8 x i8>* %147
%148 = add nuw i64 %142, 8
%149 = icmp eq i64 %148, %140
br i1 %149, label %150, label %141
150: ; preds = %141
%151 = icmp eq i64 %49, %140
br i1 %151, label %189, label %152
152: ; preds = %50, %46, %135, %150
%153 = phi i64 [ 0, %46 ], [ 0, %50 ], [ %58, %135 ], [ %140, %150 ]
%154 = xor i64 %153, -1
%155 = add nsw i64 %49, %154
%156 = and i64 %49, 3
%157 = icmp eq i64 %156, 0
br i1 %157, label %167, label %158
158: ; preds = %152, %158
%159 = phi i64 [ %164, %158 ], [ %153, %152 ]
%160 = phi i64 [ %165, %158 ], [ 0, %152 ]
%161 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %159
%162 = load i8, i8* %161
%163 = getelementptr inbounds i8, i8* %34, i64 %159
store i8 %162, i8* %163
%164 = add nuw nsw i64 %159, 1
%165 = add i64 %160, 1
%166 = icmp eq i64 %165, %156
br i1 %166, label %167, label %158
167: ; preds = %158, %152
%168 = phi i64 [ %153, %152 ], [ %164, %158 ]
%169 = icmp ult i64 %155, 3
br i1 %169, label %189, label %170
170: ; preds = %167, %170
%171 = phi i64 [ %187, %170 ], [ %168, %167 ]
%172 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %171
%173 = load i8, i8* %172
%174 = getelementptr inbounds i8, i8* %34, i64 %171
store i8 %173, i8* %174
%175 = add nuw nsw i64 %171, 1
%176 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %175
%177 = load i8, i8* %176
%178 = getelementptr inbounds i8, i8* %34, i64 %175
store i8 %177, i8* %178
%179 = add nuw nsw i64 %171, 2
%180 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %179
%181 = load i8, i8* %180
%182 = getelementptr inbounds i8, i8* %34, i64 %179
store i8 %181, i8* %182
%183 = add nuw nsw i64 %171, 3
%184 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 %183
%185 = load i8, i8* %184
%186 = getelementptr inbounds i8, i8* %34, i64 %183
store i8 %185, i8* %186
%187 = add nuw nsw i64 %171, 4
%188 = icmp eq i64 %187, %49
br i1 %188, label %189, label %170
189: ; preds = %167, %170, %133, %150, %282
%190 = phi i64 [ 0, %282 ], [ %49, %150 ], [ %49, %133 ], [ %49, %170 ], [ %49, %167 ]
%191 = add i64 %32, %190
store i64 %191, i64* %5
br label %285
192: ; preds = %30
%193 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 30
%194 = load i8, i8* %193
switch i8 %194, label %285 [
i8 -128, label %46
i8 0, label %195
]
195: ; preds = %192
%196 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 29
%197 = load i8, i8* %196
switch i8 %197, label %285 [
i8 -128, label %46
i8 0, label %198
]
198: ; preds = %195
%199 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 28
%200 = load i8, i8* %199
switch i8 %200, label %285 [
i8 -128, label %46
i8 0, label %201
]
201: ; preds = %198
%202 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 27
%203 = load i8, i8* %202
switch i8 %203, label %285 [
i8 -128, label %46
i8 0, label %204
]
204: ; preds = %201
%205 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 26
%206 = load i8, i8* %205
switch i8 %206, label %285 [
i8 -128, label %46
i8 0, label %207
]
207: ; preds = %204
%208 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 25
%209 = load i8, i8* %208
switch i8 %209, label %285 [
i8 -128, label %46
i8 0, label %210
]
210: ; preds = %207
%211 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 24
%212 = load i8, i8* %211
switch i8 %212, label %285 [
i8 -128, label %46
i8 0, label %213
]
213: ; preds = %210
%214 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 23
%215 = load i8, i8* %214
switch i8 %215, label %285 [
i8 -128, label %46
i8 0, label %216
]
216: ; preds = %213
%217 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 22
%218 = load i8, i8* %217
switch i8 %218, label %285 [
i8 -128, label %46
i8 0, label %219
]
219: ; preds = %216
%220 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 21
%221 = load i8, i8* %220
switch i8 %221, label %285 [
i8 -128, label %46
i8 0, label %222
]
222: ; preds = %219
%223 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 20
%224 = load i8, i8* %223
switch i8 %224, label %285 [
i8 -128, label %46
i8 0, label %225
]
225: ; preds = %222
%226 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 19
%227 = load i8, i8* %226
switch i8 %227, label %285 [
i8 -128, label %46
i8 0, label %228
]
228: ; preds = %225
%229 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 18
%230 = load i8, i8* %229
switch i8 %230, label %285 [
i8 -128, label %46
i8 0, label %231
]
231: ; preds = %228
%232 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 17
%233 = load i8, i8* %232
switch i8 %233, label %285 [
i8 -128, label %46
i8 0, label %234
]
234: ; preds = %231
%235 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 16
%236 = load i8, i8* %235
switch i8 %236, label %285 [
i8 -128, label %46
i8 0, label %237
]
237: ; preds = %234
%238 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 15
%239 = load i8, i8* %238
switch i8 %239, label %285 [
i8 -128, label %46
i8 0, label %240
]
240: ; preds = %237
%241 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 14
%242 = load i8, i8* %241
switch i8 %242, label %285 [
i8 -128, label %46
i8 0, label %243
]
243: ; preds = %240
%244 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 13
%245 = load i8, i8* %244
switch i8 %245, label %285 [
i8 -128, label %46
i8 0, label %246
]
246: ; preds = %243
%247 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 12
%248 = load i8, i8* %247
switch i8 %248, label %285 [
i8 -128, label %46
i8 0, label %249
]
249: ; preds = %246
%250 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 11
%251 = load i8, i8* %250
switch i8 %251, label %285 [
i8 -128, label %46
i8 0, label %252
]
252: ; preds = %249
%253 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 10
%254 = load i8, i8* %253
switch i8 %254, label %285 [
i8 -128, label %46
i8 0, label %255
]
255: ; preds = %252
%256 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 9
%257 = load i8, i8* %256
switch i8 %257, label %285 [
i8 -128, label %46
i8 0, label %258
]
258: ; preds = %255
%259 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 8
%260 = load i8, i8* %259
switch i8 %260, label %285 [
i8 -128, label %46
i8 0, label %261
]
261: ; preds = %258
%262 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 7
%263 = load i8, i8* %262
switch i8 %263, label %285 [
i8 -128, label %46
i8 0, label %264
]
264: ; preds = %261
%265 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 6
%266 = load i8, i8* %265
switch i8 %266, label %285 [
i8 -128, label %46
i8 0, label %267
]
267: ; preds = %264
%268 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 5
%269 = load i8, i8* %268
switch i8 %269, label %285 [
i8 -128, label %46
i8 0, label %270
]
270: ; preds = %267
%271 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 4
%272 = load i8, i8* %271
switch i8 %272, label %285 [
i8 -128, label %46
i8 0, label %273
]
273: ; preds = %270
%274 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 3
%275 = load i8, i8* %274
switch i8 %275, label %285 [
i8 -128, label %46
i8 0, label %276
]
276: ; preds = %273
%277 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 2
%278 = load i8, i8* %277
switch i8 %278, label %285 [
i8 -128, label %46
i8 0, label %279
]
279: ; preds = %276
%280 = getelementptr inbounds [32 x i8], [32 x i8]* %9, i64 0, i64 1
%281 = load i8, i8* %280
switch i8 %281, label %285 [
i8 -128, label %46
i8 0, label %282
]
282: ; preds = %279
%283 = load i8, i8* %13
%284 = icmp eq i8 %283, -128
br i1 %284, label %189, label %285
285: ; preds = %282, %30, %192, %195, %198, %201, %204, %207, %210, %213, %216, %219, %222, %225, %228, %231, %234, %237, %240, %243, %246, %249, %252, %255, %258, %261, %264, %267, %270, %273, %276, %279, %189
%286 = phi i32 [ 0, %189 ], [ -1, %282 ], [ -1, %279 ], [ -1, %276 ], [ -1, %273 ], [ -1, %270 ], [ -1, %267 ], [ -1, %264 ], [ -1, %261 ], [ -1, %258 ], [ -1, %255 ], [ -1, %252 ], [ -1, %249 ], [ -1, %246 ], [ -1, %243 ], [ -1, %240 ], [ -1, %237 ], [ -1, %234 ], [ -1, %231 ], [ -1, %228 ], [ -1, %225 ], [ -1, %222 ], [ -1, %219 ], [ -1, %216 ], [ -1, %213 ], [ -1, %210 ], [ -1, %207 ], [ -1, %204 ], [ -1, %201 ], [ -1, %198 ], [ -1, %195 ], [ -1, %192 ], [ -1, %30 ]
ret i32 %286
}