#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*/ insert_(int *, int *, int *, int *, int *);
int bdyadd_(int *kk, int *i1, int *i2, int *list, int *lptr, int *lend,
            int *lnew) {
  static int k, n1, n2, lp, lsav, nsav, next;
  --lend;
  --lptr;
  --list;
  k = *kk;
  n1 = *i1;
  n2 = *i2;
  lp = lend[n1];
  lsav = lptr[lp];
  lptr[lp] = *lnew;
  list[*lnew] = -k;
  lptr[*lnew] = lsav;
  lend[n1] = *lnew;
  ++(*lnew);
  next = -list[lp];
  list[lp] = next;
  nsav = next;
L1:
  lp = lend[next];
  insert_(&k, &lp, &list[1], &lptr[1], lnew);
  if (next == n2) {
    goto L2;
  }
  next = -list[lp];
  list[lp] = next;
  goto L1;
L2:
  lsav = *lnew;
  list[*lnew] = n1;
  lptr[*lnew] = *lnew + 1;
  ++(*lnew);
  next = nsav;
L3:
  if (next == n2) {
    goto L4;
  }
  list[*lnew] = next;
  lptr[*lnew] = *lnew + 1;
  ++(*lnew);
  lp = lend[next];
  next = list[lp];
  goto L3;
L4:
  list[*lnew] = -n2;
  lptr[*lnew] = lsav;
  lend[k] = *lnew;
  ++(*lnew);
  return 0;
}


