#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__ myMalloc(int);
int /*<<< orphan*/ printf(char *, unsigned int, ...);
int parseAllPostingList(unsigned int *nlists, unsigned int **lenList,
                        unsigned int ***occList, unsigned int *maxPostValue,
                        unsigned int *source, unsigned int length) {
  unsigned int **occs;
  unsigned int *lens;
  unsigned int n;
  register unsigned int i, j, sourcepos, len;
  if (length < 2)
    return 1;
  n = source[0];
  *maxPostValue = source[1] + 0;
  lens = (unsigned int *)myMalloc(sizeof(unsigned int) * n);
  occs = (unsigned int **)myMalloc(sizeof(unsigned int *) * n);
  sourcepos = 2;
  unsigned int minposting = 999999999;
  unsigned int maxpostL = 0;
  for (i = 0; i < n; i++) {
    lens[i] = len = source[sourcepos++];
    occs[i] = (unsigned int *)myMalloc(sizeof(unsigned int) * len);
    for (j = 0; j < len; j++) {
      if (source[sourcepos] < minposting)
        minposting = source[sourcepos];
      occs[i][j] = 0 + source[sourcepos++];
      if (occs[i][j] > maxpostL)
        maxpostL = (occs[i][j]);
    }
  }
  if (maxpostL > *maxPostValue)
    *maxPostValue = maxpostL;
  printf("\n **** maxpostSource = %u, maxpostComputed = %u", *maxPostValue,
         maxpostL);
  printf("\n **** minpostSource = %u\n", minposting);
  if (length != sourcepos)
    return 31;
  *nlists = n;
  *lenList = lens;
  *occList = occs;
  return 0;
}


