#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*/ type;
typedef int /*<<< orphan*/ component;
typedef int /*<<< orphan*/ callback;

/* Variables and functions */
scalar_t__ ccnl_ccnb_dehead(unsigned char **, int *, int *, int *);
int /*<<< orphan*/ ccnl_crypto_get_tag_content(unsigned char **, int *, char *,
                                               int);
int /*<<< orphan*/ handle_sign(unsigned char **, int *, int, char *);
int /*<<< orphan*/ handle_verify(unsigned char **, int *, int, char *);
int /*<<< orphan*/ memset(char *, int /*<<< orphan*/, int);
int /*<<< orphan*/ printf(char *, ...);
scalar_t__ strcmp(char *, char *);
int parse_crypto_packet(unsigned char *buf, int buflen, int sock) {
  int num, typ;
  char component[100];
  char type[100];
  char callback[1024];
  printf("Crypto Request... parsing \n");
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 26)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 14)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 15)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  memset(component, 0, sizeof(component));
  ccnl_crypto_get_tag_content(&buf, &buflen, component, sizeof(component));
  if (strcmp(component, "ccnx"))
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 15)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  memset(component, 0, sizeof(component));
  ccnl_crypto_get_tag_content(&buf, &buflen, component, sizeof(component));
  if (strcmp(component, "crypto"))
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 15)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 64)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 19)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 99226)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  memset(callback, 0, sizeof(callback));
  ccnl_crypto_get_tag_content(&buf, &buflen, callback, sizeof(callback));
  printf("\tCallback function is: %s\n", callback);
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 2 || num != 40)
    goto Bail;
  if (ccnl_ccnb_dehead(&buf, &buflen, &num, &typ))
    goto Bail;
  if (typ != 5)
    goto Bail;
  memset(type, 0, sizeof(type));
  ccnl_crypto_get_tag_content(&buf, &buflen, type, sizeof(type));
  if (!strcmp(type, "verify"))
    handle_verify(&buf, &buflen, sock, callback);
  if (!strcmp(type, "sign"))
    handle_sign(&buf, &buflen, sock, callback);
  return 1;
Bail:
  printf("\tError occured\n");
  return 0;
}


