// File: /workspace/github_cpp_makefile_star2_O1/yasz24[P]eau2/src/network/../serialize/deserialize.cpp
// Function: Deserializable::deserialize(char*, KVStore*)
Object* Deserializable::deserialize(char* s, KVStore* kv) {
        String* classString = JSONHelper::getPayloadKey(s);
        char* className = classString->c_str();
        //std::cout << "deserialization class: " << className << "\n";
        String* valueString = JSONHelper::getPayloadValue(s);
        char* valueName = valueString->c_str();
        //figure out correct deserialization method to call...
        if (0 == strncmp(className, "Array", strlen(className))) {
            return new Array(s, kv);
        } else if(0 == strncmp(className, "IntDistributedArray", strlen(className))) {
            return new IntDistributedArray(s, kv);
        } else if(0 == strncmp(className, "FloatDistributedArray", strlen(className))) {
            return new FloatDistributedArray(s, kv);
        } else if(0 == strncmp(className, "DoubleDistributedArray", strlen(className))) {
            return new DoubleDistributedArray(s, kv);
        } else if(0 == strncmp(className, "BoolDistributedArray", strlen(className))) {
            return new BoolDistributedArray(s, kv);
        } else if(0 == strncmp(className, "StringDistributedArray", strlen(className))) {
            return new StringDistributedArray(s, kv);
        } else if(0 == strncmp(className, "DistributedDataFrame", strlen(className))) {
            return new DistributedDataFrame(s, kv);
        } else if(0 == strncmp(className, "DistributedIntColumn", strlen(className))) {
            return new DistributedIntColumn(s, kv);
        } else if(0 == strncmp(className, "DistributedDoubleColumn", strlen(className))) {
            return new DistributedDoubleColumn(s, kv);
        } else if(0 == strncmp(className, "DistributedFloatColumn", strlen(className))) {
            return new DistributedFloatColumn(s, kv);
        } else if(0 == strncmp(className, "DistributedBoolColumn", strlen(className))) {
            return new DistributedBoolColumn(s, kv);
        } else if(0 == strncmp(className, "DistributedStringColumn", strlen(className))) {
            return new DistributedStringColumn(s, kv);
        } else 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, kv);
        } 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, kv);
        } else if(0 == strncmp(className, "Reply", strlen(className))) {
            return new Reply(s, kv);
        } 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 %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r15
movq %rsi, %rbx
movq %rsi, %rdi
callq 0x15b22
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r14
movq %rbx, %rdi
callq 0xc9f0
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r13
movq %r14, %rdi
callq 0x7100
movq %rax, %r12
leaq 0x8393(%rip), %rsi      # 0x1d5bb
movq %r14, %rdi
movq %rax, %rdx
callq 0x7120
testl %eax, %eax
je 0x15659
leaq 0x842e(%rip), %rsi      # 0x1d670
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15679
leaq 0x85e9(%rip), %rsi      # 0x1d845
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15699
leaq 0x8334(%rip), %rsi      # 0x1d5aa
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x156b9
leaq 0x8544(%rip), %rsi      # 0x1d7d4
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x156d9
leaq 0x8465(%rip), %rsi      # 0x1d70f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x156f9
leaq 0x85c7(%rip), %rsi      # 0x1d88b
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15719
leaq 0x83a6(%rip), %rsi      # 0x1d684
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15739
leaq 0x830c(%rip), %rsi      # 0x1d604
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15759
leaq 0x8549(%rip), %rsi      # 0x1d85b
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15779
leaq 0x84bd(%rip), %rsi      # 0x1d7e9
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15799
leaq 0x83e0(%rip), %rsi      # 0x1d726
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x157b9
leaq 0x8177(%rip), %rsi      # 0x1d4d7
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x157d9
leaq 0x8418(%rip), %rsi      # 0x1d792
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x157f3
leaq 0x833d(%rip), %rsi      # 0x1d6d1
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1580d
leaq 0x813e(%rip), %rsi      # 0x1d4ec
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15827
leaq 0x8369(%rip), %rsi      # 0x1d731
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15841
leaq 0x8484(%rip), %rsi      # 0x1d866
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1586b
leaq 0x8213(%rip), %rsi      # 0x1d60f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15881
leaq 0x8279(%rip), %rsi      # 0x1d68f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15897
leaq 0x83c4(%rip), %rsi      # 0x1d7f4
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x158b1
leaq 0x844c(%rip), %rsi      # 0x1d896
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x158c7
leaq 0x7fd2(%rip), %rsi      # 0x1d436
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x158dd
leaq 0x7f8b(%rip), %rsi      # 0x1d409
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x158fa
leaq 0x7f21(%rip), %rsi      # 0x1d3b9
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15917
leaq 0x7ef3(%rip), %rsi      # 0x1d3a5
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15934
leaq 0x7f20(%rip), %rsi      # 0x1d3ec
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15951
leaq 0x80b9(%rip), %rsi      # 0x1d59f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15967
leaq 0x7e87(%rip), %rsi      # 0x1d387
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15987
leaq 0x89de(%rip), %rsi      # 0x1def8
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x159a4
leaq 0x8545(%rip), %rsi      # 0x1da79
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x159c1
leaq 0x852f(%rip), %rsi      # 0x1da7d
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x159de
leaq 0x836d(%rip), %rsi      # 0x1d8d5
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x159fb
leaq 0x835e(%rip), %rsi      # 0x1d8e0
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15a1b
leaq 0x8351(%rip), %rsi      # 0x1d8ed
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15a3b
leaq 0x8330(%rip), %rsi      # 0x1d8e6
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15a58
leaq 0x8930(%rip), %rsi      # 0x1df00
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15a75
leaq 0x7d4c(%rip), %rsi      # 0x1d336
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15a92
leaq 0x8903(%rip), %rsi      # 0x1df07
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15aaf
movq 0x149b2(%rip), %rbx     # 0x29fd0
leaq 0x88ec(%rip), %rsi      # 0x1df11
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x7290
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7220
leaq 0x7aa5(%rip), %rsi      # 0x1d0e9
movl $0x1, %edx
movq %rax, %rdi
callq 0x7290
xorl %r14d, %r14d
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x19ee6
jmp 0x15859
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a1ac
jmp 0x15859
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a702
jmp 0x15859
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ac58
jmp 0x15859
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b1ae
jmp 0x15859
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b704
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bc5a
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bd2e
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bdbc
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1be4a
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bed8
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bf66
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xe7da
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x12b94
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xfe46
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xc1a0
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15c1c
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x15e60
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16086
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x162ac
jmp 0x15859
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x164f0
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16716
movl $0x50, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %r13, %rsi
callq 0x167de
jmp 0x15859
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x16dce
jmp 0x15859
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x170ba
jmp 0x15859
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1723c
jmp 0x15859
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x173d4
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0xc4c8
jmp 0x15859
movl $0x118, %edi            # imm = 0x118
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x175b8
jmp 0x15859
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17896
jmp 0x15859
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17bf8
jmp 0x15859
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17f5a
jmp 0x15859
movl $0x40, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1bff4
jmp 0x15859
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1c3f0
jmp 0x15859
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x18a5a
jmp 0x15859
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x18de6
jmp 0x15859
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x19172
jmp 0x15859
movl $0x40, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x194d6
jmp 0x15859
movl $0x48, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x19904
jmp 0x15859
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
jmp 0x15b0e
movq %rax, %rbx
movq %r14, %rdi
callq 0x7200
movq %rbx, %rdi
callq 0x73b0
nop