#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 */
scalar_t__ ccnl_ccnb_mkHeader(unsigned char *, int, int);
scalar_t__ ccnl_ccnb_mkStrBlob(unsigned char *, int, int, char *);
int /*<<< orphan*/ memset(char *, int /*<<< orphan*/, int);
int /*<<< orphan*/ sprintf(char *, char *, void *);
int ccnl_mgmt_create_interest_stmt(
    int num_interests, long *interest, long *interestnext, long *interestprev,
    int *interestlast, int *interestmin, int *interestmax, int *interestretries,
    long *interestpublisher, int *interestprefixlen, char **interestprefix,
    unsigned char *stmt, int len3) {
  int it;
  char str[100];
  for (it = 0; it < num_interests; ++it) {
    len3 += ccnl_ccnb_mkHeader(stmt + len3, 26, 2);
    memset(str, 0, 100);
    sprintf(str, "%p", (void *)interest[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99216, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%p", (void *)interestnext[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99203, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%p", (void *)interestprev[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99204, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%d", interestlast[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99217, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%d", interestmin[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99218, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%d", interestmax[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99219, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%d", interestretries[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99220, 2, str);
    memset(str, 0, 100);
    sprintf(str, "%p", (void *)interestpublisher[it]);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99221, 2, str);
    len3 += ccnl_ccnb_mkStrBlob(stmt + len3, 99215, 2, interestprefix[it]);
    stmt[len3++] = 0;
  }
  return len3;
}


x86 assembly (clang, -O0):
<ccnl_mgmt_create_interest_stmt>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    150e <ccnl_mgmt_create_interest_stmt+0x3ce>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
mov    $0x1a,%esi
mov    $0x2,%edx
call   1060 <ccnl_ccnb_mkHeader@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
lea    0xe1c(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18390,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
lea    0xdbc(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18383,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    -0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
lea    0xd5c(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18384,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movslq (%rax,%rcx,4),%rdx
lea    0xcff(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18391,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movslq (%rax,%rcx,4),%rdx
lea    0xc9f(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18392,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movslq (%rax,%rcx,4),%rdx
lea    0xc3f(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18393,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movslq (%rax,%rcx,4),%rdx
lea    0xbdf(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18394,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
lea    -0xa0(%rbp),%rdi
mov    0x20(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
lea    0xb7c(%rip),%rsi
call   1050 <sprintf@plt>
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
lea    -0xa0(%rbp),%rcx
mov    $0x18395,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
mov    0x38(%rbp),%rdi
movslq 0x40(%rbp),%rax
add    %rax,%rdi
mov    0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rcx
mov    $0x1838f,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %rax,%rcx
movslq 0x40(%rbp),%rax
add    %rcx,%rax
mov    %eax,0x40(%rbp)
mov    0x38(%rbp),%rax
mov    0x40(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,0x40(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1184 <ccnl_mgmt_create_interest_stmt+0x44>
mov    0x40(%rbp),%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ccnl_mgmt_create_interest_stmt>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %r9,0x20(%rsp)
mov    %r8,0x18(%rsp)
mov    %rcx,0x28(%rsp)
mov    0x100(%rsp),%eax
test   %edi,%edi
jle    13ff <ccnl_mgmt_create_interest_stmt+0x2bf>
mov    %rsi,%rbp
mov    %edi,%ecx
shl    $0x2,%rcx
mov    %rcx,0x8(%rsp)
xor    %ebx,%ebx
lea    0x30(%rsp),%r14
mov    %rdx,(%rsp)
mov    %rsi,0x10(%rsp)
nopl   (%rax)
movslq %eax,%r13
mov    0xf8(%rsp),%r12
lea    (%r12,%r13,1),%rdi
mov    $0x1a,%esi
mov    $0x2,%edx
call   1060 <ccnl_ccnb_mkHeader@plt>
add    %eax,%r13d
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0x0(%rbp,%rbx,2),%rdx
mov    %r14,%rdi
lea    0xe31(%rip),%r15
mov    %r15,%rsi
call   1050 <sprintf@plt>
movslq %r13d,%rbp
mov    0x18(%rsp),%r13
lea    (%r12,%rbp,1),%rdi
mov    $0x18390,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    (%rsp),%rax
mov    (%rax,%rbx,2),%rdx
mov    %r14,%rdi
mov    %r15,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18383,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0x28(%rsp),%rax
mov    (%rax,%rbx,2),%rdx
mov    %r14,%rdi
mov    %r15,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18384,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
movslq 0x0(%r13,%rbx,1),%rdx
mov    %r14,%rdi
lea    0xd73(%rip),%r13
mov    %r13,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18391,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0x20(%rsp),%rax
movslq (%rax,%rbx,1),%rdx
mov    %r14,%rdi
mov    %r13,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18392,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0xd0(%rsp),%rax
movslq (%rax,%rbx,1),%rdx
mov    %r14,%rdi
mov    %r13,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18393,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0xd8(%rsp),%rax
movslq (%rax,%rbx,1),%rdx
mov    %r14,%rdi
mov    %r13,%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18394,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1030 <memset@plt>
mov    0xe0(%rsp),%rax
mov    (%rax,%rbx,2),%rdx
mov    %r14,%rdi
lea    0xc68(%rip),%rsi
call   1050 <sprintf@plt>
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    $0x18395,%esi
mov    $0x2,%edx
mov    %r14,%rcx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
add    %eax,%ebp
movslq %ebp,%rbp
lea    (%r12,%rbp,1),%rdi
mov    0xf0(%rsp),%rax
mov    (%rax,%rbx,2),%rcx
mov    $0x1838f,%esi
mov    $0x2,%edx
call   1040 <ccnl_ccnb_mkStrBlob@plt>
mov    %ebp,%ecx
add    %eax,%ecx
add    %ebp,%eax
add    $0x1,%eax
mov    0x10(%rsp),%rbp
movslq %ecx,%rcx
movb   $0x0,(%r12,%rcx,1)
add    $0x4,%rbx
cmp    %rbx,0x8(%rsp)
jne    1190 <ccnl_mgmt_create_interest_stmt+0x50>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%p\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @ccnl_mgmt_create_interest_stmt(i32 %0, i64* %1, i64* %2, i64* %3, i32* %4, i32* %5, i32* %6, i32* %7, i64* %8, i32* %9, i8** %10, i8* %11, i32 %12) {
%14 = alloca i32
%15 = alloca i64*
%16 = alloca i64*
%17 = alloca i64*
%18 = alloca i32*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca i32*
%22 = alloca i64*
%23 = alloca i32*
%24 = alloca i8**
%25 = alloca i8*
%26 = alloca i32
%27 = alloca i32
%28 = alloca [100 x i8]
store i32 %0, i32* %14
store i64* %1, i64** %15
store i64* %2, i64** %16
store i64* %3, i64** %17
store i32* %4, i32** %18
store i32* %5, i32** %19
store i32* %6, i32** %20
store i32* %7, i32** %21
store i64* %8, i64** %22
store i32* %9, i32** %23
store i8** %10, i8*** %24
store i8* %11, i8** %25
store i32 %12, i32* %26
store i32 0, i32* %27
br label %29
29: ; preds = %226, %13
%30 = load i32, i32* %27
%31 = load i32, i32* %14
%32 = icmp slt i32 %30, %31
br i1 %32, label %33, label %229
33: ; preds = %29
%34 = load i8*, i8** %25
%35 = load i32, i32* %26
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8, i8* %34, i64 %36
%38 = call i64 @ccnl_ccnb_mkHeader(i8* %37, i32 26, i32 2)
%39 = load i32, i32* %26
%40 = sext i32 %39 to i64
%41 = add nsw i64 %40, %38
%42 = trunc i64 %41 to i32
store i32 %42, i32* %26
%43 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%44 = call i32 @memset(i8* %43, i32 0, i32 100)
%45 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%46 = load i64*, i64** %15
%47 = load i32, i32* %27
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i64, i64* %46, i64 %48
%50 = load i64, i64* %49
%51 = inttoptr i64 %50 to i8*
%52 = call i32 @sprintf(i8* %45, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %51)
%53 = load i8*, i8** %25
%54 = load i32, i32* %26
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i8, i8* %53, i64 %55
%57 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%58 = call i64 @ccnl_ccnb_mkStrBlob(i8* %56, i32 99216, i32 2, i8* %57)
%59 = load i32, i32* %26
%60 = sext i32 %59 to i64
%61 = add nsw i64 %60, %58
%62 = trunc i64 %61 to i32
store i32 %62, i32* %26
%63 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%64 = call i32 @memset(i8* %63, i32 0, i32 100)
%65 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%66 = load i64*, i64** %16
%67 = load i32, i32* %27
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i64, i64* %66, i64 %68
%70 = load i64, i64* %69
%71 = inttoptr i64 %70 to i8*
%72 = call i32 @sprintf(i8* %65, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %71)
%73 = load i8*, i8** %25
%74 = load i32, i32* %26
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i8, i8* %73, i64 %75
%77 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%78 = call i64 @ccnl_ccnb_mkStrBlob(i8* %76, i32 99203, i32 2, i8* %77)
%79 = load i32, i32* %26
%80 = sext i32 %79 to i64
%81 = add nsw i64 %80, %78
%82 = trunc i64 %81 to i32
store i32 %82, i32* %26
%83 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%84 = call i32 @memset(i8* %83, i32 0, i32 100)
%85 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%86 = load i64*, i64** %17
%87 = load i32, i32* %27
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds i64, i64* %86, i64 %88
%90 = load i64, i64* %89
%91 = inttoptr i64 %90 to i8*
%92 = call i32 @sprintf(i8* %85, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %91)
%93 = load i8*, i8** %25
%94 = load i32, i32* %26
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds i8, i8* %93, i64 %95
%97 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%98 = call i64 @ccnl_ccnb_mkStrBlob(i8* %96, i32 99204, i32 2, i8* %97)
%99 = load i32, i32* %26
%100 = sext i32 %99 to i64
%101 = add nsw i64 %100, %98
%102 = trunc i64 %101 to i32
store i32 %102, i32* %26
%103 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%104 = call i32 @memset(i8* %103, i32 0, i32 100)
%105 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%106 = load i32*, i32** %18
%107 = load i32, i32* %27
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i32, i32* %106, i64 %108
%110 = load i32, i32* %109
%111 = sext i32 %110 to i64
%112 = inttoptr i64 %111 to i8*
%113 = call i32 @sprintf(i8* %105, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %112)
%114 = load i8*, i8** %25
%115 = load i32, i32* %26
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i8, i8* %114, i64 %116
%118 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%119 = call i64 @ccnl_ccnb_mkStrBlob(i8* %117, i32 99217, i32 2, i8* %118)
%120 = load i32, i32* %26
%121 = sext i32 %120 to i64
%122 = add nsw i64 %121, %119
%123 = trunc i64 %122 to i32
store i32 %123, i32* %26
%124 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%125 = call i32 @memset(i8* %124, i32 0, i32 100)
%126 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%127 = load i32*, i32** %19
%128 = load i32, i32* %27
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i32, i32* %127, i64 %129
%131 = load i32, i32* %130
%132 = sext i32 %131 to i64
%133 = inttoptr i64 %132 to i8*
%134 = call i32 @sprintf(i8* %126, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %133)
%135 = load i8*, i8** %25
%136 = load i32, i32* %26
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds i8, i8* %135, i64 %137
%139 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%140 = call i64 @ccnl_ccnb_mkStrBlob(i8* %138, i32 99218, i32 2, i8* %139)
%141 = load i32, i32* %26
%142 = sext i32 %141 to i64
%143 = add nsw i64 %142, %140
%144 = trunc i64 %143 to i32
store i32 %144, i32* %26
%145 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%146 = call i32 @memset(i8* %145, i32 0, i32 100)
%147 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%148 = load i32*, i32** %20
%149 = load i32, i32* %27
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds i32, i32* %148, i64 %150
%152 = load i32, i32* %151
%153 = sext i32 %152 to i64
%154 = inttoptr i64 %153 to i8*
%155 = call i32 @sprintf(i8* %147, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %154)
%156 = load i8*, i8** %25
%157 = load i32, i32* %26
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds i8, i8* %156, i64 %158
%160 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%161 = call i64 @ccnl_ccnb_mkStrBlob(i8* %159, i32 99219, i32 2, i8* %160)
%162 = load i32, i32* %26
%163 = sext i32 %162 to i64
%164 = add nsw i64 %163, %161
%165 = trunc i64 %164 to i32
store i32 %165, i32* %26
%166 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%167 = call i32 @memset(i8* %166, i32 0, i32 100)
%168 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%169 = load i32*, i32** %21
%170 = load i32, i32* %27
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds i32, i32* %169, i64 %171
%173 = load i32, i32* %172
%174 = sext i32 %173 to i64
%175 = inttoptr i64 %174 to i8*
%176 = call i32 @sprintf(i8* %168, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %175)
%177 = load i8*, i8** %25
%178 = load i32, i32* %26
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds i8, i8* %177, i64 %179
%181 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%182 = call i64 @ccnl_ccnb_mkStrBlob(i8* %180, i32 99220, i32 2, i8* %181)
%183 = load i32, i32* %26
%184 = sext i32 %183 to i64
%185 = add nsw i64 %184, %182
%186 = trunc i64 %185 to i32
store i32 %186, i32* %26
%187 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%188 = call i32 @memset(i8* %187, i32 0, i32 100)
%189 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%190 = load i64*, i64** %22
%191 = load i32, i32* %27
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds i64, i64* %190, i64 %192
%194 = load i64, i64* %193
%195 = inttoptr i64 %194 to i8*
%196 = call i32 @sprintf(i8* %189, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %195)
%197 = load i8*, i8** %25
%198 = load i32, i32* %26
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds i8, i8* %197, i64 %199
%201 = getelementptr inbounds [100 x i8], [100 x i8]* %28, i64 0, i64 0
%202 = call i64 @ccnl_ccnb_mkStrBlob(i8* %200, i32 99221, i32 2, i8* %201)
%203 = load i32, i32* %26
%204 = sext i32 %203 to i64
%205 = add nsw i64 %204, %202
%206 = trunc i64 %205 to i32
store i32 %206, i32* %26
%207 = load i8*, i8** %25
%208 = load i32, i32* %26
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds i8, i8* %207, i64 %209
%211 = load i8**, i8*** %24
%212 = load i32, i32* %27
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds i8*, i8** %211, i64 %213
%215 = load i8*, i8** %214
%216 = call i64 @ccnl_ccnb_mkStrBlob(i8* %210, i32 99215, i32 2, i8* %215)
%217 = load i32, i32* %26
%218 = sext i32 %217 to i64
%219 = add nsw i64 %218, %216
%220 = trunc i64 %219 to i32
store i32 %220, i32* %26
%221 = load i8*, i8** %25
%222 = load i32, i32* %26
%223 = add nsw i32 %222, 1
store i32 %223, i32* %26
%224 = sext i32 %222 to i64
%225 = getelementptr inbounds i8, i8* %221, i64 %224
store i8 0, i8* %225
br label %226
226: ; preds = %33
%227 = load i32, i32* %27
%228 = add nsw i32 %227, 1
store i32 %228, i32* %27
br label %29
229: ; preds = %29
%230 = load i32, i32* %26
ret i32 %230
}

LLVM IR (-O2):
@.str = [3 x i8] c"%p\00"
@.str.1 = [3 x i8] c"%d\00"
define i32 @ccnl_mgmt_create_interest_stmt(i32 %0, i64* nocapture %1, i64* nocapture %2, i64* nocapture %3, i32* nocapture %4, i32* nocapture %5, i32* nocapture %6, i32* nocapture %7, i64* nocapture %8, i32* nocapture readnone %9, i8** nocapture %10, i8* %11, i32 %12) {
%14 = alloca [100 x i8]
%15 = getelementptr inbounds [100 x i8], [100 x i8]* %14, i64 0, i64 0
%16 = icmp sgt i32 %0, 0
br i1 %16, label %17, label %123
17: ; preds = %13
%18 = zext i32 %0 to i64
br label %19
19: ; preds = %17, %19
%20 = phi i64 [ 0, %17 ], [ %121, %19 ]
%21 = phi i32 [ %12, %17 ], [ %118, %19 ]
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i8, i8* %11, i64 %22
%24 = call i64 @ccnl_ccnb_mkHeader(i8* %23, i32 26, i32 2)
%25 = trunc i64 %24 to i32
%26 = add i32 %21, %25
%27 = call i32 @memset(i8* %15, i32 0, i32 100)
%28 = getelementptr inbounds i64, i64* %1, i64 %20
%29 = load i64, i64* %28
%30 = inttoptr i64 %29 to i8*
%31 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %30)
%32 = sext i32 %26 to i64
%33 = getelementptr inbounds i8, i8* %11, i64 %32
%34 = call i64 @ccnl_ccnb_mkStrBlob(i8* %33, i32 99216, i32 2, i8* %15)
%35 = trunc i64 %34 to i32
%36 = add i32 %26, %35
%37 = call i32 @memset(i8* %15, i32 0, i32 100)
%38 = getelementptr inbounds i64, i64* %2, i64 %20
%39 = load i64, i64* %38
%40 = inttoptr i64 %39 to i8*
%41 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %40)
%42 = sext i32 %36 to i64
%43 = getelementptr inbounds i8, i8* %11, i64 %42
%44 = call i64 @ccnl_ccnb_mkStrBlob(i8* %43, i32 99203, i32 2, i8* %15)
%45 = trunc i64 %44 to i32
%46 = add i32 %36, %45
%47 = call i32 @memset(i8* %15, i32 0, i32 100)
%48 = getelementptr inbounds i64, i64* %3, i64 %20
%49 = load i64, i64* %48
%50 = inttoptr i64 %49 to i8*
%51 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %50)
%52 = sext i32 %46 to i64
%53 = getelementptr inbounds i8, i8* %11, i64 %52
%54 = call i64 @ccnl_ccnb_mkStrBlob(i8* %53, i32 99204, i32 2, i8* %15)
%55 = trunc i64 %54 to i32
%56 = add i32 %46, %55
%57 = call i32 @memset(i8* %15, i32 0, i32 100)
%58 = getelementptr inbounds i32, i32* %4, i64 %20
%59 = load i32, i32* %58
%60 = sext i32 %59 to i64
%61 = inttoptr i64 %60 to i8*
%62 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %61)
%63 = sext i32 %56 to i64
%64 = getelementptr inbounds i8, i8* %11, i64 %63
%65 = call i64 @ccnl_ccnb_mkStrBlob(i8* %64, i32 99217, i32 2, i8* %15)
%66 = trunc i64 %65 to i32
%67 = add i32 %56, %66
%68 = call i32 @memset(i8* %15, i32 0, i32 100)
%69 = getelementptr inbounds i32, i32* %5, i64 %20
%70 = load i32, i32* %69
%71 = sext i32 %70 to i64
%72 = inttoptr i64 %71 to i8*
%73 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %72)
%74 = sext i32 %67 to i64
%75 = getelementptr inbounds i8, i8* %11, i64 %74
%76 = call i64 @ccnl_ccnb_mkStrBlob(i8* %75, i32 99218, i32 2, i8* %15)
%77 = trunc i64 %76 to i32
%78 = add i32 %67, %77
%79 = call i32 @memset(i8* %15, i32 0, i32 100)
%80 = getelementptr inbounds i32, i32* %6, i64 %20
%81 = load i32, i32* %80
%82 = sext i32 %81 to i64
%83 = inttoptr i64 %82 to i8*
%84 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %83)
%85 = sext i32 %78 to i64
%86 = getelementptr inbounds i8, i8* %11, i64 %85
%87 = call i64 @ccnl_ccnb_mkStrBlob(i8* %86, i32 99219, i32 2, i8* %15)
%88 = trunc i64 %87 to i32
%89 = add i32 %78, %88
%90 = call i32 @memset(i8* %15, i32 0, i32 100)
%91 = getelementptr inbounds i32, i32* %7, i64 %20
%92 = load i32, i32* %91
%93 = sext i32 %92 to i64
%94 = inttoptr i64 %93 to i8*
%95 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %94)
%96 = sext i32 %89 to i64
%97 = getelementptr inbounds i8, i8* %11, i64 %96
%98 = call i64 @ccnl_ccnb_mkStrBlob(i8* %97, i32 99220, i32 2, i8* %15)
%99 = trunc i64 %98 to i32
%100 = add i32 %89, %99
%101 = call i32 @memset(i8* %15, i32 0, i32 100)
%102 = getelementptr inbounds i64, i64* %8, i64 %20
%103 = load i64, i64* %102
%104 = inttoptr i64 %103 to i8*
%105 = call i32 @sprintf(i8* %15, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %104)
%106 = sext i32 %100 to i64
%107 = getelementptr inbounds i8, i8* %11, i64 %106
%108 = call i64 @ccnl_ccnb_mkStrBlob(i8* %107, i32 99221, i32 2, i8* %15)
%109 = trunc i64 %108 to i32
%110 = add i32 %100, %109
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %11, i64 %111
%113 = getelementptr inbounds i8*, i8** %10, i64 %20
%114 = load i8*, i8** %113
%115 = call i64 @ccnl_ccnb_mkStrBlob(i8* %112, i32 99215, i32 2, i8* %114)
%116 = trunc i64 %115 to i32
%117 = add i32 %110, %116
%118 = add nsw i32 %117, 1
%119 = sext i32 %117 to i64
%120 = getelementptr inbounds i8, i8* %11, i64 %119
store i8 0, i8* %120
%121 = add nuw nsw i64 %20, 1
%122 = icmp eq i64 %121, %18
br i1 %122, label %123, label %19
123: ; preds = %19, %13
%124 = phi i32 [ %12, %13 ], [ %118, %19 ]
ret i32 %124
}