// File: bonetblai[P]mdp-engine/rect/./rect.h
// Function: problem_t::next(state_t const&, int, std::vector<std::pair<state_t, float>, std::allocator<std::pair<state_t, float>>>&) const
virtual void next(const state_t &s, Problem::action_t a, std::vector<std::pair<state_t, float> > &outcomes) const {
        ++expansions_;
        outcomes.clear();
        if( a != fwd ) {
            outcomes.reserve(1);
            outcomes.push_back(std::make_pair(s, 1.0));
            if( a == ::left ) {
                outcomes.back().first.left(cols_);
            } else if( a == ::right ) {
                outcomes.back().first.right(cols_);
            }
        } else if( a == fwd ) {
            outcomes.reserve(3);
            if( p_ > 0 ) {
                outcomes.push_back(std::make_pair(s, p_));
                outcomes.back().first.fwd(rows_);
            }
            if( 1 - p_ > 0 ) {
                outcomes.push_back(std::make_pair(s, (1 - p_) / 2));
                outcomes.back().first.left(cols_);
                outcomes.push_back(std::make_pair(s, (1 - p_) / 2));
                outcomes.back().first.right(cols_);
            }
        }
    }

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movl %edx, 0xa4(%rsp)
movq %rcx, 0x98(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq 0x98(%rsp), %rdi
callq 0xbaa0
cmpl $0x0, 0xa4(%rsp)
je 0xb81d
movq 0x98(%rsp), %rdi
movl $0x1, %esi
callq 0xbac0
movq 0x98(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xa8(%rsp), %rsi
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x78(%rsp)
leaq 0x80(%rsp), %rdi
movq %rdi, 0x38(%rsp)
leaq 0x78(%rsp), %rdx
callq 0xbc30
movq 0x38(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0xbc70
jmp 0xb75b
movq 0x30(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xbc00
jmp 0xb76f
leaq 0x90(%rsp), %rdi
callq 0xbcb0
leaq 0x80(%rsp), %rdi
callq 0xbcc0
cmpl $0x1, 0xa4(%rsp)
jne 0xb7ef
movq 0x98(%rsp), %rdi
callq 0xbcd0
movq %rax, %rdi
movq 0x40(%rsp), %rax
movl 0x1c(%rax), %esi
callq 0xbd10
jmp 0xb818
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
jmp 0xb7dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
leaq 0x90(%rsp), %rdi
callq 0xbcb0
leaq 0x80(%rsp), %rdi
callq 0xbcc0
jmp 0xba47
cmpl $0x2, 0xa4(%rsp)
jne 0xb816
movq 0x98(%rsp), %rdi
callq 0xbcd0
movq %rax, %rdi
movq 0x40(%rsp), %rax
movl 0x1c(%rax), %esi
callq 0xbd50
jmp 0xb818
jmp 0xba3f
cmpl $0x0, 0xa4(%rsp)
jne 0xba3d
movq 0x98(%rsp), %rdi
movl $0x3, %esi
callq 0xbac0
movq 0x40(%rsp), %rax
movss 0x20(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0xb8d7
movq 0x40(%rsp), %rdx
movq 0x98(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xa8(%rsp), %rsi
addq $0x20, %rdx
leaq 0x64(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xbd90
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xbc00
jmp 0xb891
leaq 0x64(%rsp), %rdi
callq 0xbcb0
movq 0x98(%rsp), %rdi
callq 0xbcd0
movq %rax, %rdi
movq 0x40(%rsp), %rax
movl 0x18(%rax), %esi
callq 0xbdd0
jmp 0xb8d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
leaq 0x64(%rsp), %rdi
callq 0xbcb0
jmp 0xba47
movq 0x40(%rsp), %rax
movss 0x44724(%rip), %xmm0    # 0x50008
subss 0x20(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0xba3b
movq 0x40(%rsp), %rax
movq 0x98(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movq 0xa8(%rsp), %rsi
movss 0x20(%rax), %xmm1
movss 0x446ec(%rip), %xmm0    # 0x50008
subss %xmm1, %xmm0
movss 0x446e8(%rip), %xmm1    # 0x50010
mulss %xmm1, %xmm0
movss %xmm0, 0x58(%rsp)
leaq 0x5c(%rsp), %rdi
movq %rdi, 0x18(%rsp)
leaq 0x58(%rsp), %rdx
callq 0xbe10
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xbc00
jmp 0xb957
leaq 0x5c(%rsp), %rdi
callq 0xbcb0
movq 0x98(%rsp), %rdi
callq 0xbcd0
movq %rax, %rdi
movq 0x40(%rsp), %rax
movl 0x1c(%rax), %esi
callq 0xbd10
movq 0x40(%rsp), %rax
movq 0x98(%rsp), %rcx
movq %rcx, (%rsp)
movq 0xa8(%rsp), %rsi
movss 0x20(%rax), %xmm1
movss 0x44664(%rip), %xmm0    # 0x50008
subss %xmm1, %xmm0
movss 0x44660(%rip), %xmm1    # 0x50010
mulss %xmm1, %xmm0
movss %xmm0, 0x4c(%rsp)
leaq 0x50(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x4c(%rsp), %rdx
callq 0xbe10
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xbc00
jmp 0xb9de
leaq 0x50(%rsp), %rdi
callq 0xbcb0
movq 0x98(%rsp), %rdi
callq 0xbcd0
movq %rax, %rdi
movq 0x40(%rsp), %rax
movl 0x1c(%rax), %esi
callq 0xbd50
jmp 0xba3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
leaq 0x5c(%rsp), %rdi
callq 0xbcb0
jmp 0xba47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x70(%rsp)
movl %eax, 0x6c(%rsp)
leaq 0x50(%rsp), %rdi
callq 0xbcb0
jmp 0xba47
jmp 0xba3d
jmp 0xba3f
addq $0xb8, %rsp
retq
movq 0x70(%rsp), %rdi
callq 0x6480
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)