LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/ravenexp[P]aatrace/match.c
// Function: aatrace_match_tile
struct match_result
aatrace_match_tile(const unsigned char* tilebuf,
		   const unsigned char* fontbuf,
		   int nchars,
		   const struct aatrace_match_ctx* ctx)
{
	switch (ctx->method) {
	default:
	case AATRACE_MATCH_METHOD_MINSAD:
		return aatrace_match_tile_sad(tilebuf, fontbuf, nchars);
	case AATRACE_MATCH_METHOD_MINSADASD:
		return aatrace_match_tile_sadasd(tilebuf, fontbuf, nchars,
						 ctx->sad_weight, ctx->asd_weight);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
cmpl $0x2, (%rcx)
jne 0x1e24
movl 0x4(%rcx), %eax
movl 0x8(%rcx), %r9d
movq %rax, -0x8(%rsp)
addl %r9d, %eax
imull $0x7f80, %eax, %eax     # imm = 0x7F80
xorl %ecx, %ecx
testl %edx, %edx
jle 0x1e1b
movl %edx, %edx
movq %rdx, -0x10(%rsp)
xorl %r10d, %r10d
xorl %r11d, %r11d
movslq %ecx, %r14
addq %rsi, %r14
xorl %r15d, %r15d
movq %rdi, %r12
xorl %ebp, %ebp
xorl %ebx, %ebx
xorl %r13d, %r13d
movzbl (%r12,%r13), %edx
movzbl (%r14,%r13), %r8d
subl %r8d, %edx
addl %edx, %ebp
movl %edx, %r8d
negl %r8d
cmovsl %edx, %r8d
movzbl %r8b, %edx
addl %edx, %ebx
incq %r13
cmpq $0x8, %r13
jne 0x1db3
incq %r15
addq $0x8, %r14
addq $0x8, %r12
cmpq $0x10, %r15
jne 0x1db0
movl %ebp, %edx
negl %edx
cmovsl %ebp, %edx
imull -0x8(%rsp), %ebx
imull %r9d, %edx
addl %ebx, %edx
cmpl %eax, %edx
cmovbl %r10d, %r11d
cmovbl %edx, %eax
testl %eax, %eax
je 0x1e18
incq %r10
subl $-0x80, %ecx
cmpq -0x10(%rsp), %r10
jne 0x1da0
movl %r11d, %ecx
shlq $0x20, %rax
jmp 0x1ea7
testl %edx, %edx
jle 0x1eb5
movl %edx, %eax
movl $0x7f80, %ecx           # imm = 0x7F80
xorl %r8d, %r8d
xorl %r9d, %r9d
xorl %edx, %edx
movslq %r8d, %r10
addq %rsi, %r10
movq %rdi, %rbx
xorl %r14d, %r14d
xorl %r11d, %r11d
xorl %r15d, %r15d
movzbl (%rbx,%r15), %ebp
movzbl (%r10,%r15), %r12d
subl %r12d, %ebp
movl %ebp, %r12d
negl %r12d
cmovsl %ebp, %r12d
movzbl %r12b, %ebp
addl %ebp, %r11d
incq %r15
cmpq $0x8, %r15
jne 0x1e4d
incq %r14
addq $0x8, %r10
addq $0x8, %rbx
cmpq $0x10, %r14
jne 0x1e4a
cmpl %ecx, %r11d
cmovbl %r11d, %ecx
cmovbl %r9d, %edx
testl %r11d, %r11d
je 0x1ea1
incq %r9
subl $-0x80, %r8d
cmpq %rax, %r9
jne 0x1e3b
shlq $0x20, %rcx
movl %edx, %eax
orq %rcx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x7f8000000000, %rax   # imm = 0x7F8000000000
jmp 0x1eaa
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/ravenexp[P]aatrace/cover.c
// Function: aatrace_cover_tile_score
unsigned int
aatrace_cover_tile_score(const struct aatrace_pic* pic,
			 const struct aatrace_font* font,
			 int tl, int tc, int dx, int dy,
			 const struct aatrace_match_ctx* ctx)
{
	const unsigned char* p =
		pic->buf + font->h*pic->ll*tl + font->w*tc;
	unsigned int score = 0;
	int i;

	if (dy > 0)
		for (i = 0; i < dy; i++)
			score += edge_score(p + i*pic->ll, FW, 1, ctx);
	if (dy < 0)
		for (i = dy; i < 0; i++)
			score += edge_score(p + (font->h + i)*pic->ll, FW, 1, ctx);

	if (dx > 0)
		for (i = 0; i < dx; i++)
			score += edge_score(p + i, FH, pic->ll, ctx);
	if (dx < 0)
		for (i = dx; i < 0; i++)
			score += edge_score(p + font->w + i, FH, pic->ll, ctx);

	return score;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movl %r8d, -0x18(%rsp)
movq 0x38(%rsp), %r10
movq (%rdi), %r11
movl 0x1c(%rsi), %ebx
movl 0x8(%rdi), %edi
imull %ebx, %edx
imull %edi, %edx
movslq 0x18(%rsi), %rax
movq %rax, -0x10(%rsp)
imull %eax, %ecx
movslq %ecx, %rax
movl %r9d, %r14d
movl %r9d, -0x14(%rsp)
testl %r9d, %r9d
movq %rax, -0x8(%rsp)
jle 0x1f55
movl (%r10), %ecx
leaq (%rax,%rdx), %r12
addq %r11, %r12
xorl %r13d, %r13d
xorl %ebp, %ebp
xorl %eax, %eax
movl %r13d, %r15d
addq %r12, %r15
xorl %r8d, %r8d
xorl %esi, %esi
movzbl (%r15,%r8), %r9d
addl %r9d, %esi
incq %r8
cmpq $0x8, %r8
jne 0x1f24
cmpl $0x2, %ecx
jne 0x1f46
movl 0x8(%r10), %r8d
addl 0x4(%r10), %r8d
imull %r8d, %esi
addl %esi, %eax
incq %rbp
addl %edi, %r13d
cmpq %r14, %rbp
jne 0x1f19
jmp 0x1f57
xorl %eax, %eax
movq -0x8(%rsp), %r8
leaq (%r11,%r8), %rcx
movl -0x14(%rsp), %esi
testl %esi, %esi
js 0x1f6f
movl -0x18(%rsp), %r12d
jmp 0x1fc0
movl (%r10), %ebp
addq %rdx, %r8
addq %r8, %r11
addl %esi, %ebx
imull %edi, %ebx
movl -0x18(%rsp), %r12d
movl %ebx, %r9d
addq %r11, %r9
xorl %r8d, %r8d
xorl %esi, %esi
movzbl (%r9,%r8), %r15d
addl %r15d, %esi
incq %r8
cmpq $0x8, %r8
jne 0x1f8d
cmpl $0x2, %ebp
jne 0x1faf
movl 0x8(%r10), %r8d
addl 0x4(%r10), %r8d
imull %r8d, %esi
addl %esi, %eax
leaq 0x1(%r14), %rsi
addl %edi, %ebx
cmpl $-0x1, %r14d
movq %rsi, %r14
jl 0x1f82
addq %rdx, %rcx
testl %r12d, %r12d
jle 0x200b
movl (%r10), %edx
movl %r12d, %r9d
xorl %r11d, %r11d
leaq (%rcx,%r11), %rsi
movl $0x10, %r14d
xorl %ebp, %ebp
xorl %ebx, %ebx
movl %ebp, %r8d
movzbl (%rsi,%r8), %r8d
addl %r8d, %ebx
addl %edi, %ebp
decq %r14
jne 0x1fdf
cmpl $0x2, %edx
jne 0x2001
movl 0x8(%r10), %esi
addl 0x4(%r10), %esi
imull %esi, %ebx
addl %ebx, %eax
incq %r11
cmpq %r9, %r11
jne 0x1fd1
testl %r12d, %r12d
jns 0x2055
addq -0x10(%rsp), %rcx
movl (%r10), %edx
movslq %r12d, %rsi
leaq (%rcx,%rsi), %r9
movl $0x10, %r11d
xorl %ebx, %ebx
xorl %r8d, %r8d
movl %ebx, %r14d
movzbl (%r9,%r14), %ebp
addl %ebp, %r8d
addl %edi, %ebx
decq %r11
jne 0x202a
cmpl $0x2, %edx
jne 0x204d
movl 0x8(%r10), %r9d
addl 0x4(%r10), %r9d
imull %r9d, %r8d
addl %r8d, %eax
incq %rsi
jne 0x201b
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/ravenexp[P]aatrace/convert.c
// Function: aatrace_convert_pic
void aatrace_convert_pic(struct aatrace_text* txt,
			 const struct aatrace_pic* src,
			 const struct aatrace_font* font,
			 const struct aatrace_convert_ctx* ctx)
{
	int tl, tc;

	txt->ll = txt->w = src->w/AATRACE_FONT_WIDTH;
	txt->h = src->h/AATRACE_FONT_HEIGHT;
	txt->buf = (char*)malloc(txt->ll*txt->h);

	for (tl = 0; (tl + 1)*font->h <= src->h; tl++) {
		for (tc = 0; (tc + 1)*font->w <= src->w; tc++) {
			txt->buf[tl*txt->ll + tc] =
				aatrace_search_tile(src, font, tl, tc, &ctx->match, &ctx->search)
				+ font->ascii_offset;
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, 0x8(%rsp)
movq %rsi, %rbp
movq %rdi, %rbx
movl 0xc(%rsi), %eax
leal 0x7(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
sarl $0x3, %ecx
movl %ecx, 0xc(%rdi)
movl %ecx, 0x8(%rdi)
movl 0x10(%rsi), %eax
leal 0xf(%rax), %edi
testl %eax, %eax
cmovnsl %eax, %edi
movq %rdx, %r13
sarl $0x4, %edi
movl %edi, 0x10(%rbx)
imull %ecx, %edi
callq 0x1110
movq %rax, (%rbx)
movl 0x1c(%r13), %eax
cmpl 0x10(%rbp), %eax
jg 0x23c8
movq 0x8(%rsp), %rax
leaq 0xc(%rax), %r15
movl $0x1, %ecx
xorl %edx, %edx
movq %rbx, 0x10(%rsp)
movq 0x8(%rsp), %r14
movl %ecx, 0x4(%rsp)
movl 0x18(%r13), %eax
cmpl 0xc(%rbp), %eax
jg 0x23b4
xorl %ebx, %ebx
movq %rbp, %rdi
movq %r13, %rsi
movl %ebx, %ecx
movl %edx, %r12d
movq %r14, %r8
movq %r15, %r9
callq 0x206b
movl %r12d, %edx
movq 0x10(%rsp), %rsi
addl 0x24(%r13), %eax
movq (%rsi), %rcx
movl 0x8(%rsi), %edi
imull %r12d, %edi
addl %ebx, %edi
movb %al, (%rcx,%rdi)
leal 0x2(%rbx), %eax
imull 0x18(%r13), %eax
incl %ebx
cmpl 0xc(%rbp), %eax
jle 0x2374
movl 0x4(%rsp), %ecx
incl %ecx
movl 0x1c(%r13), %eax
imull %ecx, %eax
incl %edx
cmpl 0x10(%rbp), %eax
jle 0x2365
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/zpole[P]IICV/src/test_heap-def.c
// Function: s_swap
void s_swap (S * v, vl_uindex a, vl_uindex b)
{
  S t = v[a] ;
  v[a] = v[b] ;
  v[b] = t ;
  printf("Swapping %" VL_FMT_UINDEX "x with %" VL_FMT_UINDEX "\n", a, b) ;
}

// Assembly:
movl (%rdi,%rsi,4), %eax
movl (%rdi,%rdx,4), %ecx
movl %ecx, (%rdi,%rsi,4)
movl %eax, (%rdi,%rdx,4)
leaq 0xeaa(%rip), %rdi       # 0x2010
xorl %eax, %eax
jmp 0x1040
// File: /workspace/github_c_makefile_star2_O1/zpole[P]IICV/./vl/heap-def.h
// Function: track_s_heap_up
VL_INLINE void
VL_HEAP_up
(VL_HEAP_array array, vl_size heapSize, vl_uindex index)
{
  vl_uindex leftIndex  = vl_heap_left_child (index) ;
  vl_uindex rightIndex = vl_heap_right_child (index) ;

  /* no childer: stop */
  if (leftIndex >= heapSize) return ;

  /* only left childer: easy */
  if (rightIndex >= heapSize) {
    if (VL_HEAP_cmp (array, index, leftIndex) > 0) {
      VL_HEAP_swap (array, index, leftIndex) ;
    }
    return ;
  }

  /* both childern */
  {
    if (VL_HEAP_cmp (array, leftIndex, rightIndex) < 0) {
      /* swap with left */
      if (VL_HEAP_cmp (array, index, leftIndex) > 0) {
        VL_HEAP_swap (array, index, leftIndex) ;
        VL_HEAP_up (array, heapSize, leftIndex) ;
      }
    } else {
      /* swap with right */
      if (VL_HEAP_cmp (array, index, rightIndex) > 0) {
        VL_HEAP_swap (array, index, rightIndex) ;
        VL_HEAP_up (array, heapSize, rightIndex) ;
      }
    }
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x90e(%rip), %r15       # 0x2010
leaq 0x1(,%rdx,2), %r12
cmpq %r14, %r12
jae 0x17a2
leaq 0x2(,%rdx,2), %r13
cmpq %r14, %r13
jae 0x1773
leaq (%rdx,%rdx), %rcx
movl (%rbx,%r12,4), %esi
movl 0x8(%rbx,%rcx,4), %edi
movl (%rbx,%rdx,4), %eax
cmpl %edi, %esi
jge 0x1753
cmpl %esi, %eax
jle 0x17a2
movl %esi, (%rbx,%rdx,4)
movl %eax, (%rbx,%r12,4)
movq %r15, %rdi
movq %rdx, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x1040
movq %r12, %rdx
jmp 0x1702
cmpl %edi, %eax
jle 0x17a2
movl %edi, (%rbx,%rdx,4)
movl %eax, 0x8(%rbx,%rcx,4)
movq %r15, %rdi
movq %rdx, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1040
movq %r13, %rdx
jmp 0x1702
movl (%rbx,%rdx,4), %eax
movl (%rbx,%r12,4), %ecx
cmpl %ecx, %eax
jle 0x17a2
movl %ecx, (%rbx,%rdx,4)
movl %eax, (%rbx,%r12,4)
leaq 0x884(%rip), %rdi       # 0x2010
movq %rdx, %rsi
movq %r12, %rdx
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x1040
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/simh[P]simtools/converters/strrem/strrem.c
// Function: main
int main (int argc, char *argv[])
{
int i, slen;
char *ppos, *fpos, *tpos, oname[256], line[256];
FILE *ifile, *ofile;

if ((argc < 2) || (argv[0] == NULL)) {
	printf ("Usage is: strrem file [file...]\n");
	exit (0);  }

slen = strlen (srem);
for (i = 1; i < argc; i++) {
	strcpy (oname, argv[i]);
        if (ppos = strrchr (oname, '.')) strcpy (ppos, ".new");
            else strcat (oname, ".new");
	ifile = fopen (argv[i], "r");
	if (ifile == NULL) {
	    printf ("Error opening file: %s\n", argv[i]);
	    exit (0);  }
	ofile = fopen (oname, "w");
	if (ofile == NULL) {
	    printf ("Error opening file: %s\n", oname);
	    exit (0);  }

	printf ("Processing file %s\n", argv[i]);
	while (fgets (line, 255, ifile) != NULL) {
	    tpos = strstr (line, srem);
	    if (tpos) {
		    fpos = tpos + slen;
		    while (*fpos) *tpos++ = *fpos++;
            *tpos = 0;
		    }
	    fputs (line, ofile);
	    }
	fclose (ifile);
	fclose (ofile);
	}
return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
cmpl $0x2, %edi
jl 0x137d
movq %rsi, %rbx
cmpq $0x0, (%rsi)
je 0x137d
movl %edi, %ebp
movq 0x2e74(%rip), %rdi      # 0x4080
callq 0x1060
movslq %eax, %r13
movl %ebp, %eax
movq %rax, 0x8(%rsp)
movl $0x1, %r14d
leaq 0x10(%rsp), %r12
leaq 0x110(%rsp), %rbp
movq %rbx, (%rsp)
movq (%rbx,%r14,8), %rsi
movq %r12, %rdi
callq 0x1030
movq %r12, %rdi
movl $0x2e, %esi
callq 0x1080
testq %rax, %rax
je 0x125c
movb $0x0, 0x4(%rax)
movl $0x77656e2e, (%rax)     # imm = 0x77656E2E
jmp 0x1271
movq %r12, %rdi
callq 0x1060
movl $0x77656e2e, 0x10(%rsp,%rax) # imm = 0x77656E2E
movb $0x0, 0x14(%rsp,%rax)
movq (%rbx,%r14,8), %rdi
leaq 0xd96(%rip), %rsi       # 0x2012
callq 0x10b0
testq %rax, %rax
je 0x1352
movq %rax, %r15
movq %r12, %rbx
movq %r12, %rdi
leaq 0xd76(%rip), %rsi       # 0x2010
callq 0x10b0
testq %rax, %rax
je 0x1363
movq %rax, %r12
movq (%rsp), %rax
movq (%rax,%r14,8), %rsi
leaq 0xd72(%rip), %rdi       # 0x202c
xorl %eax, %eax
callq 0x1070
movq %rbp, %rdi
movl $0xff, %esi
movq %r15, %rdx
callq 0x10a0
testq %rax, %rax
je 0x1319
movq 0x2da3(%rip), %rsi      # 0x4080
movq %rbp, %rdi
callq 0x10d0
testq %rax, %rax
je 0x130c
movb (%rax,%r13), %cl
testb %cl, %cl
je 0x1306
leaq 0x1(%rax), %rdx
movb %cl, (%rax)
movb 0x1(%rax,%r13), %cl
movq %rdx, %rax
testb %cl, %cl
jne 0x12f2
jmp 0x1309
movq %rax, %rdx
movb $0x0, (%rdx)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x1090
jmp 0x12c1
movq %r15, %rdi
callq 0x1050
movq %r12, %rdi
callq 0x1050
incq %r14
cmpq 0x8(%rsp), %r14
movq %rbx, %r12
movq (%rsp), %rbx
jne 0x1232
xorl %eax, %eax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rsp), %rax
movq (%rax,%r14,8), %rsi
leaq 0xcb3(%rip), %rdi       # 0x2014
jmp 0x136f
leaq 0xcaa(%rip), %rdi       # 0x2014
leaq 0x10(%rsp), %rsi
xorl %eax, %eax
callq 0x1070
xorl %edi, %edi
callq 0x10c0
leaq 0xcbc(%rip), %rdi       # 0x2040
callq 0x1040
jmp 0x1376
// File: /workspace/github_c_makefile_star2_O1/Mikejmoffitt[P]romtools/bscoop/bscoop.c
// Function: main
int main(int argc, char **argv)
{
	if (argc < 5)
	{
		printf("usage: %s in_fname offset bytes out_fname\n", argv[0]);
		return 0;
	}

	const char *in_fname_arg = argv[1];
	const char *offset_arg = argv[2];
	const char *bytes_arg = argv[3];
	const char *out_fname_arg = argv[4];
	const size_t offset = strtoul(offset_arg, NULL, 0);
	const size_t bytes = strtoul(bytes_arg, NULL, 0);
	if (bytes == 0) return 0;

	FILE *fi = fopen(in_fname_arg, "rb");
	if (!fi)
	{
		fprintf(stderr, "Couldn't open %s for reading.\n", in_fname_arg);
		return 1;
	}

	FILE *fo = fopen(out_fname_arg, "wb");
	if (!fo)
	{
		fprintf(stderr, "Couldn't open %s for writing.\n", out_fname_arg);
		fclose(fi);
		return 1;
	}

	fseek(fi, offset, SEEK_SET);
	for (size_t i = 0; i < bytes; i++)
	{
		if (feof(fi)) break;
		fputc(fgetc(fi), fo);
	}

	const size_t bytes_read = ftell(fo);

	if (bytes_read != bytes)
	{
		fprintf(stderr, "Warning: Actual bytes read does not match expectation"
		        "(actual: $%X expected $%x)\n",
		        (int)bytes_read, (int)bytes);
	}
	else
	{
		printf("Copied %d ($%X) bytes to %s.\n",
		       (int)bytes_read, (int)bytes_read, out_fname_arg);
	}

	fclose(fi);
	fclose(fo);

	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
cmpl $0x4, %edi
jg 0x11f3
movq (%rsi), %rsi
leaq 0xe20(%rip), %rdi       # 0x2004
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x1040
jmp 0x12c8
movq 0x8(%rsi), %r12
movq 0x10(%rsi), %rdi
movq 0x18(%rsi), %r15
movq 0x20(%rsi), %rbx
xorl %r14d, %r14d
xorl %esi, %esi
xorl %edx, %edx
callq 0x10c0
movq %rax, %r13
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x10c0
testq %rax, %rax
je 0x12c8
movq %rax, %r15
leaq 0xdfe(%rip), %rsi       # 0x202f
movq %r12, %rdi
callq 0x10b0
testq %rax, %rax
je 0x12d5
movq %rax, %r14
leaq 0xe05(%rip), %rsi       # 0x2051
movq %rbx, %rdi
callq 0x10b0
testq %rax, %rax
je 0x12f2
movq %rax, %r12
movq %r14, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x10a0
movq %r15, %r13
movq %r14, %rdi
callq 0x1090
testl %eax, %eax
jne 0x1293
movq %r14, %rdi
callq 0x1050
movl %eax, %edi
movq %r12, %rsi
callq 0x1060
decq %r13
jne 0x1270
movq %r12, %rdi
callq 0x1080
cmpq %r15, %rax
jne 0x131d
leaq 0xe1d(%rip), %rdi       # 0x20c4
movl %eax, %esi
movl %eax, %edx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
callq 0x1030
movq %r12, %rdi
callq 0x1030
xorl %r14d, %r14d
movl %r14d, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x2d1c(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0xd4c(%rip), %rsi       # 0x2032
movq %r12, %rdx
xorl %eax, %eax
callq 0x1070
jmp 0x1315
movq 0x2cff(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0xd51(%rip), %rsi       # 0x2054
movq %rbx, %rdx
xorl %eax, %eax
callq 0x1070
movq %r14, %rdi
callq 0x1030
movl $0x1, %r14d
jmp 0x12c8
movq 0x2cd4(%rip), %rcx      # 0x3ff8
movq (%rcx), %rdi
leaq 0xd45(%rip), %rsi       # 0x2073
movl %eax, %edx
movl %r15d, %ecx
xorl %eax, %eax
callq 0x1070
jmp 0x12b5
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/source.c
// Function: source_new
Source* source_new(const ShearConfig* config) {
    Source* src = calloc(1,sizeof(Source));
    if (src == NULL) {
        wlog("Could not allocate Source\n");
        exit(EXIT_FAILURE);
    }

    src->shear_style = config->shear_style;
    src->mask_style = config->mask_style;
    src->scstyle = config->scstyle;
    src->sourceid_style = config->sourceid_style;

    if (src->scstyle == SIGMACRIT_STYLE_INTERP) {
        src->scinv = dvector_zeros(config->nzl);

        if (src->scinv == NULL) {
            wlog("Could not allocate %ld scinv for source\n", config->nzl);
            exit(EXIT_FAILURE);
        }
    }

    return src;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x1, %edi
movl $0xc8, %esi
callq 0x2180
testq %rax, %rax
je 0x62ab
movq %rax, %r14
movl 0x18(%rbx), %eax
movl %eax, (%r14)
movl 0x1c(%rbx), %eax
movl %eax, 0x4(%r14)
movl 0x20(%rbx), %eax
movl %eax, 0x8(%r14)
movl 0x24(%rbx), %ecx
movl %ecx, 0xc(%r14)
cmpl $0x2, %eax
jne 0x62a0
movq 0x30(%rbx), %rdi
callq 0x5bf1
movq %rax, 0x58(%r14)
testq %rax, %rax
je 0x62b0
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x32e6
addq $0x30, %rbx
movq %rbx, %rdi
callq 0x32bf
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/source.c
// Function: source_free
Source* source_free(Source* src) {

    if (src != NULL) {

        if (src->scstyle == SIGMACRIT_STYLE_INTERP) {
            if (src->scinv != NULL) {
                vector_free(src->scinv);
            }
        }

        free(src);
    }
    return NULL;
}

// Assembly:
testq %rdi, %rdi
je 0x62f7
pushq %rbx
movq %rdi, %rbx
cmpl $0x2, 0x8(%rdi)
jne 0x62ee
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0x62ee
movq 0x10(%rax), %rdi
callq 0x2030
movq 0x58(%rbx), %rdi
callq 0x2030
movq $0x0, 0x58(%rbx)
movq %rbx, %rdi
callq 0x2030
popq %rbx
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/shear.c
// Function: shear_process_source
void shear_process_source(Shear* self, Source* src) {
    src->hpixid = hpix_eq2pix(self->hpix, src->ra, src->dec);

    int64 hpix_mod = src->hpixid - self->hpix->half_npix;
    TreeNode* node = tree_find(self->lcat->hpix_tree, hpix_mod);

    if (node == NULL) {
        return;
    }

    Lens* lens=NULL;
    Lensum* lensum=NULL;

    vector_foreach(ind, node->indices) {

        lens = &self->lcat->data[*ind];
        lensum = &self->lensums->data[*ind];

        if (lens->z >= self->min_zlens && lens->z <= self->max_zlens) {
            shear_procpair(self, src, lens, lensum);
        }
    }

}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq 0x10(%rdi), %rdi
movsd 0x18(%rsi), %xmm0
movsd 0x20(%rsi), %xmm1
callq 0x7733
movq %rax, 0x50(%rbx)
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
subq 0x10(%rcx), %rax
movq 0x10(%rdx), %rdi
movq %rax, %rsi
callq 0x8f79
testq %rax, %rax
je 0x7a99
movq 0x8(%rax), %rax
movq (%rax), %r15
testq %r15, %r15
je 0x7a99
movq 0x10(%rax), %r12
shlq $0x3, %r15
xorl %r13d, %r13d
movq 0x18(%r14), %rax
movq 0x8(%rax), %rdx
movq (%r12,%r13), %rcx
shlq $0x7, %rcx
movsd 0x18(%rdx,%rcx), %xmm0
ucomisd 0x28(%r14), %xmm0
jb 0x7a90
movsd 0x30(%r14), %xmm1
ucomisd %xmm0, %xmm1
jb 0x7a90
movq 0x20(%r14), %rax
addq %rcx, %rdx
addq 0x8(%rax), %rcx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7aa3
addq $0x8, %r13
cmpq %r13, %r15
jne 0x7a50
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/shear.c
// Function: shear_free
Shear* shear_free(Shear* self) {

    if (self != NULL) {

        self->config   = sconfig_free(self->config);
        self->lcat     = lcat_free(self->lcat);
        self->hpix     = hpix_free(self->hpix);
        self->cosmo    = cosmo_free(self->cosmo);
        self->lensums  = lensums_free(self->lensums);

    }
    free(self);
    return NULL;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
testq %rdi, %rdi
je 0x80ef
movq (%rbx), %rdi
callq 0x45e9
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
callq 0x66fe
movq %rax, 0x18(%rbx)
movq 0x10(%rbx), %rdi
callq 0x6ef4
movq %rax, 0x10(%rbx)
movq 0x8(%rbx), %rdi
callq 0x6ac7
movq %rax, 0x8(%rbx)
movq 0x20(%rbx), %rdi
callq 0x87a3
movq %rax, 0x20(%rbx)
movq %rbx, %rdi
callq 0x2030
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/interp.c
// Function: interplin
double interplin(const dvector* vx, const dvector* vy, double u) {

    // default to last point
    size_t ilo = vx->size-2;
    size_t ihi = vx->size-1;

    for (size_t i=0; i<vx->size; i++) {

        if (vx->data[i] >= u) {
            if (i == 0) {
                ilo = 0;
                ihi = 1;
            } else {
                ilo = i-1;
                ihi = i;
            }
            break;
        }
    }


    double* x=vx->data;
    double* y=vy->data;
    double val;
    val = ( u-x[ilo] )*( y[ihi] - y[ilo] )/( x[ihi] - x[ilo] ) + y[ilo];

    return val;
}

// Assembly:
movq (%rdi), %r8
leaq -0x2(%r8), %rcx
movq %r8, %rax
subq $0x1, %rax
jb 0x90ad
movq 0x10(%rdi), %r9
xorl %edx, %edx
movsd (%r9,%rdx,8), %xmm1
ucomisd %xmm0, %xmm1
jae 0x9098
incq %rdx
cmpq %rdx, %r8
jne 0x9082
jmp 0x90ad
cmpq $0x1, %rdx
movq %rdx, %rax
adcq $0x0, %rax
xorl %ecx, %ecx
subq $0x1, %rdx
cmovaeq %rdx, %rcx
movq 0x10(%rdi), %rdx
movq 0x10(%rsi), %rsi
movsd (%rdx,%rcx,8), %xmm2
subsd %xmm2, %xmm0
movsd (%rsi,%rax,8), %xmm1
movsd (%rsi,%rcx,8), %xmm3
subsd %xmm3, %xmm1
mulsd %xmm0, %xmm1
movsd (%rdx,%rax,8), %xmm0
subsd %xmm2, %xmm0
divsd %xmm0, %xmm1
addsd %xmm3, %xmm1
movapd %xmm1, %xmm0
retq
nop
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/xshear.c
// Function: usage_and_exit
void usage_and_exit(void) {
    wlog("usage: \n");
    wlog("   cat source_cat | xshear config_file lens_cat > outfile\n");
    wlog("   cat source_cat1 source_cat2 .. | xshear config_file lens_cat > outfile\n");
    wlog("   cat source_cat | some_filter | xshear config_file lens_cat > outfile\n");
    wlog("   cat source_cat | xshear config_file lens_cat pair_logfile > outfile\n");
    exit(EXIT_FAILURE);
}

// Assembly:
pushq %rbx
movq 0x6e74(%rip), %rbx      # 0xfff8
movq (%rbx), %rcx
leaq 0x218f(%rip), %rdi      # 0xb31d
movl $0x8, %esi
movl $0x1, %edx
callq 0x22a0
movq (%rbx), %rcx
leaq 0x217f(%rip), %rdi      # 0xb326
movl $0x3a, %esi
movl $0x1, %edx
callq 0x22a0
movq (%rbx), %rcx
leaq 0x21a1(%rip), %rdi      # 0xb361
movl $0x4a, %esi
movl $0x1, %edx
callq 0x22a0
movq (%rbx), %rcx
leaq 0x21d3(%rip), %rdi      # 0xb3ac
movl $0x48, %esi
movl $0x1, %edx
callq 0x22a0
movq (%rbx), %rcx
leaq 0x2203(%rip), %rdi      # 0xb3f5
movl $0x47, %esi
movl $0x1, %edx
callq 0x22a0
movl $0x1, %edi
callq 0x2290
// File: /workspace/github_c_makefile_star2_O1/esheldon[P]xshear/src/quad.c
// Function: quadeq_get_quadrant
int quadeq_get_quadrant(double pa_degrees)
{
    int quadrant;
    if (pa_degrees < -90.) {
        quadrant=3;
    } else if (pa_degrees < 0.0) {
        quadrant=4;
    } else if (pa_degrees < 90.) {
        quadrant=1;
    } else {
        quadrant=2;
    }

    return quadrant;
}

// Assembly:
movl $0x3, %eax
movsd 0x1b6b(%rip), %xmm1     # 0xb4f8
ucomisd %xmm0, %xmm1
ja 0x99b5
movl $0x4, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x99b5
movsd 0x150e(%rip), %xmm1     # 0xaeb8
xorl %eax, %eax
ucomisd %xmm0, %xmm1
setbe %al
incl %eax
retq
// File: /workspace/github_c_makefile_star2_O1/deepika9294[P]Threading-Library/one-one/test/mutex1.c
// Function: thread1
void *thread1(void *arg) {
	while(run == 1) {
		dthread_mutex_lock(&lock);
        c++;
		dthread_mutex_unlock(&lock);

		c1++;
    }
    return NULL;
}

// Assembly:
cmpq $0x1, 0x2888(%rip)      # 0x40a0
jne 0x1855
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x28c9(%rip), %rbx      # 0x40f0
movq %rbx, %rdi
callq 0x15f0
incq 0x2892(%rip)            # 0x40c8
movq %rbx, %rdi
callq 0x165e
incq 0x288b(%rip)            # 0x40d0
cmpq $0x1, 0x2853(%rip)      # 0x40a0
je 0x1827
addq $0x8, %rsp
popq %rbx
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/deepika9294[P]Threading-Library/one-one/test/mutex1.c
// Function: thread2
void *thread2(void *arg) {
	while(run == 1) {
        dthread_mutex_lock(&lock);
        c++;
		dthread_mutex_unlock(&lock);
		c2++;
    }
    return NULL;
}

// Assembly:
cmpq $0x1, 0x2840(%rip)      # 0x40a0
jne 0x189d
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x2881(%rip), %rbx      # 0x40f0
movq %rbx, %rdi
callq 0x15f0
incq 0x284a(%rip)            # 0x40c8
movq %rbx, %rdi
callq 0x165e
incq 0x284b(%rip)            # 0x40d8
cmpq $0x1, 0x280b(%rip)      # 0x40a0
je 0x186f
addq $0x8, %rsp
popq %rbx
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/deepika9294[P]Threading-Library/one-one/test/mutex1.c
// Function: thread3
void *thread3(void *arg) {
	while(run == 1) {
        dthread_mutex_lock(&lock);
        c++;
		dthread_mutex_unlock(&lock);
		c3++;
    }
    return NULL;
}

// Assembly:
cmpq $0x1, 0x27f8(%rip)      # 0x40a0
jne 0x18e5
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x2839(%rip), %rbx      # 0x40f0
movq %rbx, %rdi
callq 0x15f0
incq 0x2802(%rip)            # 0x40c8
movq %rbx, %rdi
callq 0x165e
incq 0x280b(%rip)            # 0x40e0
cmpq $0x1, 0x27c3(%rip)      # 0x40a0
je 0x18b7
addq $0x8, %rsp
popq %rbx
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/deepika9294[P]Threading-Library/one-one/test/mutex1.c
// Function: thread4
void *thread4(void *arg) {
	while(run == 1) {
        dthread_mutex_lock(&lock);
        c++;
		dthread_mutex_unlock(&lock);
		c4++;
    }
    return NULL;
}

// Assembly:
cmpq $0x1, 0x27b0(%rip)      # 0x40a0
jne 0x192d
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x27f1(%rip), %rbx      # 0x40f0
movq %rbx, %rdi
callq 0x15f0
incq 0x27ba(%rip)            # 0x40c8
movq %rbx, %rdi
callq 0x165e
incq 0x27cb(%rip)            # 0x40e8
cmpq $0x1, 0x277b(%rip)      # 0x40a0
je 0x18ff
addq $0x8, %rsp
popq %rbx
popq %rbp
xorl %eax, %eax
retq
// File: /workspace/github_c_makefile_star2_O1/deepika9294[P]Threading-Library/one-one/test/mutex1.c
// Function: main
int main() {
	dthread_t th1, th2, th3, th4; 
    dthread_init();
	dthread_mutex_init(&lock);
    printf("\n\n--------------------------------MUTEX LOCK TEST ---------------------------------\n\n");
    printf("***** MUTEX TEST : 1 *****\n");

	dthread_create(&th1, thread1, NULL);
	dthread_create(&th2, thread2, NULL);
	dthread_create(&th3, thread3, NULL);
	dthread_create(&th4, thread4, NULL);

	sleep(2);
	run = 0;
	dthread_join(th1, NULL);
	dthread_join(th2, NULL);
	dthread_join(th3, NULL);
	dthread_join(th4, NULL);

	if(c == c1 + c2 + c3 + c4) {
		printf(GREEN "**PASSED**: MUTEX LOCK test for race problem between 4 threads\n" NONE);
	}
	else {
		printf(RED "**FAILED**: MUTEX LOCK test for race problem between 4 threads\n" NONE);
	}
    // printf("\n%ld %ld %ld %ld %ld %ld\n", c, c1+c2+c3+c4 , c1, c2, c3, c4);

	printf("\n");
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
callq 0x123c
leaq 0x27a5(%rip), %rdi      # 0x40f0
callq 0x15e2
leaq 0x784(%rip), %rdi       # 0x20db
callq 0x1060
leaq 0x7cd(%rip), %rdi       # 0x2130
callq 0x1060
leaq -0x15f(%rip), %rsi      # 0x1810
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1330
leaq -0x12c(%rip), %rsi      # 0x1858
leaq -0x38(%rbp), %r14
movq %r14, %rdi
xorl %edx, %edx
callq 0x1330
leaq -0xf9(%rip), %rsi       # 0x18a0
leaq -0x30(%rbp), %r15
movq %r15, %rdi
xorl %edx, %edx
callq 0x1330
leaq -0xc6(%rip), %rsi       # 0x18e8
leaq -0x28(%rbp), %r12
movq %r12, %rdi
xorl %edx, %edx
callq 0x1330
movl $0x2, %edi
callq 0x1110
movq $0x0, 0x26cf(%rip) # 0x40a0
movq (%rbx), %rdi
xorl %esi, %esi
callq 0x14c0
movq (%r14), %rdi
xorl %esi, %esi
callq 0x14c0
movq (%r15), %rdi
xorl %esi, %esi
callq 0x14c0
movq (%r12), %rdi
xorl %esi, %esi
callq 0x14c0
movq 0x26d7(%rip), %rax      # 0x40d8
addq 0x26c8(%rip), %rax      # 0x40d0
addq 0x26d1(%rip), %rax      # 0x40e0
addq 0x26d2(%rip), %rax      # 0x40e8
cmpq %rax, 0x26ab(%rip)      # 0x40c8
leaq 0x61d(%rip), %rax       # 0x2041
leaq 0x663(%rip), %rdi       # 0x208e
cmoveq %rax, %rdi
xorl %eax, %eax
callq 0x10a0
movl $0xa, %edi
callq 0x1040
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/rsa9000[P]regfanalysistools/regftree.c
// Function: regf_parse_lst
static int regf_parse_lst(const char *pref, unsigned off, int have_vals)
{
	const struct regf_cell *rc = st.data + off;
	const struct regf_lst *lst = (void *)rc->data;

	if (regf_cell_check_len(st.data, off, "lst", sizeof(*lst)))
		return -1;

	if (strncmp(lst->sign, "lf", 2) == 0) {
		return regf_parse_lst_lf(pref, off, have_vals);
	} else if (strncmp(lst->sign, "lh", 2) == 0) {
		return regf_parse_lst_lh(pref, off, have_vals);
	} else if (strncmp(lst->sign, "li", 2) == 0) {
		return regf_parse_lst_li(pref, off, have_vals);
	} else if (strncmp(lst->sign, "ri", 2) == 0) {
		return regf_parse_lst_ri(pref, off, have_vals);
	} else {
		PR_ERR(off, "lst", "unexpected list signature\n");
		return -1;
	}

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %ebp
movl %esi, %ebx
movq %rdi, %r14
movq 0x536a(%rip), %r12      # 0x7110
leaq 0x2b5d(%rip), %rdx      # 0x490a
movq %r12, %rdi
movl $0x4, %ecx
callq 0x31a2
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
testl %eax, %eax
je 0x1dd6
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %ebp, 0x4(%rsp)
movl %ebx, %ebp
addq %rbp, %r12
addq $0x4, %r12
leaq 0x26f0(%rip), %rsi      # 0x44da
movl $0x2, %edx
movq %r12, %rdi
callq 0x1050
testl %eax, %eax
je 0x1e5f
leaq 0x26db(%rip), %rsi      # 0x44dd
movl $0x2, %edx
movq %r12, %rdi
callq 0x1050
testl %eax, %eax
je 0x1e7b
leaq 0x26c6(%rip), %rsi      # 0x44e0
movl $0x2, %edx
movq %r12, %rdi
callq 0x1050
testl %eax, %eax
je 0x1e97
leaq 0x26b1(%rip), %rsi      # 0x44e3
movl $0x2, %edx
movq %r12, %rdi
callq 0x1050
testl %eax, %eax
je 0x1eb3
leaq 0x269c(%rip), %rdi      # 0x44e6
leaq 0x2ab9(%rip), %rdx      # 0x490a
movl %ebx, %esi
xorl %eax, %eax
callq 0x1359
jmp 0x1dc4
movq %r14, %rdi
movl %ebx, %esi
movl 0x4(%rsp), %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x20f1
movq %r14, %rdi
movl %ebx, %esi
movl 0x4(%rsp), %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2270
movq %r14, %rdi
movl %ebx, %esi
movl 0x4(%rsp), %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2400
movq 0x5256(%rip), %r13      # 0x7110
cmpw $0x0, 0x6(%r13,%rbp)
je 0x1f51
addq %rbp, %r13
xorl %r12d, %r12d
xorl %r15d, %r15d
movl 0x4(%rsp), %ebp
movl 0x8(%r13,%r12,4), %esi
leaq 0x5248(%rip), %rdi      # 0x7128
callq 0x30ad
leaq 0x5244(%rip), %rcx      # 0x7130
cmpq %rcx, %rax
sete %cl
testq %rax, %rax
sete %dl
orb %cl, %dl
leaq 0x2693(%rip), %rdi      # 0x4594
jne 0x1f24
incl 0x24(%rax)
orb $0x10, 0x28(%rax)
movl 0x8(%r13,%r12,4), %esi
movq %r14, %rdi
movl %ebp, %edx
callq 0x1d8d
leaq 0x26aa(%rip), %rdi      # 0x45ca
testl %eax, %eax
je 0x1f3f
movl 0x8(%r13,%r12,4), %ecx
movl %ebx, %esi
leaq 0x25b1(%rip), %rdx      # 0x44e3
xorl %eax, %eax
callq 0x1359
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
incq %r12
movzwl 0x6(%r13), %eax
cmpq %rax, %r12
jb 0x1ed4
jmp 0x1dc4
xorl %r15d, %r15d
jmp 0x1dc4
// File: /workspace/github_c_makefile_star2_O1/rsa9000[P]regfanalysistools/regftree.c
// Function: regf_parse_lst_lf
static int regf_parse_lst_lf(const char *pref, unsigned off, int have_vals)
{
#define LF_PR_WARN(__fmt, ...)	PR_WARN(off, "lf", __fmt, ##__VA_ARGS__)
	const struct regf_cell *rc = st.data + off;
	const struct regf_lst *lst = (void *)rc->data;
	const struct regf_lf_elem *elems = (void *)lst->data;
	size_t pref_len = strlen(pref);
	char __pref[pref_len + 4];
	struct cell *cell;
	int i, res, ret = 0;

	for (i = 0; i < lst->nelem; ++i) {
		cell = cache_cell_find(elems[i].off);
		if (!cell) {
			LF_PR_WARN("could not find key cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
		cache_cell_updref(cell, CT_NK);
		if (i == lst->nelem - 1 && !have_vals) {
			printf("%s '-", pref);
			snprintf(__pref, sizeof(__pref), "%s   ", pref);
		} else {
			printf("%s +-", pref);
			snprintf(__pref, sizeof(__pref), "%s | ", pref);
		}
		res = regf_parse_nk(__pref, elems[i].off);
		if (res) {
			LF_PR_WARN("could not parse subkey in cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
	}

	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %edx, -0x30(%rbp)
movq 0x5004(%rip), %r12      # 0x7110
movl %esi, -0x34(%rbp)
movl %esi, %ebx
movq %rdi, -0x58(%rbp)
callq 0x1090
movq %rsp, %rdx
leaq 0x13(%rax), %rcx
andq $-0x10, %rcx
subq %rcx, %rdx
movq %rdx, -0x50(%rbp)
movq %rdx, %rsp
cmpw $0x0, 0x6(%r12,%rbx)
je 0x2257
addq %rbx, %r12
addq $0x4, %rax
movq %rax, -0x48(%rbp)
leaq 0x4fda(%rip), %rbx      # 0x7128
leaq 0x4fdb(%rip), %r14      # 0x7130
leaq 0x23b4(%rip), %r13      # 0x4510
xorl %r15d, %r15d
movl $0x0, -0x2c(%rbp)
movq %r12, -0x40(%rbp)
movl 0x8(%r12,%r15,8), %esi
movq %rbx, %rdi
callq 0x30ad
cmpq %r14, %rax
sete %cl
testq %rax, %rax
sete %dl
orb %cl, %dl
movq %r13, %rdi
jne 0x2226
cmpl $0x0, -0x30(%rbp)
setne %cl
incl 0x24(%rax)
orb $0x2, 0x28(%rax)
movzwl 0x6(%r12), %eax
decl %eax
cmpq %rax, %r15
setne %al
orb %cl, %al
leaq 0x238d(%rip), %rdi      # 0x4540
leaq 0x2392(%rip), %rax      # 0x454c
cmovneq %rax, %rdi
leaq 0x2381(%rip), %r12      # 0x4546
leaq 0x2386(%rip), %rax      # 0x4552
cmovneq %rax, %r12
movq %rbx, %r13
movq -0x58(%rbp), %rbx
movq %rbx, %rsi
xorl %eax, %eax
callq 0x10b0
movq -0x50(%rbp), %r14
movq %r14, %rdi
movq -0x48(%rbp), %rsi
movq %r12, %rdx
movq -0x40(%rbp), %r12
movq %rbx, %rcx
movq %r13, %rbx
leaq 0x2310(%rip), %r13      # 0x4510
xorl %eax, %eax
callq 0x10d0
movl 0x8(%r12,%r15,8), %esi
movq %r14, %rdi
leaq 0x4f1a(%rip), %r14      # 0x7130
callq 0x1a1b
leaq 0x2336(%rip), %rdi      # 0x4558
testl %eax, %eax
je 0x2243
movl 0x8(%r12,%r15,8), %ecx
movl -0x34(%rbp), %esi
leaq 0x22a5(%rip), %rdx      # 0x44da
xorl %eax, %eax
callq 0x1359
movl $0xffffffff, -0x2c(%rbp) # imm = 0xFFFFFFFF
incq %r15
movzwl 0x6(%r12), %eax
cmpq %rax, %r15
jb 0x216a
jmp 0x225e
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/rsa9000[P]regfanalysistools/regftree.c
// Function: regf_parse_lst_lh
static int regf_parse_lst_lh(const char *pref, unsigned off, int have_vals)
{
#define LH_PR_WARN(__fmt, ...)	PR_WARN(off, "lh", __fmt, ##__VA_ARGS__)
	const struct regf_cell *rc = st.data + off;
	const struct regf_lst *lst = (void *)rc->data;
	const struct regf_lh_elem *elems = (void *)lst->data;
	size_t pref_len = strlen(pref);
	char __pref[pref_len + 4];
	struct cell *cell;
	int i, res, ret = 0;

	snprintf(__pref, sizeof(__pref), "%s  ", pref);

	for (i = 0; i < lst->nelem; ++i) {
		cell = cache_cell_find(elems[i].off);
		if (!cell) {
			LH_PR_WARN("could not find key cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
		cache_cell_updref(cell, CT_NK);
		if (i == lst->nelem - 1 && !have_vals) {
			printf("%s '-", pref);
			snprintf(__pref, sizeof(__pref), "%s   ", pref);
		} else {
			printf("%s +-", pref);
			snprintf(__pref, sizeof(__pref), "%s | ", pref);
		}
		res = regf_parse_nk(__pref, elems[i].off);
		if (res) {
			LH_PR_WARN("could not parse subkey in cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
	}

	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %edx, -0x30(%rbp)
movq %rdi, %r15
movq 0x4e82(%rip), %r12      # 0x7110
movl %esi, -0x34(%rbp)
movl %esi, %ebx
callq 0x1090
leaq 0x4(%rax), %rsi
movq %rsp, %rdi
addq $0x13, %rax
andq $-0x10, %rax
subq %rax, %rdi
movq %rdi, %rsp
leaq 0x22db(%rip), %rdx      # 0x458f
movl $0x0, -0x2c(%rbp)
movq %rdi, -0x40(%rbp)
movq %rsi, -0x48(%rbp)
movq %r15, -0x50(%rbp)
movq %r15, %rcx
xorl %eax, %eax
callq 0x10d0
cmpw $0x0, 0x6(%r12,%rbx)
je 0x23ee
addq %rbx, %r12
leaq 0x4e40(%rip), %rbx      # 0x7128
leaq 0x4e41(%rip), %r14      # 0x7130
leaq 0x221a(%rip), %r13      # 0x4510
xorl %r15d, %r15d
movl $0x0, -0x2c(%rbp)
movl 0x8(%r12,%r15,8), %esi
movq %rbx, %rdi
callq 0x30ad
cmpq %r14, %rax
sete %cl
testq %rax, %rax
sete %dl
orb %cl, %dl
movq %r13, %rdi
jne 0x23bf
cmpl $0x0, -0x30(%rbp)
setne %cl
incl 0x24(%rax)
orb $0x2, 0x28(%rax)
movzwl 0x6(%r12), %eax
decl %eax
cmpq %rax, %r15
setne %al
orb %cl, %al
leaq 0x21f7(%rip), %rdi      # 0x4540
leaq 0x21fc(%rip), %rax      # 0x454c
cmovneq %rax, %rdi
leaq 0x21eb(%rip), %rbx      # 0x4546
leaq 0x21f0(%rip), %rax      # 0x4552
cmovneq %rax, %rbx
movq %r12, %r13
movq -0x50(%rbp), %r12
movq %r12, %rsi
xorl %eax, %eax
callq 0x10b0
movq -0x40(%rbp), %r14
movq %r14, %rdi
movq -0x48(%rbp), %rsi
movq %rbx, %rdx
leaq 0x4d9c(%rip), %rbx      # 0x7128
movq %r12, %rcx
movq %r13, %r12
leaq 0x2177(%rip), %r13      # 0x4510
xorl %eax, %eax
callq 0x10d0
movl 0x8(%r12,%r15,8), %esi
movq %r14, %rdi
leaq 0x4d81(%rip), %r14      # 0x7130
callq 0x1a1b
leaq 0x219d(%rip), %rdi      # 0x4558
testl %eax, %eax
je 0x23dc
movl 0x8(%r12,%r15,8), %ecx
movl -0x34(%rbp), %esi
leaq 0x210f(%rip), %rdx      # 0x44dd
xorl %eax, %eax
callq 0x1359
movl $0xffffffff, -0x2c(%rbp) # imm = 0xFFFFFFFF
incq %r15
movzwl 0x6(%r12), %eax
cmpq %rax, %r15
jb 0x2300
movl -0x2c(%rbp), %eax
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/rsa9000[P]regfanalysistools/regftree.c
// Function: regf_parse_lst_li
static int regf_parse_lst_li(const char *pref, unsigned off, int have_vals)
{
#define LI_PR_WARN(__fmt, ...)	PR_WARN(off, "li", __fmt, ##__VA_ARGS__)
	const struct regf_cell *rc = st.data + off;
	const struct regf_lst *lst = (void *)rc->data;
	const struct regf_li_elem *elems = (void *)lst->data;
	size_t pref_len = strlen(pref);
	char __pref[pref_len + 4];
	struct cell *cell;
	int i, res, ret = 0;

	snprintf(__pref, sizeof(__pref), "%s  ", pref);

	for (i = 0; i < lst->nelem; ++i) {
		cell = cache_cell_find(elems[i].off);
		if (!cell) {
			LI_PR_WARN("could not find key cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
		cache_cell_updref(cell, CT_NK);
		if (i == lst->nelem - 1 && !have_vals) {
			printf("%s '-", pref);
			snprintf(__pref, sizeof(__pref), "%s   ", pref);
		} else {
			printf("%s +-", pref);
			snprintf(__pref, sizeof(__pref), "%s | ", pref);
		}
		res = regf_parse_nk(__pref, elems[i].off);
		if (res) {
			LI_PR_WARN("could not parse subkey in cell 0x%08X\n",
				   elems[i].off);
			ret = -1;
			continue;
		}
	}

	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %edx, -0x30(%rbp)
movq %rdi, %r15
movq 0x4cf2(%rip), %r12      # 0x7110
movl %esi, -0x34(%rbp)
movl %esi, %ebx
callq 0x1090
leaq 0x4(%rax), %rsi
movq %rsp, %rdi
addq $0x13, %rax
andq $-0x10, %rax
subq %rax, %rdi
movq %rdi, %rsp
leaq 0x214b(%rip), %rdx      # 0x458f
movl $0x0, -0x2c(%rbp)
movq %rdi, -0x40(%rbp)
movq %rsi, -0x48(%rbp)
movq %r15, -0x50(%rbp)
movq %r15, %rcx
xorl %eax, %eax
callq 0x10d0
cmpw $0x0, 0x6(%r12,%rbx)
je 0x257e
addq %rbx, %r12
leaq 0x4cb0(%rip), %rbx      # 0x7128
leaq 0x4cb1(%rip), %r14      # 0x7130
leaq 0x208a(%rip), %r13      # 0x4510
xorl %r15d, %r15d
movl $0x0, -0x2c(%rbp)
movl 0x8(%r12,%r15,4), %esi
movq %rbx, %rdi
callq 0x30ad
cmpq %r14, %rax
sete %cl
testq %rax, %rax
sete %dl
orb %cl, %dl
movq %r13, %rdi
jne 0x254f
cmpl $0x0, -0x30(%rbp)
setne %cl
incl 0x24(%rax)
orb $0x2, 0x28(%rax)
movzwl 0x6(%r12), %eax
decl %eax
cmpq %rax, %r15
setne %al
orb %cl, %al
leaq 0x2067(%rip), %rdi      # 0x4540
leaq 0x206c(%rip), %rax      # 0x454c
cmovneq %rax, %rdi
leaq 0x205b(%rip), %rbx      # 0x4546
leaq 0x2060(%rip), %rax      # 0x4552
cmovneq %rax, %rbx
movq %r12, %r13
movq -0x50(%rbp), %r12
movq %r12, %rsi
xorl %eax, %eax
callq 0x10b0
movq -0x40(%rbp), %r14
movq %r14, %rdi
movq -0x48(%rbp), %rsi
movq %rbx, %rdx
leaq 0x4c0c(%rip), %rbx      # 0x7128
movq %r12, %rcx
movq %r13, %r12
leaq 0x1fe7(%rip), %r13      # 0x4510
xorl %eax, %eax
callq 0x10d0
movl 0x8(%r12,%r15,4), %esi
movq %r14, %rdi
leaq 0x4bf1(%rip), %r14      # 0x7130
callq 0x1a1b
leaq 0x200d(%rip), %rdi      # 0x4558
testl %eax, %eax
je 0x256c
movl 0x8(%r12,%r15,4), %ecx
movl -0x34(%rbp), %esi
leaq 0x1f82(%rip), %rdx      # 0x44e0
xorl %eax, %eax
callq 0x1359
movl $0xffffffff, -0x2c(%rbp) # imm = 0xFFFFFFFF
incq %r15
movzwl 0x6(%r12), %eax
cmpq %rax, %r15
jb 0x2490
movl -0x2c(%rbp), %eax
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/rsa9000[P]regfanalysistools/regftree.c
// Function: regf_print_data
static int regf_print_data(const char *pref, const void *p, unsigned type,
			   unsigned len)
{
	switch (type) {
	case REGF_VK_T_DWORD:
		printf("%s%s\n", pref, regf_dword2str(p, len));
		break;
	case REGF_VK_T_QWORD:
		printf("%s%s\n", pref, regf_qword2str(p, len));
		break;
	case REGF_VK_T_SZ:
	case REGF_VK_T_EXPAND_SZ:
		printf("%s%ls\n", pref, regf_unicode2wchar(p, len));
		break;
	default:
		printf("%s%s\n", pref, regf_hexdump(p, len));
		break;
	}

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leal -0x1(%rsi), %eax
cmpl $0x2, %eax
jb 0x29e6
cmpl $0xb, %esi
je 0x2a06
cmpl $0x4, %esi
jne 0x2a3c
testl %edx, %edx
je 0x2a8f
cmpl $0x4, %edx
jne 0x2a98
movl (%r14), %ecx
leaq 0x4868(%rip), %rbx      # 0x7230
leaq 0x1e86(%rip), %rdx      # 0x4855
movl $0x20, %esi
movq %rbx, %rdi
movl %ecx, %r8d
xorl %eax, %eax
callq 0x10d0
jmp 0x2a9f
movq %r14, %rdi
movl %edx, %esi
callq 0x1ca0
leaq 0x1e55(%rip), %rdi      # 0x484c
leaq 0x1b4c(%rip), %rsi      # 0x454a
movq %rax, %rdx
jmp 0x2af4
testl %edx, %edx
je 0x2a8f
cmpl $0x8, %edx
jne 0x2a98
movq (%r14), %rcx
leaq 0x482f(%rip), %rbx      # 0x7250
leaq 0x1e4a(%rip), %rdx      # 0x4872
movl $0x40, %esi
movq %rbx, %rdi
movq %rcx, %r8
xorl %eax, %eax
callq 0x10d0
jmp 0x2a9f
testl %edx, %edx
movl %edx, 0x4(%rsp)
je 0x2ab2
cmpl $0x10, %edx
movl $0x10, %r13d
cmovbl %edx, %r13d
leaq 0x4838(%rip), %rbp      # 0x7290
leaq 0x1e22(%rip), %r12      # 0x4881
xorl %ebx, %ebx
movq %rbp, %r15
movq %rbp, %rsi
subq %r15, %rsi
addq $0x35, %rsi
movzbl (%r14,%rbx), %ecx
movq %r15, %rdi
movq %r12, %rdx
xorl %eax, %eax
callq 0x10d0
cltq
addq %rax, %r15
incq %rbx
cmpq %rbx, %r13
jne 0x2a64
jmp 0x2ab9
leaq 0x1dbd(%rip), %rbx      # 0x4853
jmp 0x2a9f
leaq 0x1dc2(%rip), %rbx      # 0x4861
leaq 0x1da0(%rip), %rdi      # 0x4846
leaq 0x1a9d(%rip), %rsi      # 0x454a
movq %rbx, %rdx
jmp 0x2af4
leaq 0x47d7(%rip), %r15      # 0x7290
cmpl $0x11, 0x4(%rsp)
jb 0x2adf
leaq 0x47c9(%rip), %rsi      # 0x7290
subq %r15, %rsi
addq $0x35, %rsi
leaq 0x1db2(%rip), %rdx      # 0x4887
movq %r15, %rdi
xorl %eax, %eax
callq 0x10d0
leaq 0x1d60(%rip), %rdi      # 0x4846
leaq 0x1a5d(%rip), %rsi      # 0x454a
leaq 0x479d(%rip), %rdx      # 0x7291
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10b0
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/millimat[P]Soft-Heap/./binheap.c
// Function: max_heapify
void max_heapify(int *A, size_t heapsize, size_t i) {
  while(true) {
    size_t l = left(i), r = right(i), largest = i;
    // Detect the index of the largest valid element in A between l, r, i
    if(l < heapsize && A[l] > A[i]) largest = l;
    if(r < heapsize && A[r] > A[largest]) largest = r;

    // If i is the largest already, the heap property has been restored; terminate
    if(largest == i) break; 
    
    // Else swap i down and continue
    swap(A, i, largest);
    i = largest;
  }
}

// Assembly:
leaq 0x1(,%rdx,2), %rcx
movq %rdx, %rax
cmpq %rsi, %rcx
jae 0x1271
movl (%rdi,%rcx,4), %eax
cmpl (%rdi,%rdx,4), %eax
jg 0x126e
movq %rdx, %rcx
movq %rcx, %rax
leaq 0x2(,%rdx,2), %rcx
cmpq %rsi, %rcx
jae 0x1293
leaq (%rdx,%rdx), %r8
movl 0x8(%rdi,%r8,4), %r8d
cmpl (%rdi,%rax,4), %r8d
jg 0x1290
movq %rax, %rcx
movq %rcx, %rax
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x12ac
movl (%rdi,%rdx,4), %ecx
movl (%rdi,%rax,4), %r8d
movl %r8d, (%rdi,%rdx,4)
movl %ecx, (%rdi,%rax,4)
movq %rax, %rcx
cmpq %rdx, %rax
movq %rcx, %rdx
jne 0x1253
retq
// File: /workspace/github_c_makefile_star2_O1/millimat[P]Soft-Heap/./binheap.c
// Function: min_heapify
void min_heapify(int *A, size_t heapsize, int i) {
  while(true) {
    size_t l = left(i), r = right(i), smallest = i;
    // Detect the index of the largest valid element in A between l, r, i
    if(l < heapsize && A[l] < A[i]) smallest = l;
    if(r < heapsize && A[r] < A[smallest]) smallest = r;

    // If i is the largest already, the heap property has been restored; terminate
    if(smallest == i) break; 
    
    // Else swap i down and continue
    swap(A, i, smallest);
    i = smallest;
  }
}

// Assembly:
movslq %edx, %rax
leaq 0x1(,%rax,2), %r8
movq %rax, %rcx
cmpq %rsi, %r8
jae 0x12d7
movl (%rdi,%r8,4), %ecx
cmpl (%rdi,%rax,4), %ecx
jl 0x12d4
movq %rax, %r8
movq %r8, %rcx
leaq 0x2(,%rax,2), %r8
cmpq %rsi, %r8
jae 0x12f9
leaq (%rax,%rax), %r9
movl 0x8(%rdi,%r9,4), %r9d
cmpl (%rdi,%rcx,4), %r9d
jl 0x12f6
movq %rcx, %r8
movq %r8, %rcx
cmpq %rax, %rcx
je 0x130e
movl (%rdi,%rax,4), %edx
movl (%rdi,%rcx,4), %r8d
movl %r8d, (%rdi,%rax,4)
movl %edx, (%rdi,%rcx,4)
movl %ecx, %edx
cmpq %rax, %rcx
jne 0x12b5
retq
// File: /workspace/github_c_makefile_star2_O1/millimat[P]Soft-Heap/sorts.c
// Function: main
int main(int argc, char *argv[]) {
  if(argc != 2) error(1,0, "usage: ./sorts [nelems]");
  int nelems = atoi(argv[1]);
  if(nelems <= 0) error(1,0, "nelems must be a valid integer greater than or equal to 1");

  long long seed = time(NULL);
  srand(seed);
  printf("Random seed: %lld\n", seed);

  printf("Creating a template array of %d random elements...\n", nelems);
  int A[nelems];
  for(int i = 0; i < nelems; i++) A[i] = rand();
  printf("Done. Starting tests...\n\n");

  time_mergesort(A, nelems);
  time_heapsort(A, nelems);
  time_quicksort(A, nelems);
  time_gnu_qsort(A, nelems);
  time_radix_sort(A, nelems);
  time_softheap_sort(A, nelems);   

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
cmpl $0x2, %edi
je 0x13a8
leaq 0x1ca6(%rip), %rdx      # 0x3040
movl $0x1, %edi
xorl %esi, %esi
xorl %eax, %eax
callq 0x10f0
movq 0x8(%rbx), %rdi
callq 0x1100
movl %eax, %ebx
testl %eax, %eax
jg 0x13cc
leaq 0x1c9a(%rip), %rdx      # 0x3058
movl $0x1, %edi
xorl %esi, %esi
xorl %eax, %eax
callq 0x10f0
xorl %edi, %edi
callq 0x10d0
movq %rax, %r14
movl %r14d, %edi
callq 0x10b0
leaq 0x1cad(%rip), %rdi      # 0x3092
movq %r14, %rsi
xorl %eax, %eax
callq 0x1070
leaq 0x1caf(%rip), %rdi      # 0x30a5
movl %ebx, %esi
xorl %eax, %eax
callq 0x1070
movl %ebx, %r15d
movq %rsp, %r14
leaq 0xf(,%r15,4), %rax
andq $-0x10, %rax
subq %rax, %r14
movq %r14, %rsp
testl %ebx, %ebx
jle 0x142f
xorl %r12d, %r12d
callq 0x1120
movl %eax, (%r14,%r12,4)
incq %r12
cmpq %r12, %r15
jne 0x141e
leaq 0x1d43(%rip), %rdi      # 0x3179
callq 0x1040
movslq %ebx, %rbx
leaq 0x1be(%rip), %rdx       # 0x1603
leaq 0x1c8d(%rip), %rcx      # 0x30d9
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
leaq 0x367(%rip), %rdx       # 0x17c5
leaq 0x1cde(%rip), %rcx      # 0x3143
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
leaq 0x3a8(%rip), %rdx       # 0x181f
leaq 0x1cce(%rip), %rcx      # 0x314c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
leaq 0x489(%rip), %rdx       # 0x1919
leaq 0x1cbf(%rip), %rcx      # 0x3156
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
leaq 0x486(%rip), %rdx       # 0x192f
leaq 0x1cb0(%rip), %rcx      # 0x3160
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
leaq 0x5a9(%rip), %rdx       # 0x1a6b
leaq 0x1ca2(%rip), %rcx      # 0x316b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14e3
xorl %eax, %eax
leaq -0x20(%rbp), %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq