// File: /workspace/github_cpp_makefile_star2_O3/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 0x156b2
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r14
movq %rbx, %rdi
callq 0xc82c
movq (%rax), %rcx
movq %rax, %rdi
callq *0x30(%rcx)
movq %rax, %r13
movq %r14, %rdi
callq 0x7100
movq %rax, %r12
leaq 0x8803(%rip), %rsi      # 0x1d5bb
movq %r14, %rdi
movq %rax, %rdx
callq 0x7120
testl %eax, %eax
je 0x151e9
leaq 0x889e(%rip), %rsi      # 0x1d670
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15209
leaq 0x8a59(%rip), %rsi      # 0x1d845
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15229
leaq 0x87a4(%rip), %rsi      # 0x1d5aa
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15249
leaq 0x89b4(%rip), %rsi      # 0x1d7d4
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15269
leaq 0x88d5(%rip), %rsi      # 0x1d70f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15289
leaq 0x8a37(%rip), %rsi      # 0x1d88b
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x152a9
leaq 0x8816(%rip), %rsi      # 0x1d684
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x152c9
leaq 0x877c(%rip), %rsi      # 0x1d604
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x152e9
leaq 0x89b9(%rip), %rsi      # 0x1d85b
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15309
leaq 0x892d(%rip), %rsi      # 0x1d7e9
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15329
leaq 0x8850(%rip), %rsi      # 0x1d726
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15349
leaq 0x85e7(%rip), %rsi      # 0x1d4d7
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15369
leaq 0x8888(%rip), %rsi      # 0x1d792
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15383
leaq 0x87ad(%rip), %rsi      # 0x1d6d1
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1539d
leaq 0x85ae(%rip), %rsi      # 0x1d4ec
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x153b7
leaq 0x87d9(%rip), %rsi      # 0x1d731
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x153d1
leaq 0x88f4(%rip), %rsi      # 0x1d866
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x153fb
leaq 0x8683(%rip), %rsi      # 0x1d60f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15411
leaq 0x86e9(%rip), %rsi      # 0x1d68f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15427
leaq 0x8834(%rip), %rsi      # 0x1d7f4
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15441
leaq 0x88bc(%rip), %rsi      # 0x1d896
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15457
leaq 0x8442(%rip), %rsi      # 0x1d436
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1546d
leaq 0x83fb(%rip), %rsi      # 0x1d409
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1548a
leaq 0x8391(%rip), %rsi      # 0x1d3b9
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x154a7
leaq 0x8363(%rip), %rsi      # 0x1d3a5
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x154c4
leaq 0x8390(%rip), %rsi      # 0x1d3ec
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x154e1
leaq 0x8529(%rip), %rsi      # 0x1d59f
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x154f7
leaq 0x82f7(%rip), %rsi      # 0x1d387
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15517
leaq 0x8e4e(%rip), %rsi      # 0x1def8
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15534
leaq 0x89b5(%rip), %rsi      # 0x1da79
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15551
leaq 0x899f(%rip), %rsi      # 0x1da7d
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1556e
leaq 0x87dd(%rip), %rsi      # 0x1d8d5
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1558b
leaq 0x87ce(%rip), %rsi      # 0x1d8e0
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x155ab
leaq 0x87c1(%rip), %rsi      # 0x1d8ed
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x155cb
leaq 0x87a0(%rip), %rsi      # 0x1d8e6
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x155e8
leaq 0x8da0(%rip), %rsi      # 0x1df00
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15605
leaq 0x81bc(%rip), %rsi      # 0x1d336
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x15622
leaq 0x8d73(%rip), %rsi      # 0x1df07
movq %r14, %rdi
movq %r12, %rdx
callq 0x7120
testl %eax, %eax
je 0x1563f
movq 0x13e22(%rip), %rbx     # 0x28fd0
leaq 0x8d5c(%rip), %rsi      # 0x1df11
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x7290
movq %rbx, %rdi
movq %r14, %rsi
callq 0x7220
leaq 0x7f15(%rip), %rsi      # 0x1d0e9
movl $0x1, %edx
movq %rax, %rdi
callq 0x7290
xorl %r14d, %r14d
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x19a2a
jmp 0x153e9
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x19cea
jmp 0x153e9
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a228
jmp 0x153e9
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1a766
jmp 0x153e9
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1aca4
jmp 0x153e9
movl $0x70, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b1e2
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b720
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b7f4
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b882
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b910
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1b99e
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1ba2c
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xe56e
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1278e
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xfb72
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0xc026
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15792
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 0x159d6
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x15bfc
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x15e22
jmp 0x153e9
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16066
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1628c
movl $0x50, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %r13, %rsi
callq 0x16354
jmp 0x153e9
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x16942
jmp 0x153e9
movl $0x28, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x16c28
jmp 0x153e9
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x16daa
jmp 0x153e9
movq %r13, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16f40
movl $0x20, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0xc306
jmp 0x153e9
movl $0x118, %edi            # imm = 0x118
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17122
jmp 0x153e9
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x173fc
jmp 0x153e9
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17758
jmp 0x153e9
movl $0x30, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x17ab4
jmp 0x153e9
movl $0x40, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1baba
jmp 0x153e9
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1beb0
jmp 0x153e9
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x185a2
jmp 0x153e9
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x18928
jmp 0x153e9
movl $0x38, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x18cae
jmp 0x153e9
movl $0x40, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1901a
jmp 0x153e9
movl $0x48, %edi
callq 0x7230
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1945a
jmp 0x153e9
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
jmp 0x1569e
movq %rax, %rbx
movq %r14, %rdi
callq 0x7200
movq %rbx, %rdi
callq 0x73b0
nop