x86 assembly (clang, -O0):
<bdyadd_>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x30(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x28(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x2ec8(%rip)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x2ec0(%rip)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x2eb8(%rip)
mov    -0x30(%rbp),%rax
movslq 0x2ea9(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2ea8(%rip)
mov    -0x28(%rbp),%rax
movslq 0x2e9d(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2e98(%rip)
mov    0x10(%rbp),%rax
mov    (%rax),%edx
mov    -0x28(%rbp),%rax
movslq 0x2e83(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
xor    %edx,%edx
sub    0x2e6c(%rip),%edx
mov    -0x20(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x2e68(%rip),%edx
mov    -0x28(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%edx
mov    -0x30(%rbp),%rax
movslq 0x2e3d(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rcx
movslq 0x2e2c(%rip),%rdx
xor    %eax,%eax
sub    (%rcx,%rdx,4),%eax
mov    %eax,0x2e2d(%rip)
mov    0x2e27(%rip),%edx
mov    -0x20(%rbp),%rax
movslq 0x2e10(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x2e13(%rip),%eax
mov    %eax,0x2e09(%rip)
mov    -0x30(%rbp),%rax
movslq 0x2e02(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2ded(%rip)
mov    -0x20(%rbp),%rdx
add    $0x4,%rdx
mov    -0x28(%rbp),%rcx
add    $0x4,%rcx
mov    0x10(%rbp),%r8
lea    0x2dc6(%rip),%rdi
lea    0x2dcb(%rip),%rsi
call   1030 <insert_@plt>
mov    0x2dcc(%rip),%eax
cmp    0x2db6(%rip),%eax
jne    1289 <bdyadd_+0x179>
jmp    12b8 <bdyadd_+0x1a8>
mov    -0x20(%rbp),%rcx
movslq 0x2da4(%rip),%rdx
xor    %eax,%eax
sub    (%rcx,%rdx,4),%eax
mov    %eax,0x2da5(%rip)
mov    0x2d9f(%rip),%edx
mov    -0x20(%rbp),%rax
movslq 0x2d88(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1237 <bdyadd_+0x127>
mov    0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,0x2d78(%rip)
mov    0x2d66(%rip),%edx
mov    -0x20(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%edx
add    $0x1,%edx
mov    -0x28(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x2d40(%rip),%eax
mov    %eax,0x2d3e(%rip)
mov    0x2d38(%rip),%eax
cmp    0x2d22(%rip),%eax
jne    131d <bdyadd_+0x20d>
jmp    1380 <bdyadd_+0x270>
mov    0x2d21(%rip),%edx
mov    -0x20(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%edx
add    $0x1,%edx
mov    -0x28(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x30(%rbp),%rax
movslq 0x2ce6(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2cd1(%rip)
mov    -0x20(%rbp),%rax
movslq 0x2cc6(%rip),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,0x2cc9(%rip)
jmp    1306 <bdyadd_+0x1f6>
xor    %edx,%edx
sub    0x2cac(%rip),%edx
mov    -0x20(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x2ca0(%rip),%edx
mov    -0x28(%rbp),%rax
mov    0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%edx
mov    -0x30(%rbp),%rax
movslq 0x2c71(%rip),%rcx
mov    %edx,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bdyadd_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r9,%r14
mov    %r8,%r15
mov    %rcx,%rbx
mov    0x40(%rsp),%r12
lea    -0x4(%r9),%rax
mov    (%rdi),%ecx
mov    %ecx,0x2ef7(%rip)
movslq (%rsi),%rcx
mov    %ecx,0x2ef2(%rip)
mov    (%rdx),%edx
mov    %edx,0x2eee(%rip)
movslq -0x4(%r9,%rcx,4),%rdx
mov    %edx,0x2ee7(%rip)
mov    -0x4(%r8,%rdx,4),%esi
mov    (%r12),%edi
mov    %edi,-0x4(%r8,%rdx,4)
xor    %edx,%edx
sub    0x2ec5(%rip),%edx
movslq (%r12),%rdi
mov    %edx,-0x4(%rbx,%rdi,4)
movslq (%r12),%rdx
mov    %esi,-0x4(%r8,%rdx,4)
mov    (%r12),%edx
mov    %edx,-0x4(%r9,%rcx,4)
addl   $0x1,(%r12)
lea    0x2e9f(%rip),%rdi
lea    0x2ea4(%rip),%rsi
movslq 0x2e9d(%rip),%rcx
movslq -0x4(%rbx,%rcx,4),%rdx
mov    %edx,%ebp
neg    %ebp
mov    %ebp,0x2e96(%rip)
mov    %ebp,-0x4(%rbx,%rcx,4)
mov    %ebp,0x2e88(%rip)
shl    $0x2,%rdx
sub    %rdx,%rax
mov    (%rax),%eax
mov    %eax,0x2e75(%rip)
mov    %rbx,%rdx
mov    %r8,%rcx
mov    %r12,%r8
call   1030 <insert_@plt>
mov    0x2e69(%rip),%eax
cmp    0x2e57(%rip),%eax
je     123f <bdyadd_+0x12f>
lea    0x2e52(%rip),%r13
lea    0x2e3f(%rip),%rbp
nopl   (%rax)
movslq 0x2e41(%rip),%rax
movslq -0x4(%rbx,%rax,4),%rcx
mov    %ecx,%edx
neg    %edx
mov    %edx,0x2e3a(%rip)
mov    %edx,-0x4(%rbx,%rax,4)
shl    $0x2,%rcx
mov    %r14,%rax
sub    %rcx,%rax
mov    -0x4(%rax),%eax
mov    %eax,0x2e1b(%rip)
mov    %rbp,%rdi
mov    %r13,%rsi
mov    %rbx,%rdx
mov    %r15,%rcx
mov    %r12,%r8
call   1030 <insert_@plt>
mov    0x2e09(%rip),%eax
cmp    0x2df7(%rip),%eax
jne    11f0 <bdyadd_+0xe0>
movslq (%r12),%rcx
mov    0x2de7(%rip),%edx
mov    %edx,-0x4(%rbx,%rcx,4)
movslq (%r12),%rdx
lea    0x1(%rdx),%esi
mov    %esi,-0x4(%r15,%rdx,4)
mov    (%r12),%edx
add    $0x1,%edx
mov    %edx,(%r12)
mov    0x2dd2(%rip),%esi
cmp    %eax,%esi
je     12a2 <bdyadd_+0x192>
xchg   %ax,%ax
movslq %edx,%rdx
mov    %esi,-0x4(%rbx,%rdx,4)
movslq (%r12),%rdx
lea    0x1(%rdx),%edi
mov    %edi,-0x4(%r15,%rdx,4)
addl   $0x1,(%r12)
movslq %esi,%rdx
movslq -0x4(%r14,%rdx,4),%rdx
mov    %edx,0x2da2(%rip)
mov    -0x4(%rbx,%rdx,4),%esi
mov    (%r12),%edx
cmp    %eax,%esi
jne    1270 <bdyadd_+0x160>
mov    %eax,0x2d98(%rip)
neg    %eax
movslq %edx,%rdx
mov    %eax,-0x4(%rbx,%rdx,4)
movslq (%r12),%rax
mov    %ecx,-0x4(%r15,%rax,4)
mov    (%r12),%eax
movslq 0x2d67(%rip),%rcx
mov    %eax,-0x4(%r14,%rcx,4)
addl   $0x1,(%r12)
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@bdyadd_.k = internal global i32 0
@bdyadd_.n1 = internal global i32 0
@bdyadd_.n2 = internal global i32 0
@bdyadd_.lp = internal global i32 0
@bdyadd_.lsav = internal global i32 0
@bdyadd_.nsav = internal global i32 0
@bdyadd_.next = internal global i32 0
define i32 @bdyadd_(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32* %6) {
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32*
%14 = 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
store i32* %6, i32** %14
%15 = load i32*, i32** %13
%16 = getelementptr inbounds i32, i32* %15, i32 -1
store i32* %16, i32** %13
%17 = load i32*, i32** %12
%18 = getelementptr inbounds i32, i32* %17, i32 -1
store i32* %18, i32** %12
%19 = load i32*, i32** %11
%20 = getelementptr inbounds i32, i32* %19, i32 -1
store i32* %20, i32** %11
%21 = load i32*, i32** %8
%22 = load i32, i32* %21
store i32 %22, i32* @bdyadd_.k
%23 = load i32*, i32** %9
%24 = load i32, i32* %23
store i32 %24, i32* @bdyadd_.n1
%25 = load i32*, i32** %10
%26 = load i32, i32* %25
store i32 %26, i32* @bdyadd_.n2
%27 = load i32*, i32** %13
%28 = load i32, i32* @bdyadd_.n1
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds i32, i32* %27, i64 %29
%31 = load i32, i32* %30
store i32 %31, i32* @bdyadd_.lp
%32 = load i32*, i32** %12
%33 = load i32, i32* @bdyadd_.lp
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds i32, i32* %32, i64 %34
%36 = load i32, i32* %35
store i32 %36, i32* @bdyadd_.lsav
%37 = load i32*, i32** %14
%38 = load i32, i32* %37
%39 = load i32*, i32** %12
%40 = load i32, i32* @bdyadd_.lp
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds i32, i32* %39, i64 %41
store i32 %38, i32* %42
%43 = load i32, i32* @bdyadd_.k
%44 = sub nsw i32 0, %43
%45 = load i32*, i32** %11
%46 = load i32*, i32** %14
%47 = load i32, i32* %46
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i32, i32* %45, i64 %48
store i32 %44, i32* %49
%50 = load i32, i32* @bdyadd_.lsav
%51 = load i32*, i32** %12
%52 = load i32*, i32** %14
%53 = load i32, i32* %52
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %51, i64 %54
store i32 %50, i32* %55
%56 = load i32*, i32** %14
%57 = load i32, i32* %56
%58 = load i32*, i32** %13
%59 = load i32, i32* @bdyadd_.n1
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds i32, i32* %58, i64 %60
store i32 %57, i32* %61
%62 = load i32*, i32** %14
%63 = load i32, i32* %62
%64 = add nsw i32 %63, 1
store i32 %64, i32* %62
%65 = load i32*, i32** %11
%66 = load i32, i32* @bdyadd_.lp
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds i32, i32* %65, i64 %67
%69 = load i32, i32* %68
%70 = sub nsw i32 0, %69
store i32 %70, i32* @bdyadd_.next
%71 = load i32, i32* @bdyadd_.next
%72 = load i32*, i32** %11
%73 = load i32, i32* @bdyadd_.lp
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32, i32* %72, i64 %74
store i32 %71, i32* %75
%76 = load i32, i32* @bdyadd_.next
store i32 %76, i32* @bdyadd_.nsav
br label %77
77: ; preds = %93, %7
%78 = load i32*, i32** %13
%79 = load i32, i32* @bdyadd_.next
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds i32, i32* %78, i64 %80
%82 = load i32, i32* %81
store i32 %82, i32* @bdyadd_.lp
%83 = load i32*, i32** %11
%84 = getelementptr inbounds i32, i32* %83, i64 1
%85 = load i32*, i32** %12
%86 = getelementptr inbounds i32, i32* %85, i64 1
%87 = load i32*, i32** %14
%88 = call i32 @insert_(i32* @bdyadd_.k, i32* @bdyadd_.lp, i32* %84, i32* %86, i32* %87)
%89 = load i32, i32* @bdyadd_.next
%90 = load i32, i32* @bdyadd_.n2
%91 = icmp eq i32 %89, %90
br i1 %91, label %92, label %93
92: ; preds = %77
br label %105
93: ; preds = %77
%94 = load i32*, i32** %11
%95 = load i32, i32* @bdyadd_.lp
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i32, i32* %94, i64 %96
%98 = load i32, i32* %97
%99 = sub nsw i32 0, %98
store i32 %99, i32* @bdyadd_.next
%100 = load i32, i32* @bdyadd_.next
%101 = load i32*, i32** %11
%102 = load i32, i32* @bdyadd_.lp
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds i32, i32* %101, i64 %103
store i32 %100, i32* %104
br label %77
105: ; preds = %92
%106 = load i32*, i32** %14
%107 = load i32, i32* %106
store i32 %107, i32* @bdyadd_.lsav
%108 = load i32, i32* @bdyadd_.n1
%109 = load i32*, i32** %11
%110 = load i32*, i32** %14
%111 = load i32, i32* %110
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds i32, i32* %109, i64 %112
store i32 %108, i32* %113
%114 = load i32*, i32** %14
%115 = load i32, i32* %114
%116 = add nsw i32 %115, 1
%117 = load i32*, i32** %12
%118 = load i32*, i32** %14
%119 = load i32, i32* %118
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds i32, i32* %117, i64 %120
store i32 %116, i32* %121
%122 = load i32*, i32** %14
%123 = load i32, i32* %122
%124 = add nsw i32 %123, 1
store i32 %124, i32* %122
%125 = load i32, i32* @bdyadd_.nsav
store i32 %125, i32* @bdyadd_.next
br label %126
126: ; preds = %131, %105
%127 = load i32, i32* @bdyadd_.next
%128 = load i32, i32* @bdyadd_.n2
%129 = icmp eq i32 %127, %128
br i1 %129, label %130, label %131
130: ; preds = %126
br label %159
131: ; preds = %126
%132 = load i32, i32* @bdyadd_.next
%133 = load i32*, i32** %11
%134 = load i32*, i32** %14
%135 = load i32, i32* %134
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds i32, i32* %133, i64 %136
store i32 %132, i32* %137
%138 = load i32*, i32** %14
%139 = load i32, i32* %138
%140 = add nsw i32 %139, 1
%141 = load i32*, i32** %12
%142 = load i32*, i32** %14
%143 = load i32, i32* %142
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i32, i32* %141, i64 %144
store i32 %140, i32* %145
%146 = load i32*, i32** %14
%147 = load i32, i32* %146
%148 = add nsw i32 %147, 1
store i32 %148, i32* %146
%149 = load i32*, i32** %13
%150 = load i32, i32* @bdyadd_.next
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i32, i32* %149, i64 %151
%153 = load i32, i32* %152
store i32 %153, i32* @bdyadd_.lp
%154 = load i32*, i32** %11
%155 = load i32, i32* @bdyadd_.lp
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds i32, i32* %154, i64 %156
%158 = load i32, i32* %157
store i32 %158, i32* @bdyadd_.next
br label %126
159: ; preds = %130
%160 = load i32, i32* @bdyadd_.n2
%161 = sub nsw i32 0, %160
%162 = load i32*, i32** %11
%163 = load i32*, i32** %14
%164 = load i32, i32* %163
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds i32, i32* %162, i64 %165
store i32 %161, i32* %166
%167 = load i32, i32* @bdyadd_.lsav
%168 = load i32*, i32** %12
%169 = load i32*, i32** %14
%170 = load i32, i32* %169
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds i32, i32* %168, i64 %171
store i32 %167, i32* %172
%173 = load i32*, i32** %14
%174 = load i32, i32* %173
%175 = load i32*, i32** %13
%176 = load i32, i32* @bdyadd_.k
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds i32, i32* %175, i64 %177
store i32 %174, i32* %178
%179 = load i32*, i32** %14
%180 = load i32, i32* %179
%181 = add nsw i32 %180, 1
store i32 %181, i32* %179
ret i32 0
}

LLVM IR (-O2):
@bdyadd_.k = internal global i32 0
@bdyadd_.n1 = internal unnamed_addr global i32 0
@bdyadd_.n2 = internal unnamed_addr global i32 0
@bdyadd_.lp = internal global i32 0
@bdyadd_.nsav = internal unnamed_addr global i32 0
@bdyadd_.next = internal unnamed_addr global i32 0
define i32 @bdyadd_(i32* nocapture %0, i32* nocapture %1, i32* nocapture %2, i32* %3, i32* %4, i32* nocapture %5, i32* %6) {
%8 = getelementptr inbounds i32, i32* %5, i64 -1
%9 = getelementptr inbounds i32, i32* %4, i64 -1
%10 = getelementptr inbounds i32, i32* %3, i64 -1
%11 = load i32, i32* %0
store i32 %11, i32* @bdyadd_.k
%12 = load i32, i32* %1
store i32 %12, i32* @bdyadd_.n1
%13 = load i32, i32* %2
store i32 %13, i32* @bdyadd_.n2
%14 = sext i32 %12 to i64
%15 = getelementptr inbounds i32, i32* %8, i64 %14
%16 = load i32, i32* %15
store i32 %16, i32* @bdyadd_.lp
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds i32, i32* %9, i64 %17
%19 = load i32, i32* %18
%20 = load i32, i32* %6
store i32 %20, i32* %18
%21 = load i32, i32* @bdyadd_.k
%22 = sub nsw i32 0, %21
%23 = load i32, i32* %6
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds i32, i32* %10, i64 %24
store i32 %22, i32* %25
%26 = load i32, i32* %6
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i32, i32* %9, i64 %27
store i32 %19, i32* %28
%29 = load i32, i32* %6
store i32 %29, i32* %15
%30 = load i32, i32* %6
%31 = add nsw i32 %30, 1
store i32 %31, i32* %6
%32 = load i32, i32* @bdyadd_.lp
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i32, i32* %10, i64 %33
%35 = load i32, i32* %34
%36 = sub nsw i32 0, %35
store i32 %36, i32* @bdyadd_.next
store i32 %36, i32* %34
store i32 %36, i32* @bdyadd_.nsav
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds i32, i32* %8, i64 %37
%39 = load i32, i32* %38
store i32 %39, i32* @bdyadd_.lp
%40 = tail call i32 @insert_(i32* @bdyadd_.k, i32* @bdyadd_.lp, i32* %3, i32* %4, i32* %6)
%41 = load i32, i32* @bdyadd_.next
%42 = load i32, i32* @bdyadd_.n2
%43 = icmp eq i32 %41, %42
br i1 %43, label %57, label %44
44: ; preds = %7, %44
%45 = load i32, i32* @bdyadd_.lp
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i32, i32* %10, i64 %46
%48 = load i32, i32* %47
%49 = sub nsw i32 0, %48
store i32 %49, i32* @bdyadd_.next
store i32 %49, i32* %47
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i32, i32* %8, i64 %50
%52 = load i32, i32* %51
store i32 %52, i32* @bdyadd_.lp
%53 = tail call i32 @insert_(i32* @bdyadd_.k, i32* @bdyadd_.lp, i32* %3, i32* %4, i32* %6)
%54 = load i32, i32* @bdyadd_.next
%55 = load i32, i32* @bdyadd_.n2
%56 = icmp eq i32 %54, %55
br i1 %56, label %57, label %44
57: ; preds = %44, %7
%58 = phi i32 [ %41, %7 ], [ %54, %44 ]
%59 = load i32, i32* %6
%60 = load i32, i32* @bdyadd_.n1
%61 = sext i32 %59 to i64
%62 = getelementptr inbounds i32, i32* %10, i64 %61
store i32 %60, i32* %62
%63 = load i32, i32* %6
%64 = add nsw i32 %63, 1
%65 = sext i32 %63 to i64
%66 = getelementptr inbounds i32, i32* %9, i64 %65
store i32 %64, i32* %66
%67 = load i32, i32* %6
%68 = add nsw i32 %67, 1
store i32 %68, i32* %6
%69 = load i32, i32* @bdyadd_.nsav
%70 = icmp eq i32 %69, %58
br i1 %70, label %90, label %71
71: ; preds = %57, %71
%72 = phi i32 [ %89, %71 ], [ %68, %57 ]
%73 = phi i32 [ %87, %71 ], [ %69, %57 ]
%74 = sext i32 %72 to i64
%75 = getelementptr inbounds i32, i32* %10, i64 %74
store i32 %73, i32* %75
%76 = load i32, i32* %6
%77 = add nsw i32 %76, 1
%78 = sext i32 %76 to i64
%79 = getelementptr inbounds i32, i32* %9, i64 %78
store i32 %77, i32* %79
%80 = load i32, i32* %6
%81 = add nsw i32 %80, 1
store i32 %81, i32* %6
%82 = sext i32 %73 to i64
%83 = getelementptr inbounds i32, i32* %8, i64 %82
%84 = load i32, i32* %83
store i32 %84, i32* @bdyadd_.lp
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds i32, i32* %10, i64 %85
%87 = load i32, i32* %86
%88 = icmp eq i32 %87, %58
%89 = load i32, i32* %6
br i1 %88, label %90, label %71
90: ; preds = %71, %57
%91 = phi i32 [ %68, %57 ], [ %89, %71 ]
store i32 %58, i32* @bdyadd_.next
%92 = sub nsw i32 0, %58
%93 = sext i32 %91 to i64
%94 = getelementptr inbounds i32, i32* %10, i64 %93
store i32 %92, i32* %94
%95 = load i32, i32* %6
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i32, i32* %9, i64 %96
store i32 %59, i32* %97
%98 = load i32, i32* %6
%99 = load i32, i32* @bdyadd_.k
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds i32, i32* %8, i64 %100
store i32 %98, i32* %101
%102 = load i32, i32* %6
%103 = add nsw i32 %102, 1
store i32 %103, i32* %6
ret i32 0
}