// File: xjrueda[P]fixprime/include/Session.h
// Function: fprime::Session::inboundProcessor()
void inboundProcessor() {
            try {
                setIbRunning(true);
                fprime::FixParser parser;
                parser.setProtocol(protocolPtr);
                parser.setSeparator('\001');
                while (ibpRunning) {
                    unique_lock<mutex> lock(inboundLock);
                    while (inboundQueue.empty() && ibpRunning) {
                        inboundCondition.wait(lock);
                    }

                    if (ibpRunning) {
                        string rawMsg = inboundQueue.front();
                        inboundQueue.pop();
                        lock.unlock();
                        try {

                            fprime::FixParser::FlatMessage flatMessage = parser.explode(rawMsg);
                            if (flatMessage.orderedMap[0].value != protocolPtr->getVersion())
                                throw runtime_error("Invalid Message");
                            fprime::Message fixMsg = parser.parseMessage(flatMessage);
                            string callbackKey = fixMsg.getHeader()->getChild(8)->getValue() + "-" + fixMsg.getHeader()->getChild(35)->getValue();
                            callbacksManager->executeCallback(callbackKey, fixMsg, this);

                        } catch (exception& e) {
                            cout << "error in inboundprocessor " + string(e.what()) << " in message " << rawMsg << endl;
                            //TODO log error
                        }
                    }
                }
            } catch (exception& ex) {
                // TODO: log error
                cout << "General exception in inboundprocessor " + string(ex.what()) << endl;
                this->stop();
            }
            cout << "Inbound processor stopped" << endl;
            cout.flush();
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x450, %rsp            # imm = 0x450
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
movl $0x1, %esi
callq 0x9e7c0
jmp 0xa7c76
leaq -0x38(%rbp), %rdi
callq 0x99da0
jmp 0xa7c81
movq -0x3c8(%rbp), %rsi
addq $0x8, %rsi
leaq -0x48(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x9ed20
movq -0x3d0(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0xa47a0
jmp 0xa7cae
leaq -0x48(%rbp), %rdi
callq 0x97400
leaq -0x38(%rbp), %rdi
movl $0x1, %esi
callq 0xa2ff0
jmp 0xa7cc7
jmp 0xa7cc9
movq -0x3c8(%rbp), %rax
testb $0x1, 0x1d9(%rax)
je 0xa847e
movq -0x3c8(%rbp), %rsi
addq $0x1e0, %rsi            # imm = 0x1E0
leaq -0x58(%rbp), %rdi
callq 0xa3cc0
jmp 0xa7cf6
jmp 0xa7cf8
movq -0x3c8(%rbp), %rdi
addq $0x300, %rdi            # imm = 0x300
callq 0x9d6d0
movb %al, -0x3d1(%rbp)
jmp 0xa7d13
movb -0x3d1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x3d2(%rbp)
jne 0xa7d28
jmp 0xa7d3b
movq -0x3c8(%rbp), %rax
movb 0x1d9(%rax), %al
movb %al, -0x3d2(%rbp)
movb -0x3d2(%rbp), %al
testb $0x1, %al
jne 0xa7d47
jmp 0xa7dad
movq -0x3c8(%rbp), %rdi
addq $0x208, %rdi            # imm = 0x208
leaq -0x58(%rbp), %rsi
callq 0x98820
jmp 0xa7cf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8495
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x97400
jmp 0xa848c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa848c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8473
movq -0x3c8(%rbp), %rax
testb $0x1, 0x1d9(%rax)
je 0xa8465
movq -0x3c8(%rbp), %rdi
addq $0x300, %rdi            # imm = 0x300
callq 0xa0600
movq %rax, -0x3e0(%rbp)
jmp 0xa7ddd
movq -0x3e0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x998d0
jmp 0xa7def
movq -0x3c8(%rbp), %rdi
addq $0x300, %rdi            # imm = 0x300
callq 0x9e9f0
jmp 0xa7e04
leaq -0x58(%rbp), %rdi
callq 0x970e0
jmp 0xa7e0f
leaq -0x100(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x998d0
jmp 0xa7e21
leaq -0xe0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0x9eac0
jmp 0xa7e3a
leaq -0x100(%rbp), %rdi
callq 0xa4f00
movl $0x0, -0x104(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0x104(%rbp), %rsi
callq 0x98150
movq %rax, -0x3e8(%rbp)
jmp 0xa7e6c
movq -0x3c8(%rbp), %rdi
movq -0x3e8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x3f0(%rbp)
addq $0x8, %rdi
callq 0x9ebd0
movq %rax, %rsi
leaq -0x128(%rbp), %rdi
callq 0x9f390
jmp 0xa7e9f
movq -0x3f0(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xa3ba0
movb %al, -0x3f1(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xa4f00
movb -0x3f1(%rbp), %al
testb $0x1, %al
jne 0xa7ed3
jmp 0xa7f84
movl $0x10, %edi
callq 0x99e80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x400(%rbp)
leaq 0x5a1cf(%rip), %rsi     # 0x1020c0
callq 0x99380
jmp 0xa7ef8
movq -0x400(%rbp), %rdi
movq 0x8b0d2(%rip), %rsi     # 0x132fd8
movq 0x8ae93(%rip), %rdx     # 0x132da0
callq 0xa2fe0
jmp 0xa862e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa845a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa82e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xa4f00
jmp 0xa82e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa82d9
movq -0x400(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x9b9c0
jmp 0xa82d9
leaq -0x1e8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x9d4d0
jmp 0xa7f99
leaq -0x180(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
callq 0x9cd30
jmp 0xa7fb2
leaq -0x1e8(%rbp), %rdi
callq 0x9b4f0
leaq -0x268(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x99580
jmp 0xa7fd3
leaq -0x268(%rbp), %rdi
callq 0x98080
movq %rax, %rsi
leaq -0x258(%rbp), %rdi
movl $0x8, %edx
callq 0x9e5d0
jmp 0xa7ff5
leaq -0x258(%rbp), %rdi
callq 0x98080
movq %rax, %rsi
leaq -0x248(%rbp), %rdi
callq 0x97be0
jmp 0xa8012
leaq 0x5a0b7(%rip), %rdx     # 0x1020d0
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x9fb30
jmp 0xa802e
leaq -0x2a8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x99580
jmp 0xa8043
leaq -0x2a8(%rbp), %rdi
callq 0x98080
movq %rax, %rsi
leaq -0x298(%rbp), %rdi
movl $0x23, %edx
callq 0x9e5d0
jmp 0xa8065
leaq -0x298(%rbp), %rdi
callq 0x98080
movq %rax, %rsi
leaq -0x288(%rbp), %rdi
callq 0x97be0
jmp 0xa8082
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
leaq -0x288(%rbp), %rdx
callq 0xa15c0
jmp 0xa809e
leaq -0x288(%rbp), %rdi
callq 0xa4f00
leaq -0x298(%rbp), %rdi
callq 0x997e0
leaq -0x2a8(%rbp), %rdi
callq 0x997e0
leaq -0x228(%rbp), %rdi
callq 0xa4f00
leaq -0x248(%rbp), %rdi
callq 0xa4f00
leaq -0x258(%rbp), %rdi
callq 0x997e0
leaq -0x268(%rbp), %rdi
callq 0x997e0
movq -0x3c8(%rbp), %rdi
addq $0x18, %rdi
callq 0x9b080
movq %rax, -0x408(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x998d0
jmp 0xa811e
leaq -0x320(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x9a4f0
jmp 0xa8133
movq -0x3c8(%rbp), %rcx
movq -0x408(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
leaq -0x320(%rbp), %rdx
callq 0xa30b0
jmp 0xa8156
leaq -0x320(%rbp), %rdi
callq 0x9b5d0
leaq -0x2c8(%rbp), %rdi
callq 0xa4f00
leaq -0x208(%rbp), %rdi
callq 0xa4f00
leaq -0x180(%rbp), %rdi
callq 0x9b5d0
leaq -0xe0(%rbp), %rdi
callq 0x9b4f0
jmp 0xa83fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x9b4f0
jmp 0xa82d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa82cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8273
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8267
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa825b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa824f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8243
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8237
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x288(%rbp), %rdi
callq 0xa4f00
leaq -0x298(%rbp), %rdi
callq 0x997e0
leaq -0x2a8(%rbp), %rdi
callq 0x997e0
leaq -0x228(%rbp), %rdi
callq 0xa4f00
leaq -0x248(%rbp), %rdi
callq 0xa4f00
leaq -0x258(%rbp), %rdi
callq 0x997e0
leaq -0x268(%rbp), %rdi
callq 0x997e0
jmp 0xa82cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa82c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa82b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x9b5d0
leaq -0x2c8(%rbp), %rdi
callq 0xa4f00
leaq -0x208(%rbp), %rdi
callq 0xa4f00
leaq -0x180(%rbp), %rdi
callq 0x9b5d0
leaq -0xe0(%rbp), %rdi
callq 0x9b4f0
movl -0x14(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xa845a
movq -0x10(%rbp), %rdi
callq 0x99540
movq %rax, -0x328(%rbp)
movq -0x328(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x418(%rbp)
leaq -0x369(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0xa35e0
movq -0x418(%rbp), %rsi
movq -0x410(%rbp), %rdx
leaq -0x368(%rbp), %rdi
callq 0xa0510
jmp 0xa834b
leaq 0x59d80(%rip), %rsi     # 0x1020d2
leaq -0x348(%rbp), %rdi
leaq -0x368(%rbp), %rdx
callq 0xa2cb0
jmp 0xa8367
movq 0x8aaca(%rip), %rdi     # 0x132e38
leaq -0x348(%rbp), %rsi
callq 0x9cf40
movq %rax, -0x420(%rbp)
jmp 0xa8383
movq -0x420(%rbp), %rdi
leaq 0x59d5c(%rip), %rsi     # 0x1020ed
callq 0x9dba0
movq %rax, -0x428(%rbp)
jmp 0xa839f
movq -0x428(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x9cf40
movq %rax, -0x430(%rbp)
jmp 0xa83b8
movq -0x430(%rbp), %rdi
movq 0x8a89a(%rip), %rsi     # 0x132c60
callq 0x9e070
jmp 0xa83cd
leaq -0x348(%rbp), %rdi
callq 0xa4f00
leaq -0x368(%rbp), %rdi
callq 0xa4f00
leaq -0x369(%rbp), %rdi
callq 0x9e350
callq 0xa2520
jmp 0xa83f8
jmp 0xa83fa
leaq -0x78(%rbp), %rdi
callq 0xa4f00
jmp 0xa8465
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8445
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa8439
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x348(%rbp), %rdi
callq 0xa4f00
leaq -0x368(%rbp), %rdi
callq 0xa4f00
leaq -0x369(%rbp), %rdi
callq 0x9e350
callq 0xa2520
jmp 0xa8458
jmp 0xa845a
leaq -0x78(%rbp), %rdi
callq 0xa4f00
jmp 0xa8473
leaq -0x58(%rbp), %rdi
callq 0x98ee0
jmp 0xa7cc9
leaq -0x58(%rbp), %rdi
callq 0x98ee0
jmp 0xa848c
leaq -0x38(%rbp), %rdi
callq 0x9e660
jmp 0xa8583
leaq -0x38(%rbp), %rdi
callq 0x9e660
movl -0x14(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xa861d
movq -0x10(%rbp), %rdi
callq 0x99540
movq %rax, -0x378(%rbp)
movq -0x378(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x440(%rbp)
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0xa35e0
movq -0x440(%rbp), %rsi
movq -0x438(%rbp), %rdx
leaq -0x3b8(%rbp), %rdi
callq 0xa0510
jmp 0xa84fb
leaq 0x59bf8(%rip), %rsi     # 0x1020fa
leaq -0x398(%rbp), %rdi
leaq -0x3b8(%rbp), %rdx
callq 0xa2cb0
jmp 0xa8517
movq 0x8a91a(%rip), %rdi     # 0x132e38
leaq -0x398(%rbp), %rsi
callq 0x9cf40
movq %rax, -0x448(%rbp)
jmp 0xa8533
movq -0x448(%rbp), %rdi
movq 0x8a71f(%rip), %rsi     # 0x132c60
callq 0x9e070
jmp 0xa8548
leaq -0x398(%rbp), %rdi
callq 0xa4f00
leaq -0x3b8(%rbp), %rdi
callq 0xa4f00
leaq -0x3b9(%rbp), %rdi
callq 0x9e350
movq -0x3c8(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0xa857e
callq 0xa2520
movq 0x8a8ae(%rip), %rdi     # 0x132e38
leaq 0x59b90(%rip), %rsi     # 0x102121
callq 0x9dba0
movq %rax, %rdi
movq 0x8a6c0(%rip), %rsi     # 0x132c60
callq 0x9e070
movq 0x8a88c(%rip), %rdi     # 0x132e38
callq 0x9b6d0
addq $0x450, %rsp            # imm = 0x450
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa85fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0xa85ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
leaq -0x398(%rbp), %rdi
callq 0xa4f00
leaq -0x3b8(%rbp), %rdi
callq 0xa4f00
leaq -0x3b9(%rbp), %rdi
callq 0x9e350
jmp 0xa8614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0xa2520
jmp 0xa861b
jmp 0xa861d
movq -0x10(%rbp), %rdi
callq 0xa3520
movq %rax, %rdi
callq 0xa6900
nop