#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 scalar_t__ uint64_t;

/* Variables and functions */
int /*<<< orphan*/ logger(char *, int, int /*<<< orphan*/, char *,
                          char const *);
void nodelist_append(uint64_t *target, uint64_t *append, const char *name) {
  int i;
  size_t target_count = 0;
  size_t append_count = 0;
  for (i = 0; i < 1024; i++) {
    if (target[i] != 0)
      target_count++;
    else
      break;
  }
  for (i = 0; i < 1024; i++) {
    if (append[i] != 0)
      append_count++;
    else
      break;
  }
  if (target_count + append_count > 1024) {
    logger("/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/iGW/byteport-api/refs/heads/master/c/"
           "i8-transceiver/i8-transceiver.c",
           881, 0, "Can't fit all nodes in %s", name);
    for (i = 0; i < 1024 - target_count; i++)
      target[i + target_count] = append[i];
  } else {
    for (i = 0; i < append_count; i++)
      target[i + target_count] = append[i];
  }
}


x86 assembly (clang, -O0):
<nodelist_append>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movq   $0x0,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x400,-0x1c(%rbp)
jge    1184 <nodelist_append+0x74>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
je     116c <nodelist_append+0x5c>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1171 <nodelist_append+0x61>
jmp    1184 <nodelist_append+0x74>
jmp    1176 <nodelist_append+0x66>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    113b <nodelist_append+0x2b>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x400,-0x1c(%rbp)
jge    11d4 <nodelist_append+0xc4>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
cmpq   $0x0,(%rax,%rcx,8)
je     11bc <nodelist_append+0xac>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    11c1 <nodelist_append+0xb1>
jmp    11d4 <nodelist_append+0xc4>
jmp    11c6 <nodelist_append+0xb6>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    118b <nodelist_append+0x7b>
mov    -0x28(%rbp),%rax
add    -0x30(%rbp),%rax
cmp    $0x400,%rax
jbe    1252 <nodelist_append+0x142>
mov    -0x18(%rbp),%r8
lea    0xe0d(%rip),%rdi
mov    $0x371,%esi
xor    %edx,%edx
lea    0xe9e(%rip),%rcx
call   1030 <logger@plt>
movl   $0x0,-0x1c(%rbp)
movslq -0x1c(%rbp),%rax
mov    $0x400,%ecx
sub    -0x28(%rbp),%rcx
cmp    %rcx,%rax
jae    124d <nodelist_append+0x13d>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
add    -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    120d <nodelist_append+0xfd>
jmp    1296 <nodelist_append+0x186>
movl   $0x0,-0x1c(%rbp)
movslq -0x1c(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1291 <nodelist_append+0x181>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
add    -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1259 <nodelist_append+0x149>
jmp    1296 <nodelist_append+0x186>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nodelist_append>:
push   %r15
push   %r14
push   %rbx
mov    %rdx,%r8
mov    %rsi,%rbx
mov    %rdi,%r14
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpq   $0x0,(%r14,%r15,8)
je     1174 <nodelist_append+0x64>
cmpq   $0x0,0x8(%r14,%r15,8)
je     1164 <nodelist_append+0x54>
cmpq   $0x0,0x10(%r14,%r15,8)
je     116a <nodelist_append+0x5a>
cmpq   $0x0,0x18(%r14,%r15,8)
je     1170 <nodelist_append+0x60>
add    $0x4,%r15
cmp    $0x400,%r15
jne    1130 <nodelist_append+0x20>
mov    $0x400,%r15d
jmp    1174 <nodelist_append+0x64>
add    $0x1,%r15
jmp    1174 <nodelist_append+0x64>
add    $0x2,%r15
jmp    1174 <nodelist_append+0x64>
add    $0x3,%r15
mov    $0x3,%eax
nopl   0x0(%rax)
cmpq   $0x0,-0x18(%rbx,%rax,8)
je     11ba <nodelist_append+0xaa>
cmpq   $0x0,-0x10(%rbx,%rax,8)
je     11c0 <nodelist_append+0xb0>
cmpq   $0x0,-0x8(%rbx,%rax,8)
je     11c6 <nodelist_append+0xb6>
cmpq   $0x0,(%rbx,%rax,8)
je     11ca <nodelist_append+0xba>
add    $0x4,%rax
cmp    $0x403,%rax
jne    1180 <nodelist_append+0x70>
test   %r15,%r15
jne    11db <nodelist_append+0xcb>
mov    $0x400,%eax
jmp    12cd <nodelist_append+0x1bd>
add    $0xfffffffffffffffd,%rax
jmp    11ca <nodelist_append+0xba>
add    $0xfffffffffffffffe,%rax
jmp    11ca <nodelist_append+0xba>
add    $0xffffffffffffffff,%rax
lea    (%rax,%r15,1),%rcx
cmp    $0x400,%rcx
jbe    12c4 <nodelist_append+0x1b4>
lea    0xe1e(%rip),%rdi
lea    0xeb6(%rip),%rcx
mov    $0x371,%esi
xor    %edx,%edx
call   1030 <logger@plt>
cmp    $0x400,%r15
je     1554 <nodelist_append+0x444>
mov    $0x400,%ecx
sub    %r15,%rcx
cmp    $0x2,%rcx
mov    $0x1,%eax
cmovae %rcx,%rax
cmp    $0x4,%rax
jb     123f <nodelist_append+0x12f>
lea    (%r14,%r15,8),%rcx
lea    (%rbx,%rax,8),%rdx
cmp    %rdx,%rcx
jae    13a7 <nodelist_append+0x297>
lea    (%r15,%rax,1),%rcx
lea    (%r14,%rcx,8),%rcx
cmp    %rbx,%rcx
jbe    13a7 <nodelist_append+0x297>
xor    %ecx,%ecx
mov    %rcx,%r8
not    %r8
add    %rax,%r8
mov    %rax,%rsi
and    $0x3,%rsi
je     1272 <nodelist_append+0x162>
lea    (%r14,%r15,8),%rdi
nopw   0x0(%rax,%rax,1)
mov    (%rbx,%rcx,8),%rdx
mov    %rdx,(%rdi,%rcx,8)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1260 <nodelist_append+0x150>
cmp    $0x3,%r8
jb     1554 <nodelist_append+0x444>
lea    (%r14,%r15,8),%rdx
add    $0x18,%rdx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%rbx,%rcx,8),%rsi
mov    %rsi,-0x18(%rdx,%rcx,8)
mov    0x8(%rbx,%rcx,8),%rsi
mov    %rsi,-0x10(%rdx,%rcx,8)
mov    0x10(%rbx,%rcx,8),%rsi
mov    %rsi,-0x8(%rdx,%rcx,8)
mov    0x18(%rbx,%rcx,8),%rsi
mov    %rsi,(%rdx,%rcx,8)
add    $0x4,%rcx
cmp    %rcx,%rax
jne    1290 <nodelist_append+0x180>
jmp    1554 <nodelist_append+0x444>
test   %rax,%rax
je     1554 <nodelist_append+0x444>
cmp    $0x4,%rax
jb     12f5 <nodelist_append+0x1e5>
lea    (%r14,%r15,8),%rcx
lea    (%rbx,%rax,8),%rdx
cmp    %rdx,%rcx
jae    1374 <nodelist_append+0x264>
lea    (%r15,%rax,1),%rcx
lea    (%r14,%rcx,8),%rcx
cmp    %rbx,%rcx
jbe    1374 <nodelist_append+0x264>
xor    %ecx,%ecx
mov    %rcx,%r8
not    %r8
add    %rax,%r8
mov    %rax,%rsi
and    $0x3,%rsi
je     1322 <nodelist_append+0x212>
lea    (%r14,%r15,8),%rdi
nopl   (%rax)
mov    (%rbx,%rcx,8),%rdx
mov    %rdx,(%rdi,%rcx,8)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1310 <nodelist_append+0x200>
cmp    $0x3,%r8
jb     1554 <nodelist_append+0x444>
lea    (%r14,%r15,8),%rdx
add    $0x18,%rdx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%rbx,%rcx,8),%rsi
mov    %rsi,-0x18(%rdx,%rcx,8)
mov    0x8(%rbx,%rcx,8),%rsi
mov    %rsi,-0x10(%rdx,%rcx,8)
mov    0x10(%rbx,%rcx,8),%rsi
mov    %rsi,-0x8(%rdx,%rcx,8)
mov    0x18(%rbx,%rcx,8),%rsi
mov    %rsi,(%rdx,%rcx,8)
add    $0x4,%rcx
cmp    %rcx,%rax
jne    1340 <nodelist_append+0x230>
jmp    1554 <nodelist_append+0x444>
movabs $0x7ffffffffffffffc,%rdx
ff ff 7f
mov    %rax,%rcx
and    %rdx,%rcx
lea    -0x4(%rcx),%rdi
mov    %rdi,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
mov    %esi,%r8d
and    $0x3,%r8d
cmp    $0xc,%rdi
jae    13d5 <nodelist_append+0x2c5>
xor    %edi,%edi
jmp    1448 <nodelist_append+0x338>
mov    %rax,%rcx
and    $0xfffffffffffffffc,%rcx
lea    -0x4(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
mov    %esi,%r8d
and    $0x3,%r8d
cmp    $0xc,%rdx
jae    1499 <nodelist_append+0x389>
xor    %edi,%edi
jmp    1508 <nodelist_append+0x3f8>
and    %rdx,%rsi
lea    (%r14,%r15,8),%rdx
add    $0x70,%rdx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups (%rbx,%rdi,8),%xmm0
movups 0x10(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x70(%rdx,%rdi,8)
movups %xmm1,-0x60(%rdx,%rdi,8)
movups 0x20(%rbx,%rdi,8),%xmm0
movups 0x30(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x50(%rdx,%rdi,8)
movups %xmm1,-0x40(%rdx,%rdi,8)
movups 0x40(%rbx,%rdi,8),%xmm0
movups 0x50(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x30(%rdx,%rdi,8)
movups %xmm1,-0x20(%rdx,%rdi,8)
movups 0x60(%rbx,%rdi,8),%xmm0
movups 0x70(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x10(%rdx,%rdi,8)
movups %xmm1,(%rdx,%rdi,8)
add    $0x10,%rdi
add    $0xfffffffffffffffc,%rsi
jne    13f0 <nodelist_append+0x2e0>
test   %r8,%r8
je     148b <nodelist_append+0x37b>
lea    (%r15,%rdi,1),%rdx
lea    (%r14,%rdx,8),%rdx
add    $0x10,%rdx
lea    (%rbx,%rdi,8),%rsi
add    $0x10,%rsi
shl    $0x5,%r8
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
movups -0x10(%rsi,%rdi,1),%xmm0
movups (%rsi,%rdi,1),%xmm1
movups %xmm0,-0x10(%rdx,%rdi,1)
movups %xmm1,(%rdx,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%r8
jne    1470 <nodelist_append+0x360>
cmp    %rcx,%rax
je     1554 <nodelist_append+0x444>
jmp    12f7 <nodelist_append+0x1e7>
and    $0xfffffffffffffffc,%rsi
lea    (%r14,%r15,8),%rdx
add    $0x70,%rdx
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
movups (%rbx,%rdi,8),%xmm0
movups 0x10(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x70(%rdx,%rdi,8)
movups %xmm1,-0x60(%rdx,%rdi,8)
movups 0x20(%rbx,%rdi,8),%xmm0
movups 0x30(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x50(%rdx,%rdi,8)
movups %xmm1,-0x40(%rdx,%rdi,8)
movups 0x40(%rbx,%rdi,8),%xmm0
movups 0x50(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x30(%rdx,%rdi,8)
movups %xmm1,-0x20(%rdx,%rdi,8)
movups 0x60(%rbx,%rdi,8),%xmm0
movups 0x70(%rbx,%rdi,8),%xmm1
movups %xmm0,-0x10(%rdx,%rdi,8)
movups %xmm1,(%rdx,%rdi,8)
add    $0x10,%rdi
add    $0xfffffffffffffffc,%rsi
jne    14b0 <nodelist_append+0x3a0>
test   %r8,%r8
je     154b <nodelist_append+0x43b>
lea    (%r15,%rdi,1),%rdx
lea    (%r14,%rdx,8),%rdx
add    $0x10,%rdx
lea    (%rbx,%rdi,8),%rsi
add    $0x10,%rsi
shl    $0x5,%r8
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
movups -0x10(%rsi,%rdi,1),%xmm0
movups (%rsi,%rdi,1),%xmm1
movups %xmm0,-0x10(%rdx,%rdi,1)
movups %xmm1,(%rdx,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%r8
jne    1530 <nodelist_append+0x420>
cmp    %rcx,%rax
jne    1241 <nodelist_append+0x131>
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [159 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/iGW/byteport-api/refs/heads/master/c/i8-transceiver/i8-transceiver.c\00"
@.str.1 = [26 x i8] c"Can't fit all nodes in %s\00"
define void @nodelist_append(i64* %0, i64* %1, i8* %2) {
%4 = alloca i64*
%5 = alloca i64*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i64
%9 = alloca i64
store i64* %0, i64** %4
store i64* %1, i64** %5
store i8* %2, i8** %6
store i64 0, i64* %8
store i64 0, i64* %9
store i32 0, i32* %7
br label %10
10: ; preds = %25, %3
%11 = load i32, i32* %7
%12 = icmp slt i32 %11, 1024
br i1 %12, label %13, label %28
13: ; preds = %10
%14 = load i64*, i64** %4
%15 = load i32, i32* %7
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds i64, i64* %14, i64 %16
%18 = load i64, i64* %17
%19 = icmp ne i64 %18, 0
br i1 %19, label %20, label %23
20: ; preds = %13
%21 = load i64, i64* %8
%22 = add i64 %21, 1
store i64 %22, i64* %8
br label %24
23: ; preds = %13
br label %28
24: ; preds = %20
br label %25
25: ; preds = %24
%26 = load i32, i32* %7
%27 = add nsw i32 %26, 1
store i32 %27, i32* %7
br label %10
28: ; preds = %23, %10
store i32 0, i32* %7
br label %29
29: ; preds = %44, %28
%30 = load i32, i32* %7
%31 = icmp slt i32 %30, 1024
br i1 %31, label %32, label %47
32: ; preds = %29
%33 = load i64*, i64** %5
%34 = load i32, i32* %7
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds i64, i64* %33, i64 %35
%37 = load i64, i64* %36
%38 = icmp ne i64 %37, 0
br i1 %38, label %39, label %42
39: ; preds = %32
%40 = load i64, i64* %9
%41 = add i64 %40, 1
store i64 %41, i64* %9
br label %43
42: ; preds = %32
br label %47
43: ; preds = %39
br label %44
44: ; preds = %43
%45 = load i32, i32* %7
%46 = add nsw i32 %45, 1
store i32 %46, i32* %7
br label %29
47: ; preds = %42, %29
%48 = load i64, i64* %8
%49 = load i64, i64* %9
%50 = add i64 %48, %49
%51 = icmp ugt i64 %50, 1024
br i1 %51, label %52, label %77
52: ; preds = %47
%53 = load i8*, i8** %6
%54 = call i32 @logger(i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str, i64 0, i64 0), i32 881, i32 0, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* %53)
store i32 0, i32* %7
br label %55
55: ; preds = %73, %52
%56 = load i32, i32* %7
%57 = sext i32 %56 to i64
%58 = load i64, i64* %8
%59 = sub i64 1024, %58
%60 = icmp ult i64 %57, %59
br i1 %60, label %61, label %76
61: ; preds = %55
%62 = load i64*, i64** %5
%63 = load i32, i32* %7
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds i64, i64* %62, i64 %64
%66 = load i64, i64* %65
%67 = load i64*, i64** %4
%68 = load i32, i32* %7
%69 = sext i32 %68 to i64
%70 = load i64, i64* %8
%71 = add i64 %69, %70
%72 = getelementptr inbounds i64, i64* %67, i64 %71
store i64 %66, i64* %72
br label %73
73: ; preds = %61
%74 = load i32, i32* %7
%75 = add nsw i32 %74, 1
store i32 %75, i32* %7
br label %55
76: ; preds = %55
br label %99
77: ; preds = %47
store i32 0, i32* %7
br label %78
78: ; preds = %95, %77
%79 = load i32, i32* %7
%80 = sext i32 %79 to i64
%81 = load i64, i64* %9
%82 = icmp ult i64 %80, %81
br i1 %82, label %83, label %98
83: ; preds = %78
%84 = load i64*, i64** %5
%85 = load i32, i32* %7
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i64, i64* %84, i64 %86
%88 = load i64, i64* %87
%89 = load i64*, i64** %4
%90 = load i32, i32* %7
%91 = sext i32 %90 to i64
%92 = load i64, i64* %8
%93 = add i64 %91, %92
%94 = getelementptr inbounds i64, i64* %89, i64 %93
store i64 %88, i64* %94
br label %95
95: ; preds = %83
%96 = load i32, i32* %7
%97 = add nsw i32 %96, 1
store i32 %97, i32* %7
br label %78
98: ; preds = %78
br label %99
99: ; preds = %98, %76
ret void
}

LLVM IR (-O2):
@.str = [159 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/iGW/byteport-api/refs/heads/master/c/i8-transceiver/i8-transceiver.c\00"
@.str.1 = [26 x i8] c"Can't fit all nodes in %s\00"
define void @nodelist_append(i64* nocapture %0, i64* nocapture %1, i8* %2) {
br label %4
4: ; preds = %24, %3
%5 = phi i64 [ 0, %3 ], [ %25, %24 ]
%6 = getelementptr inbounds i64, i64* %0, i64 %5
%7 = load i64, i64* %6
%8 = icmp eq i64 %7, 0
br i1 %8, label %27, label %9
9: ; preds = %4
%10 = or i64 %5, 1
%11 = getelementptr inbounds i64, i64* %0, i64 %10
%12 = load i64, i64* %11
%13 = icmp eq i64 %12, 0
br i1 %13, label %27, label %14
14: ; preds = %9
%15 = or i64 %5, 2
%16 = getelementptr inbounds i64, i64* %0, i64 %15
%17 = load i64, i64* %16
%18 = icmp eq i64 %17, 0
br i1 %18, label %27, label %19
19: ; preds = %14
%20 = or i64 %5, 3
%21 = getelementptr inbounds i64, i64* %0, i64 %20
%22 = load i64, i64* %21
%23 = icmp eq i64 %22, 0
br i1 %23, label %27, label %24
24: ; preds = %19
%25 = add nuw nsw i64 %5, 4
%26 = icmp eq i64 %25, 1024
br i1 %26, label %27, label %4
27: ; preds = %24, %19, %14, %9, %4
%28 = phi i64 [ %5, %4 ], [ %10, %9 ], [ %15, %14 ], [ %20, %19 ], [ 1024, %24 ]
br label %29
29: ; preds = %49, %27
%30 = phi i64 [ 0, %27 ], [ %50, %49 ]
%31 = getelementptr inbounds i64, i64* %1, i64 %30
%32 = load i64, i64* %31
%33 = icmp eq i64 %32, 0
br i1 %33, label %52, label %34
34: ; preds = %29
%35 = or i64 %30, 1
%36 = getelementptr inbounds i64, i64* %1, i64 %35
%37 = load i64, i64* %36
%38 = icmp eq i64 %37, 0
br i1 %38, label %52, label %39
39: ; preds = %34
%40 = or i64 %30, 2
%41 = getelementptr inbounds i64, i64* %1, i64 %40
%42 = load i64, i64* %41
%43 = icmp eq i64 %42, 0
br i1 %43, label %52, label %44
44: ; preds = %39
%45 = or i64 %30, 3
%46 = getelementptr inbounds i64, i64* %1, i64 %45
%47 = load i64, i64* %46
%48 = icmp eq i64 %47, 0
br i1 %48, label %52, label %49
49: ; preds = %44
%50 = add nuw nsw i64 %30, 4
%51 = icmp eq i64 %50, 1024
br i1 %51, label %56, label %29
52: ; preds = %44, %39, %34, %29
%53 = phi i64 [ %30, %29 ], [ %35, %34 ], [ %40, %39 ], [ %45, %44 ]
%54 = add nuw i64 %53, %28
%55 = icmp ugt i64 %54, 1024
br i1 %55, label %174, label %58
56: ; preds = %49
%57 = icmp eq i64 %28, 0
br i1 %57, label %60, label %174
58: ; preds = %52
%59 = icmp eq i64 %53, 0
br i1 %59, label %338, label %60
60: ; preds = %56, %58
%61 = phi i64 [ %53, %58 ], [ 1024, %56 ]
%62 = icmp ult i64 %61, 4
br i1 %62, label %155, label %63
63: ; preds = %60
%64 = getelementptr i64, i64* %0, i64 %28
%65 = add nuw i64 %28, %61
%66 = getelementptr i64, i64* %0, i64 %65
%67 = getelementptr i64, i64* %1, i64 %61
%68 = icmp ult i64* %64, %67
%69 = icmp ugt i64* %66, %1
%70 = and i1 %68, %69
br i1 %70, label %155, label %71
71: ; preds = %63
%72 = and i64 %61, 9223372036854775804
%73 = add nsw i64 %72, -4
%74 = lshr exact i64 %73, 2
%75 = add nuw nsw i64 %74, 1
%76 = and i64 %75, 3
%77 = icmp ult i64 %73, 12
br i1 %77, label %133, label %78
78: ; preds = %71
%79 = and i64 %75, 9223372036854775804
br label %80
80: ; preds = %80, %78
%81 = phi i64 [ 0, %78 ], [ %130, %80 ]
%82 = phi i64 [ 0, %78 ], [ %131, %80 ]
%83 = getelementptr inbounds i64, i64* %1, i64 %81
%84 = bitcast i64* %83 to <2 x i64>*
%85 = load <2 x i64>, <2 x i64>* %84
%86 = getelementptr inbounds i64, i64* %83, i64 2
%87 = bitcast i64* %86 to <2 x i64>*
%88 = load <2 x i64>, <2 x i64>* %87
%89 = add nuw nsw i64 %81, %28
%90 = getelementptr inbounds i64, i64* %0, i64 %89
%91 = bitcast i64* %90 to <2 x i64>*
store <2 x i64> %85, <2 x i64>* %91
%92 = getelementptr inbounds i64, i64* %90, i64 2
%93 = bitcast i64* %92 to <2 x i64>*
store <2 x i64> %88, <2 x i64>* %93
%94 = or i64 %81, 4
%95 = getelementptr inbounds i64, i64* %1, i64 %94
%96 = bitcast i64* %95 to <2 x i64>*
%97 = load <2 x i64>, <2 x i64>* %96
%98 = getelementptr inbounds i64, i64* %95, i64 2
%99 = bitcast i64* %98 to <2 x i64>*
%100 = load <2 x i64>, <2 x i64>* %99
%101 = add nuw nsw i64 %94, %28
%102 = getelementptr inbounds i64, i64* %0, i64 %101
%103 = bitcast i64* %102 to <2 x i64>*
store <2 x i64> %97, <2 x i64>* %103
%104 = getelementptr inbounds i64, i64* %102, i64 2
%105 = bitcast i64* %104 to <2 x i64>*
store <2 x i64> %100, <2 x i64>* %105
%106 = or i64 %81, 8
%107 = getelementptr inbounds i64, i64* %1, i64 %106
%108 = bitcast i64* %107 to <2 x i64>*
%109 = load <2 x i64>, <2 x i64>* %108
%110 = getelementptr inbounds i64, i64* %107, i64 2
%111 = bitcast i64* %110 to <2 x i64>*
%112 = load <2 x i64>, <2 x i64>* %111
%113 = add nuw nsw i64 %106, %28
%114 = getelementptr inbounds i64, i64* %0, i64 %113
%115 = bitcast i64* %114 to <2 x i64>*
store <2 x i64> %109, <2 x i64>* %115
%116 = getelementptr inbounds i64, i64* %114, i64 2
%117 = bitcast i64* %116 to <2 x i64>*
store <2 x i64> %112, <2 x i64>* %117
%118 = or i64 %81, 12
%119 = getelementptr inbounds i64, i64* %1, i64 %118
%120 = bitcast i64* %119 to <2 x i64>*
%121 = load <2 x i64>, <2 x i64>* %120
%122 = getelementptr inbounds i64, i64* %119, i64 2
%123 = bitcast i64* %122 to <2 x i64>*
%124 = load <2 x i64>, <2 x i64>* %123
%125 = add nuw nsw i64 %118, %28
%126 = getelementptr inbounds i64, i64* %0, i64 %125
%127 = bitcast i64* %126 to <2 x i64>*
store <2 x i64> %121, <2 x i64>* %127
%128 = getelementptr inbounds i64, i64* %126, i64 2
%129 = bitcast i64* %128 to <2 x i64>*
store <2 x i64> %124, <2 x i64>* %129
%130 = add nuw i64 %81, 16
%131 = add nuw i64 %82, 4
%132 = icmp eq i64 %131, %79
br i1 %132, label %133, label %80
133: ; preds = %80, %71
%134 = phi i64 [ 0, %71 ], [ %130, %80 ]
%135 = icmp eq i64 %76, 0
br i1 %135, label %153, label %136
136: ; preds = %133, %136
%137 = phi i64 [ %150, %136 ], [ %134, %133 ]
%138 = phi i64 [ %151, %136 ], [ 0, %133 ]
%139 = getelementptr inbounds i64, i64* %1, i64 %137
%140 = bitcast i64* %139 to <2 x i64>*
%141 = load <2 x i64>, <2 x i64>* %140
%142 = getelementptr inbounds i64, i64* %139, i64 2
%143 = bitcast i64* %142 to <2 x i64>*
%144 = load <2 x i64>, <2 x i64>* %143
%145 = add nuw nsw i64 %137, %28
%146 = getelementptr inbounds i64, i64* %0, i64 %145
%147 = bitcast i64* %146 to <2 x i64>*
store <2 x i64> %141, <2 x i64>* %147
%148 = getelementptr inbounds i64, i64* %146, i64 2
%149 = bitcast i64* %148 to <2 x i64>*
store <2 x i64> %144, <2 x i64>* %149
%150 = add nuw i64 %137, 4
%151 = add i64 %138, 1
%152 = icmp eq i64 %151, %76
br i1 %152, label %153, label %136
153: ; preds = %136, %133
%154 = icmp eq i64 %61, %72
br i1 %154, label %338, label %155
155: ; preds = %63, %60, %153
%156 = phi i64 [ 0, %63 ], [ 0, %60 ], [ %72, %153 ]
%157 = xor i64 %156, -1
%158 = add i64 %61, %157
%159 = and i64 %61, 3
%160 = icmp eq i64 %159, 0
br i1 %160, label %171, label %161
161: ; preds = %155, %161
%162 = phi i64 [ %168, %161 ], [ %156, %155 ]
%163 = phi i64 [ %169, %161 ], [ 0, %155 ]
%164 = getelementptr inbounds i64, i64* %1, i64 %162
%165 = load i64, i64* %164
%166 = add nuw nsw i64 %162, %28
%167 = getelementptr inbounds i64, i64* %0, i64 %166
store i64 %165, i64* %167
%168 = add nuw nsw i64 %162, 1
%169 = add i64 %163, 1
%170 = icmp eq i64 %169, %159
br i1 %170, label %171, label %161
171: ; preds = %161, %155
%172 = phi i64 [ %156, %155 ], [ %168, %161 ]
%173 = icmp ult i64 %158, 3
br i1 %173, label %338, label %315
174: ; preds = %56, %52
%175 = tail call i32 @logger(i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str, i64 0, i64 0), i32 881, i32 0, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* %2)
%176 = icmp eq i64 %28, 1024
br i1 %176, label %338, label %177
177: ; preds = %174
%178 = sub nsw i64 1024, %28
%179 = call i64 @llvm.umax.i64(i64 %178, i64 1)
%180 = icmp ult i64 %179, 4
br i1 %180, label %273, label %181
181: ; preds = %177
%182 = getelementptr i64, i64* %0, i64 %28
%183 = add i64 %28, %179
%184 = getelementptr i64, i64* %0, i64 %183
%185 = getelementptr i64, i64* %1, i64 %179
%186 = icmp ult i64* %182, %185
%187 = icmp ugt i64* %184, %1
%188 = and i1 %186, %187
br i1 %188, label %273, label %189
189: ; preds = %181
%190 = and i64 %179, -4
%191 = add nsw i64 %190, -4
%192 = lshr exact i64 %191, 2
%193 = add nuw nsw i64 %192, 1
%194 = and i64 %193, 3
%195 = icmp ult i64 %191, 12
br i1 %195, label %251, label %196
196: ; preds = %189
%197 = and i64 %193, 9223372036854775804
br label %198
198: ; preds = %198, %196
%199 = phi i64 [ 0, %196 ], [ %248, %198 ]
%200 = phi i64 [ 0, %196 ], [ %249, %198 ]
%201 = getelementptr inbounds i64, i64* %1, i64 %199
%202 = bitcast i64* %201 to <2 x i64>*
%203 = load <2 x i64>, <2 x i64>* %202
%204 = getelementptr inbounds i64, i64* %201, i64 2
%205 = bitcast i64* %204 to <2 x i64>*
%206 = load <2 x i64>, <2 x i64>* %205
%207 = add nuw nsw i64 %199, %28
%208 = getelementptr inbounds i64, i64* %0, i64 %207
%209 = bitcast i64* %208 to <2 x i64>*
store <2 x i64> %203, <2 x i64>* %209
%210 = getelementptr inbounds i64, i64* %208, i64 2
%211 = bitcast i64* %210 to <2 x i64>*
store <2 x i64> %206, <2 x i64>* %211
%212 = or i64 %199, 4
%213 = getelementptr inbounds i64, i64* %1, i64 %212
%214 = bitcast i64* %213 to <2 x i64>*
%215 = load <2 x i64>, <2 x i64>* %214
%216 = getelementptr inbounds i64, i64* %213, i64 2
%217 = bitcast i64* %216 to <2 x i64>*
%218 = load <2 x i64>, <2 x i64>* %217
%219 = add nuw nsw i64 %212, %28
%220 = getelementptr inbounds i64, i64* %0, i64 %219
%221 = bitcast i64* %220 to <2 x i64>*
store <2 x i64> %215, <2 x i64>* %221
%222 = getelementptr inbounds i64, i64* %220, i64 2
%223 = bitcast i64* %222 to <2 x i64>*
store <2 x i64> %218, <2 x i64>* %223
%224 = or i64 %199, 8
%225 = getelementptr inbounds i64, i64* %1, i64 %224
%226 = bitcast i64* %225 to <2 x i64>*
%227 = load <2 x i64>, <2 x i64>* %226
%228 = getelementptr inbounds i64, i64* %225, i64 2
%229 = bitcast i64* %228 to <2 x i64>*
%230 = load <2 x i64>, <2 x i64>* %229
%231 = add nuw nsw i64 %224, %28
%232 = getelementptr inbounds i64, i64* %0, i64 %231
%233 = bitcast i64* %232 to <2 x i64>*
store <2 x i64> %227, <2 x i64>* %233
%234 = getelementptr inbounds i64, i64* %232, i64 2
%235 = bitcast i64* %234 to <2 x i64>*
store <2 x i64> %230, <2 x i64>* %235
%236 = or i64 %199, 12
%237 = getelementptr inbounds i64, i64* %1, i64 %236
%238 = bitcast i64* %237 to <2 x i64>*
%239 = load <2 x i64>, <2 x i64>* %238
%240 = getelementptr inbounds i64, i64* %237, i64 2
%241 = bitcast i64* %240 to <2 x i64>*
%242 = load <2 x i64>, <2 x i64>* %241
%243 = add nuw nsw i64 %236, %28
%244 = getelementptr inbounds i64, i64* %0, i64 %243
%245 = bitcast i64* %244 to <2 x i64>*
store <2 x i64> %239, <2 x i64>* %245
%246 = getelementptr inbounds i64, i64* %244, i64 2
%247 = bitcast i64* %246 to <2 x i64>*
store <2 x i64> %242, <2 x i64>* %247
%248 = add nuw i64 %199, 16
%249 = add nuw i64 %200, 4
%250 = icmp eq i64 %249, %197
br i1 %250, label %251, label %198
251: ; preds = %198, %189
%252 = phi i64 [ 0, %189 ], [ %248, %198 ]
%253 = icmp eq i64 %194, 0
br i1 %253, label %271, label %254
254: ; preds = %251, %254
%255 = phi i64 [ %268, %254 ], [ %252, %251 ]
%256 = phi i64 [ %269, %254 ], [ 0, %251 ]
%257 = getelementptr inbounds i64, i64* %1, i64 %255
%258 = bitcast i64* %257 to <2 x i64>*
%259 = load <2 x i64>, <2 x i64>* %258
%260 = getelementptr inbounds i64, i64* %257, i64 2
%261 = bitcast i64* %260 to <2 x i64>*
%262 = load <2 x i64>, <2 x i64>* %261
%263 = add nuw nsw i64 %255, %28
%264 = getelementptr inbounds i64, i64* %0, i64 %263
%265 = bitcast i64* %264 to <2 x i64>*
store <2 x i64> %259, <2 x i64>* %265
%266 = getelementptr inbounds i64, i64* %264, i64 2
%267 = bitcast i64* %266 to <2 x i64>*
store <2 x i64> %262, <2 x i64>* %267
%268 = add nuw i64 %255, 4
%269 = add i64 %256, 1
%270 = icmp eq i64 %269, %194
br i1 %270, label %271, label %254
271: ; preds = %254, %251
%272 = icmp eq i64 %179, %190
br i1 %272, label %338, label %273
273: ; preds = %181, %177, %271
%274 = phi i64 [ 0, %181 ], [ 0, %177 ], [ %190, %271 ]
%275 = xor i64 %274, -1
%276 = add i64 %179, %275
%277 = and i64 %179, 3
%278 = icmp eq i64 %277, 0
br i1 %278, label %289, label %279
279: ; preds = %273, %279
%280 = phi i64 [ %286, %279 ], [ %274, %273 ]
%281 = phi i64 [ %287, %279 ], [ 0, %273 ]
%282 = getelementptr inbounds i64, i64* %1, i64 %280
%283 = load i64, i64* %282
%284 = add nuw nsw i64 %280, %28
%285 = getelementptr inbounds i64, i64* %0, i64 %284
store i64 %283, i64* %285
%286 = add nuw nsw i64 %280, 1
%287 = add i64 %281, 1
%288 = icmp eq i64 %287, %277
br i1 %288, label %289, label %279
289: ; preds = %279, %273
%290 = phi i64 [ %274, %273 ], [ %286, %279 ]
%291 = icmp ult i64 %276, 3
br i1 %291, label %338, label %292
292: ; preds = %289, %292
%293 = phi i64 [ %313, %292 ], [ %290, %289 ]
%294 = getelementptr inbounds i64, i64* %1, i64 %293
%295 = load i64, i64* %294
%296 = add nuw nsw i64 %293, %28
%297 = getelementptr inbounds i64, i64* %0, i64 %296
store i64 %295, i64* %297
%298 = add nuw nsw i64 %293, 1
%299 = getelementptr inbounds i64, i64* %1, i64 %298
%300 = load i64, i64* %299
%301 = add nuw nsw i64 %298, %28
%302 = getelementptr inbounds i64, i64* %0, i64 %301
store i64 %300, i64* %302
%303 = add nuw nsw i64 %293, 2
%304 = getelementptr inbounds i64, i64* %1, i64 %303
%305 = load i64, i64* %304
%306 = add nuw nsw i64 %303, %28
%307 = getelementptr inbounds i64, i64* %0, i64 %306
store i64 %305, i64* %307
%308 = add nuw nsw i64 %293, 3
%309 = getelementptr inbounds i64, i64* %1, i64 %308
%310 = load i64, i64* %309
%311 = add nuw nsw i64 %308, %28
%312 = getelementptr inbounds i64, i64* %0, i64 %311
store i64 %310, i64* %312
%313 = add nuw nsw i64 %293, 4
%314 = icmp eq i64 %313, %179
br i1 %314, label %338, label %292
315: ; preds = %171, %315
%316 = phi i64 [ %336, %315 ], [ %172, %171 ]
%317 = getelementptr inbounds i64, i64* %1, i64 %316
%318 = load i64, i64* %317
%319 = add nuw nsw i64 %316, %28
%320 = getelementptr inbounds i64, i64* %0, i64 %319
store i64 %318, i64* %320
%321 = add nuw nsw i64 %316, 1
%322 = getelementptr inbounds i64, i64* %1, i64 %321
%323 = load i64, i64* %322
%324 = add nuw nsw i64 %321, %28
%325 = getelementptr inbounds i64, i64* %0, i64 %324
store i64 %323, i64* %325
%326 = add nuw nsw i64 %316, 2
%327 = getelementptr inbounds i64, i64* %1, i64 %326
%328 = load i64, i64* %327
%329 = add nuw nsw i64 %326, %28
%330 = getelementptr inbounds i64, i64* %0, i64 %329
store i64 %328, i64* %330
%331 = add nuw nsw i64 %316, 3
%332 = getelementptr inbounds i64, i64* %1, i64 %331
%333 = load i64, i64* %332
%334 = add nuw nsw i64 %331, %28
%335 = getelementptr inbounds i64, i64* %0, i64 %334
store i64 %333, i64* %335
%336 = add nuw nsw i64 %316, 4
%337 = icmp eq i64 %336, %61
br i1 %337, label %338, label %315
338: ; preds = %171, %315, %289, %292, %153, %271, %58, %174
ret void
}