// File: /workspace/github_cpp_makefile_star2_O2/Mirrvin[P]DragonsResurrectingInc/./specialists/TailSpecialist.cpp
// Function: TailSpecialist::handle(packet_t)
bool handle(packet_t packet) {
        bool success = true;
        switch(packet.status.MPI_TAG){
            case NEED_TAIL:
                success = this->handleNeedTail(packet); break;
            case NEED_TAIL_ACK:
                success = this->handleNeedTailAck(packet); break;
            case FINISH_NEED_TAIL:
                success = this->handleFinishNeedTail(packet); break;
            case AVENGERS_ASSEMBLED:
                success = this->handleAvengersAssembled(packet); break;
            case REQUEST_ORDER_PRIORITY:
                success = this->handleRequestOrderPriority(packet); break;
            case REPLY_ORDER_PRIORITY:
                success = this->handleReplyOrderPriority(packet); break;
            case FREE_ORDER_PRIORITY:
                success = this->handleFreeOrderPriority(packet); break;
            case NEW_ORDER:
                success = this->handleNewOrder(packet); break;
            case DONE_PAPERWORK:
                success = this->handleDonePaperwork(packet); break;
            case RESURRECTION_FINISHED:
                success = this->handleResurrectionFinished(packet); break;
            case NEED_TAIL_POSITIVE:
                success = this->handleNeedTailPositive(packet); break;
            case NEED_TAIL_NEGATIVE:
                success = this->handleNeedTailNegative(packet); break;
            case END:
                success = this->handleEnd(packet); break;
            default:
                printf("%u: No handler for tag %d in HeadSpecialist\n",Monitor::getLamport(), packet.status.MPI_TAG); break;
        }
        return success;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x28, %rsp
movl 0x24(%rbp), %ebx
leal -0x64(%rbx), %ecx
cmpl $0x13, %ecx
ja 0x3d91
movq %rdi, %rax
leaq 0x139a(%rip), %rdx      # 0x5084
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
incl 0x24(%rax)
cmpb $0x1, 0x29(%rax)
je 0x3de7
jmp 0x3def
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x4050
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x3eda
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x40d8
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x415e
cmpb $0x1, 0x2a(%rax)
jne 0x3def
movl 0x8(%rax), %ecx
leaq -0x30(%rbp), %rdi
pushq $0x77
popq %rdx
movq %rax, %rsi
callq 0x4b00
jmp 0x3def
leaq 0x10(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq %rdx, -0x10(%rbp)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movaps %xmm1, -0x20(%rbp)
movaps %xmm0, -0x30(%rbp)
cmpb $0x0, 0x10(%rax)
jne 0x3def
addq $0x30, %rax
leaq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x2fe0
jmp 0x3def
callq 0x45d2
leaq 0x1432(%rip), %rdi      # 0x51cf
movl %eax, %esi
movl %ebx, %edx
xorl %eax, %eax
callq 0x2030
jmp 0x3def
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x3e06
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x4e4a
andl $0x0, 0x18(%rax)
xorl %ecx, %ecx
movb %cl, 0x28(%rax)
movb %cl, 0x10(%rax)
jmp 0x3def
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x3f8a
decl 0x20(%rax)
jne 0x3def
movq %rax, %rdi
callq 0x4286
movb $0x1, %al
addq $0x28, %rsp
popq %rbx
popq %rbp
retq
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %rbp
jmp 0x4014