LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/statgen[P]statgen/lib/samtools-0.1.7a-hybrid/razf.c
// Function: razf_reset_read
static void _razf_reset_read(RAZF *rz, int64_t in, int64_t out){
#ifdef _USE_KNETFILE
	knet_seek(rz->x.fpr, in, SEEK_SET);
#else
	lseek(rz->filedes, in, SEEK_SET);
#endif
	rz->in  = in;
	rz->out = out;
	rz->block_pos = in;
	rz->next_block_pos = in;
	rz->block_off = 0;
	rz->buf_flush = 0;
	rz->z_eof = rz->z_err = 0;
	inflateReset(rz->stream);
	rz->stream->avail_in = 0;
	rz->buf_off = rz->buf_len = 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x8(%rdi), %rdi
xorl %r12d, %r12d
xorl %edx, %edx
callq 0x1c579
movq %r14, 0x20(%r15)
movq %rbx, 0x28(%r15)
movq %r14, 0x48(%r15)
movq %r14, 0x58(%r15)
movq %r12, 0x50(%r15)
movl %r12d, 0x40(%r15)
movq %r12, 0x88(%r15)
movq 0x10(%r15), %rdi
callq 0x3050
movq 0x10(%r15), %rax
movl %r12d, 0x8(%rax)
movq %r12, 0x80(%r15)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O1/statgen[P]statgen/lib/samtools-0.1.7a-hybrid/razf.c
// Function: razf_seek
int64_t razf_seek(RAZF* rz, int64_t pos, int where){
	int64_t idx;
	int64_t seek_pos, new_out;
	rz->z_eof = 0;
	if (where == SEEK_CUR) pos += rz->out;
	else if (where == SEEK_END) pos += rz->src_end;
	if(rz->file_type == FILE_TYPE_PLAIN){
#ifdef _USE_KNETFILE
		knet_seek(rz->x.fpr, pos, SEEK_SET);
        seek_pos = knet_tell(rz->x.fpr);
#else
		seek_pos = lseek(rz->filedes, pos, SEEK_SET);
#endif
		rz->buf_off = rz->buf_len = 0;
		rz->out = rz->in = seek_pos;
		return seek_pos;
	} else if(rz->file_type == FILE_TYPE_GZ){
		if(pos >= rz->out) goto SKIP;
		return rz->out;
	}
	if(pos == rz->out) return pos;
	if(pos > rz->src_end) return rz->out;
	if(!rz->seekable || !rz->load_index){
		if(pos >= rz->out) goto SKIP;
	}
	idx = pos / RZ_BLOCK_SIZE - 1;
	seek_pos = (idx < 0)? rz->header_size:(rz->index->cell_offsets[idx] + rz->index->bin_offsets[idx / RZ_BIN_SIZE]);
	new_out  = (idx + 1) * RZ_BLOCK_SIZE;
	if(pos > rz->out && new_out <= rz->out) goto SKIP;
	_razf_reset_read(rz, seek_pos, new_out);
	SKIP:
	razf_skip(rz, (int)(pos - rz->out));
	return rz->out;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movl $0x0, 0x8c(%rdi)
cmpl $0x1, %edx
je 0x22d71
cmpl $0x2, %edx
jne 0x22d7a
movl $0x38, %eax
jmp 0x22d76
movl $0x28, %eax
addq (%rbx,%rax), %r14
movl 0x4(%rbx), %eax
cmpl $0x3, %eax
je 0x22db2
cmpl $0x2, %eax
jne 0x22dd0
movq 0x8(%rbx), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x1c579
movq 0x8(%rbx), %rax
movq 0x8(%rax), %rax
movq $0x0, 0x80(%rbx)
movq %rax, 0x20(%rbx)
movq %rax, 0x28(%rbx)
jmp 0x22de4
movq 0x28(%rbx), %rax
cmpq %rax, %r14
jl 0x22de4
subl 0x28(%rbx), %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0x22ba4
movq 0x28(%rbx), %rax
jmp 0x22de4
movq 0x28(%rbx), %rax
cmpq %rax, %r14
jne 0x22dde
movq %r14, %rax
jmp 0x22de4
cmpq 0x38(%rbx), %r14
jle 0x22dec
addq $0x8, %rsp
popq %rbx
popq %r14
retq
cmpl $0x0, 0x90(%rbx)
je 0x22dfe
cmpl $0x0, 0x94(%rbx)
jne 0x22e03
cmpq %rax, %r14
jge 0x22dbb
movl $0x7fff, %ecx           # imm = 0x7FFF
leaq (%r14,%rcx), %rdx
testq %r14, %r14
cmovnsq %r14, %rdx
sarq $0xf, %rdx
cmpq %rcx, %r14
jg 0x22e22
movslq 0x70(%rbx), %rsi
jmp 0x22e3d
leaq -0x1(%rdx), %rcx
movq 0x18(%rbx), %rsi
movq (%rsi), %rdi
movq 0x8(%rsi), %r8
movl -0x4(%rdi,%rdx,4), %esi
shrq $0x11, %rcx
addq (%r8,%rcx,8), %rsi
shlq $0xf, %rdx
cmpq %rax, %r14
setle %cl
cmpq %rax, %rdx
setg %al
orb %cl, %al
cmpb $0x1, %al
jne 0x22dbb
movq %rbx, %rdi
callq 0x22cea
jmp 0x22dbb
// File: /workspace/github_cpp_makefile_star2_O1/statgen[P]statgen/lib/samtools-0.1.7a-hybrid/razf.c
// Function: razf_write
static void _razf_write(RAZF* rz, const void *data, int size){
	int tout;
	rz->stream->avail_in = size;
	rz->stream->next_in  = (void*)data;
	while(1){
		tout = rz->stream->avail_out;
		deflate(rz->stream, Z_NO_FLUSH);
		rz->out += tout - rz->stream->avail_out;
		if(rz->stream->avail_out) break;
#ifdef _USE_KNETFILE
		write(rz->x.fpw, rz->outbuf, RZ_BUFFER_SIZE - rz->stream->avail_out);
#else
		write(rz->filedes, rz->outbuf, RZ_BUFFER_SIZE - rz->stream->avail_out);
#endif
		rz->stream->avail_out = RZ_BUFFER_SIZE;
		rz->stream->next_out  = rz->outbuf;
		if(rz->stream->avail_in == 0) break;
	};
	rz->in += size - rz->stream->avail_in;
	rz->block_off += size - rz->stream->avail_in;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movl %edx, %ebx
movq %rdi, %r14
movq 0x10(%rdi), %rax
movl %edx, 0x8(%rax)
movq %rsi, (%rax)
movq 0x10(%r14), %rdi
movl 0x20(%rdi), %r15d
xorl %esi, %esi
callq 0x3180
movq 0x10(%r14), %rax
movl 0x20(%rax), %eax
subl %eax, %r15d
addq %r15, 0x28(%r14)
testl %eax, %eax
jne 0x23138
movl 0x8(%r14), %edi
movq 0x68(%r14), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0x3640
movq 0x10(%r14), %rax
movl $0x1000, 0x20(%rax)     # imm = 0x1000
movq 0x68(%r14), %rcx
movq %rcx, 0x18(%rax)
cmpl $0x0, 0x8(%rax)
jne 0x230ec
movq 0x10(%r14), %rax
subl 0x8(%rax), %ebx
addq %rbx, 0x20(%r14)
addq %rbx, 0x50(%r14)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O1/statgen[P]statgen/lib/samtools-0.1.7a-hybrid/razf.c
// Function: load_zindex
static void load_zindex(RAZF *rz, int fd){
#endif
	int32_t i, v32;
	int is_be;
	if(!rz->load_index) return;
	if(rz->index == NULL) rz->index = malloc(sizeof(ZBlockIndex));
	is_be = is_big_endian();
#ifdef _USE_KNETFILE
	knet_read(fp, &rz->index->size, sizeof(int));
#else
	read(fd, &rz->index->size, sizeof(int));
#endif
	if(!is_be) rz->index->size = byte_swap_4((uint32_t)rz->index->size);
	rz->index->cap = rz->index->size;
	v32 = rz->index->size / RZ_BIN_SIZE + 1;
	rz->index->bin_offsets  = malloc(sizeof(int64_t) * v32);
#ifdef _USE_KNETFILE
	knet_read(fp, rz->index->bin_offsets, sizeof(int64_t) * v32);
#else
	read(fd, rz->index->bin_offsets, sizeof(int64_t) * v32);
#endif
	rz->index->cell_offsets = malloc(sizeof(int) * rz->index->size);
#ifdef _USE_KNETFILE
	knet_read(fp, rz->index->cell_offsets, sizeof(int) * rz->index->size);
#else
	read(fd, rz->index->cell_offsets, sizeof(int) * rz->index->size);
#endif
	if(!is_be){
		for(i=0;i<v32;i++) rz->index->bin_offsets[i] = byte_swap_8((uint64_t)rz->index->bin_offsets[i]);
		for(i=0;i<rz->index->size;i++) rz->index->cell_offsets[i] = byte_swap_4((uint32_t)rz->index->cell_offsets[i]);
	}
}

// Assembly:
cmpl $0x0, 0x94(%rdi)
je 0x2324d
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x18(%rdi)
jne 0x23180
movl $0x18, %edi
callq 0x31d0
movq %rax, 0x18(%rbx)
movq 0x18(%rbx), %rsi
addq $0x10, %rsi
movl $0x4, %edx
movq %r14, %rdi
callq 0x1c4bd
movq 0x18(%rbx), %rbp
movl 0x10(%rbp), %r12d
bswapl %r12d
movl %r12d, 0x10(%rbp)
movl %r12d, 0x14(%rbp)
sarl $0x11, %r12d
movslq %r12d, %r13
leaq 0x8(,%r13,8), %r15
movq %r15, %rdi
callq 0x31d0
movq %rax, 0x8(%rbp)
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1c4bd
movq 0x18(%rbx), %rbp
movslq 0x10(%rbp), %r15
shlq $0x2, %r15
movq %r15, %rdi
callq 0x31d0
movq %rax, (%rbp)
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1c4bd
testl %r13d, %r13d
js 0x2321c
movq 0x18(%rbx), %rax
movq 0x8(%rax), %rax
incl %r12d
xorl %ecx, %ecx
movq (%rax,%rcx,8), %rdx
bswapq %rdx
movq %rdx, (%rax,%rcx,8)
incq %rcx
cmpq %rcx, %r12
jne 0x23209
movq 0x18(%rbx), %rax
cmpl $0x0, 0x10(%rax)
jle 0x2323f
movq (%rax), %rcx
xorl %edx, %edx
movl (%rcx,%rdx,4), %esi
bswapl %esi
movl %esi, (%rcx,%rdx,4)
incq %rdx
movslq 0x10(%rax), %rsi
cmpq %rsi, %rdx
jl 0x2322b
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/actor.cpp
// Function: Actor::create(int, int, int, int, int, double)
Actor *Actor::create(int gridsize_x, int gridsize_y, int proc_amt, int proc_num, int total_rounds, double worker_share)
{
    World *world = new World(gridsize_x, gridsize_y, proc_amt, total_rounds, worker_share);
    if (world->is_worker(proc_num))
    {
        return new Worker(world, proc_num);
    }
    else
    {
        return new Writer(world, proc_num);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movsd %xmm0, (%rsp)
movl %r8d, %ebp
movl %ecx, %ebx
movl %edx, %r15d
movl %esi, %r12d
movl %edi, %r13d
movl $0x38, %edi
callq 0x2170
movq %rax, %r14
movq %rax, %rdi
movl %r13d, %esi
movl %r12d, %edx
movl %r15d, %ecx
movl %ebp, %r8d
movsd (%rsp), %xmm0
callq 0x3a30
movq %r14, %rdi
movl %ebx, %esi
callq 0x3c40
testb %al, %al
je 0x2674
movl $0x48, %edi
callq 0x2170
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x26ec
jmp 0x268e
movl $0x38, %edi
callq 0x2170
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x2ad4
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x38, %esi
jmp 0x26b2
movq %rax, %rbx
movl $0x48, %esi
movq %r15, %rdi
jmp 0x26c2
movq %rax, %rbx
movl $0x38, %esi
movq %r14, %rdi
callq 0x2180
movq %rbx, %rdi
callq 0x2230
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/worker.cpp
// Function: Worker::Worker(World*, int)
Worker::Worker(World *world, int proc_num) : Actor(world, proc_num)
{
    block = new Active_block(world, proc_num);

    /* Borders */
    border_send_buffers = new unsigned char **[world->total_rounds];
    for (int r = 0; r < world->total_rounds; r++)
    {
        border_send_buffers[r] = new unsigned char *[Border_direction_count];
        for (int i = Border_direction_first; i <= Border_direction_last; i++)
        {
            Border_direction dir = (Border_direction)i;
            int buffer_size = block->get_border_size(dir);
            border_send_buffers[r][dir] = new unsigned char[buffer_size];
        }
    }
    border_send_requests = new MPI_Request *[world->total_rounds];
    for (int r = 0; r < world->total_rounds; r++)
    {
        border_send_requests[r] = new MPI_Request[Border_direction_count];
    }

    /* Block sends */
    block_send_buffers = new unsigned char *[world->total_rounds];
    for (int r = 0; r < world->total_rounds; r++)
    {
        block_send_buffers[r] = new unsigned char[block->width_byte * block->height];
    }
    block_send_requests = new MPI_Request[world->total_rounds];
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x2598
leaq 0x4605(%rip), %rax      # 0x6d10
movq %rax, (%rbx)
movl $0x40, %edi
callq 0x2170
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x2e08
movq %r15, 0x20(%rbx)
movslq 0x28(%r14), %rax
leaq (,%rax,8), %rdi
testq %rax, %rax
movq $-0x1, %r12
cmovsq %r12, %rdi
callq 0x2030
movq %rax, 0x38(%rbx)
movl 0x28(%r14), %r13d
testl %r13d, %r13d
jle 0x27a4
xorl %ebp, %ebp
movl $0x40, %edi
callq 0x2030
movq 0x38(%rbx), %rcx
movq %rax, (%rcx,%rbp,8)
xorl %r15d, %r15d
movq 0x20(%rbx), %rdi
movl %r15d, %esi
callq 0x2fd0
movslq %eax, %rdi
callq 0x2030
movq 0x38(%rbx), %rcx
movq (%rcx,%rbp,8), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
cmpq $0x8, %r15
jne 0x276f
incq %rbp
movslq 0x28(%r14), %r13
cmpq %r13, %rbp
jl 0x275a
movslq %r13d, %rbp
leaq (,%rbp,8), %r14
testl %ebp, %ebp
cmovsq %r12, %r14
movq %r14, %rdi
callq 0x2030
movq %rax, 0x40(%rbx)
movl %r13d, %r15d
testl %ebp, %ebp
jle 0x27e5
xorl %r12d, %r12d
movl $0x40, %edi
callq 0x2030
movq 0x40(%rbx), %rcx
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r15
jne 0x27cb
movq %r14, %rdi
callq 0x2030
movq %rax, 0x28(%rbx)
testl %r13d, %r13d
jle 0x281e
xorl %r12d, %r12d
movq 0x20(%rbx), %rax
movslq 0x24(%rax), %rcx
movslq 0x20(%rax), %rdi
imulq %rcx, %rdi
callq 0x2030
movq 0x28(%rbx), %rcx
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r15
jne 0x27f9
movq %r14, %rdi
callq 0x2030
movq %rax, 0x30(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x40, %esi
movq %r15, %rdi
callq 0x2180
movq %rbx, %rdi
callq 0x2230
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/worker.cpp
// Function: Worker::store(int)
void Worker::store(int round)
{
    unsigned char *buffer_compressed = block_send_buffers[round];
    block->compress(buffer_compressed);
    int buffer_size = block->width_byte * block->height;
    int writer_num = world->get_writer_num(round);
    MPI_Isend(buffer_compressed, buffer_size, MPI_UNSIGNED_CHAR, writer_num, round, MPI_COMM_WORLD, &block_send_requests[round]);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r14
movq 0x20(%rdi), %rdi
movq 0x28(%r14), %rax
movslq %esi, %rbx
leaq (,%rbx,8), %r12
movq (%rax,%rbx,8), %r15
movq %r15, %rsi
callq 0x2f40
movq 0x8(%r14), %rdi
movq 0x20(%r14), %rax
movl 0x20(%rax), %ebp
imull 0x24(%rax), %ebp
movl %ebx, %esi
callq 0x3c72
addq 0x30(%r14), %r12
movq %r12, (%rsp)
movq 0x46f3(%rip), %rdx      # 0x6fc0
movq 0x46dc(%rip), %r9       # 0x6fb0
movq %r15, %rdi
movl %ebp, %esi
movl %eax, %ecx
movl %ebx, %r8d
callq 0x20a0
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/worker.cpp
// Function: Worker::communicate(int)
void Worker::communicate(int round)
{
    for (int i = Border_direction_first; i <= Border_direction_last; i++)
    {
        Border_direction dir = (Border_direction)i;

        unsigned char *border_send_buffer = border_send_buffers[round][dir];
        MPI_Request *send_request = &border_send_requests[round][dir];
        block->wrap_border(dir, border_send_buffer);
        border_send(dir, border_send_buffer, send_request);
    }

    for (int i = Border_direction_first; i <= Border_direction_last; i++)
    {
        Border_direction dir = (Border_direction)i;

        int border_recv_buffer_size = block->get_border_size(dir);
        unsigned char border_recv_buffer[border_recv_buffer_size];

        border_recv(dir, border_recv_buffer);
        block->unwrap_border(dir, border_recv_buffer);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movslq %esi, %rax
movq %rax, -0x30(%rbp)
xorl %r13d, %r13d
xorl %r14d, %r14d
movq 0x20(%rbx), %rdi
movq 0x38(%rbx), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r14,8), %r15
movq 0x40(%rbx), %rax
movq (%rax,%rcx,8), %r12
addq %r13, %r12
movl %r14d, %esi
movq %r15, %rdx
callq 0x327a
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
movq %r12, %rcx
callq 0x29fe
incq %r14
addq $0x8, %r13
cmpq $0x8, %r14
jne 0x290e
xorl %r14d, %r14d
movq 0x20(%rbx), %rdi
movl %r14d, %esi
callq 0x2fd0
movq %rsp, %r12
movl %eax, %eax
addq $0xf, %rax
andq $-0x10, %rax
movq %rsp, %r15
subq %rax, %r15
movq %r15, %rsp
movq %rbx, %rdi
movl %r14d, %esi
movq %r15, %rdx
callq 0x2a58
movq 0x20(%rbx), %rdi
movl %r14d, %esi
movq %r15, %rdx
callq 0x33e8
movq %r12, %rsp
incl %r14d
cmpl $0x8, %r14d
jne 0x2959
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/worker.cpp
// Function: Worker::border_recv(Border_direction, unsigned char*)
void Worker::border_recv(Border_direction source_dir, unsigned char *buffer)
{
    int element_count = block->get_border_size(source_dir);
    int source_block = block->get_neighbor_block_num(source_dir);
    int tag = opposite_direction(source_dir);
    MPI_Recv(buffer, element_count, MPI_UNSIGNED_CHAR, source_block, tag, worker_comm, MPI_STATUS_IGNORE);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %rbx
movl %esi, %r15d
movq %rdi, %r14
movq 0x20(%rdi), %rdi
callq 0x2fd0
movl %eax, %ebp
movq 0x20(%r14), %rdi
movl %r15d, %esi
callq 0x2fea
xorl %r8d, %r8d
cmpl $0x7, %r15d
ja 0x2a96
movl %r15d, %ecx
leaq 0x15f2(%rip), %rdx      # 0x4084
movl (%rdx,%rcx,4), %r8d
movq 0x18(%r14), %r9
movq $0x0, (%rsp)
movq 0x4517(%rip), %rdx      # 0x6fc0
movq %rbx, %rdi
movl %ebp, %esi
movl %eax, %ecx
callq 0x20f0
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/writer.cpp
// Function: Writer::Writer(World*, int)
Writer::Writer(World *world, int proc_num) : Actor(world, proc_num)
{
    world->set_blocks();

    /* File write buffers */
    file_write_buffers = new char *[world->total_rounds];
    /* File write buffers are created at runtime,
     * since the header and block size can not yet be determined.
     */
    file_write_requests = new MPI_Request[world->total_rounds];

    file_handles = new MPI_File[world->total_rounds];
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x2598
leaq 0x425e(%rip), %rax      # 0x6d48
movq %rax, (%rbx)
movq %r14, %rdi
callq 0x3b6e
movslq 0x28(%r14), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
movq $-0x1, %r14
cmovnsq %rcx, %r14
movq %r14, %rdi
callq 0x2030
movq %rax, 0x20(%rbx)
movq %r14, %rdi
callq 0x2030
movq %rax, 0x28(%rbx)
movq %r14, %rdi
callq 0x2030
movq %rax, 0x30(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/actors/writer.cpp
// Function: Writer::open_file(int)
MPI_File *Writer::open_file(int round)
{
    char filename[100];
    sprintf(filename, "./images/frame_%03d.pbm", round);
    MPI_File *file_handle = &file_handles[round];
    MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_WRONLY | MPI_MODE_CREATE, MPI_INFO_NULL, file_handle);
    return file_handle;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x70, %rsp
movl %esi, %ebx
movq %rdi, %r14
leaq 0x1335(%rip), %rsi      # 0x40ae
movq %rsp, %r15
movq %r15, %rdi
movl %ebx, %edx
xorl %eax, %eax
callq 0x2060
movslq %ebx, %rbx
shlq $0x3, %rbx
addq 0x30(%r14), %rbx
movq 0x423e(%rip), %rdi      # 0x6fd8
movq 0x422f(%rip), %rcx      # 0x6fd0
movq %r15, %rsi
movl $0x5, %edx
movq %rbx, %r8
callq 0x20c0
movq %rbx, %rax
addq $0x70, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::randomize()
void Active_block::randomize()
{
    srand(time(NULL) * block_num);
    for (int x = 1; x <= width; x++)
    {
        for (int y = 1; y <= height; y++)
        {

            grid[y][x] = (int)rand() % 100 < 35 ? 1 : 0;
        }
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
xorl %edi, %edi
callq 0x2140
imull 0x8(%rbx), %eax
movl %eax, %edi
callq 0x2160
cmpl $0x0, 0x1c(%rbx)
jle 0x2f3a
movl $0x1, %r14d
cmpl $0x0, 0x20(%rbx)
jle 0x2f2a
xorl %r15d, %r15d
callq 0x2070
cltq
imulq $0x51eb851f, %rax, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
cmpl $0x23, %eax
movq 0x30(%rbx), %rax
movq 0x8(%rax,%r15,8), %rax
setl (%rax,%r14)
movslq 0x20(%rbx), %rax
incq %r15
cmpq %rax, %r15
jl 0x2eed
leaq 0x1(%r14), %rax
movslq 0x1c(%rbx), %rcx
cmpq %rcx, %r14
movq %rax, %r14
jl 0x2ee4
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::compress(unsigned char*)
void Active_block::compress(unsigned char *buffer)
{
    memset(buffer, 0, width_byte * height);
    for (int grid_y = 1; grid_y <= height; grid_y++)
    {
        for (int grid_x = 1; grid_x <= width; grid_x++)
        {
            /* Information about 8 cells are packed into one byte.
             * If the number of pixels in a row is not divisible by 8, 
             * the remaining bits are left empty.
             */
            if (grid[grid_y][grid_x] == 1)
            {
                int buffer_x = (grid_x - 1) / 8;
                int buffer_y = grid_y - 1;
                int k = (grid_x - 1) % 8;
                int buffer_pos = buffer_y * width_byte + buffer_x;
                buffer[buffer_pos] |= 1 << (7 - k);
            }
        }
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movslq 0x24(%rdi), %rax
movslq 0x20(%rdi), %rdx
imulq %rax, %rdx
movq %rsi, %rdi
xorl %esi, %esi
callq 0x20b0
cmpl $0x0, 0x20(%r14)
jle 0x2fc7
movl $0x1, %eax
cmpl $0x0, 0x1c(%r14)
jle 0x2fb7
leal -0x1(%rax), %edx
xorl %esi, %esi
movq 0x30(%r14), %rcx
movq (%rcx,%rax,8), %rcx
cmpb $0x1, 0x1(%rcx,%rsi)
jne 0x2fab
movl %esi, %edi
shrl $0x3, %edi
movl %esi, %ecx
notb %cl
movl 0x24(%r14), %r8d
imull %edx, %r8d
addl %edi, %r8d
andb $0x7, %cl
movb $0x1, %dil
shlb %cl, %dil
movslq %r8d, %rcx
orb %dil, (%rbx,%rcx)
movslq 0x1c(%r14), %rcx
incq %rsi
cmpq %rcx, %rsi
jl 0x2f78
leaq 0x1(%rax), %rcx
movslq 0x20(%r14), %rdx
cmpq %rdx, %rax
movq %rcx, %rax
jl 0x2f6c
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::get_neighbor_block_num(Border_direction)
int Active_block::get_neighbor_block_num(Border_direction dir)
{
    switch (dir)
    {
    case NORTH:
        return north();
    case SOUTH:
        return south();
    case WEST:
        return west();
    case EAST:
        return east();
    case NORTH_WEST:
        return north_west();
    case NORTH_EAST:
        return north_east();
    case SOUTH_WEST:
        return south_west();
    case SOUTH_EAST:
        return south_east();
    default:
        return -1;
    }
}

// Assembly:
cmpl $0x7, %esi
ja 0x3111
movl %esi, %eax
leaq 0x10d4(%rip), %rcx      # 0x40d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0xc(%rdi), %ecx
cmpb $0x1, 0x28(%rdi)
jne 0x313b
movq (%rdi), %rdx
movl 0xc(%rdx), %eax
jmp 0x30e0
movq (%rdi), %rax
leaq 0x10(%rax), %rcx
leaq 0xc(%rdi), %rdx
cmpb $0x0, 0x29(%rdi)
cmovneq %rcx, %rdx
movl (%rdx), %ecx
leaq 0xc(%rax), %rdx
cmpb $0x0, 0x28(%rdi)
leaq 0x10(%rdi), %rsi
cmovneq %rdx, %rsi
movl (%rsi), %edx
decl %edx
imull 0x10(%rax), %edx
leal (%rcx,%rdx), %eax
decl %eax
retq
cmpb $0x1, 0x2b(%rdi)
jne 0x3117
movq (%rdi), %rax
movl 0x10(%rax), %eax
imull 0x10(%rdi), %eax
retq
cmpb $0x1, 0x29(%rdi)
jne 0x3129
movq (%rdi), %rax
movl 0x10(%rax), %eax
movl 0x10(%rdi), %ecx
imull %eax, %ecx
jmp 0x3136
movl 0xc(%rdi), %ecx
incl %ecx
xorl %edx, %edx
cmpb $0x0, 0x2b(%rdi)
cmovnel %edx, %ecx
movl 0x10(%rdi), %eax
incl %eax
cmpb $0x0, 0x2a(%rdi)
cmovnel %edx, %eax
jmp 0x3140
movl 0xc(%rdi), %eax
cmpb $0x0, 0x2a(%rdi)
jne 0x3149
movl 0x10(%rdi), %ecx
incl %ecx
movq (%rdi), %rdx
imull 0x10(%rdx), %ecx
jmp 0x3147
movl 0xc(%rdi), %eax
incl %eax
xorl %ecx, %ecx
cmpb $0x0, 0x2b(%rdi)
cmovel %eax, %ecx
movq (%rdi), %rdx
leaq 0xc(%rdx), %rax
cmpb $0x0, 0x28(%rdi)
leaq 0x10(%rdi), %rsi
cmovneq %rax, %rsi
movl (%rsi), %eax
decl %eax
jmp 0x3143
movq (%rdi), %rax
leaq 0x10(%rax), %rcx
leaq 0xc(%rdi), %rdx
cmpb $0x0, 0x29(%rdi)
cmovneq %rcx, %rdx
movl 0x10(%rdi), %ecx
incl %ecx
xorl %esi, %esi
cmpb $0x0, 0x2a(%rdi)
cmovel %ecx, %esi
movl (%rdx), %ecx
imull 0x10(%rax), %esi
leal (%rcx,%rsi), %eax
decl %eax
retq
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
retq
movl 0xc(%rdi), %eax
movq (%rdi), %rcx
movl 0x10(%rcx), %ecx
imull 0x10(%rdi), %ecx
addl %ecx, %eax
incl %eax
retq
movl 0xc(%rdi), %eax
movq (%rdi), %rcx
movl 0x10(%rcx), %ecx
imull 0x10(%rdi), %ecx
addl %ecx, %eax
decl %eax
retq
movl 0x10(%rdi), %eax
decl %eax
movq (%rdi), %rdx
imull 0x10(%rdx), %eax
addl %ecx, %eax
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::west()
int Active_block::west()
{
    if (first_col)
    {
        // left from first col is last col
        return position_to_block_num(world->cols - 1, y);
    }
    else
    {
        return position_to_block_num(x - 1, y);
    }
}

// Assembly:
cmpb $0x1, 0x29(%rdi)
jne 0x3192
movq (%rdi), %rax
movl 0x10(%rax), %eax
movl %eax, %ecx
jmp 0x319b
movl 0xc(%rdi), %ecx
movl 0x10(%rdi), %eax
movq (%rdi), %rdi
imull 0x10(%rdi), %eax
addl %ecx, %eax
decl %eax
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::east()
int Active_block::east()
{
    if (last_col)
    {
        // right from last col is first col
        return position_to_block_num(0, y);
    }
    else
    {
        return position_to_block_num(x + 1, y);
    }
}

// Assembly:
cmpb $0x1, 0x2b(%rdi)
jne 0x31b5
movq (%rdi), %rax
movl 0x10(%rax), %eax
imull 0x10(%rdi), %eax
retq
movl 0xc(%rdi), %eax
movq (%rdi), %rcx
movl 0x10(%rcx), %ecx
imull 0x10(%rdi), %ecx
addl %ecx, %eax
incl %eax
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::wrap_border(Border_direction, unsigned char*)
void Active_block::wrap_border(Border_direction dir, unsigned char *buffer)
{
    switch (dir)
    {
    case NORTH:
        wrap_row(1, buffer);
        break;
    case SOUTH:
        wrap_row(height, buffer);
        break;
    case WEST:
        wrap_col(1, buffer);
        break;
    case EAST:
        wrap_col(width, buffer);
        break;
    case NORTH_WEST:
        wrap_corner(1, 1, buffer);
        break;
    case NORTH_EAST:
        wrap_corner(width, 1, buffer);
        break;
    case SOUTH_WEST:
        wrap_corner(1, height, buffer);
        break;
    case SOUTH_EAST:
        wrap_corner(width, height, buffer);
        break;
    }
}

// Assembly:
cmpl $0x7, %esi
ja 0x335d
movl %esi, %eax
leaq 0xe64(%rip), %rcx       # 0x40f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, 0x1c(%rdi)
jle 0x335d
xorl %eax, %eax
movq 0x30(%rdi), %rcx
movq 0x8(%rcx), %rcx
movb 0x1(%rcx,%rax), %cl
movb %cl, (%rdx,%rax)
movslq 0x1c(%rdi), %rcx
incq %rax
cmpq %rcx, %rax
jl 0x32a1
jmp 0x335d
movq 0x30(%rdi), %rax
movq 0x8(%rax), %rax
jmp 0x3378
cmpl $0x0, 0x20(%rdi)
jle 0x335d
movslq 0x1c(%rdi), %rax
xorl %ecx, %ecx
movq 0x30(%rdi), %rsi
movq 0x8(%rsi,%rcx,8), %rsi
movb (%rsi,%rax), %sil
movb %sil, (%rdx,%rcx)
movslq 0x20(%rdi), %rsi
incq %rcx
cmpq %rsi, %rcx
jl 0x32de
jmp 0x335d
cmpl $0x0, 0x20(%rdi)
jle 0x335d
xorl %eax, %eax
movq 0x30(%rdi), %rcx
movq 0x8(%rcx,%rax,8), %rcx
movb 0x1(%rcx), %cl
movb %cl, (%rdx,%rax)
movslq 0x20(%rdi), %rcx
incq %rax
cmpq %rcx, %rax
jl 0x3305
jmp 0x335d
movslq 0x1c(%rdi), %rax
movslq 0x20(%rdi), %rcx
movq 0x30(%rdi), %rsi
addq (%rsi,%rcx,8), %rax
jmp 0x337b
cmpl $0x0, 0x1c(%rdi)
jle 0x335d
movslq 0x20(%rdi), %rax
xorl %ecx, %ecx
movq 0x30(%rdi), %rsi
movq (%rsi,%rax,8), %rsi
movb 0x1(%rsi,%rcx), %sil
movb %sil, (%rdx,%rcx)
movslq 0x1c(%rdi), %rsi
incq %rcx
cmpq %rsi, %rcx
jl 0x3340
retq
movslq 0x1c(%rdi), %rax
movq 0x30(%rdi), %rcx
addq 0x8(%rcx), %rax
jmp 0x337b
movslq 0x20(%rdi), %rax
movq 0x30(%rdi), %rcx
movq (%rcx,%rax,8), %rax
incq %rax
movb (%rax), %al
movb %al, (%rdx)
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::unwrap_border(Border_direction, unsigned char*)
void Active_block::unwrap_border(Border_direction dir, unsigned char *buffer)
{
    switch (dir)
    {
    case NORTH:
        unwrap_row(0, buffer);
        break;
    case SOUTH:
        unwrap_row(height + 1, buffer);
        break;
    case WEST:
        unwrap_col(0, buffer);
        break;
    case EAST:
        unwrap_col(width + 1, buffer);
        break;
    case NORTH_WEST:
        unwrap_corner(0, 0, buffer);
        break;
    case NORTH_EAST:
        unwrap_corner(width + 1, 0, buffer);
        break;
    case SOUTH_WEST:
        unwrap_corner(0, height + 1, buffer);
        break;
    case SOUTH_EAST:
        unwrap_corner(width + 1, height + 1, buffer);
        break;
    }
}

// Assembly:
cmpl $0x7, %esi
ja 0x3421
movl %esi, %eax
leaq 0xd1a(%rip), %rcx       # 0x4110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, 0x1c(%rdi)
jle 0x3421
xorl %eax, %eax
movb (%rdx,%rax), %cl
movq 0x30(%rdi), %rsi
movq (%rsi), %rsi
movb %cl, 0x1(%rsi,%rax)
movslq 0x1c(%rdi), %rcx
incq %rax
cmpq %rcx, %rax
jl 0x3407
retq
movb (%rdx), %al
movq 0x30(%rdi), %rcx
movq (%rcx), %rcx
movb %al, (%rcx)
retq
cmpl $0x0, 0x20(%rdi)
jle 0x3421
movslq 0x1c(%rdi), %rax
xorl %ecx, %ecx
movb (%rdx,%rcx), %sil
movq 0x30(%rdi), %r8
movq 0x8(%r8,%rcx,8), %r8
movb %sil, 0x1(%r8,%rax)
movslq 0x20(%rdi), %rsi
incq %rcx
cmpq %rsi, %rcx
jl 0x343a
jmp 0x3421
cmpl $0x0, 0x20(%rdi)
jle 0x3421
xorl %eax, %eax
movb (%rdx,%rax), %cl
movq 0x30(%rdi), %rsi
movq 0x8(%rsi,%rax,8), %rsi
movb %cl, (%rsi)
movslq 0x20(%rdi), %rcx
incq %rax
cmpq %rcx, %rax
jl 0x3462
jmp 0x3421
movslq 0x1c(%rdi), %rax
movslq 0x20(%rdi), %rcx
movb (%rdx), %dl
movq 0x30(%rdi), %rsi
movq 0x8(%rsi,%rcx,8), %rcx
movb %dl, 0x1(%rcx,%rax)
retq
cmpl $0x0, 0x1c(%rdi)
jle 0x3421
movslq 0x20(%rdi), %rax
xorl %ecx, %ecx
movb (%rdx,%rcx), %sil
movq 0x30(%rdi), %r8
movq 0x8(%r8,%rax,8), %r8
movb %sil, 0x1(%r8,%rcx)
movslq 0x1c(%rdi), %rsi
incq %rcx
cmpq %rsi, %rcx
jl 0x34a2
jmp 0x3421
movslq 0x1c(%rdi), %rax
movb (%rdx), %cl
movq 0x30(%rdi), %rdx
movq (%rdx), %rdx
movb %cl, 0x1(%rdx,%rax)
retq
movslq 0x20(%rdi), %rax
movb (%rdx), %cl
movq 0x30(%rdi), %rdx
movq 0x8(%rdx,%rax,8), %rax
movb %cl, (%rax)
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::step()
void Active_block::step()
{
    for (int y = 1; y <= height; y++)
    {
        for (int x = 1; x <= width; x++)
        {
            int neighbours;
            neighbours = get_neighbors(x, y);
            next_grid[y][x] = is_alive(neighbours, grid[y][x]);
        }
    }

    //swap pointers
    unsigned char **swap = grid;
    grid = next_grid;
    next_grid = swap;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0x20(%rdi)
jle 0x35ca
movl $0x1, %r14d
cmpl $0x0, 0x1c(%rbx)
jle 0x35ba
movl $0x1, %r15d
movq %rbx, %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x35e0
cmpl $0x3, %eax
je 0x3598
cmpl $0x2, %eax
jne 0x359c
movq 0x30(%rbx), %rax
movq (%rax,%r14,8), %rax
movb (%rax,%r15), %al
jmp 0x359e
movb $0x1, %al
jmp 0x359e
xorl %eax, %eax
movq 0x38(%rbx), %rcx
movq (%rcx,%r14,8), %rcx
movb %al, (%rcx,%r15)
leaq 0x1(%r15), %rax
movslq 0x1c(%rbx), %rcx
cmpq %rcx, %r15
movq %rax, %r15
jl 0x3572
leaq 0x1(%r14), %rax
movslq 0x20(%rbx), %rcx
cmpq %rcx, %r14
movq %rax, %r14
jl 0x3566
movq 0x30(%rbx), %rax
movq 0x38(%rbx), %rcx
movq %rcx, 0x30(%rbx)
movq %rax, 0x38(%rbx)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::get_neighbors(int, int)
int Active_block::get_neighbors(int pixel_x, int pixel_y)
{
    int sum = 0;
    // Pixels in row above and below
    for (int i = 0; i < 3; ++i)
    {
        sum += grid[pixel_y - 1][pixel_x - 1 + i];
        sum += grid[pixel_y + 1][pixel_x - 1 + i];
    }
    // Pixels left and right
    sum += grid[pixel_y][pixel_x - 1];
    sum += grid[pixel_y][pixel_x + 1];
    return sum;
}

// Assembly:
movq 0x30(%rdi), %r8
movslq %edx, %rcx
movslq %esi, %rax
movq -0x8(%r8,%rcx,8), %rsi
addq %rax, %rsi
movq 0x8(%r8,%rcx,8), %r8
addq %rax, %r8
xorl %edx, %edx
movq $-0x1, %r9
movzbl (%rsi,%r9), %r10d
addl %edx, %r10d
movzbl (%r8,%r9), %edx
addl %r10d, %edx
incq %r9
cmpq $0x2, %r9
jne 0x3603
movq 0x30(%rdi), %rsi
movq (%rsi,%rcx,8), %rcx
movzbl -0x1(%rcx,%rax), %esi
addl %esi, %edx
movzbl 0x1(%rcx,%rax), %eax
addl %edx, %eax
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::print()
void Active_block::print()
{
    printf("Active_block:\n{\n");
    printf("\tPosition: \t(%d, %d)\n", x, y);
    printf("\tPixel size: \t%d x %d\n", width, height);
    printf("\tWidth Byte: \t%d\n", width_byte);
    printf("\tPixel start: \t(%d x %d)\n", starting_x, starting_y);
    printf("\tSpecial Info:\n");
    printf("\t{\n");
    printf("\t\tFirst Row: \t%c\n", first_row ? '+' : '0');
    printf("\t\tLast Row: \t%c\n", last_row ? '+' : '0');
    printf("\t\tFirst Col: \t%c\n", first_col ? '+' : '0');
    printf("\t\tLast Col: \t%c\n", last_col ? '+' : '0');
    printf("\t}\n");
    printf("}\n");
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0xb0c(%rip), %rdi       # 0x41ed
callq 0x2210
movl 0xc(%rbx), %esi
movl 0x10(%rbx), %edx
leaq 0xa3d(%rip), %rdi       # 0x4130
xorl %eax, %eax
callq 0x2040
movl 0x1c(%rbx), %esi
movl 0x20(%rbx), %edx
leaq 0xa3f(%rip), %rdi       # 0x4146
xorl %eax, %eax
callq 0x2040
movl 0x24(%rbx), %esi
leaq 0xa45(%rip), %rdi       # 0x415d
xorl %eax, %eax
callq 0x2040
movl 0x14(%rbx), %esi
movl 0x18(%rbx), %edx
leaq 0xa43(%rip), %rdi       # 0x416f
xorl %eax, %eax
callq 0x2040
leaq 0xac3(%rip), %rdi       # 0x41fd
callq 0x2210
leaq 0xac6(%rip), %rdi       # 0x420c
callq 0x2210
movzbl 0x28(%rbx), %eax
xorl $0x1, %eax
leal (%rax,%rax,4), %esi
addl $0x2b, %esi
leaq 0xa2a(%rip), %rdi       # 0x4189
xorl %eax, %eax
callq 0x2040
movzbl 0x2a(%rbx), %eax
xorl $0x1, %eax
leal (%rax,%rax,4), %esi
addl $0x2b, %esi
leaq 0xa21(%rip), %rdi       # 0x419b
xorl %eax, %eax
callq 0x2040
movzbl 0x29(%rbx), %eax
xorl $0x1, %eax
leal (%rax,%rax,4), %esi
addl $0x2b, %esi
leaq 0xa17(%rip), %rdi       # 0x41ac
xorl %eax, %eax
callq 0x2040
movzbl 0x2b(%rbx), %eax
xorl $0x1, %eax
leal (%rax,%rax,4), %esi
addl $0x2b, %esi
leaq 0xa0e(%rip), %rdi       # 0x41be
xorl %eax, %eax
callq 0x2040
leaq 0xa51(%rip), %rdi       # 0x420f
callq 0x2210
leaq 0xa46(%rip), %rdi       # 0x4210
popq %rbx
jmp 0x2210
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: Active_block::print_grid()
void Active_block::print_grid()
{
    // Print the current blocks adress
    printf("Active_block [%d, %d]:\n", x, y);

    // Print all the assigned pixels without the borders
    for (int y = 0; y < height + 2; y++)
    {
        if (y == width + 1)
        {
            printf("\n");
        }
        for (int x = 0; x < width + 2; x++)
        {
            if (x == width + 1)
            {
                printf("\t");
            }
            if (grid[y][x])
            {
                printf("X");
            }
            else
            {
                printf("-");
            }
            if (x == 0)
            {
                printf("\t");
            }
        }
        printf("\n");
        if (y == 0)
        {
            printf("\n");
        }
    }
    printf("\n\n");
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movl 0xc(%rdi), %esi
movl 0x10(%rdi), %edx
leaq 0x9ea(%rip), %rdi       # 0x41cf
xorl %eax, %eax
callq 0x2040
cmpl $-0x1, 0x20(%rbx)
jl 0x3893
xorl %r14d, %r14d
movl 0x1c(%rbx), %eax
incl %eax
cmpq %rax, %r14
jne 0x380d
movl $0xa, %edi
callq 0x21d0
movl 0x1c(%rbx), %eax
cmpl $-0x1, %eax
jl 0x3866
xorl %r15d, %r15d
incl %eax
cmpq %rax, %r15
jne 0x3829
movl $0x9, %edi
callq 0x21d0
movq 0x30(%rbx), %rax
movq (%rax,%r14,8), %rax
cmpb $0x0, (%rax,%r15)
movl $0x2d, %edi
je 0x3842
movl $0x58, %edi
callq 0x21d0
testq %r15, %r15
jne 0x3856
movl $0x9, %edi
callq 0x21d0
leaq 0x1(%r15), %rcx
movslq 0x1c(%rbx), %rax
cmpq %rax, %r15
movq %rcx, %r15
jle 0x3818
movl $0xa, %edi
callq 0x21d0
testq %r14, %r14
jne 0x387f
movl $0xa, %edi
callq 0x21d0
leaq 0x1(%r14), %rax
movslq 0x20(%rbx), %rcx
cmpq %rcx, %r14
movq %rax, %r14
jle 0x37f9
leaq 0x8aa(%rip), %rdi       # 0x4144
popq %rbx
popq %r14
popq %r15
jmp 0x2210
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/active_block.cpp
// Function: print_unsigned_char_array(unsigned char*, int)
void print_unsigned_char_array(unsigned char *arr, int size)
{
    printf("[");
    for (int i = 0; i < size; i++)
    {
        if (i > 0)
        {
            printf(", ");
        }
        printf("%d", arr[i]);
    }
    printf("]\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movl $0x5b, %edi
callq 0x21d0
testl %ebp, %ebp
jle 0x38fc
movl %ebp, %r12d
leaq 0x91e(%rip), %r14       # 0x41ea
leaq 0x914(%rip), %r15       # 0x41e7
xorl %r13d, %r13d
testq %r13, %r13
je 0x38e5
movq %r15, %rdi
xorl %eax, %eax
callq 0x2040
movzbl (%rbx,%r13), %esi
movq %r14, %rdi
xorl %eax, %eax
callq 0x2040
incq %r13
cmpq %r13, %r12
jne 0x38d6
leaq 0x90f(%rip), %rdi       # 0x4212
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2210
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/world.cpp
// Function: World::set_blocks()
void World::set_blocks()
{
    blocks = new Block **[rows];
    for (int row = 0; row < rows; row++)
    {
        blocks[row] = new Block *[cols];
        for (int col = 0; col < cols; col++)
        {
            int block_num = row * cols + col;
            blocks[row][col] = new Block(this, block_num);
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movslq 0xc(%rdi), %rax
leaq (,%rax,8), %rdi
testq %rax, %rax
movq $-0x1, %r12
cmovsq %r12, %rdi
callq 0x2030
movq %rax, 0x30(%rbx)
cmpl $0x0, 0xc(%rbx)
jle 0x3c19
xorl %r13d, %r13d
movslq 0x10(%rbx), %rax
leaq (,%rax,8), %rdi
testq %rax, %rax
cmovsq %r12, %rdi
callq 0x2030
movq 0x30(%rbx), %rcx
movq %rax, (%rcx,%r13,8)
movl 0x10(%rbx), %r14d
testl %r14d, %r14d
jle 0x3c0d
xorl %ebp, %ebp
imull %r13d, %r14d
addl %ebp, %r14d
movl $0x30, %edi
callq 0x2170
movq %rax, %r15
movq %rax, %rdi
movq %rbx, %rsi
movl %r14d, %edx
callq 0x3918
movq 0x30(%rbx), %rax
movq (%rax,%r13,8), %rax
movq %r15, (%rax,%rbp,8)
incq %rbp
movslq 0x10(%rbx), %r14
cmpq %r14, %rbp
jl 0x3bd3
incq %r13
movslq 0xc(%rbx), %rax
cmpq %rax, %r13
jl 0x3ba8
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x30, %esi
movq %r15, %rdi
callq 0x2180
movq %rbx, %rdi
callq 0x2230
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/world.cpp
// Function: World::is_worker(int)
bool World::is_worker(int proc_num)
{
    // Processor proc_num is a worker,
    // as long as it does not appear in the writer array
    for (int w = 0; w < writer_amt; w++)
    {
        if (writer_nums[w] == proc_num)
        {
            return false;
        }
    }
    return true;
}

// Assembly:
movslq 0x1c(%rdi), %rcx
testq %rcx, %rcx
setle %al
jle 0x3c70
movq 0x20(%rdi), %rdx
cmpl %esi, (%rdx)
je 0x3c70
movl $0x1, %edi
movq %rdi, %rax
cmpq %rdi, %rcx
je 0x3c6a
leaq 0x1(%rax), %rdi
cmpl %esi, (%rdx,%rax,4)
jne 0x3c59
cmpq %rcx, %rax
setae %al
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/Gammelkebab[P]GameOfLife/src/world/world.cpp
// Function: World::print()
void World::print()
{
    printf("World:\n{\n");
    printf("\tPixels: \t%d x %d\n", width, height);
    printf("\tBlocks: \t%d x %d\n", cols, rows);
    printf("\tWorkers: \t%d\n", worker_amt);
    printf("\tTotal rounds: \t%d\n", total_rounds);
    printf("\n}\n");
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x5ce(%rip), %rdi       # 0x425d
callq 0x2210
movl (%rbx), %esi
movl 0x4(%rbx), %edx
leaq 0x574(%rip), %rdi       # 0x4214
xorl %eax, %eax
callq 0x2040
movl 0xc(%rbx), %edx
movl 0x10(%rbx), %esi
leaq 0x573(%rip), %rdi       # 0x4227
xorl %eax, %eax
callq 0x2040
movl 0x18(%rbx), %esi
leaq 0x575(%rip), %rdi       # 0x423a
xorl %eax, %eax
callq 0x2040
movl 0x28(%rbx), %esi
leaq 0x573(%rip), %rdi       # 0x4249
xorl %eax, %eax
callq 0x2040
leaq 0x582(%rip), %rdi       # 0x4266
popq %rbx
jmp 0x2210
// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH16_TemplatesAndGenericProgramming/exercises/ex16_19_20.cc
// Function: main
int main(int argc, char const *argv[])
{
	std::vector<std::string> v = {"hello", "c++11", "template"};
	std::list<int> l = {1, 2, 3, 4};

	print1(v, std::cout);
	print2(l, std::cout);

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x98, %rsp
leaq -0x88(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xd02(%rip), %rsi       # 0x2020
leaq 0xd00(%rip), %rdx       # 0x2025
leaq -0x98(%rbp), %r15
movq %r15, %rdi
callq 0x1714
leaq -0x78(%rbp), %r14
leaq -0x68(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xcdf(%rip), %rsi       # 0x2026
leaq 0xcdd(%rip), %rdx       # 0x202b
movq %r14, %rdi
callq 0x1714
leaq -0x58(%rbp), %r14
leaq -0x48(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xcc3(%rip), %rsi       # 0x202c
leaq 0xcc4(%rip), %rdx       # 0x2034
movq %r14, %rdi
callq 0x1714
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0xa8(%rbp), %rcx
movl $0x3, %edx
callq 0x14e2
movq $-0x60, %r14
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x13af
movq (%rbx), %rsi
incq %rsi
callq 0x1100
addq $-0x20, %rbx
addq $0x20, %r14
jne 0x139b
movaps 0xc50(%rip), %xmm0      # 0x2010
leaq -0xa8(%rbp), %rsi
movups %xmm0, (%rsi)
leaq -0x98(%rbp), %r14
leaq -0x19(%rbp), %rcx
movl $0x4, %edx
movq %r14, %rdi
callq 0x152a
movq 0x2bef(%rip), %rsi      # 0x3fd8
leaq -0x38(%rbp), %rdi
callq 0x1582
movq 0x2bdf(%rip), %rsi      # 0x3fd8
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
callq 0x1623
movq -0x98(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1429
movq (%rdi), %r14
movl $0x18, %esi
callq 0x1100
movq %r14, %rdi
cmpq %rbx, %r14
jne 0x1414
leaq -0x38(%rbp), %rdi
callq 0x169c
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x14d1
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x1190
movb $0x1, %al
jmp 0x1472
jmp 0x1463
movq %rax, %rbx
xorl %eax, %eax
jmp 0x1472
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x14da
addq $-0x10, %r14
leaq -0x98(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x149b
movq (%r14), %rsi
incq %rsi
callq 0x1100
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x1487
jmp 0x14da
movq %rax, %rbx
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0x14d1
movq (%rdi), %r15
movl $0x18, %esi
callq 0x1100
movq %r15, %rdi
cmpq %r14, %r15
jne 0x14bc
leaq -0x38(%rbp), %rdi
callq 0x169c
movq %rbx, %rdi
callq 0x1160
// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH16_TemplatesAndGenericProgramming/exercises/ex16_19_20.cc
// Function: std::ostream& print1<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::ostream&)
std::ostream& print1(const Container& container, std::ostream& os)
{
	for (typename Container::size_type i = 0; i != container.size(); ++i) {
		os << container[i] << " ";
	}
	os << std::endl;

	return os;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq (%rdi), %rax
cmpq %rax, 0x8(%rdi)
je 0x15ea
movq %rdi, %r14
movl $0x8, %r12d
xorl %r13d, %r13d
leaq 0xae1(%rip), %r15       # 0x2090
movq -0x8(%rax,%r12), %rsi
movq (%rax,%r12), %rdx
movq %rbx, %rdi
callq 0x1110
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x1110
incq %r13
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %r12
cmpq %rcx, %r13
jne 0x15af
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10e0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1090
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH16_TemplatesAndGenericProgramming/exercises/ex16_19_20.cc
// Function: std::ostream& print2<std::__cxx11::list<int, std::allocator<int>>>(std::__cxx11::list<int, std::allocator<int>> const&, std::ostream&)
std::ostream& print2(const Container& container, std::ostream& os)
{
	for (auto iter = container.cbegin(); iter != container.cend(); ++iter) {
		os << *iter << " ";
	}
	os << std::endl;

	return os;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq (%rdi), %r12
cmpq %rdi, %r12
je 0x1669
movq %rdi, %r14
leaq 0xa4d(%rip), %r15       # 0x2090
movl 0x10(%r12), %esi
movq %rbx, %rdi
callq 0x1150
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x1110
movq (%r12), %r12
cmpq %r14, %r12
jne 0x1643
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10e0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1090
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/joakimkistowski[P]amd-disable-c6/amd-disable-c6.cpp
// Function: retry_execution_main()
int retry_execution_main() {
    if (direct_execution_main(DISABLE)) {
        for (unsigned int i = 0; i < MAX_RETRIES; i++) {
            std::cout << "Disabling C6 state failed; retrying in " << RETRY_SLEEP_DURATION_S 
                << " seconds" << std::endl;
            sleep(RETRY_SLEEP_DURATION_S);
            if (!direct_execution_main(DISABLE)) {
                return 0;
            }
        }
        std::cerr << "Failed disabling C6 state on retry #" << MAX_RETRIES << "; accepting failure" << std::endl;
        return 1;
    }
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
leaq 0x4(%rsp), %rdi
movl $0x0, (%rdi)
callq 0x3abb
testl %eax, %eax
je 0x3e5f
xorl %ebp, %ebp
movq 0x3284(%rip), %rbx      # 0x6fd0
leaq 0x1654(%rip), %r15      # 0x53a7
movq %rsp, %r12
xorl %r14d, %r14d
movl $0x27, %edx
movq %rbx, %rdi
leaq 0x1617(%rip), %rsi      # 0x537f
callq 0x21e0
movl $0x4, %esi
movq %rbx, %rdi
callq 0x2100
movq %rax, %r13
movl $0x8, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x21e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
movl $0x4, %edi
callq 0x2130
movl $0x0, (%rsp)
movq %r12, %rdi
callq 0x3abb
testl %eax, %eax
je 0x3dec
cmpl $0x3, %r14d
leal 0x1(%r14), %eax
setae %bpl
movl %eax, %r14d
cmpl $0x4, %eax
jne 0x3d59
jmp 0x3df2
testb $0x1, %bpl
je 0x3e5f
movq 0x31f7(%rip), %rbx      # 0x6ff0
leaq 0x15b0(%rip), %rsi      # 0x53b0
movl $0x24, %edx
movq %rbx, %rdi
callq 0x21e0
movl $0x4, %esi
movq %rbx, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x15b1(%rip), %rsi      # 0x53d5
movl $0x13, %edx
movq %rax, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
movl $0x1, %eax
jmp 0x3e61
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/joakimkistowski[P]amd-disable-c6/amd-disable-c6.cpp
// Function: main
int main(const int argc, const char *argv[]) {
    if (!has_amd_cpu()) {
        std::cerr << "Failed disabling of C6 state; no AMD CPU found" << std::endl;
        return 1;
    }
    op_mode mode = parse_op_mode(argc, argv);
    if (mode == RETRYDISABLE) {
        return retry_execution_main();
    } else {
        return direct_execution_main(mode);
    }
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rsi, %rbx
movl %edi, %ebp
callq 0x38de
testb %al, %al
je 0x3e9b
movl %ebp, %edi
movq %rbx, %rsi
callq 0x3693
movl %eax, 0x4(%rsp)
cmpl $0x1, %eax
jne 0x3ee4
callq 0x3d20
jmp 0x3eee
movq 0x314e(%rip), %rbx      # 0x6ff0
leaq 0x1540(%rip), %rsi      # 0x53e9
movl $0x2e, %edx
movq %rbx, %rdi
callq 0x21e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
movl $0x1, %eax
jmp 0x3eee
leaq 0x4(%rsp), %rdi
callq 0x3abb
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
nop