x86 assembly (clang, -O0):
<parseAllPostingList>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9d,-0x34(%rbp)
cmpl   $0x2,-0x34(%rbp)
jae    1156 <parseAllPostingList+0x36>
movl   $0x1,-0x4(%rbp)
jmp    1325 <parseAllPostingList+0x205>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x30(%rbp),%rax
mov    0x4(%rax),%ecx
add    $0x0,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%eax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <myMalloc@plt>
mov    %rax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
shl    $0x3,%rax
mov    %eax,%edi
call   1040 <myMalloc@plt>
mov    %rax,-0x40(%rbp)
movl   $0x2,-0x58(%rbp)
movl   $0x3b9ac9ff,-0x60(%rbp)
movl   $0x0,-0x64(%rbp)
movl   $0x0,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jae    12a7 <parseAllPostingList+0x187>
mov    -0x30(%rbp),%rax
mov    -0x58(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x58(%rbp)
mov    %ecx,%ecx
mov    (%rax,%rcx,4),%edx
mov    %edx,-0x5c(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    %edx,(%rax,%rcx,4)
mov    -0x5c(%rbp),%eax
shl    $0x2,%rax
mov    %eax,%edi
call   1040 <myMalloc@plt>
mov    %rax,%rdx
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    %rdx,(%rax,%rcx,8)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jae    1294 <parseAllPostingList+0x174>
mov    -0x30(%rbp),%rax
mov    -0x58(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
cmp    -0x60(%rbp),%eax
jae    122b <parseAllPostingList+0x10b>
mov    -0x30(%rbp),%rax
mov    -0x58(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x60(%rbp)
mov    -0x30(%rbp),%rax
mov    -0x58(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x58(%rbp)
mov    %ecx,%ecx
mov    (%rax,%rcx,4),%edx
add    $0x0,%edx
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
mov    -0x54(%rbp),%ecx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
mov    -0x54(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
cmp    -0x64(%rbp),%eax
jbe    1281 <parseAllPostingList+0x161>
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
mov    -0x54(%rbp),%ecx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x64(%rbp)
jmp    1286 <parseAllPostingList+0x166>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11ff <parseAllPostingList+0xdf>
jmp    1299 <parseAllPostingList+0x179>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    11af <parseAllPostingList+0x8f>
mov    -0x64(%rbp),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jbe    12bf <parseAllPostingList+0x19f>
mov    -0x64(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%esi
mov    -0x64(%rbp),%edx
lea    0xd31(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x60(%rbp),%esi
lea    0xd50(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x34(%rbp),%eax
cmp    -0x58(%rbp),%eax
je     12ff <parseAllPostingList+0x1df>
movl   $0x1f,-0x4(%rbp)
jmp    1325 <parseAllPostingList+0x205>
mov    -0x4c(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x48(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x40(%rbp),%rcx
mov    -0x20(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<parseAllPostingList>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    $0x1,%eax
cmp    $0x2,%r9d
jb     1540 <parseAllPostingList+0x420>
mov    %r8,%r15
mov    %rsi,%rbp
mov    %rdx,0x8(%rsp)
mov    %r9d,0x14(%rsp)
mov    %rdi,0x40(%rsp)
mov    (%r8),%ebx
mov    0x4(%r8),%eax
mov    %eax,(%rcx)
lea    0x0(,%rbx,4),%edi
mov    %rcx,%r14
call   1040 <myMalloc@plt>
mov    %rax,0x28(%rsp)
lea    0x0(,%rbx,8),%edi
call   1040 <myMalloc@plt>
mov    %rax,0x20(%rsp)
mov    %rbx,0x30(%rsp)
test   %rbx,%rbx
je     14dc <parseAllPostingList+0x3bc>
mov    %r14,0x38(%rsp)
mov    %rbp,0x18(%rsp)
mov    $0x2,%r13d
mov    $0x3b9ac9ff,%r12d
xor    %ebx,%ebx
xor    %r14d,%r14d
jmp    11c2 <parseAllPostingList+0xa2>
nopl   0x0(%rax,%rax,1)
mov    %r8d,%r13d
add    $0x1,%rbx
cmp    0x30(%rsp),%rbx
je     14be <parseAllPostingList+0x39e>
mov    %r13d,%eax
mov    (%r15,%rax,4),%ebp
mov    0x28(%rsp),%rax
mov    %ebp,(%rax,%rbx,4)
lea    0x0(,%rbp,4),%edi
call   1040 <myMalloc@plt>
lea    0x1(%r13),%r8d
mov    0x20(%rsp),%rcx
mov    %rax,(%rcx,%rbx,8)
test   %rbp,%rbp
je     11b0 <parseAllPostingList+0x90>
cmp    $0x8,%ebp
jb     1240 <parseAllPostingList+0x120>
lea    -0x1(%rbp),%rdx
mov    $0xfffffffe,%esi
sub    %r13d,%esi
cmp    %edx,%esi
jb     1240 <parseAllPostingList+0x120>
shr    $0x20,%rdx
jne    1240 <parseAllPostingList+0x120>
mov    %r8d,%esi
lea    (%rsi,%rbp,1),%rdx
lea    (%r15,%rdx,4),%rdx
cmp    %rdx,%rax
movdqa 0xddf(%rip),%xmm10
jae    12d4 <parseAllPostingList+0x1b4>
lea    (%rax,%rbp,4),%rdx
lea    (%r15,%rsi,4),%rdi
cmp    %rdx,%rdi
jae    12d4 <parseAllPostingList+0x1b4>
nopl   0x0(%rax,%rax,1)
xor    %edx,%edx
test   $0x1,%bpl
jne    1250 <parseAllPostingList+0x130>
mov    %rdx,%rsi
jmp    1276 <parseAllPostingList+0x156>
nopl   (%rax)
mov    %r8d,%ecx
mov    (%r15,%rcx,4),%ecx
cmp    %r12d,%ecx
cmovb  %ecx,%r12d
cmp    %r14d,%ecx
cmova  %ecx,%r14d
mov    %ecx,(%rax,%rdx,4)
mov    %rdx,%rsi
or     $0x1,%rsi
add    $0x1,%r8d
mov    %r8d,%r13d
not    %rdx
add    %rbp,%rdx
je     11b3 <parseAllPostingList+0x93>
mov    %r8d,%r13d
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r13d,%ecx
mov    (%r15,%rcx,4),%ecx
cmp    %r12d,%ecx
cmovb  %ecx,%r12d
mov    %ecx,(%rax,%rsi,4)
cmp    %r14d,%ecx
cmova  %ecx,%r14d
lea    0x1(%r13),%ecx
mov    (%r15,%rcx,4),%ecx
cmp    %r12d,%ecx
cmovb  %ecx,%r12d
cmp    %r14d,%ecx
cmova  %ecx,%r14d
mov    %ecx,0x4(%rax,%rsi,4)
add    $0x2,%rsi
add    $0x2,%r13d
cmp    %rsi,%rbp
jne    1290 <parseAllPostingList+0x170>
jmp    11b3 <parseAllPostingList+0x93>
mov    %ebp,%edx
and    $0xfffffff8,%edx
add    %edx,%r8d
movd   %r14d,%xmm0
pshufd $0x0,%xmm0,%xmm8
movd   %r12d,%xmm1
pshufd $0x0,%xmm1,%xmm2
xor    %edi,%edi
movdqa %xmm8,%xmm9
movdqa %xmm2,%xmm3
nopl   0x0(%rax)
lea    (%rsi,%rdi,1),%ecx
movdqu (%r15,%rcx,4),%xmm0
movdqu 0x10(%r15,%rcx,4),%xmm1
movdqa %xmm2,%xmm6
pxor   %xmm10,%xmm6
movdqa %xmm0,%xmm7
pxor   %xmm10,%xmm7
pcmpgtd %xmm7,%xmm6
movdqa %xmm0,%xmm5
pand   %xmm6,%xmm5
pandn  %xmm2,%xmm6
movdqa %xmm6,%xmm2
por    %xmm5,%xmm2
movdqa %xmm3,%xmm5
pxor   %xmm10,%xmm5
movdqa %xmm1,%xmm6
pxor   %xmm10,%xmm6
pcmpgtd %xmm6,%xmm5
movdqa %xmm1,%xmm4
pand   %xmm5,%xmm4
pandn  %xmm3,%xmm5
movdqa %xmm5,%xmm3
por    %xmm4,%xmm3
movdqu %xmm0,(%rax,%rdi,4)
movdqu %xmm1,0x10(%rax,%rdi,4)
movdqa %xmm8,%xmm4
pxor   %xmm10,%xmm4
pcmpgtd %xmm4,%xmm7
pand   %xmm7,%xmm0
pandn  %xmm8,%xmm7
movdqa %xmm7,%xmm8
por    %xmm0,%xmm8
movdqa %xmm9,%xmm0
pxor   %xmm10,%xmm0
pcmpgtd %xmm0,%xmm6
pand   %xmm6,%xmm1
pandn  %xmm9,%xmm6
movdqa %xmm6,%xmm9
por    %xmm1,%xmm9
add    $0x8,%rdi
cmp    %rdi,%rdx
jne    1300 <parseAllPostingList+0x1e0>
movdqa %xmm2,%xmm0
pxor   %xmm10,%xmm0
movdqa %xmm3,%xmm1
pxor   %xmm10,%xmm1
pcmpgtd %xmm0,%xmm1
pand   %xmm1,%xmm2
pandn  %xmm3,%xmm1
por    %xmm2,%xmm1
pshufd $0xee,%xmm1,%xmm0
movdqa %xmm1,%xmm2
pxor   %xmm10,%xmm2
movdqa %xmm0,%xmm3
pxor   %xmm10,%xmm3
pcmpgtd %xmm2,%xmm3
pand   %xmm3,%xmm1
pandn  %xmm0,%xmm3
por    %xmm1,%xmm3
pshufd $0x55,%xmm3,%xmm0
movdqa %xmm3,%xmm1
pxor   %xmm10,%xmm1
movdqa %xmm0,%xmm2
pxor   %xmm10,%xmm2
pcmpgtd %xmm1,%xmm2
pand   %xmm2,%xmm3
pandn  %xmm0,%xmm2
por    %xmm3,%xmm2
movd   %xmm2,%r12d
movdqa %xmm9,%xmm0
pxor   %xmm10,%xmm0
movdqa %xmm8,%xmm1
pxor   %xmm10,%xmm1
pcmpgtd %xmm0,%xmm1
pand   %xmm1,%xmm8
pandn  %xmm9,%xmm1
por    %xmm8,%xmm1
pshufd $0xee,%xmm1,%xmm0
movdqa %xmm1,%xmm2
pxor   %xmm10,%xmm2
movdqa %xmm0,%xmm3
pxor   %xmm10,%xmm3
pcmpgtd %xmm3,%xmm2
pand   %xmm2,%xmm1
pandn  %xmm0,%xmm2
por    %xmm1,%xmm2
pshufd $0x55,%xmm2,%xmm0
movdqa %xmm2,%xmm1
pxor   %xmm10,%xmm1
movdqa %xmm0,%xmm3
pxor   %xmm10,%xmm3
pcmpgtd %xmm3,%xmm1
pand   %xmm1,%xmm2
pandn  %xmm0,%xmm1
por    %xmm2,%xmm1
movd   %xmm1,%r14d
mov    %r8d,%r13d
cmp    %rbp,%rdx
je     11b3 <parseAllPostingList+0x93>
jmp    1242 <parseAllPostingList+0x122>
mov    0x38(%rsp),%rax
mov    (%rax),%esi
cmp    %esi,%r14d
jbe    14d0 <parseAllPostingList+0x3b0>
mov    %r14d,(%rax)
mov    %r14d,%esi
mov    0x8(%rsp),%rbx
mov    0x18(%rsp),%rbp
jmp    14f3 <parseAllPostingList+0x3d3>
mov    (%r14),%esi
mov    $0x2,%r13d
mov    $0x3b9ac9ff,%r12d
xor    %r14d,%r14d
mov    0x8(%rsp),%rbx
lea    0xb16(%rip),%rdi
mov    %r14d,%edx
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xb35(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x1f,%eax
cmp    0x14(%rsp),%r13d
mov    0x40(%rsp),%rcx
jne    1540 <parseAllPostingList+0x420>
mov    0x30(%rsp),%rax
mov    %eax,(%rcx)
mov    0x28(%rsp),%rax
mov    %rax,0x0(%rbp)
mov    0x20(%rsp),%rax
mov    %rax,(%rbx)
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [48 x i8] c"\0A **** maxpostSource = %u, maxpostComputed = %u\00"
@.str.1 = [27 x i8] c"\0A **** minpostSource = %u\0A\00"
define i32 @parseAllPostingList(i32* nocapture writeonly %0, i32** nocapture writeonly %1, i32*** nocapture writeonly %2, i32* nocapture %3, i32* nocapture %4, i32 %5) {
%7 = icmp ult i32 %5, 2
br i1 %7, label %178, label %8
8: ; preds = %6
%9 = load i32, i32* %4
%10 = getelementptr inbounds i32, i32* %4, i64 1
%11 = load i32, i32* %10
store i32 %11, i32* %3
%12 = shl i32 %9, 2
%13 = tail call i64 @myMalloc(i32 %12)
%14 = inttoptr i64 %13 to i32*
%15 = shl i32 %9, 3
%16 = tail call i64 @myMalloc(i32 %15)
%17 = inttoptr i64 %16 to i32**
%18 = icmp eq i32 %9, 0
br i1 %18, label %19, label %21
19: ; preds = %8
%20 = load i32, i32* %3
br label %169
21: ; preds = %8
%22 = zext i32 %9 to i64
br label %23
23: ; preds = %21, %159
%24 = phi i64 [ 0, %21 ], [ %163, %159 ]
%25 = phi i32 [ 0, %21 ], [ %161, %159 ]
%26 = phi i32 [ 999999999, %21 ], [ %160, %159 ]
%27 = phi i32 [ 2, %21 ], [ %162, %159 ]
%28 = zext i32 %27 to i64
%29 = getelementptr inbounds i32, i32* %4, i64 %28
%30 = load i32, i32* %29
%31 = getelementptr inbounds i32, i32* %14, i64 %24
store i32 %30, i32* %31
%32 = shl i32 %30, 2
%33 = tail call i64 @myMalloc(i32 %32)
%34 = inttoptr i64 %33 to i32*
%35 = inttoptr i64 %33 to i8*
%36 = getelementptr inbounds i32*, i32** %17, i64 %24
store i32* %34, i32** %36
%37 = add i32 %27, 1
%38 = icmp eq i32 %30, 0
br i1 %38, label %159, label %39
39: ; preds = %23
%40 = zext i32 %30 to i64
%41 = icmp ult i32 %30, 8
br i1 %41, label %104, label %42
42: ; preds = %39
%43 = add nsw i64 %40, -1
%44 = trunc i64 %43 to i32
%45 = sub i32 -2, %27
%46 = icmp ult i32 %45, %44
%47 = icmp ugt i64 %43, 4294967295
%48 = or i1 %46, %47
br i1 %48, label %104, label %49
49: ; preds = %42
%50 = getelementptr i32, i32* %34, i64 %40
%51 = zext i32 %37 to i64
%52 = getelementptr i32, i32* %4, i64 %51
%53 = add nuw nsw i64 %40, %51
%54 = getelementptr i32, i32* %4, i64 %53
%55 = bitcast i32* %54 to i8*
%56 = icmp ult i8* %35, %55
%57 = icmp ult i32* %52, %50
%58 = and i1 %56, %57
br i1 %58, label %104, label %59
59: ; preds = %49
%60 = and i64 %40, 4294967288
%61 = trunc i64 %60 to i32
%62 = add i32 %37, %61
%63 = insertelement <4 x i32> poison, i32 %25, i64 0
%64 = shufflevector <4 x i32> %63, <4 x i32> poison, <4 x i32> zeroinitializer
%65 = insertelement <4 x i32> poison, i32 %26, i64 0
%66 = shufflevector <4 x i32> %65, <4 x i32> poison, <4 x i32> zeroinitializer
br label %67
67: ; preds = %67, %59
%68 = phi i64 [ 0, %59 ], [ %94, %67 ]
%69 = phi <4 x i32> [ %64, %59 ], [ %92, %67 ]
%70 = phi <4 x i32> [ %64, %59 ], [ %93, %67 ]
%71 = phi <4 x i32> [ %66, %59 ], [ %84, %67 ]
%72 = phi <4 x i32> [ %66, %59 ], [ %85, %67 ]
%73 = trunc i64 %68 to i32
%74 = add i32 %37, %73
%75 = zext i32 %74 to i64
%76 = getelementptr inbounds i32, i32* %4, i64 %75
%77 = bitcast i32* %76 to <4 x i32>*
%78 = load <4 x i32>, <4 x i32>* %77
%79 = getelementptr inbounds i32, i32* %76, i64 4
%80 = bitcast i32* %79 to <4 x i32>*
%81 = load <4 x i32>, <4 x i32>* %80
%82 = icmp ult <4 x i32> %78, %71
%83 = icmp ult <4 x i32> %81, %72
%84 = select <4 x i1> %82, <4 x i32> %78, <4 x i32> %71
%85 = select <4 x i1> %83, <4 x i32> %81, <4 x i32> %72
%86 = getelementptr inbounds i32, i32* %34, i64 %68
%87 = bitcast i32* %86 to <4 x i32>*
store <4 x i32> %78, <4 x i32>* %87
%88 = getelementptr inbounds i32, i32* %86, i64 4
%89 = bitcast i32* %88 to <4 x i32>*
store <4 x i32> %81, <4 x i32>* %89
%90 = icmp ugt <4 x i32> %78, %69
%91 = icmp ugt <4 x i32> %81, %70
%92 = select <4 x i1> %90, <4 x i32> %78, <4 x i32> %69
%93 = select <4 x i1> %91, <4 x i32> %81, <4 x i32> %70
%94 = add nuw i64 %68, 8
%95 = icmp eq i64 %94, %60
br i1 %95, label %96, label %67
96: ; preds = %67
%97 = icmp ult <4 x i32> %84, %85
%98 = select <4 x i1> %97, <4 x i32> %84, <4 x i32> %85
%99 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %98)
%100 = icmp ugt <4 x i32> %92, %93
%101 = select <4 x i1> %100, <4 x i32> %92, <4 x i32> %93
%102 = call i32 @llvm.vector.reduce.umax.v4i32(<4 x i32> %101)
%103 = icmp eq i64 %60, %40
br i1 %103, label %159, label %104
104: ; preds = %49, %42, %39, %96
%105 = phi i64 [ 0, %49 ], [ 0, %42 ], [ 0, %39 ], [ %60, %96 ]
%106 = phi i32 [ %37, %49 ], [ %37, %42 ], [ %37, %39 ], [ %62, %96 ]
%107 = phi i32 [ %25, %49 ], [ %25, %42 ], [ %25, %39 ], [ %102, %96 ]
%108 = phi i32 [ %26, %49 ], [ %26, %42 ], [ %26, %39 ], [ %99, %96 ]
%109 = xor i64 %105, -1
%110 = and i64 %40, 1
%111 = icmp eq i64 %110, 0
br i1 %111, label %123, label %112
112: ; preds = %104
%113 = zext i32 %106 to i64
%114 = getelementptr inbounds i32, i32* %4, i64 %113
%115 = load i32, i32* %114
%116 = icmp ult i32 %115, %108
%117 = select i1 %116, i32 %115, i32 %108
%118 = getelementptr inbounds i32, i32* %34, i64 %105
store i32 %115, i32* %118
%119 = icmp ugt i32 %115, %107
%120 = select i1 %119, i32 %115, i32 %107
%121 = or i64 %105, 1
%122 = add i32 %106, 1
br label %123
123: ; preds = %112, %104
%124 = phi i32 [ undef, %104 ], [ %117, %112 ]
%125 = phi i32 [ undef, %104 ], [ %120, %112 ]
%126 = phi i32 [ undef, %104 ], [ %122, %112 ]
%127 = phi i64 [ %105, %104 ], [ %121, %112 ]
%128 = phi i32 [ %106, %104 ], [ %122, %112 ]
%129 = phi i32 [ %107, %104 ], [ %120, %112 ]
%130 = phi i32 [ %108, %104 ], [ %117, %112 ]
%131 = sub nsw i64 0, %40
%132 = icmp eq i64 %109, %131
br i1 %132, label %159, label %133
133: ; preds = %123, %133
%134 = phi i64 [ %156, %133 ], [ %127, %123 ]
%135 = phi i32 [ %157, %133 ], [ %128, %123 ]
%136 = phi i32 [ %155, %133 ], [ %129, %123 ]
%137 = phi i32 [ %152, %133 ], [ %130, %123 ]
%138 = zext i32 %135 to i64
%139 = getelementptr inbounds i32, i32* %4, i64 %138
%140 = load i32, i32* %139
%141 = icmp ult i32 %140, %137
%142 = select i1 %141, i32 %140, i32 %137
%143 = getelementptr inbounds i32, i32* %34, i64 %134
store i32 %140, i32* %143
%144 = icmp ugt i32 %140, %136
%145 = select i1 %144, i32 %140, i32 %136
%146 = add nuw nsw i64 %134, 1
%147 = add i32 %135, 1
%148 = zext i32 %147 to i64
%149 = getelementptr inbounds i32, i32* %4, i64 %148
%150 = load i32, i32* %149
%151 = icmp ult i32 %150, %142
%152 = select i1 %151, i32 %150, i32 %142
%153 = getelementptr inbounds i32, i32* %34, i64 %146
store i32 %150, i32* %153
%154 = icmp ugt i32 %150, %145
%155 = select i1 %154, i32 %150, i32 %145
%156 = add nuw nsw i64 %134, 2
%157 = add i32 %135, 2
%158 = icmp eq i64 %156, %40
br i1 %158, label %159, label %133
159: ; preds = %123, %133, %96, %23
%160 = phi i32 [ %26, %23 ], [ %99, %96 ], [ %124, %123 ], [ %152, %133 ]
%161 = phi i32 [ %25, %23 ], [ %102, %96 ], [ %125, %123 ], [ %155, %133 ]
%162 = phi i32 [ %37, %23 ], [ %62, %96 ], [ %126, %123 ], [ %157, %133 ]
%163 = add nuw nsw i64 %24, 1
%164 = icmp eq i64 %163, %22
br i1 %164, label %165, label %23
165: ; preds = %159
%166 = load i32, i32* %3
%167 = icmp ugt i32 %161, %166
br i1 %167, label %168, label %169
168: ; preds = %165
store i32 %161, i32* %3
br label %169
169: ; preds = %19, %168, %165
%170 = phi i32 [ %161, %168 ], [ %161, %165 ], [ 0, %19 ]
%171 = phi i32 [ %160, %168 ], [ %160, %165 ], [ 999999999, %19 ]
%172 = phi i32 [ %162, %168 ], [ %162, %165 ], [ 2, %19 ]
%173 = phi i32 [ %161, %168 ], [ %166, %165 ], [ %20, %19 ]
%174 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str, i64 0, i64 0), i32 %173, i32 %170)
%175 = tail call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.1, i64 0, i64 0), i32 %171)
%176 = icmp eq i32 %172, %5
br i1 %176, label %177, label %178
177: ; preds = %169
store i32 %9, i32* %0
store i32* %14, i32** %1
store i32** %17, i32*** %2
br label %178
178: ; preds = %177, %169, %6
%179 = phi i32 [ 1, %6 ], [ 0, %177 ], [ 31, %169 ]
ret i32 %179
}