// File: vianna274[P]dropbox/src/Server.cpp
// Function: Dropbox::Server::listenToClient(Dropbox::WrapperSocket*, Dropbox::User*)
void Server::listenToClient(WrapperSocket *socket, User *user)
{   
    bool exit = false;
    FileRecord * temp = NULL;
    FileRecord fileTemp;
    vector<FileRecord> tempFiles = user->getFileRecords();
	while(!exit){
		MessageData *data = socket->receive(TIMEOUT_OFF);
        user->lockDevices();
        switch(data->type){
            case TYPE_REQUEST_DOWNLOAD:
                tempFiles = user->getFileRecords();
                fileTemp = this->getRecord(tempFiles, string(data->payload));
                sendFile(socket, user->getDirPath() + string(data->payload), fileTemp, string(data->username));
                break;
            case TYPE_DELETE: 
                deleteFile(user->getDirPath() + string(data->payload));
                user->removeFileRecord(string(data->payload));
                propagateDelete(string(data->payload), string(data->username));
                break;
            case TYPE_LIST_SERVER:
                sendFileList(socket, user->getFileRecords());
                break;
            case TYPE_SEND_FILE_NO_RECORD:
                receiveFile(socket, string(data->payload), user->getDirPath());
                user->updateFileRecord(this->getRecord(this->getFileList(user->getDirPath()), string(data->payload)));
                sendFileRecord(socket, string(data->payload), user);
                this->propagateFile(string(data->payload), string(data->username));
                break;
            case TYPE_REQUEST_UPLOAD_ALL:
                sendUploadAll(socket, user->getDirPath(), getFileList(user->getDirPath()), user->getUsername());
                break;
            case TYPE_REQUEST_UPDATE:
                receiveAskUpdate(socket, user);
                break;
            case EXIT:
                exitUser(socket, user);
                exit = true;
                break;
        }
        user->unlockDevices();
	}

    delete socket;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x980, %rsp            # imm = 0x980
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x778(%rbp)
movb $0x0, -0x19(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x128(%rbp), %rdi
callq 0x16cd0
movb -0x19(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xf7bc
jmp 0x104e6
movq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x18090
movq %rax, -0x780(%rbp)
jmp 0xf7d0
movq -0x780(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x18(%rbp), %rdi
callq 0x12440
jmp 0xf7e9
movq -0x130(%rbp), %rax
movl (%rax), %eax
addl $-0x4, %eax
movl %eax, %ecx
movq %rcx, -0x788(%rbp)
subl $0x1d, %eax
ja 0x104d6
movq -0x788(%rbp), %rax
leaq 0x9b67(%rip), %rcx      # 0x1937c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10524
movq -0x18(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x16cd0
jmp 0xf847
leaq -0x128(%rbp), %rdi
movq %rdi, -0x790(%rbp)
leaq -0x158(%rbp), %rsi
movq %rsi, -0x798(%rbp)
callq 0x72b0
movq -0x798(%rbp), %rdi
callq 0x6a00
movq -0x790(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x6bc0
jmp 0xf889
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x7a8(%rbp)
leaq -0x279(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x3620
movq -0x7a8(%rbp), %rsi
movq -0x7a0(%rbp), %rdx
leaq -0x278(%rbp), %rdi
callq 0x3480
jmp 0xf8ca
movq -0x778(%rbp), %rsi
leaq -0x240(%rbp), %rdi
leaq -0x258(%rbp), %rdx
leaq -0x278(%rbp), %rcx
callq 0x9dd0
jmp 0xf8ed
leaq -0x110(%rbp), %rdi
leaq -0x240(%rbp), %rsi
movl $0xe8, %edx
callq 0x3300
leaq -0x278(%rbp), %rdi
callq 0x3280
leaq -0x279(%rbp), %rdi
callq 0x33e0
leaq -0x258(%rbp), %rdi
callq 0x6a00
movq -0x10(%rbp), %rax
movq %rax, -0x7b0(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
callq 0x17040
jmp 0xf946
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x7c0(%rbp)
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x3620
movq -0x7c0(%rbp), %rsi
movq -0x7b8(%rbp), %rdx
leaq -0x2e0(%rbp), %rdi
callq 0x3480
jmp 0xf987
leaq -0x2a0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
leaq -0x2e0(%rbp), %rdx
callq 0x6cb0
jmp 0xf9a3
leaq -0x3d0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
movl $0xe8, %edx
callq 0x3300
movq -0x130(%rbp), %rax
addq $0xfb4, %rax            # imm = 0xFB4
movq %rax, -0x7d0(%rbp)
leaq -0x3f1(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x3620
movq -0x7d0(%rbp), %rsi
movq -0x7c8(%rbp), %rdx
leaq -0x3f0(%rbp), %rdi
callq 0x3480
jmp 0xf9fe
movq %rsp, %rdi
movl $0x1d, %ecx
leaq -0x3d0(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x7b0(%rbp), %rsi
movq -0x778(%rbp), %rdi
leaq -0x2a0(%rbp), %rdx
leaq -0x3f0(%rbp), %rcx
callq 0x9ee0
jmp 0xfa33
leaq -0x3f0(%rbp), %rdi
callq 0x3280
leaq -0x3f1(%rbp), %rdi
callq 0x33e0
leaq -0x2a0(%rbp), %rdi
callq 0x3280
leaq -0x2e0(%rbp), %rdi
callq 0x3280
leaq -0x2e1(%rbp), %rdi
callq 0x33e0
leaq -0x2c0(%rbp), %rdi
callq 0x3280
jmp 0x104d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfab2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x3280
leaq -0x279(%rbp), %rdi
callq 0x33e0
leaq -0x258(%rbp), %rdi
callq 0x6a00
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfb4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfb41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfb29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x3280
leaq -0x3f1(%rbp), %rdi
callq 0x33e0
leaq -0x2a0(%rbp), %rdi
callq 0x3280
leaq -0x2e0(%rbp), %rdi
callq 0x3280
leaq -0x2e1(%rbp), %rdi
callq 0x33e0
leaq -0x2c0(%rbp), %rdi
callq 0x3280
jmp 0x10524
movq -0x18(%rbp), %rsi
leaq -0x438(%rbp), %rdi
callq 0x17040
jmp 0xfb7c
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x7e0(%rbp)
leaq -0x459(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x3620
movq -0x7e0(%rbp), %rsi
movq -0x7d8(%rbp), %rdx
leaq -0x458(%rbp), %rdi
callq 0x3480
jmp 0xfbbd
leaq -0x418(%rbp), %rdi
leaq -0x438(%rbp), %rsi
leaq -0x458(%rbp), %rdx
callq 0x6cb0
jmp 0xfbd9
movq -0x778(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0xba10
jmp 0xfbee
leaq -0x418(%rbp), %rdi
callq 0x3280
leaq -0x458(%rbp), %rdi
callq 0x3280
leaq -0x459(%rbp), %rdi
callq 0x33e0
leaq -0x438(%rbp), %rdi
callq 0x3280
movq -0x18(%rbp), %rax
movq %rax, -0x7f8(%rbp)
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x7f0(%rbp)
leaq -0x481(%rbp), %rdi
movq %rdi, -0x7e8(%rbp)
callq 0x3620
movq -0x7f0(%rbp), %rsi
movq -0x7e8(%rbp), %rdx
leaq -0x480(%rbp), %rdi
callq 0x3480
jmp 0xfc6a
movq -0x7f8(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x16d00
jmp 0xfc7f
leaq -0x480(%rbp), %rdi
callq 0x3280
leaq -0x481(%rbp), %rdi
callq 0x33e0
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x808(%rbp)
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x3620
movq -0x808(%rbp), %rsi
movq -0x800(%rbp), %rdx
leaq -0x4a8(%rbp), %rdi
callq 0x3480
jmp 0xfcd8
movq -0x130(%rbp), %rax
addq $0xfb4, %rax            # imm = 0xFB4
movq %rax, -0x818(%rbp)
leaq -0x4d1(%rbp), %rdi
movq %rdi, -0x810(%rbp)
callq 0x3620
movq -0x818(%rbp), %rsi
movq -0x810(%rbp), %rdx
leaq -0x4d0(%rbp), %rdi
callq 0x3480
jmp 0xfd1b
movq -0x778(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x4d0(%rbp), %rdx
callq 0x10540
jmp 0xfd37
leaq -0x4d0(%rbp), %rdi
callq 0x3280
leaq -0x4d1(%rbp), %rdi
callq 0x33e0
leaq -0x4a8(%rbp), %rdi
callq 0x3280
leaq -0x4a9(%rbp), %rdi
callq 0x33e0
jmp 0x104d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfdbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfdb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x3280
leaq -0x458(%rbp), %rdi
callq 0x3280
leaq -0x459(%rbp), %rdi
callq 0x33e0
leaq -0x438(%rbp), %rdi
callq 0x3280
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfe0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x3280
leaq -0x481(%rbp), %rdi
callq 0x33e0
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfe7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0xfe64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x3280
leaq -0x4d1(%rbp), %rdi
callq 0x33e0
leaq -0x4a8(%rbp), %rdi
callq 0x3280
leaq -0x4a9(%rbp), %rdi
callq 0x33e0
jmp 0x10524
movq -0x10(%rbp), %rax
movq %rax, -0x820(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x4f0(%rbp), %rdi
callq 0x16cd0
jmp 0xfeaa
movq -0x820(%rbp), %rsi
movq -0x778(%rbp), %rdi
leaq -0x4f0(%rbp), %rdx
callq 0x9ac0
jmp 0xfec6
leaq -0x4f0(%rbp), %rdi
callq 0x6a00
jmp 0x104d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x6a00
jmp 0x10524
movq -0x10(%rbp), %rax
movq %rax, -0x838(%rbp)
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x830(%rbp)
leaq -0x511(%rbp), %rdi
movq %rdi, -0x828(%rbp)
callq 0x3620
movq -0x830(%rbp), %rsi
movq -0x828(%rbp), %rdx
leaq -0x510(%rbp), %rdi
callq 0x3480
jmp 0xff46
movq -0x18(%rbp), %rsi
leaq -0x538(%rbp), %rdi
callq 0x17040
jmp 0xff58
movq -0x838(%rbp), %rsi
movq -0x778(%rbp), %rdi
leaq -0x510(%rbp), %rdx
leaq -0x538(%rbp), %rcx
callq 0x9c30
jmp 0xff7b
leaq -0x538(%rbp), %rdi
callq 0x3280
leaq -0x510(%rbp), %rdi
callq 0x3280
leaq -0x511(%rbp), %rdi
callq 0x33e0
movq -0x18(%rbp), %rsi
movq %rsi, -0x840(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x17040
jmp 0xffb8
movq -0x778(%rbp), %rsi
leaq -0x638(%rbp), %rdi
leaq -0x658(%rbp), %rdx
callq 0x9910
jmp 0xffd4
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x850(%rbp)
leaq -0x679(%rbp), %rdi
movq %rdi, -0x848(%rbp)
callq 0x3620
movq -0x850(%rbp), %rsi
movq -0x848(%rbp), %rdx
leaq -0x678(%rbp), %rdi
callq 0x3480
jmp 0x10015
movq -0x778(%rbp), %rsi
leaq -0x620(%rbp), %rdi
leaq -0x638(%rbp), %rdx
leaq -0x678(%rbp), %rcx
callq 0x9dd0
jmp 0x10038
movq %rsp, %rdi
movl $0x1d, %ecx
leaq -0x620(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq -0x840(%rbp), %rdi
callq 0x16e50
jmp 0x10058
leaq -0x678(%rbp), %rdi
callq 0x3280
leaq -0x679(%rbp), %rdi
callq 0x33e0
leaq -0x638(%rbp), %rdi
callq 0x6a00
leaq -0x658(%rbp), %rdi
callq 0x3280
movq -0x10(%rbp), %rax
movq %rax, -0x868(%rbp)
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x860(%rbp)
leaq -0x6a1(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0x3620
movq -0x860(%rbp), %rsi
movq -0x858(%rbp), %rdx
leaq -0x6a0(%rbp), %rdi
callq 0x3480
jmp 0x100d4
movq -0x868(%rbp), %rsi
movq -0x778(%rbp), %rdi
movq -0x18(%rbp), %rcx
leaq -0x6a0(%rbp), %rdx
callq 0x10a90
jmp 0x100f4
leaq -0x6a0(%rbp), %rdi
callq 0x3280
leaq -0x6a1(%rbp), %rdi
callq 0x33e0
movq -0x130(%rbp), %rax
addq $0x14, %rax
movq %rax, -0x878(%rbp)
leaq -0x6c9(%rbp), %rdi
movq %rdi, -0x870(%rbp)
callq 0x3620
movq -0x878(%rbp), %rsi
movq -0x870(%rbp), %rdx
leaq -0x6c8(%rbp), %rdi
callq 0x3480
jmp 0x1014d
movq -0x130(%rbp), %rax
addq $0xfb4, %rax            # imm = 0xFB4
movq %rax, -0x888(%rbp)
leaq -0x6f1(%rbp), %rdi
movq %rdi, -0x880(%rbp)
callq 0x3620
movq -0x888(%rbp), %rsi
movq -0x880(%rbp), %rdx
leaq -0x6f0(%rbp), %rdi
callq 0x3480
jmp 0x10190
movq -0x778(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
leaq -0x6f0(%rbp), %rdx
callq 0x107c0
jmp 0x101ac
leaq -0x6f0(%rbp), %rdi
callq 0x3280
leaq -0x6f1(%rbp), %rdi
callq 0x33e0
leaq -0x6c8(%rbp), %rdi
callq 0x3280
leaq -0x6c9(%rbp), %rdi
callq 0x33e0
jmp 0x104d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10233
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10227
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x3280
leaq -0x510(%rbp), %rdi
callq 0x3280
leaq -0x511(%rbp), %rdi
callq 0x33e0
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x102a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x1028a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x3280
leaq -0x679(%rbp), %rdi
callq 0x33e0
leaq -0x638(%rbp), %rdi
callq 0x6a00
leaq -0x658(%rbp), %rdi
callq 0x3280
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x102e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x6a0(%rbp), %rdi
callq 0x3280
leaq -0x6a1(%rbp), %rdi
callq 0x33e0
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10354
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x1033c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x3280
leaq -0x6f1(%rbp), %rdi
callq 0x33e0
leaq -0x6c8(%rbp), %rdi
callq 0x3280
leaq -0x6c9(%rbp), %rdi
callq 0x33e0
jmp 0x10524
movq -0x10(%rbp), %rax
movq %rax, -0x890(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x718(%rbp), %rdi
callq 0x17040
jmp 0x10382
movq -0x18(%rbp), %rsi
leaq -0x750(%rbp), %rdi
callq 0x17040
jmp 0x10394
movq -0x778(%rbp), %rsi
leaq -0x730(%rbp), %rdi
leaq -0x750(%rbp), %rdx
callq 0x9910
jmp 0x103b0
movq -0x18(%rbp), %rsi
leaq -0x770(%rbp), %rdi
callq 0x17010
jmp 0x103c2
movq -0x890(%rbp), %rsi
movq -0x778(%rbp), %rdi
leaq -0x718(%rbp), %rdx
leaq -0x730(%rbp), %rcx
leaq -0x770(%rbp), %r8
callq 0xb5c0
jmp 0x103ec
leaq -0x770(%rbp), %rdi
callq 0x3280
leaq -0x730(%rbp), %rdi
callq 0x6a00
leaq -0x750(%rbp), %rdi
callq 0x3280
leaq -0x718(%rbp), %rdi
callq 0x3280
jmp 0x104d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x10487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x1047b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x770(%rbp), %rdi
callq 0x3280
leaq -0x730(%rbp), %rdi
callq 0x6a00
leaq -0x750(%rbp), %rdi
callq 0x3280
leaq -0x718(%rbp), %rdi
callq 0x3280
jmp 0x10524
movq -0x778(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x10bb0
jmp 0x104ba
jmp 0x104d6
movq -0x778(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x10d10
jmp 0x104d2
movb $0x1, -0x19(%rbp)
movq -0x18(%rbp), %rdi
callq 0x12460
jmp 0x104e1
jmp 0xf7ae
movq -0x10(%rbp), %rax
movq %rax, -0x898(%rbp)
cmpq $0x0, %rax
je 0x1050f
movq -0x898(%rbp), %rdi
callq 0x17770
movq -0x898(%rbp), %rdi
callq 0x3370
leaq -0x128(%rbp), %rdi
callq 0x6a00
addq $0x980, %rsp            # imm = 0x980
popq %rbp
retq
leaq -0x128(%rbp), %rdi
callq 0x6a00
movq -0x138(%rbp), %rdi
callq 0x3610
nopl (%rax)