// File: /workspace/github_cpp_makefile_star2_O2/yasz24[P]eau2/src/network/../serialize/deserialize.cpp
// Function: Deserializable::deserialize(char*)
Object* Deserializable::deserialize(char* s) {
        String* classString = JSONHelper::getPayloadKey(s);
        char* className = classString->c_str();
        String* valueString = JSONHelper::getPayloadValue(s);
        char* valueName = valueString->c_str();
        //figure out correct deserialization method to call...
        if(0 == strncmp(className,"IntArray", strlen(className))) {
            return new IntArray(s);
        } else if(0 == strncmp(className,"FloatArray", strlen(className))) {
            return new FloatArray(s);
        } else if(0 == strncmp(className,"StringArray", strlen(className))) {
            return new StringArray(s);
        } else if(0 == strncmp(className,"DoubleArray", strlen(className))) {
            return new DoubleArray(s);
        } else if(0 == strncmp(className,"StringColumn", strlen(className))) {
            return new StringColumn(s);
        } else if(0 == strncmp(className,"FloatColumn", strlen(className))) {
            return FloatColumn::deserialize(valueName);
        } else if(0 == strncmp(className,"DoubleColumn", strlen(className))) {
            return DoubleColumn::deserialize(valueName);
        } else if(0 == strncmp(className,"IntColumn", strlen(className))) {
            return new IntColumn(s);
        } else if(0 == strncmp(className,"BoolColumn", strlen(className))) {
            return BoolColumn::deserialize(valueName);
        } else if(0 == strncmp(className, "DataFrame", strlen(className))) {
            return DataFrame::deserialize(valueName);
        } else if(0 == strncmp(className, "Schema", strlen(className))) {
            return new Schema(valueName);
        } else if(0 == strncmp(className, "Array", strlen(className))) {
            return new Array(s);
        } else if(0 == strncmp(className, "Map", strlen(className))) {
            return new Map(s);
        } else if(0 == strncmp(className, "Queue", strlen(className))) {
            return new Queue(s);
        } else if(0 == strncmp(className, "Key", strlen(className))) {
            return new Key(s);
        } else if(0 == strncmp(className, "KeyVal", strlen(className))) {
            return KeyVal::deserialize(valueName);
        } else if(0 == strncmp(className, "Value", strlen(className))) {
            return new Value(s);
        } else if(0 == strncmp(className, "KVStore", strlen(className))) {
            return new KVStore(s);
        } else if(0 == strncmp(className, "Message", strlen(className))) {
            return new Message(s);
        } else if(0 == strncmp(className, "Ack", strlen(className))) {
            return new Ack(s);
        } else if(0 == strncmp(className, "Nack", strlen(className))) {
            return new Nack(s);
        } else if(0 == strncmp(className, "Put", strlen(className))) {
            return new Put(s);
        } else if(0 == strncmp(className, "Reply", strlen(className))) {
            return new Reply(s);
        } else if(0 == strncmp(className, "Get", strlen(className))) {
            return new Get(s);
        } else if(0 == strncmp(className, "WaitAndGet", strlen(className))) {
            return new WaitAndGet(s);
        } else if(0 == strncmp(className, "Status", strlen(className))) {
            return new Status(s);
        } else if(0 == strncmp(className, "Register", strlen(className))) {
            return new Register(s);
        } else if(0 == strncmp(className, "Directory", strlen(className))) {
            return new Directory(s);
        } else {
            std::cout<<"ERROR: Classname picked up: "<<className<<"\n";
        }
        return nullptr;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rsi, %rdi
callq 0x13e80
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r14
movq %rbx, %rdi
callq 0xc014
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r12
movq %r14, %rdi
callq 0x7110
movq %rax, %r15
leaq 0x5548(%rip), %rsi      # 0x184dc
movq %r14, %rdi
movq %rax, %rdx
callq 0x7140
testl %eax, %eax
je 0x13297
leaq 0x57e9(%rip), %rsi      # 0x18797
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x132af
leaq 0x570e(%rip), %rsi      # 0x186d6
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x132c7
leaq 0x550f(%rip), %rsi      # 0x184f1
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x132df
leaq 0x573a(%rip), %rsi      # 0x18736
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x132f7
leaq 0x5855(%rip), %rsi      # 0x1886b
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13319
leaq 0x55e4(%rip), %rsi      # 0x18614
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13329
leaq 0x564a(%rip), %rsi      # 0x18694
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13339
leaq 0x5795(%rip), %rsi      # 0x187f9
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13351
leaq 0x581d(%rip), %rsi      # 0x1889b
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13361
leaq 0x53a3(%rip), %rsi      # 0x1843b
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13371
leaq 0x550e(%rip), %rsi      # 0x185c0
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13389
leaq 0x5342(%rip), %rsi      # 0x1840e
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x133a4
leaq 0x52d8(%rip), %rsi      # 0x183be
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x133bf
leaq 0x52aa(%rip), %rsi      # 0x183aa
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x133da
leaq 0x52d7(%rip), %rsi      # 0x183f1
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x133f5
leaq 0x5470(%rip), %rsi      # 0x185a4
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13405
leaq 0x523e(%rip), %rsi      # 0x1838c
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13420
leaq 0x5d90(%rip), %rsi      # 0x18ef8
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x1343d
leaq 0x58fc(%rip), %rsi      # 0x18a7e
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13458
leaq 0x58e6(%rip), %rsi      # 0x18a82
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13473
leaq 0x5724(%rip), %rsi      # 0x188da
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x1348e
leaq 0x5715(%rip), %rsi      # 0x188e5
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x134a9
leaq 0x5708(%rip), %rsi      # 0x188f2
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x134c4
leaq 0x56e7(%rip), %rsi      # 0x188eb
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x134df
leaq 0x5ce2(%rip), %rsi      # 0x18f00
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x134fa
leaq 0x5103(%rip), %rsi      # 0x1833b
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13515
leaq 0x5cb5(%rip), %rsi      # 0x18f07
movq %r14, %rdi
movq %r15, %rdx
callq 0x7140
testl %eax, %eax
je 0x13530
movq 0x11d54(%rip), %rdi     # 0x24fc0
leaq 0x5c9e(%rip), %rsi      # 0x18f11
callq 0x7240
movq %rax, %rdi
movq %r14, %rsi
callq 0x7240
leaq 0x4e5f(%rip), %rsi      # 0x180e9
movq %rax, %rdi
callq 0x7240
xorl %r14d, %r14d
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xdad2
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x112cc
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xed42
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xb998
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x13f08
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x14040
movq %r12, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x14164
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14288
jmp 0x1330d
movq %r12, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x143c0
movq %r12, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x144e4
pushq $0x50
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %r12, %rsi
callq 0x145a2
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1476a
jmp 0x1330d
pushq $0x30
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x148e2
jmp 0x1330d
pushq $0x28
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14a58
jmp 0x1330d
pushq $0x20
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14b4e
jmp 0x1330d
movq %r12, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x14c2c
pushq $0x20
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14ca0
jmp 0x1330d
movl $0x118, %edi            # imm = 0x118
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14d94
jmp 0x1330d
pushq $0x30
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x14efc
jmp 0x1330d
pushq $0x30
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15074
jmp 0x1330d
pushq $0x30
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x151ec
jmp 0x1330d
pushq $0x40
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15364
jmp 0x1330d
pushq $0x38
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15554
jmp 0x1330d
pushq $0x38
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1572c
jmp 0x1330d
pushq $0x38
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x158e8
jmp 0x1330d
pushq $0x38
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15aa4
jmp 0x1330d
pushq $0x40
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15c38
jmp 0x1330d
pushq $0x48
popq %rdi
callq 0x7250
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15e1e
jmp 0x1330d
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
jmp 0x13577
movq %rax, %rbx
movq %r14, %rdi
callq 0x7220
movq %rbx, %rdi
callq 0x7390