// File: xjrueda[P]fixprime/src/FixDictionary.cpp
// Function: fprime::FixDictionary::loadProtocols(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void FixDictionary::loadProtocols(string fileName) {
        FixLoader loader;
        Json::Value protocolList = loader.parseFile(fileName);
        if (protocolList.empty()) {
            throw std::runtime_error("Protocol list could not be load");
        } else {
            // Process the protocol list
             std::vector<string> protocolNames = protocolList.getMemberNames();
             
            for (std::vector<string>::iterator itr = protocolNames.begin(); itr != protocolNames.end(); itr++) {
                string protocolSpecFile = protocolList[*itr]["dataFile"].asString();
                Json::Value protocolSpec = loader.parseFile(protocolSpecFile);
                
                if (protocolSpec.empty()) {
                    throw std::runtime_error("Protocol " +  *itr + " could not be load");
                } else {
                    try {
                    fprime::Protocol::ProtocolPtr protocol(new fprime::Protocol); 
                    protocol->setSpecification(protocolSpec);
                    protocol->setVersion(*itr);
                    protocols[*itr] = protocol;
                    protocol->load();
                    } catch (exception& e) {
                        throw std::runtime_error("Protocol " +  *itr + " could not be load. Reason: " + e.what());
                    }
                }
                
            }
            //////////////////////////////
            
        } 
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %rsi, -0x220(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x9b0f0
movq -0x220(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x998d0
jmp 0xbfa90
leaq -0x40(%rbp), %rdi
leaq -0x18(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x99250
jmp 0xbfaa3
leaq -0x60(%rbp), %rdi
callq 0xa4f00
leaq -0x40(%rbp), %rdi
callq 0xa3a40
movb %al, -0x229(%rbp)
jmp 0xbfabd
movb -0x229(%rbp), %al
testb $0x1, %al
jne 0xbfacc
jmp 0xbfb69
movl $0x10, %edi
callq 0x99e80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x238(%rbp)
leaq 0x43428(%rip), %rsi     # 0x102f12
callq 0x99380
jmp 0xbfaf1
movq -0x238(%rbp), %rdi
movq 0x734d9(%rip), %rsi     # 0x132fd8
movq 0x7329a(%rip), %rdx     # 0x132da0
callq 0xa2fe0
jmp 0xc0163
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc0149
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xa4f00
jmp 0xc0149
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc0140
movq -0x238(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
callq 0x9b9c0
jmp 0xc0140
leaq -0x88(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x9c0a0
jmp 0xbfb7b
leaq -0x88(%rbp), %rdi
callq 0xa2870
movq %rax, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xa2b40
movq %rax, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xa0020
testb $0x1, %al
jne 0xbfbbd
jmp 0xc0109
leaq -0x90(%rbp), %rdi
callq 0xa4310
movq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0xa4480
movq %rax, -0x240(%rbp)
jmp 0xbfbde
movq -0x240(%rbp), %rdi
leaq 0x43346(%rip), %rsi     # 0x102f32
callq 0x99470
movq %rax, -0x248(%rbp)
jmp 0xbfbfa
movq -0x248(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0xa3d30
jmp 0xbfc0f
leaq -0x100(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x998d0
jmp 0xbfc24
leaq -0xe0(%rbp), %rdi
leaq -0x18(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0x99250
jmp 0xbfc3d
leaq -0x100(%rbp), %rdi
callq 0xa4f00
leaq -0xe0(%rbp), %rdi
callq 0xa3a40
movb %al, -0x249(%rbp)
jmp 0xbfc5d
movb -0x249(%rbp), %al
testb $0x1, %al
jne 0xbfc6c
jmp 0xbfdab
movb $0x1, -0x141(%rbp)
movl $0x10, %edi
callq 0x99e80
movq %rax, -0x258(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xa4310
movq %rax, %rdx
leaq 0x432dc(%rip), %rsi     # 0x102f76
leaq -0x140(%rbp), %rdi
callq 0x9cf50
jmp 0xbfca8
leaq 0x43270(%rip), %rdx     # 0x102f1f
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x98100
jmp 0xbfcc4
movq -0x258(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0xa2430
jmp 0xbfcd9
movq -0x258(%rbp), %rdi
movb $0x0, -0x141(%rbp)
movq 0x732ea(%rip), %rsi     # 0x132fd8
movq 0x730ab(%rip), %rdx     # 0x132da0
callq 0xa2fe0
jmp 0xc0163
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc0117
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc00fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xa4f00
jmp 0xc00fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc00ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xbfd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xbfd83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0xa4f00
leaq -0x140(%rbp), %rdi
callq 0xa4f00
testb $0x1, -0x141(%rbp)
jne 0xbfd9a
jmp 0xbfda6
movq -0x258(%rbp), %rdi
callq 0x9b9c0
jmp 0xc00ef
movl $0x120, %edi            # imm = 0x120
callq 0x9dc00
movq %rax, -0x260(%rbp)
jmp 0xbfdbe
movq -0x260(%rbp), %rdi
callq 0x9ab50
jmp 0xbfdcc
movq -0x260(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x9a6b0
jmp 0xbfde1
leaq -0x158(%rbp), %rdi
callq 0x9ebd0
movq %rax, -0x268(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xa2280
jmp 0xbfe09
movq -0x268(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x9da40
jmp 0xbfe1e
leaq -0x180(%rbp), %rdi
callq 0x9a180
leaq -0x158(%rbp), %rdi
callq 0x9ebd0
movq %rax, -0x270(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xa4310
movq %rax, %rsi
leaq -0x1a0(%rbp), %rdi
callq 0x998d0
jmp 0xbfe5a
movq -0x270(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xa2840
jmp 0xbfe6f
leaq -0x1a0(%rbp), %rdi
callq 0xa4f00
movq -0x228(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x280(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xa4310
movq -0x280(%rbp), %rdi
movq %rax, %rsi
callq 0x99b10
movq %rax, -0x278(%rbp)
jmp 0xbfeb1
movq -0x278(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movq %rsi, -0x288(%rbp)
callq 0xa4020
movq -0x288(%rbp), %rdi
callq 0x9ebd0
movq %rax, %rdi
callq 0xa1090
jmp 0xbfee1
leaq -0x158(%rbp), %rdi
callq 0x97400
jmp 0xc00bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xbff66
movq -0x260(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
callq 0x9d660
jmp 0xbff66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xbff5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x9a180
jmp 0xbff5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xa4f00
leaq -0x158(%rbp), %rdi
callq 0x97400
movl -0x6c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xc00ef
movq -0x68(%rbp), %rdi
callq 0x99540
movq %rax, -0x1a8(%rbp)
movb $0x1, -0x209(%rbp)
movl $0x10, %edi
callq 0x99e80
movq %rax, -0x290(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xa4310
movq %rax, %rdx
leaq 0x42fc2(%rip), %rsi     # 0x102f76
leaq -0x208(%rbp), %rdi
callq 0x9cf50
jmp 0xbffc2
leaq 0x42f72(%rip), %rdx     # 0x102f3b
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x98100
jmp 0xbffde
movq -0x1a8(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rdx
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x98100
jmp 0xc0006
movq -0x290(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xa2430
jmp 0xc001b
movq -0x290(%rbp), %rdi
movb $0x0, -0x209(%rbp)
movq 0x72fa8(%rip), %rsi     # 0x132fd8
movq 0x72d69(%rip), %rdx     # 0x132da0
callq 0xa2fe0
jmp 0xc0163
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc009b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc008f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xc0083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xa4f00
leaq -0x1e8(%rbp), %rdi
callq 0xa4f00
leaq -0x208(%rbp), %rdi
callq 0xa4f00
testb $0x1, -0x209(%rbp)
jne 0xc00a6
jmp 0xc00b2
movq -0x290(%rbp), %rdi
callq 0x9b9c0
callq 0xa2520
jmp 0xc00b9
jmp 0xc00ef
jmp 0xc00bd
leaq -0xe0(%rbp), %rdi
callq 0x9a180
leaq -0xb8(%rbp), %rdi
callq 0xa4f00
leaq -0x90(%rbp), %rdi
xorl %esi, %esi
callq 0x99220
movq %rax, -0x218(%rbp)
jmp 0xbfb8e
leaq -0xe0(%rbp), %rdi
callq 0x9a180
leaq -0xb8(%rbp), %rdi
callq 0xa4f00
jmp 0xc0117
leaq -0x88(%rbp), %rdi
callq 0x9ba40
jmp 0xc0125
leaq -0x88(%rbp), %rdi
callq 0x9ba40
jmp 0xc0140
leaq -0x40(%rbp), %rdi
callq 0x9a180
leaq -0x18(%rbp), %rdi
callq 0x9a5c0
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x9a180
leaq -0x18(%rbp), %rdi
callq 0x9a5c0
movq -0x68(%rbp), %rdi
callq 0xa3520
movq %rax, %rdi
callq 0xa6900
nopw %cs:(%rax,%rax)