x86 assembly (clang, -O0):
<parse_crypto_packet>:
push   %rbp
mov    %rsp,%rbp
sub    $0x500,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
lea    0xe74(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     11b7 <parse_crypto_packet+0x47>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    11cb <parse_crypto_packet+0x5b>
cmpl   $0x1a,-0x1c(%rbp)
je     11d0 <parse_crypto_packet+0x60>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     11f4 <parse_crypto_packet+0x84>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    1208 <parse_crypto_packet+0x98>
cmpl   $0xe,-0x1c(%rbp)
je     120d <parse_crypto_packet+0x9d>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     1231 <parse_crypto_packet+0xc1>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    1245 <parse_crypto_packet+0xd5>
cmpl   $0xf,-0x1c(%rbp)
je     124a <parse_crypto_packet+0xda>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     126e <parse_crypto_packet+0xfe>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     127d <parse_crypto_packet+0x10d>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x90(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1050 <memset@plt>
lea    -0x90(%rbp),%rdx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    -0x90(%rbp),%rdi
lea    0xd65(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     12cb <parse_crypto_packet+0x15b>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     12ef <parse_crypto_packet+0x17f>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    1303 <parse_crypto_packet+0x193>
cmpl   $0xf,-0x1c(%rbp)
je     1308 <parse_crypto_packet+0x198>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     132c <parse_crypto_packet+0x1bc>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     133b <parse_crypto_packet+0x1cb>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x90(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1050 <memset@plt>
lea    -0x90(%rbp),%rdx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    -0x90(%rbp),%rdi
lea    0xcac(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1389 <parse_crypto_packet+0x219>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     13ad <parse_crypto_packet+0x23d>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    13c1 <parse_crypto_packet+0x251>
cmpl   $0xf,-0x1c(%rbp)
je     13c6 <parse_crypto_packet+0x256>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     13ea <parse_crypto_packet+0x27a>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     13f9 <parse_crypto_packet+0x289>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     141d <parse_crypto_packet+0x2ad>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    1431 <parse_crypto_packet+0x2c1>
cmpl   $0x40,-0x1c(%rbp)
je     1436 <parse_crypto_packet+0x2c6>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     145a <parse_crypto_packet+0x2ea>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    146e <parse_crypto_packet+0x2fe>
cmpl   $0x13,-0x1c(%rbp)
je     1473 <parse_crypto_packet+0x303>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     1497 <parse_crypto_packet+0x327>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     14a6 <parse_crypto_packet+0x336>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     14ca <parse_crypto_packet+0x35a>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    14e1 <parse_crypto_packet+0x371>
cmpl   $0x1839a,-0x1c(%rbp)
je     14e6 <parse_crypto_packet+0x376>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     150a <parse_crypto_packet+0x39a>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     1519 <parse_crypto_packet+0x3a9>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x500(%rbp),%rdi
xor    %esi,%esi
mov    $0x400,%edx
call   1050 <memset@plt>
lea    -0x500(%rbp),%rdx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
mov    $0x400,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    -0x500(%rbp),%rsi
lea    0xad5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     157e <parse_crypto_packet+0x40e>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x2,-0x20(%rbp)
jne    1592 <parse_crypto_packet+0x422>
cmpl   $0x28,-0x1c(%rbp)
je     1597 <parse_crypto_packet+0x427>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x1c(%rbp),%rdx
lea    -0x20(%rbp),%rcx
call   1090 <ccnl_ccnb_dehead@plt>
cmp    $0x0,%rax
je     15bb <parse_crypto_packet+0x44b>
jmp    166a <parse_crypto_packet+0x4fa>
cmpl   $0x5,-0x20(%rbp)
je     15ca <parse_crypto_packet+0x45a>
jmp    166a <parse_crypto_packet+0x4fa>
lea    -0x100(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1050 <memset@plt>
lea    -0x100(%rbp),%rdx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    -0x100(%rbp),%rdi
lea    0xa3f(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    162a <parse_crypto_packet+0x4ba>
mov    -0x18(%rbp),%edx
lea    -0x500(%rbp),%rcx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
call   1070 <handle_verify@plt>
lea    -0x100(%rbp),%rdi
lea    0xa12(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    165e <parse_crypto_packet+0x4ee>
mov    -0x18(%rbp),%edx
lea    -0x500(%rbp),%rcx
lea    -0x10(%rbp),%rdi
lea    -0x14(%rbp),%rsi
call   1080 <handle_sign@plt>
movl   $0x1,-0x4(%rbp)
jmp    167f <parse_crypto_packet+0x50f>
lea    0x9de(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x500,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<parse_crypto_packet>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x508,%rsp
mov    %edx,%ebx
mov    %rdi,0x18(%rsp)
mov    %esi,0x14(%rsp)
lea    0xe94(%rip),%rdi
call   1040 <puts@plt>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
je     11e0 <parse_crypto_packet+0x60>
lea    0xe85(%rip),%rdi
call   1040 <puts@plt>
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x508,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x1a,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0xe,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0xf,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x90(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1060 <memset@plt>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
mov    %rbp,%rdx
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    0xd54(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0xf,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x90(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1060 <memset@plt>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
mov    %rbp,%rdx
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    0xcae(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0xf,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x40,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x13,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x1839a,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x100(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0x400,%edx
call   1060 <memset@plt>
lea    0x18(%rsp),%r14
lea    0x14(%rsp),%r15
mov    %r14,%rdi
mov    %r15,%rsi
mov    %rbp,%rdx
mov    $0x400,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    0xaff(%rip),%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
mov    %r14,%rdi
mov    %r15,%rsi
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x2,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x28,0x10(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   10a0 <ccnl_ccnb_dehead@plt>
test   %rax,%rax
jne    11c2 <parse_crypto_packet+0x42>
cmpl   $0x5,0xc(%rsp)
jne    11c2 <parse_crypto_packet+0x42>
lea    0x20(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1060 <memset@plt>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
mov    %rbp,%rdx
mov    $0x64,%ecx
call   1030 <ccnl_crypto_get_tag_content@plt>
lea    0xa7d(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
jne    15d0 <parse_crypto_packet+0x450>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x100(%rsp),%rcx
mov    %ebx,%edx
call   1080 <handle_verify@plt>
lea    0xa57(%rip),%rsi
lea    0x20(%rsp),%rdi
call   1070 <strcmp@plt>
mov    $0x1,%ebp
test   %rax,%rax
jne    11d0 <parse_crypto_packet+0x50>
lea    0x18(%rsp),%rdi
lea    0x14(%rsp),%rsi
lea    0x100(%rsp),%rcx
mov    %ebx,%edx
call   1090 <handle_sign@plt>
jmp    11d0 <parse_crypto_packet+0x50>

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

LLVM IR (-O2):
@.str.1 = [5 x i8] c"ccnx\00"
@.str.2 = [7 x i8] c"crypto\00"
@.str.3 = [27 x i8] c"\09Callback function is: %s\0A\00"
@.str.4 = [7 x i8] c"verify\00"
@.str.5 = [5 x i8] c"sign\00"
@str = [27 x i8] c"Crypto Request... parsing \00"
@str.7 = [15 x i8] c"\09Error occured\00"
define i32 @parse_crypto_packet(i8* %0, i32 %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca [100 x i8]
%9 = alloca [100 x i8]
%10 = alloca [1024 x i8]
store i8* %0, i8** %4
store i32 %1, i32* %5
%11 = bitcast i32* %6 to i8*
%12 = bitcast i32* %7 to i8*
%13 = getelementptr inbounds [100 x i8], [100 x i8]* %8, i64 0, i64 0
%14 = getelementptr inbounds [100 x i8], [100 x i8]* %9, i64 0, i64 0
%15 = getelementptr inbounds [1024 x i8], [1024 x i8]* %10, i64 0, i64 0
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str, i64 0, i64 0))
%17 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%18 = icmp eq i64 %17, 0
br i1 %18, label %19, label %158
19: ; preds = %3
%20 = load i32, i32* %7
%21 = icmp ne i32 %20, 2
%22 = load i32, i32* %6
%23 = icmp ne i32 %22, 26
%24 = select i1 %21, i1 true, i1 %23
br i1 %24, label %158, label %25
25: ; preds = %19
%26 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%27 = icmp eq i64 %26, 0
br i1 %27, label %28, label %158
28: ; preds = %25
%29 = load i32, i32* %7
%30 = icmp ne i32 %29, 2
%31 = load i32, i32* %6
%32 = icmp ne i32 %31, 14
%33 = select i1 %30, i1 true, i1 %32
br i1 %33, label %158, label %34
34: ; preds = %28
%35 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%36 = icmp eq i64 %35, 0
br i1 %36, label %37, label %158
37: ; preds = %34
%38 = load i32, i32* %7
%39 = icmp ne i32 %38, 2
%40 = load i32, i32* %6
%41 = icmp ne i32 %40, 15
%42 = select i1 %39, i1 true, i1 %41
br i1 %42, label %158, label %43
43: ; preds = %37
%44 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%45 = icmp ne i64 %44, 0
%46 = load i32, i32* %7
%47 = icmp ne i32 %46, 5
%48 = select i1 %45, i1 true, i1 %47
br i1 %48, label %158, label %49
49: ; preds = %43
%50 = call i32 @memset(i8* %13, i32 0, i32 100)
%51 = call i32 @ccnl_crypto_get_tag_content(i8** %4, i32* %5, i8* %13, i32 100)
%52 = call i64 @strcmp(i8* %13, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%53 = icmp eq i64 %52, 0
br i1 %53, label %54, label %158
54: ; preds = %49
%55 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%56 = icmp eq i64 %55, 0
br i1 %56, label %57, label %158
57: ; preds = %54
%58 = load i32, i32* %7
%59 = icmp ne i32 %58, 2
%60 = load i32, i32* %6
%61 = icmp ne i32 %60, 15
%62 = select i1 %59, i1 true, i1 %61
br i1 %62, label %158, label %63
63: ; preds = %57
%64 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%65 = icmp ne i64 %64, 0
%66 = load i32, i32* %7
%67 = icmp ne i32 %66, 5
%68 = select i1 %65, i1 true, i1 %67
br i1 %68, label %158, label %69
69: ; preds = %63
%70 = call i32 @memset(i8* %13, i32 0, i32 100)
%71 = call i32 @ccnl_crypto_get_tag_content(i8** %4, i32* %5, i8* %13, i32 100)
%72 = call i64 @strcmp(i8* %13, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0))
%73 = icmp eq i64 %72, 0
br i1 %73, label %74, label %158
74: ; preds = %69
%75 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%76 = icmp eq i64 %75, 0
br i1 %76, label %77, label %158
77: ; preds = %74
%78 = load i32, i32* %7
%79 = icmp ne i32 %78, 2
%80 = load i32, i32* %6
%81 = icmp ne i32 %80, 15
%82 = select i1 %79, i1 true, i1 %81
br i1 %82, label %158, label %83
83: ; preds = %77
%84 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%85 = icmp ne i64 %84, 0
%86 = load i32, i32* %7
%87 = icmp ne i32 %86, 5
%88 = select i1 %85, i1 true, i1 %87
br i1 %88, label %158, label %89
89: ; preds = %83
%90 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %158
92: ; preds = %89
%93 = load i32, i32* %7
%94 = icmp ne i32 %93, 2
%95 = load i32, i32* %6
%96 = icmp ne i32 %95, 64
%97 = select i1 %94, i1 true, i1 %96
br i1 %97, label %158, label %98
98: ; preds = %92
%99 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%100 = icmp eq i64 %99, 0
br i1 %100, label %101, label %158
101: ; preds = %98
%102 = load i32, i32* %7
%103 = icmp ne i32 %102, 2
%104 = load i32, i32* %6
%105 = icmp ne i32 %104, 19
%106 = select i1 %103, i1 true, i1 %105
br i1 %106, label %158, label %107
107: ; preds = %101
%108 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%109 = icmp ne i64 %108, 0
%110 = load i32, i32* %7
%111 = icmp ne i32 %110, 5
%112 = select i1 %109, i1 true, i1 %111
br i1 %112, label %158, label %113
113: ; preds = %107
%114 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%115 = icmp eq i64 %114, 0
br i1 %115, label %116, label %158
116: ; preds = %113
%117 = load i32, i32* %7
%118 = icmp ne i32 %117, 2
%119 = load i32, i32* %6
%120 = icmp ne i32 %119, 99226
%121 = select i1 %118, i1 true, i1 %120
br i1 %121, label %158, label %122
122: ; preds = %116
%123 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%124 = icmp ne i64 %123, 0
%125 = load i32, i32* %7
%126 = icmp ne i32 %125, 5
%127 = select i1 %124, i1 true, i1 %126
br i1 %127, label %158, label %128
128: ; preds = %122
%129 = call i32 @memset(i8* %15, i32 0, i32 1024)
%130 = call i32 @ccnl_crypto_get_tag_content(i8** %4, i32* %5, i8* %15, i32 1024)
%131 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i8* %15)
%132 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%133 = icmp eq i64 %132, 0
br i1 %133, label %134, label %158
134: ; preds = %128
%135 = load i32, i32* %7
%136 = icmp ne i32 %135, 2
%137 = load i32, i32* %6
%138 = icmp ne i32 %137, 40
%139 = select i1 %136, i1 true, i1 %138
br i1 %139, label %158, label %140
140: ; preds = %134
%141 = call i64 @ccnl_ccnb_dehead(i8** %4, i32* %5, i32* %6, i32* %7)
%142 = icmp ne i64 %141, 0
%143 = load i32, i32* %7
%144 = icmp ne i32 %143, 5
%145 = select i1 %142, i1 true, i1 %144
br i1 %145, label %158, label %146
146: ; preds = %140
%147 = call i32 @memset(i8* %14, i32 0, i32 100)
%148 = call i32 @ccnl_crypto_get_tag_content(i8** %4, i32* %5, i8* %14, i32 100)
%149 = call i64 @strcmp(i8* %14, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%150 = icmp eq i64 %149, 0
br i1 %150, label %151, label %153
151: ; preds = %146
%152 = call i32 @handle_verify(i8** %4, i32* %5, i32 %2, i8* %15)
br label %153
153: ; preds = %151, %146
%154 = call i64 @strcmp(i8* %14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%155 = icmp eq i64 %154, 0
br i1 %155, label %156, label %160
156: ; preds = %153
%157 = call i32 @handle_sign(i8** %4, i32* %5, i32 %2, i8* %15)
br label %160
158: ; preds = %140, %134, %128, %122, %116, %113, %107, %101, %98, %92, %89, %83, %77, %74, %69, %63, %57, %54, %49, %43, %37, %34, %28, %25, %19, %3
%159 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.7, i64 0, i64 0))
br label %160
160: ; preds = %153, %156, %158
%161 = phi i32 [ 0, %158 ], [ 1, %156 ], [ 1, %153 ]
ret i32 %161
}