LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/JayWalker512[P]JayParser/VM.cpp
// Function: VM::execJMP()
void VM::execJMP()
{
	readNextInstruction();	// Using instruction as buffer for the ID
	
	m_program->seekg(0, std::ios_base::beg);
	
	do {
		if ((unsigned char)m_program->get() == JMPMK)
			if ((unsigned char)m_program->get() == m_instruction)
				return;	// Marker is found
	} while (!m_program->eof());
	
	m_log->add(new Error(FATAL + FILEERR + 3, "Trying to read pass the end of file."));
	m_log->add(new Error(FATAL + PARSERR + 2, "Jump marker not found."));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %r14
callq 0x32f0
movq 0x40040(%r14), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2160
movq 0x40040(%r14), %rdi
callq 0x2150
cmpb $0x8, %al
jne 0x35e1
movq 0x40040(%r14), %rdi
callq 0x2150
movzbl %al, %eax
cmpl 0x40028(%r14), %eax
je 0x3733
movq 0x40040(%r14), %rax
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x2, 0x20(%rax,%rcx)
je 0x35b5
movq 0x40048(%r14), %r15
movl $0x28, %edi
callq 0x2120
movq %rax, %rbx
leaq -0x60(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0xb89(%rip), %rsi       # 0x41a3
leaq 0xba6(%rip), %rdx       # 0x41c7
leaq -0x70(%rbp), %rdi
callq 0x2c54
movl $0x80ffff03, (%rbx)     # imm = 0x80FFFF03
leaq 0x8(%rbx), %rdi
movq %rbx, %rax
addq $0x18, %rax
movq %rax, 0x8(%rbx)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
movb $0x1, %r13b
callq 0x2bba
movq %rbx, -0x30(%rbp)
movq 0x30(%r15), %rax
movq 0x40(%r15), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0x3671
movq %rbx, (%rax)
addq $0x8, 0x30(%r15)
jmp 0x3680
xorl %r13d, %r13d
leaq -0x30(%rbp), %rsi
movq %r15, %rdi
callq 0x29a8
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
je 0x3695
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2130
movq 0x40048(%r14), %r14
movl $0x28, %edi
callq 0x2120
movq %rax, %rbx
leaq -0x40(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0xb10(%rip), %rsi       # 0x41c8
leaq 0xb1f(%rip), %rdx       # 0x41de
leaq -0x50(%rbp), %rdi
callq 0x2c54
movl $0x80ffee02, (%rbx)     # imm = 0x80FFEE02
leaq 0x8(%rbx), %rdi
movq %rbx, %rax
addq $0x18, %rax
movq %rax, 0x8(%rbx)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
movb $0x1, %r12b
callq 0x2bba
movq %rbx, -0x30(%rbp)
movq 0x30(%r14), %rax
movq 0x40(%r14), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0x370f
movq %rbx, (%rax)
addq $0x8, 0x30(%r14)
jmp 0x371e
xorl %r12d, %r12d
leaq -0x30(%rbp), %rsi
movq %r14, %rdi
callq 0x29a8
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x3733
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2130
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movb $0x1, %r12b
jmp 0x376a
movq %rax, %r14
movb $0x1, %r13b
jmp 0x3789
movq %rax, %r14
movq -0x50(%rbp), %rdi
cmpq %r15, %rdi
je 0x376a
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2130
testb %r12b, %r12b
jne 0x378e
jmp 0x379b
movq %rax, %r14
movq -0x70(%rbp), %rdi
cmpq %r12, %rdi
je 0x3789
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2130
testb %r13b, %r13b
je 0x379b
movl $0x28, %esi
movq %rbx, %rdi
callq 0x2130
movq %r14, %rdi
callq 0x21d0
nop
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/main.cpp
// Function: main
int main () {

	Game *game = new Game( 8 );
	game->initializeRandomly();

	// delete game; 

	SolveMethod *method = new HillClimbingMethod;
	Solver *solver = new Solver( method );
	solver->solve( game );

	return 0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl $0x8, %edi
callq 0x10e0
movq %rax, %rbx
leaq -0x1c(%rbp), %rsi
movl $0x8, (%rsi)
movq %rax, %rdi
callq 0x14dc
movq %rbx, %rdi
callq 0x1762
movl $0x8, %edi
callq 0x10e0
movq %rax, %r14
leaq 0x4917(%rip), %rax      # 0x5d78
addq $0x10, %rax
movq %rax, (%r14)
movl $0x8, %edi
callq 0x10e0
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
callq 0x14b8
movq %r15, %rdi
movq %rbx, %rsi
callq 0x14c2
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %r15, %rbx
jmp 0x14a3
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x10f0
movq %r14, %rdi
callq 0x1160
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/game.cpp
// Function: Game::initializeRandomlyInEachColumn()
void Game::initializeRandomlyInEachColumn() {
	if ( board->getQueensCount() > board->getColumnsCount() )
		throw "Can't put one queen in each column! Exiting.";
	for ( int i = 0; i < board->getQueensCount(); i++ ) {
		int temp = rand() % board->getRowsCount();
		(*board)[temp][i]->setValue( NQueenBoard::QUEEN_CELL );
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rdi
callq 0x21ac
movl (%rax), %r14d
movq (%rbx), %rdi
callq 0x25b8
cmpq %r14, %rax
jb 0x166f
movq (%rbx), %rdi
callq 0x21ac
cmpl $0x0, (%rax)
je 0x1660
xorl %r13d, %r13d
leaq -0x2c(%rbp), %r14
leaq 0x1abe(%rip), %r15      # 0x30d4
callq 0x1030
movslq %eax, %r12
movq (%rbx), %rdi
callq 0x2598
movq %rax, %rcx
movq %r12, %rax
xorl %edx, %edx
divq %rcx
movl %edx, -0x2c(%rbp)
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x263c
movq (%rax), %rax
movq (%rax,%r13,8), %rdi
movq %r15, %rsi
callq 0x2af2
incq %r13
movq (%rbx), %rdi
callq 0x21ac
movl (%rax), %eax
cmpq %rax, %r13
jb 0x1616
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x8, %edi
callq 0x1070
leaq 0x19a7(%rip), %rcx      # 0x3027
movq %rcx, (%rax)
movq 0x4946(%rip), %rsi      # 0x5fd0
movq %rax, %rdi
xorl %edx, %edx
callq 0x1150
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/game.cpp
// Function: Game::initializeRandomlyInEachRow()
void Game::initializeRandomlyInEachRow() {
	if ( board->getQueensCount() > board->getRowsCount() )
		throw "Can't put one queen in each row! Exiting.";
	for ( int i = 0; i < board->getQueensCount(); i++ ) {
		int temp = rand() % board->getColumnsCount();
		(*board)[i][temp]->setValue( NQueenBoard::QUEEN_CELL );
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq (%rdi), %rdi
callq 0x21ac
movl (%rax), %r14d
movq (%rbx), %rdi
callq 0x2598
cmpq %r14, %rax
jb 0x173d
movl $0x0, -0x24(%rbp)
movq (%rbx), %rdi
callq 0x21ac
cmpl $0x0, (%rax)
je 0x1730
leaq -0x24(%rbp), %r14
leaq 0x19f7(%rip), %r15      # 0x30d4
callq 0x1030
movslq %eax, %r12
movq (%rbx), %rdi
callq 0x25b8
movq %rax, %rcx
movq %r12, %rax
xorl %edx, %edx
divq %rcx
movq %rdx, %r12
movq (%rbx), %rdi
movq %r14, %rsi
callq 0x263c
movq (%rax), %rax
movslq %r12d, %rcx
movq (%rax,%rcx,8), %rdi
movq %r15, %rsi
callq 0x2af2
movl -0x24(%rbp), %r12d
incl %r12d
movl %r12d, -0x24(%rbp)
movq (%rbx), %rdi
callq 0x21ac
cmpl (%rax), %r12d
jb 0x16dd
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movl $0x8, %edi
callq 0x1070
leaq 0x1906(%rip), %rcx      # 0x3054
movq %rcx, (%rax)
movq 0x4878(%rip), %rsi      # 0x5fd0
movq %rax, %rdi
xorl %edx, %edx
callq 0x1150
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/game.cpp
// Function: Game::initializeRandomly()
void Game::initializeRandomly() {
	
	if ( board->getQueensCount() > board->getRowsCount() * board->getColumnsCount() )
		throw "Number of queens is more that number of cells! Exiting.";

	std::vector<Cor> allCells;
	for ( int i = 0; i < board->getRowsCount(); i++ ) 
		for ( int j = 0; j < board->getColumnsCount(); j++ ){
			Cor temp( i, j );
			allCells.push_back( temp );
		}

	std::shuffle( allCells.begin(), allCells.end(), std::default_random_engine( time( NULL ) ) );
	
	for ( int i = 0; i < board->getQueensCount(); i++ )
		(*board)[allCells[i].getY()][allCells[i].getX()]->setValue( NQueenBoard::QUEEN_CELL );

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %r15
movq (%rdi), %rdi
callq 0x21ac
movl (%rax), %ebx
movq (%r15), %rdi
callq 0x2598
movq %rax, %r14
movq %r15, -0x38(%rbp)
movq (%r15), %rdi
callq 0x25b8
imulq %r14, %rax
cmpq %rbx, %rax
jb 0x18fe
xorps %xmm0, %xmm0
leaq -0x50(%rbp), %r14
movaps %xmm0, (%r14)
movq $0x0, 0x10(%r14)
xorl %ebx, %ebx
leaq -0x58(%rbp), %r15
leaq -0x30(%rbp), %r12
leaq -0x2c(%rbp), %r13
movl %ebx, -0x30(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x2598
movslq %ebx, %rcx
cmpq %rcx, %rax
jbe 0x181c
xorl %ebx, %ebx
movl %ebx, -0x2c(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x25b8
movslq %ebx, %rcx
cmpq %rcx, %rax
jbe 0x1815
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x2b00
movq %r14, %rdi
movq %r15, %rsi
callq 0x1968
movl -0x2c(%rbp), %ebx
incl %ebx
jmp 0x17de
movl -0x30(%rbp), %ebx
incl %ebx
jmp 0x17c5
movq -0x50(%rbp), %r14
movq -0x48(%rbp), %r15
xorl %edi, %edi
callq 0x10c0
movq %rax, %rcx
movabsq $0x200000005, %rdx      # imm = 0x200000005
mulq %rdx
movq %rcx, %rax
subq %rdx, %rax
shrq %rax
addq %rdx, %rax
shrq $0x1e, %rax
movq %rax, %rdx
shlq $0x1f, %rdx
subq %rdx, %rax
leaq (%rcx,%rax), %rdx
cmpq $0x1, %rdx
adcq %rcx, %rax
leaq -0x58(%rbp), %rdx
movq %rax, (%rdx)
movq %r14, %rdi
movq %r15, %rsi
callq 0x19a3
xorl %r12d, %r12d
leaq 0x1858(%rip), %r14      # 0x30d4
xorl %r13d, %r13d
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x21ac
movl (%rax), %eax
cmpq %rax, %r13
jae 0x18da
movq -0x38(%rbp), %rax
movq (%rax), %r15
movq -0x50(%rbp), %rdi
addq %r12, %rdi
callq 0x2b4a
movq %r15, %rdi
movq %rax, %rsi
callq 0x263c
movq %rax, %r15
movq -0x50(%rbp), %rdi
addq %r12, %rdi
callq 0x2b40
movslq (%rax), %rax
movq (%r15), %rcx
movq (%rcx,%rax,8), %rdi
movq %r14, %rsi
callq 0x2af2
incq %r13
addq $0x8, %r12
jmp 0x187f
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x18ef
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x10f0
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x8, %edi
callq 0x1070
leaq 0x176f(%rip), %rcx      # 0x307e
movq %rcx, (%rax)
movq 0x46b7(%rip), %rsi      # 0x5fd0
movq %rax, %rdi
xorl %edx, %edx
callq 0x1150
jmp 0x192b
jmp 0x192b
jmp 0x192b
jmp 0x192b
movq %rax, %rbx
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x1943
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x10f0
movq %rbx, %rdi
callq 0x1160
nop
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/nqueenboard.cpp
// Function: NQueenBoard::getCellsMatchingValue(int const&)
std::vector<Cor> NQueenBoard::getCellsMatchingValue( const int &value ) {

    std::vector<Cor> returnValue;

    for ( unsigned int i = 0; i < this->getRowsCount(); i++ ) {

        for ( unsigned int j = 0; j < this->getColumnsCount(); j++ ) {

            Cell currentCell = *( this->cells[i].at(j) );
            if ( currentCell.getValue() == value )
                returnValue.push_back( Cor( i, j ) );

        }
        
    }

    return returnValue;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdx, %r14
movq %rsi, %r15
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, -0x38(%rbp)
movq $0x0, 0x10(%rdi)
movl $0x0, -0x2c(%rbp)
leaq -0x50(%rbp), %r12
movq %r15, %rdi
callq 0x2598
movl -0x2c(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x2122
xorl %r13d, %r13d
leaq (%rcx,%rcx,2), %rbx
movq %rbx, -0x48(%rbp)
movq %r15, %rdi
callq 0x25b8
movl %r13d, %esi
cmpq %rsi, %rax
jbe 0x211a
movq (%r15), %rcx
movq (%rcx,%rbx,8), %rax
movq 0x8(%rcx,%rbx,8), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rsi, %rdx
jbe 0x2135
movq (%rax,%rsi,8), %rsi
movq %r12, %rdi
callq 0x2aa8
movq %r12, %rdi
callq 0x2ace
movl (%rax), %eax
cmpl (%r14), %eax
jne 0x210a
movq %r15, %rbx
movq %r12, %r15
movq %r14, %r12
movl -0x2c(%rbp), %eax
movl %eax, -0x40(%rbp)
movl %r13d, -0x3c(%rbp)
leaq -0x58(%rbp), %r14
movq %r14, %rdi
leaq -0x40(%rbp), %rsi
leaq -0x3c(%rbp), %rdx
callq 0x2b00
movq -0x38(%rbp), %rdi
movq %r14, %rsi
callq 0x21fc
movq %r12, %r14
movq %r15, %r12
movq %rbx, %r15
movq -0x48(%rbp), %rbx
movq %r12, %rdi
callq 0x2ad8
incl %r13d
jmp 0x207f
incl -0x2c(%rbp)
jmp 0x2060
movq -0x38(%rbp), %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xf9c(%rip), %rdi       # 0x30d8
xorl %eax, %eax
callq 0x1110
jmp 0x2159
jmp 0x2159
jmp 0x2149
movq %rax, %r14
leaq -0x50(%rbp), %rdi
callq 0x2ad8
jmp 0x215c
jmp 0x2159
movq %rax, %r14
movq -0x38(%rbp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x2174
movq 0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x10f0
movq %r14, %rdi
callq 0x1160
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/board.cpp
// Function: Board::Board(unsigned int const&, unsigned int const&, int const&)
Board::Board( const unsigned int &row, const unsigned int &column, const int &defaultValue ) { 
	
	cells.resize( row );
	for ( int i = 0; i < row; i++ )
		cells[i].resize( column );

	for ( int i = 0; i < row; i++ ) 
		for ( int j = 0; j < column; j++ )
			cells[i][j] = new Cell( defaultValue );
	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movl (%rsi), %esi
movq %rdi, -0x40(%rbp)
callq 0x267e
movq %rbx, -0x30(%rbp)
cmpl $0x0, (%rbx)
je 0x23a1
xorl %ebx, %ebx
xorl %r12d, %r12d
movq -0x40(%rbp), %rax
movq (%rax), %rdi
addq %rbx, %rdi
movl (%r15), %esi
callq 0x26c2
incq %r12
movq -0x30(%rbp), %rax
movl (%rax), %eax
addq $0x18, %rbx
cmpq %rax, %r12
jb 0x237d
movq -0x30(%rbp), %rax
cmpl $0x0, (%rax)
je 0x240a
movq $0x0, -0x38(%rbp)
cmpl $0x0, (%r15)
je 0x23f4
movq -0x38(%rbp), %rax
leaq (%rax,%rax,2), %r12
xorl %ebx, %ebx
movl $0x8, %edi
callq 0x10e0
movq %rax, %r13
movq %rax, %rdi
movq %r14, %rsi
callq 0x2a84
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq (%rax,%r12,8), %rax
movq %r13, (%rax,%rbx,8)
incq %rbx
movl (%r15), %eax
cmpq %rax, %rbx
jb 0x23c2
movq -0x38(%rbp), %rdx
incq %rdx
movq -0x30(%rbp), %rax
movl (%rax), %eax
movq %rdx, -0x38(%rbp)
cmpq %rax, %rdx
jb 0x23b2
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x241d
jmp 0x241d
movq %rax, %r14
jmp 0x2432
movq %rax, %r14
movl $0x8, %esi
movq %r13, %rdi
callq 0x10f0
movq -0x40(%rbp), %rdi
callq 0x1b82
movq %r14, %rdi
callq 0x1160
nop
// File: /workspace/github_cpp_makefile_star2_O1/monjar[P]N-Queens-Problem/board.cpp
// Function: Board::Board(Board const&)
Board::Board( const Board &board ) {
	this->cells.resize( board.getRowsCount() );
	for ( int i = 0; i < board.getRowsCount(); i++ ) {
		this->cells[i].resize( board.getColumnsCount() );
		for ( int j = 0; j < board.getColumnsCount(); j++ ) 
			this->cells[i][j]->setValue( board.getCell(i, j).getValue() );
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x8(%rsi), %rsi
subq (%r14), %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rsi
movq %rdi, -0x38(%rbp)
callq 0x267e
movl $0x0, -0x30(%rbp)
movq (%r14), %rax
cmpq %rax, 0x8(%r14)
je 0x2563
xorl %esi, %esi
leaq -0x48(%rbp), %r15
movq %rsi, -0x40(%rbp)
leaq (%rsi,%rsi,2), %r13
leaq (,%r13,8), %rdi
movq -0x38(%rbp), %rcx
addq (%rcx), %rdi
movq 0x8(%rax), %rsi
subq (%rax), %rsi
sarq $0x3, %rsi
callq 0x26c2
movl $0x0, -0x2c(%rbp)
movq (%r14), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x2534
xorl %ebx, %ebx
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%rbx,8), %r12
movq %r15, %rdi
movq %r14, %rsi
leaq -0x30(%rbp), %rdx
leaq -0x2c(%rbp), %rcx
callq 0x25cc
movq %r15, %rdi
callq 0x2ace
movq %r12, %rdi
movq %rax, %rsi
callq 0x2af2
movq %r15, %rdi
callq 0x2ad8
incq %rbx
movl %ebx, -0x2c(%rbp)
movq (%r14), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
ja 0x24de
movq -0x40(%rbp), %rsi
incq %rsi
movl %esi, -0x30(%rbp)
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
cmpq %rsi, %rcx
ja 0x24a2
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2576
jmp 0x2576
movq %rax, %r14
jmp 0x2587
movq %rax, %r14
leaq -0x48(%rbp), %rdi
callq 0x2ad8
movq -0x38(%rbp), %rdi
callq 0x1b82
movq %r14, %rdi
callq 0x1160
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: branching_factor(problem_t const&, unsigned int)
inline std::pair<float, float> branching_factor(const problem_t &problem, unsigned nsamples) {
  Online::Policy::random_t<state_t> random_policy(problem);
    for( unsigned i = 0; i < nsamples; ++i ) {
        state_t s = problem.init();
        while( !problem.terminal(s) ) {
            Problem::action_t a = random_policy(s);
            if( a == Problem::noop ) break;
            std::pair<state_t, bool> p = problem.sample(s, a);
            s = p.first;
        }
    }
    float avg = problem.avg_branching_;
    float max = problem.max_branching_;
    return std::make_pair(avg, max);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, %rbx
movq %rdi, 0x10(%rsp)
movl 0x36b37(%rip), %eax     # 0x3f2c0
movl %eax, 0x18(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x1c(%rsp)
leaq 0x3550c(%rip), %rax     # 0x3dca8
movq %rax, 0x8(%rsp)
movl %esi, 0x4(%rsp)
testl %esi, %esi
je 0x888b
leaq 0x30(%rsp), %r14
leaq 0x8(%rsp), %r15
leaq 0xa0(%rsp), %r12
xorl %ebp, %ebp
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x18(%rax)
xorps %xmm0, %xmm0
leaq 0x34(%rsp), %rdx
movups %xmm0, (%rdx)
movups %xmm0, 0x10(%rdx)
movups %xmm0, 0x20(%rdx)
movups %xmm0, 0x30(%rdx)
xorl %ecx, %ecx
movq %rcx, 0x40(%rdx)
movb $0x1, 0x8c(%rsp)
movq %rcx, 0x90(%rsp)
movq %r14, %rdi
movq %rax, %rsi
callq 0xd546
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *0x20(%rax)
testb %al, %al
jne 0x8863
movq %r15, %rdi
movq %r14, %rsi
callq 0xdf7a
movl %eax, %r13d
cmpl $-0x1, %eax
je 0x8863
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movl %r13d, %ecx
callq 0xe0cc
movq %r14, %rdi
movq %r12, %rsi
callq 0xd546
cmpb $0x0, 0xfc(%rsp)
jne 0x885d
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x885d
callq 0x6340
cmpl $-0x1, %r13d
jne 0x8802
cmpb $0x0, 0x8c(%rsp)
jne 0x887f
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x887f
callq 0x6340
incl %ebp
cmpl 0x4(%rsp), %ebp
jne 0x87c1
xorps %xmm0, %xmm0
cvtsi2ssl 0x98(%rbx), %xmm0
movups 0x9c(%rbx), %xmm1
movlhps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
shufps $0xe2, %xmm1, %xmm0     # xmm0 = xmm0[2,0],xmm1[2,3]
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
cmpb $0x0, 0xfc(%rsp)
jne 0x88de
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x88de
callq 0x6340
jmp 0x88de
jmp 0x88db
jmp 0x88db
movq %rax, %rbx
cmpb $0x0, 0x8c(%rsp)
jne 0x88fa
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x88fa
callq 0x6340
movq %rbx, %rdi
callq 0x6410
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/dispatcher.h
// Function: Dispatcher::dispatcher_t<state_t>::~dispatcher_t()
virtual ~dispatcher_t() {
        for( typename std::map<std::string, Algorithm::algorithm_t<T>*>::const_iterator it = algorithms_.begin(); it != algorithms_.end(); ++it )
            delete it->second;
        for( typename std::map<std::string, Heuristic::heuristic_t<T>*>::const_iterator it = heuristics_.begin(); it != heuristics_.end(); ++it )
            delete it->second;
        for( typename std::map<std::string, Online::Policy::policy_t<T>*>::const_iterator it = policies_.begin(); it != policies_.end(); ++it )
            delete it->second;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x33259(%rip), %rax     # 0x3df08
movq %rax, (%rdi)
movq 0x20(%rdi), %r14
leaq 0x10(%rdi), %r15
cmpq %r15, %r14
je 0xacde
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0xacce
movq (%rdi), %rax
callq *0x8(%rax)
movq %r14, %rdi
callq 0x62f0
movq %rax, %r14
cmpq %r15, %rax
jne 0xacbf
movq 0x50(%rbx), %r14
leaq 0x40(%rbx), %r15
cmpq %r15, %r14
je 0xad0a
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0xacfa
movq (%rdi), %rax
callq *0x8(%rax)
movq %r14, %rdi
callq 0x62f0
movq %rax, %r14
cmpq %r15, %rax
jne 0xaceb
movq 0x80(%rbx), %r14
leaq 0x70(%rbx), %r15
cmpq %r15, %r14
je 0xad39
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0xad29
movq (%rdi), %rax
callq *0x8(%rax)
movq %r14, %rdi
callq 0x62f0
movq %rax, %r14
cmpq %r15, %rax
jne 0xad1a
leaq 0x68(%rbx), %rdi
leaq 0x38(%rbx), %r14
addq $0x8, %rbx
callq 0xec22
movq %r14, %rdi
callq 0xec9e
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0xed1a
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: shortest_path_cache_t::initialize(int, unsigned int)
void initialize(int num_nodes, unsigned capacity) {
        num_nodes_ = num_nodes;
        capacity_ = capacity;
        distances_ = new int[num_nodes_];
        items_ = new shortest_path_cache_item_t*[num_nodes_];
        for( int i = 0; i < num_nodes_; ++i )
            items_[i] = new shortest_path_cache_item_t;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movl %esi, (%rdi)
movl %edx, 0x18(%rdi)
movslq %esi, %r15
leaq (,%r15,4), %rdi
testl %r15d, %r15d
movq $-0x1, %rax
cmovsq %rax, %rdi
leaq (,%r15,8), %r14
cmovsq %rax, %r14
callq 0x6030
movq %rax, 0x8(%rbx)
movq %r14, %rdi
callq 0x6030
movq %rax, 0x10(%rbx)
testl %r15d, %r15d
jle 0xb863
movl %ebp, %r14d
xorl %r15d, %r15d
movl $0x38, %edi
callq 0x6290
leaq 0x30(%rax), %rcx
movq %rcx, (%rax)
movq $0x1, 0x8(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0x3f800000, 0x20(%rax) # imm = 0x3F800000
movups %xmm0, 0x28(%rax)
movq 0x10(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
cmpq %r15, %r14
jne 0xb828
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: next_cache_t::initialize(int, unsigned int)
void initialize(int num_actions, unsigned capacity) {
        num_actions_ = num_actions;
        capacity_ = capacity;
        items_ = new next_cache_item_t*[num_actions_];
        for( int i = 0; i < num_actions_; ++i )
            items_[i] = new next_cache_item_t;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movl %esi, (%rdi)
movl %edx, 0x10(%rdi)
movslq %esi, %r14
leaq (,%r14,8), %rax
testl %r14d, %r14d
movq $-0x1, %rdi
cmovnsq %rax, %rdi
callq 0x6030
movq %rax, 0x8(%rbx)
testl %r14d, %r14d
jle 0xb8e7
movl %ebp, %r14d
xorl %r15d, %r15d
movl $0x38, %edi
callq 0x6290
leaq 0x30(%rax), %rcx
movq %rcx, (%rax)
movq $0x1, 0x8(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rax)
movl $0x3f800000, 0x20(%rax) # imm = 0x3F800000
movups %xmm0, 0x28(%rax)
movq 0x8(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
cmpq %r15, %r14
jne 0xb8ac
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: state_t::preprocess() const
void preprocess() const {
        if( distances_ == 0 ) {
            assert(shared_);
            std::pair<bool, const int*> p(false, 0);
            if( use_cache_ ) p = cache_.lookup(*graph_, current_, info_);
            if( p.first ) {
                if( !shared_ ) delete[] distances_;
                distances_ = const_cast<int*>(p.second);
                shared_ = true;
            } else {
                if( shared_ ) distances_ = new int[num_nodes_];
                assert(distances_ != 0);
                shared_ = false;
                if( p.second ) {
                    memcpy(const_cast<int*>(distances_), p.second, num_nodes_ * sizeof(int));
                } else {
                    graph_->dijkstra(current_, distances_, info_.known_, info_.blocked_, false);
                    //distances_[current_] = graph_->bfs(current_, num_nodes_ - 1, info_.known_, info_.blocked_, true);
                }
            }
            //heuristic_ = distances_[current_];
        }
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
cmpq $0x0, 0x60(%rdi)
jne 0xc6c1
movq %rdi, %rbx
cmpb $0x0, 0x5c(%rdi)
je 0xc748
cmpb $0x1, 0x32c3d(%rip)     # 0x3f2b8
jne 0xc69b
movq 0x32bf4(%rip), %rsi     # 0x3f278
movl (%rbx), %edx
leaq 0x4(%rbx), %rcx
leaq 0x32bff(%rip), %rdi     # 0x3f290
callq 0xc786
movq %rdx, %r14
jmp 0xc6a0
xorl %eax, %eax
xorl %r14d, %r14d
movb 0x5c(%rbx), %cl
testb $0x1, %al
je 0xc6c9
testb %cl, %cl
jne 0xc6b9
movq 0x60(%rbx), %rdi
testq %rdi, %rdi
je 0xc6b9
callq 0x6340
movq %r14, 0x60(%rbx)
movb $0x1, 0x5c(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
testb %cl, %cl
je 0xc6f3
movslq 0x32bac(%rip), %rax     # 0x3f280
leaq (,%rax,4), %rcx
testq %rax, %rax
movq $-0x1, %rdi
cmovnsq %rcx, %rdi
callq 0x6030
movq %rax, 0x60(%rbx)
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0xc767
movb $0x0, 0x5c(%rbx)
testq %r14, %r14
je 0xc722
movslq 0x32b74(%rip), %rdx     # 0x3f280
shlq $0x2, %rdx
movq %rax, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x6230
movq 0x32b4f(%rip), %rdi     # 0x3f278
movl (%rbx), %esi
leaq 0x4(%rbx), %rcx
addq $0x28, %rbx
movq %rax, %rdx
movq %rbx, %r8
xorl %r9d, %r9d
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0xc8ba
leaq 0x20d83(%rip), %rdi     # 0x2d4d2
leaq 0x20d84(%rip), %rsi     # 0x2d4da
leaq 0x20d86(%rip), %rcx     # 0x2d4e3
movl $0x160, %edx            # imm = 0x160
callq 0x61c0
leaq 0x20e22(%rip), %rdi     # 0x2d590
leaq 0x20d65(%rip), %rsi     # 0x2d4da
leaq 0x20d67(%rip), %rcx     # 0x2d4e3
movl $0x169, %edx            # imm = 0x169
callq 0x61c0
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: shortest_path_cache_t::lookup(CTP::graph_t const&, int, state_info_t const&)
std::pair<bool, const int*> lookup(const CTP::graph_t &graph, int source, const state_info_t &info) {
        ++lookups_;
        shortest_path_cache_item_t *item = items_[source];
        shortest_path_cache_item_t::const_iterator it = item->find(info);
        if( it != item->end() ) {
            ++hits_;
            return std::make_pair(true, it->second);
        } else {
            if( size_ < capacity_ ) {
                ++size_;
                int *distances = new int[num_nodes_];
                graph.dijkstra(source, distances, info.known_, info.blocked_, false);
                distances[source] = graph.bfs(source, num_nodes_ - 1, info.known_, info.blocked_, true);
                item->insert(std::make_pair(info, distances));
                return std::make_pair(true, distances);
            } else {
                graph.dijkstra(source, distances_, info.known_, info.blocked_, false);
                distances_[source] = graph.bfs(source, num_nodes_ - 1, info.known_, info.blocked_, true);
                return std::make_pair(false, distances_);
            }
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rcx, %rbx
movq %rdi, %r15
incl 0x20(%rdi)
movq %rsi, %r12
movq 0x10(%rdi), %rax
movslq %edx, %r14
movq (%rax,%r14,8), %r13
movq %r13, %rdi
movq %rcx, %rsi
callq 0xcaa0
testq %rax, %rax
je 0xc7c8
incl 0x24(%r15)
movq 0x50(%rax), %rbp
jmp 0xc85c
movl 0x1c(%r15), %eax
cmpl 0x18(%r15), %eax
jae 0xc874
incl %eax
movl %eax, 0x1c(%r15)
movslq (%r15), %rax
leaq (,%rax,4), %rcx
testq %rax, %rax
movq $-0x1, %rdi
cmovnsq %rcx, %rdi
callq 0x6030
movq %rax, %rbp
leaq 0x24(%rbx), %r8
movq %r8, (%rsp)
movq %r12, %rdi
movl %r14d, %esi
movq %rax, %rdx
movq %rbx, %rcx
xorl %r9d, %r9d
callq 0xc8ba
movl (%r15), %edx
decl %edx
movq %r12, %rdi
movl %r14d, %esi
movq %rbx, %rcx
movq (%rsp), %r8
movl $0x1, %r9d
callq 0xc026
movl %eax, (%rbp,%r14,4)
leaq 0x8(%rsp), %rax
movl $0x12, %ecx
movq %rax, %rdi
movq %rbx, %rsi
rep  movsl (%rsi), %es:(%rdi)
movq %rbp, 0x48(%rax)
movq %r13, %rdi
movq %rax, %rsi
callq 0xcbc8
movb $0x1, %r13b
movl %r13d, %eax
movq %rbp, %rdx
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r15), %rdx
leaq 0x24(%rbx), %rbp
xorl %r13d, %r13d
movq %r12, %rdi
movl %r14d, %esi
movq %rbx, %rcx
movq %rbp, %r8
xorl %r9d, %r9d
callq 0xc8ba
movl (%r15), %edx
decl %edx
movq %r12, %rdi
movl %r14d, %esi
movq %rbx, %rcx
movq %rbp, %r8
movl $0x1, %r9d
callq 0xc026
movq 0x8(%r15), %rbp
movl %eax, (%rbp,%r14,4)
jmp 0xc85f
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: next_cache_t::lookup(state_t const&, int) const
const std::vector<std::pair<state_t, float> >* lookup(const state_t &state,
                                                          Problem::action_t a) const {
        ++lookups_;
        next_cache_item_t *item = items_[a];
        next_cache_item_t::const_iterator it = item->find(state);
        if( it != item->end() ) {
            ++hits_;
            return it->second;
        } else
            return 0;
    }

// Assembly:
pushq %rbx
movq %rdi, %rbx
incl 0x18(%rdi)
movq 0x8(%rdi), %rax
movslq %edx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0xd2ac
testq %rax, %rax
je 0xcee1
incl 0x1c(%rbx)
movq 0x78(%rax), %rax
jmp 0xcee3
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: next_cache_t::insert(state_t const&, int, std::vector<std::pair<state_t, float>, std::allocator<std::pair<state_t, float>>>&)
void insert(const state_t &state,
                Problem::action_t a,
                std::vector<std::pair<state_t, float> > &next) {
        if( size_ < capacity_ ) {
            ++size_;
            next_cache_item_t *item = items_[a];
            std::vector<std::pair<state_t, float> > *ptr
              = new std::vector<std::pair<state_t, float> >(next);
            item->insert(std::make_pair(state, ptr));
        }
    }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x78, %rsp
movl 0x14(%rdi), %eax
cmpl 0x10(%rdi), %eax
jae 0xd272
movq %rcx, %r12
movq %rsi, %rbx
incl %eax
movl %eax, 0x14(%rdi)
movq 0x8(%rdi), %rax
movslq %edx, %rcx
movq (%rax,%rcx,8), %r14
movl $0x18, %edi
callq 0x6290
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0xdb00
xorps %xmm0, %xmm0
movq %rsp, %r12
movups %xmm0, 0x34(%r12)
movups %xmm0, 0x24(%r12)
movups %xmm0, 0x14(%r12)
movups %xmm0, 0x4(%r12)
xorl %eax, %eax
movq %rax, 0x44(%r12)
movb $0x1, 0x5c(%r12)
movq %rax, 0x60(%r12)
movq %r12, %rdi
movq %rbx, %rsi
callq 0xd546
movq %r15, 0x70(%r12)
movq %r14, %rdi
movq %r12, %rsi
callq 0xdb92
cmpb $0x0, 0x5c(%rsp)
jne 0xd272
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xd272
callq 0x6340
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
cmpb $0x0, 0x5c(%rsp)
jne 0xd2a4
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xd2a4
callq 0x6340
jmp 0xd2a4
movq %rax, %rbx
movq %r15, %rdi
callq 0x6260
movq %rbx, %rdi
callq 0x6410
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: state_t::operator=(state_t const&)
const state_t& operator=(const state_t &s) {
        current_ = s.current_;
        info_ = s.info_;
        memcpy(visited_, s.visited_, words_for_nodes_ * sizeof(unsigned));
        if( s.shared_ ) {
            if( !shared_ ) delete[] distances_;
            distances_ = s.distances_;
            shared_ = true;
        } else {
            if( shared_ ) {
                distances_ = new int[num_nodes_];
                shared_ = false;
            }
            assert(distances_ != 0);
            memcpy(const_cast<int*>(distances_), s.distances_, num_nodes_ * sizeof(int));
        }
        heuristic_ = s.heuristic_;
        return *this;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
movl (%rsi), %eax
movl %eax, (%rdi)
addq $0x4, %rsi
addq $0x4, %rdi
movslq 0x31d10(%rip), %r15     # 0x3f274
shlq $0x2, %r15
movq %r15, %rdx
callq 0x6230
leaq 0x28(%rbx), %rdi
leaq 0x28(%r14), %rsi
movq %r15, %rdx
callq 0x6230
leaq 0x4c(%rbx), %rdi
leaq 0x4c(%r14), %rsi
movslq 0x31cf9(%rip), %rdx     # 0x3f288
shlq $0x2, %rdx
callq 0x6230
movb 0x5c(%rbx), %al
cmpb $0x1, 0x5c(%r14)
jne 0xd5c2
testb %al, %al
jne 0xd5b4
movq 0x60(%rbx), %rdi
testq %rdi, %rdi
je 0xd5b4
callq 0x6340
movq 0x60(%r14), %rax
movq %rax, 0x60(%rbx)
movb $0x1, 0x5c(%rbx)
jmp 0xd60d
testb %al, %al
je 0xd5f0
movslq 0x31cb3(%rip), %rax     # 0x3f280
leaq (,%rax,4), %rcx
testq %rax, %rax
movq $-0x1, %rdi
cmovnsq %rcx, %rdi
callq 0x6030
movq %rax, 0x60(%rbx)
movb $0x0, 0x5c(%rbx)
movq 0x60(%rbx), %rdi
testq %rdi, %rdi
je 0xd61d
movq 0x60(%r14), %rsi
movslq 0x31c7c(%rip), %rdx     # 0x3f280
shlq $0x2, %rdx
callq 0x6230
movl 0x68(%r14), %eax
movl %eax, 0x68(%rbx)
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
leaq 0x1ff6c(%rip), %rdi     # 0x2d590
leaq 0x1feaf(%rip), %rsi     # 0x2d4da
leaq 0x1ff83(%rip), %rcx     # 0x2d5b5
movl $0x18f, %edx            # imm = 0x18F
callq 0x61c0
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: state_t::clear()
void clear() {
        current_ = 0;
        info_.clear();
        memset(visited_, 0, words_for_nodes_ * sizeof(unsigned));
        if( !shared_ ) {
            delete[] distances_;
            shared_ = true;
        }
        distances_ = 0;
        heuristic_ = -1;
    }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x0, (%rdi)
addq $0x4, %rdi
movslq 0x3135c(%rip), %r14     # 0x3f274
shlq $0x2, %r14
xorl %esi, %esi
movq %r14, %rdx
callq 0x6180
leaq 0x28(%rbx), %rdi
xorl %esi, %esi
movq %r14, %rdx
callq 0x6180
leaq 0x4c(%rbx), %rdi
movslq 0x31349(%rip), %rdx     # 0x3f288
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x6180
cmpb $0x0, 0x5c(%rbx)
jne 0xdf62
movq 0x60(%rbx), %rdi
testq %rdi, %rdi
je 0xdf5e
callq 0x6340
movb $0x1, 0x5c(%rbx)
movq $0x0, 0x60(%rbx)
movl $0xffffffff, 0x68(%rbx) # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/base_policies.h
// Function: Online::Policy::random_t<state_t>::operator()(state_t const&) const
virtual Problem::action_t operator()(const T &s) const {
        ++policy_t<T>::decisions_;
        if( problem_.dead_end(s) ) return Problem::noop;
        std::vector<Problem::action_t> actions;
        actions.reserve(problem_.number_actions(s));
        for( Problem::action_t a = 0; a < problem_.number_actions(s); ++a ) {
            if( problem_.applicable(s, a) ) {
                actions.push_back(a);
            }
        }
        return actions.empty() ? Problem::noop : actions[Random::random(actions.size())];
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
incl 0x20(%rdi)
movq %rsi, %r14
movq 0x8(%rdi), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testb %al, %al
jne 0xe081
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x10(%rax)
movslq %eax, %rsi
leaq 0x10(%rsp), %rdi
callq 0xd076
xorl %ebp, %ebp
leaq 0x10(%rsp), %r15
leaq 0xc(%rsp), %r12
movl %ebp, 0xc(%rsp)
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
callq *0x10(%rax)
cmpl %eax, %ebp
jge 0xe037
movq 0x8(%rbx), %rdi
movl 0xc(%rsp), %edx
movq (%rdi), %rax
movq %r14, %rsi
callq *0x30(%rax)
testb %al, %al
je 0xe02f
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0xe024
movl 0xc(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0xe02f
movq %r15, %rdi
movq %r12, %rdx
callq 0xb4a0
movl 0xc(%rsp), %ebp
incl %ebp
jmp 0xdfdd
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rbx
cmpq %rbx, %rax
je 0xe061
subq %rax, %rbx
shrq $0x2, %rbx
cmpl $0x1, %ebx
je 0xe068
testl %ebx, %ebx
je 0xe090
callq 0x6200
xorl %edx, %edx
divl %ebx
jmp 0xe06a
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0xe072
xorl %edx, %edx
movq 0x10(%rsp), %rax
movl (%rax,%rdx,4), %ebp
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xe081
callq 0x6260
movl %ebp, %eax
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1f589(%rip), %rdi     # 0x2d620
leaq 0x1f58a(%rip), %rsi     # 0x2d628
leaq 0x1f596(%rip), %rcx     # 0x2d63b
movl $0x3a, %edx
callq 0x61c0
jmp 0xe0b1
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xe0c3
callq 0x6260
movq %rbx, %rdi
callq 0x6410
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/problem.h
// Function: Problem::problem_t<state_t>::sample(state_t const&, int) const
std::pair<T, bool> sample(const T &s, action_t a) const {
        std::vector<std::pair<T, float> > outcomes;
        next(s, a, outcomes);
        unsigned osize = outcomes.size();
        assert(osize > 0);

        float r = Random::real();
        for( unsigned i = 0; i < osize; ++i ) {
            if( r < outcomes[i].second ) {
                return std::make_pair(outcomes[i].first, true);
            }
            r -= outcomes[i].second;
        }
        return std::make_pair(outcomes[0].first, true);
    }

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
movq %rsp, %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq (%rsi), %r8
movq %rsi, %rdi
movq %rdx, %rsi
movl %ecx, %edx
movq %rax, %rcx
callq *0x60(%r8)
movq 0x8(%rsp), %rax
subq (%rsp), %rax
sarq $0x3, %rax
movabsq $-0x1111111111111111, %r14 # imm = 0xEEEEEEEEEEEEEEEF
imulq %rax, %r14
testl %r14d, %r14d
je 0xe1b3
callq 0x6250
cvtsd2ss %xmm0, %xmm0
movq (%rsp), %rsi
movl %r14d, %eax
movss 0x70(%rsi), %xmm1
ucomiss %xmm1, %xmm0
jb 0xe173
subss %xmm1, %xmm0
addq $0x78, %rsi
decq %rax
jne 0xe12d
movq (%rsp), %rsi
xorps %xmm0, %xmm0
movups %xmm0, 0x34(%rbx)
movups %xmm0, 0x24(%rbx)
movups %xmm0, 0x14(%rbx)
movups %xmm0, 0x4(%rbx)
xorl %eax, %eax
movq %rax, 0x44(%rbx)
movb $0x1, 0x5c(%rbx)
movq %rax, 0x60(%rbx)
movq %rbx, %rdi
callq 0xd546
jmp 0xe19c
xorps %xmm0, %xmm0
movups %xmm0, 0x34(%rbx)
movups %xmm0, 0x24(%rbx)
movups %xmm0, 0x14(%rbx)
movups %xmm0, 0x4(%rbx)
xorl %eax, %eax
movq %rax, 0x44(%rbx)
movb $0x1, 0x5c(%rbx)
movq %rax, 0x60(%rbx)
movq %rbx, %rdi
callq 0xd546
movb $0x1, 0x70(%rbx)
movq %rsp, %rdi
callq 0xe35c
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
leaq 0x1f4ab(%rip), %rdi     # 0x2d665
leaq 0x1f4ae(%rip), %rsi     # 0x2d66f
leaq 0x1f4bb(%rip), %rcx     # 0x2d683
movl $0x94, %edx
callq 0x61c0
jmp 0xe1d6
jmp 0xe1d6
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe35c
movq %rbx, %rdi
callq 0x6410
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/base_policies.h
// Function: Online::Policy::random_t<state_t>::reset_stats() const
virtual void reset_stats() const {
        policy_t<T>::setup_time_ = 0;
        policy_t<T>::base_policy_time_ = 0;
        policy_t<T>::heuristic_time_ = 0;
        problem_.clear_expansions();
    }

// Assembly:
xorl %eax, %eax
movq %rax, 0x14(%rdi)
movl $0x0, 0x1c(%rdi)
movq 0x8(%rdi), %rcx
movq %rax, 0x10(%rcx)
retq
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/base_policies.h
// Function: Online::Policy::random_t<state_t>::print_other_stats(std::ostream&, int) const
virtual void print_other_stats(std::ostream &os, int indent) const {
        os << std::setw(indent) << ""
           << "other-stats: name=" << name()
           << " decisions=" << policy_t<T>::decisions_
           << std::endl;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq -0x18(%rax), %rax
movslq %edx, %rcx
movq %rcx, 0x10(%rsi,%rax)
leaq 0x1fcdc(%rip), %rsi     # 0x2df67
movq %r14, %rdi
xorl %edx, %edx
callq 0x62e0
leaq 0x1f365(%rip), %rsi     # 0x2d601
movl $0x12, %edx
movq %r14, %rdi
callq 0x62e0
movq (%rbx), %rax
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq *0x18(%rax)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r14, %rdi
callq 0x62e0
movq %rax, %r14
leaq 0x1f343(%rip), %rsi     # 0x2d614
movl $0xb, %edx
movq %rax, %rdi
callq 0x62e0
movl 0x20(%rbx), %esi
movq %r14, %rdi
callq 0x61d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x61e0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe326
callq 0x6260
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe346
callq 0x6260
movq %rbx, %rdi
callq 0x6410
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/./ctp3.h
// Function: ctp_optimistic_policy_t::operator()(state_t const&) const
virtual Problem::action_t operator()(const state_t &s) const {
        float best_cost = FLT_MAX;
        Problem::action_t best_action = Problem::noop;
        for( Problem::action_t a = 0; a < problem().number_actions(s); ++a ) {
            if( problem().applicable(s, a) ) {
                float cost = problem().cost(s, a);
                cost += graph_.bfs(a, graph_.num_nodes_ - 1, s.info_.known_, s.info_.blocked_, true) * multiplier_;
                if( cost < best_cost ) {
                    best_cost = cost;
                    best_action = a;
                }
            }
        }
        return best_action;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%rdi), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testl %eax, %eax
jle 0xe565
leaq 0x4(%rbx), %r15
leaq 0x28(%rbx), %r12
movss 0x1eb45(%rip), %xmm0    # 0x2d014
movss %xmm0, (%rsp)
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r13d, %r13d
movq 0x8(%r14), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
movl %r13d, %edx
callq *0x30(%rax)
testb %al, %al
je 0xe54a
movq 0x8(%r14), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
movl %r13d, %edx
callq *0x48(%rax)
movss %xmm0, 0x4(%rsp)
movq 0x28(%r14), %rdi
movl (%rdi), %edx
decl %edx
movl %r13d, %esi
movq %r15, %rcx
movq %r12, %r8
movl $0x1, %r9d
callq 0xc026
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
mulss 0x30(%r14), %xmm0
addss 0x4(%rsp), %xmm0
movss (%rsp), %xmm1
ucomiss %xmm1, %xmm0
minss %xmm0, %xmm1
movss %xmm1, (%rsp)
cmovbl %r13d, %ebp
incl %r13d
movq 0x8(%r14), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x10(%rax)
cmpl %eax, %r13d
jl 0xe4dc
jmp 0xe56a
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/utils.h
// Function: Utils::split_request(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
inline void split_request(const std::string &request, std::string &name, std::string &parameter_str) {
    size_t first = request.find_first_of("(");
    size_t last = request.find_last_of(")");
    if( (first != std::string::npos) && (last != std::string::npos) ) {
        name = request.substr(0, first);
        parameter_str = request.substr(1 + first, last - first - 1);
    } else {
        name = request;
    }
    //std::cout << "name=" << name << ", parameters=|" << parameter_str << "|" << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r14
leaq 0x1ef43(%rip), %rsi     # 0x2e0b2
movl $0x1, %ecx
xorl %edx, %edx
callq 0x6390
movq %rax, %r15
leaq 0x1e2d8(%rip), %rsi     # 0x2d45d
movl $0x1, %ecx
movq %r14, %rdi
movq $-0x1, %rdx
callq 0x6480
movq %rax, %r13
cmpq $-0x1, %r15
sete %al
cmpq $-0x1, %r13
sete %cl
orb %al, %cl
jne 0xf225
leaq 0x8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x62b0
movq %r12, %rdi
movq %rbp, %rsi
callq 0x6320
movq (%rbp), %rdi
leaq 0x18(%rsp), %r12
cmpq %r12, %rdi
je 0xf1e1
callq 0x6260
leaq 0x1(%r15), %rdx
notq %r15
addq %r15, %r13
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %r13, %rcx
callq 0x62b0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6320
movq (%r15), %rdi
cmpq %r12, %rdi
je 0xf216
callq 0x6260
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6170
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/hash.h
// Function: Hash::hash_map_t<state_t, Hash::hash_function_t<state_t>>::data_ptr(state_t const&)
Hash::data_t* data_ptr(const T &s) {
        iterator di = lookup(s);
        if( di == end() )
            return push(s, new Hash::data_t(default_value(s)) );
         else
            return (*di).second;
    }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
addq $0x8, %rdi
callq 0x1069e
testq %rax, %rax
je 0x1022d
movq 0x78(%rax), %rax
popq %rbx
popq %r14
popq %r15
retq
movl $0x28, %edi
callq 0x6290
movq %rax, %r15
movq 0x40(%r14), %rdi
testq %rdi, %rdi
je 0x1024e
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x10(%rax)
jmp 0x10251
xorps %xmm0, %xmm0
movss %xmm0, (%r15)
movw $0x0, 0x4(%r15)
movq $0x0, 0x8(%r15)
movl $0xffffffff, 0x10(%r15) # imm = 0xFFFFFFFF
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x18(%r15)
movq %rax, 0x20(%r15)
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
popq %rbx
popq %r14
popq %r15
jmp 0x105fe
movq %rax, %rbx
movq %r15, %rdi
callq 0x6260
movq %rbx, %rdi
callq 0x6410
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/problem.h
// Function: Problem::hash_t<state_t>::best_q_value(state_t const&) const
std::pair<action_t, float> best_q_value(const T &s) const {
        action_t best_action = noop;
        float best_value = std::numeric_limits<float>::max();
        for( action_t a = 0; a < problem_.number_actions(s); ++a ) {
            if( problem_.applicable(s, a) ) {
                float value = q_value(s, a);
                if( value < best_value ) {
                    best_value = value;
                    best_action = a;
                }
            }
        }
        return std::make_pair(best_action, best_value);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq 0x48(%rdi), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testl %eax, %eax
jle 0x10ba1
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movss 0x1c4d5(%rip), %xmm0    # 0x2d014
movss %xmm0, 0x4(%rsp)
xorl %ebp, %ebp
movq 0x48(%r14), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
movl %ebp, %edx
callq *0x30(%rax)
testb %al, %al
je 0x10b78
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq *0x10(%rax)
ucomiss 0x4(%rsp), %xmm0
jae 0x10b78
movl %ebp, %r15d
movss %xmm0, 0x4(%rsp)
incl %ebp
movq 0x48(%r14), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x10(%rax)
cmpl %eax, %ebp
jl 0x10b47
movd 0x4(%rsp), %xmm0
movd %xmm0, %ecx
shlq $0x20, %rcx
movl %r15d, %eax
orq %rcx, %rax
jmp 0x10bab
movabsq $0x7f7fffffffffffff, %rax # imm = 0x7F7FFFFFFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/bonetblai[P]mdp-engine/ctp3/../engine/improved_lao.h
// Function: Algorithm::improved_lao_t<state_t>::policy_graph_t::update(std::__cxx11::list<std::pair<state_t, Hash::data_t*>, std::allocator<std::pair<state_t, Hash::data_t*>>>&)
void update(pair_list &visited) {
            for( list_iterator si = visited.begin(); si != visited.end(); ++si ) {
                std::pair<Problem::action_t, float> p = hash_.best_q_value(si->first);
                si->second->update(p.second);
                hash_.inc_updates();
            }
        }

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq (%rsi), %r15
cmpq %rsi, %r15
je 0x1208c
movq %rsi, %rbx
movq %rdi, %r14
movq 0x8(%r14), %rdi
leaq 0x10(%r15), %rsi
callq 0x10b16
shrq $0x20, %rax
movq 0x80(%r15), %rcx
movl %eax, (%rcx)
movq 0x8(%r14), %rax
incl 0x50(%rax)
movq (%r15), %r15
cmpq %rbx, %r15
jne 0x12063
popq %rbx
popq %r14
popq %r15
retq