// File: /workspace/github_cpp_makefile_star2_O2/xjrueda[P]fixprime/src/DataHolderFactory.cpp
// Function: fprime::DataHolderFactory::create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
fprime::DataHolder::DataTypePtr DataHolderFactory::create(string dataTypeId) {
        try {
            fprime::DataHolder::DataTypePtr MyDataType;
            fprime::DataTypeList selectedDataType = fprime::DataHolderFactory::DataTypes.DataTypes[dataTypeId];

            if (selectedDataType != 0) {
                switch (selectedDataType) {
                    case INVALIDDATATYPE:
                    {
                        throw string("Invalid dataType call for ") + dataTypeId;
                        break;
                    }
                    case INT:
                    {
                        MyDataType.reset(new IntDataHolder);
                        break;
                    }
                    case LENGTH:
                    case SEQNUM:
                    case TAGNUM:
                    case NUMINGROUP:
                    {
                        MyDataType.reset(new UIntDataHolder);
                        break;
                    }
                    case DAYOFMONTH:
                    case FLOAT:
                    case QTY:
                    case PRICE:
                    case PRICEOFFSET:
                    case AMT:
                    case PERCENTAGE:
                    case CHAR:
                    case BOOLEAN:
                    case STRING:
                    case MULTIPLECHARVALUE:
                    case MULTIPLESTRINGVALUE:
                    case COUNTRY:
                    case CURRENCY:
                    case EXCHANGE:
                    case MONTHYEAR:
                    case UTCTIMESTAMP:
                    case UTCTIMEONLY:
                    case UTCDATEONLY:
                    case LOCALMKTDATE:
                    case TZTIMEONLY:
                    case TZTIMESTAMP:
                    case DATA:
                    case PATTERN:
                    case TENOR:
                    case RESERVED100PLUS:
                    case RESERVED1000PLUS:
                    case RESERVED4000PLUS:
                    case XMLDATA:
                    case LANGUAGE:
                    {
                        MyDataType.reset(new StringDataHolder);
                        break;
                    }
                }
                return MyDataType;

            } else
                throw runtime_error("Invalid function call for " + dataTypeId);


        } catch (exception& e) {
            throw runtime_error("at DataFunctionFactory: " + string(e.what()));
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rdx, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
leaq 0x8(%rsi), %rdi
movq %rdx, %rsi
callq 0x3e530
movl (%rax), %eax
cmpq $0x23, %rax
ja 0x48866
leaq 0x1d18d(%rip), %rcx     # 0x659cc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
pushq $0x30
popq %rdi
callq 0x405e0
movq %rax, %r12
movq %rax, %rdi
callq 0x3f000
movq %rbx, %rdi
movq %r12, %rsi
callq 0x41570
movq %rbx, %rax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
pushq $0x30
popq %rdi
callq 0x405e0
movq %rax, %r12
movq %rax, %rdi
callq 0x40570
movq %rbx, %rdi
movq %r12, %rsi
callq 0x41740
jmp 0x48866
pushq $0x30
popq %rdi
callq 0x405e0
movq %rax, %r12
movq %rax, %rdi
callq 0x3fc00
movq %rbx, %rdi
movq %r12, %rsi
callq 0x42460
jmp 0x48866
pushq $0x10
popq %rdi
callq 0x3f0e0
movq %rax, %r12
leaq 0x1d1b2(%rip), %rsi     # 0x65a7a
leaq 0x10(%rsp), %rdi
movq %r14, %rdx
callq 0x40140
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r12, %rdi
callq 0x41c90
xorl %ebp, %ebp
movq 0x366ea(%rip), %rsi     # 0x7efd8
movq 0x364d3(%rip), %rdx     # 0x7edc8
movq %r12, %rdi
callq 0x42050
jmp 0x489c8
movq %rdx, %r15
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x3ef50
testb %bpl, %bpl
jne 0x4891f
jmp 0x48943
movq %rdx, %r15
movq %rax, %r14
movq %r12, %rdi
callq 0x3faf0
jmp 0x48943
jmp 0x4892d
jmp 0x4892d
movq %rdx, %r15
movq %rax, %r14
movq %r12, %rdi
callq 0x403f0
jmp 0x48943
movq %rdx, %r15
movq %rax, %r14
addq $0x8, %rbx
movq %rbx, %rdi
callq 0x40650
cmpl $0x1, %r15d
jne 0x489fe
movq %r14, %rdi
callq 0x3ed90
movq %rax, %r14
pushq $0x10
popq %rdi
callq 0x3f0e0
movq %rax, %rbx
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %rax, %rsi
callq 0x3ed70
leaq 0x1d104(%rip), %rsi     # 0x65a95
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x41f00
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x41c90
xorl %ebp, %ebp
movq 0x3661f(%rip), %rsi     # 0x7efd8
movq 0x36408(%rip), %rdx     # 0x7edc8
movq %rbx, %rdi
callq 0x42050
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x3ef50
jmp 0x489dd
movq %rax, %r14
movb $0x1, %bpl
leaq 0x30(%rsp), %rdi
callq 0x3ef50
testb %bpl, %bpl
jne 0x489f1
jmp 0x489f9
movq %rax, %r14
movq %rbx, %rdi
callq 0x3faf0
callq 0x41d30
movq %r14, %rdi
callq 0x42200
movq %rax, %rdi
callq 0x43915