// File: dguglielmi[P]dlan-linux-software/tools/../common/hpmmes.h
// Function: HomePlugAvMMEs::CDispatcher::Dispatch(CMACAddress const&, IPacket const&)
virtual bool Dispatch(const CMACAddress& adapter, const IPacket& pkt)
    {
      if(CMACHeader::IsValid(pkt, uEtherType))
      {
        if(ThunderGetVersion::CConfirm::IsValid(pkt))
          OnThunderGetVersionConfirm(adapter, ThunderGetVersion::CConfirm(pkt));
        else if(ThunderReadModuleData::CConfirm::IsValid(pkt))
          OnThunderReadModuleDataConfirm(adapter, ThunderReadModuleData::CConfirm(pkt));
        else if(ThunderNetworkInfo::CConfirm::IsValid(pkt))
          OnThunderNetworkInfoConfirm(adapter, ThunderNetworkInfo::CConfirm(pkt));
        else if(ThunderNetworkInfoV1::CConfirm::IsValid(pkt))
          OnThunderNetworkInfoV1Confirm(adapter, ThunderNetworkInfoV1::CConfirm(pkt));
        else if(ThunderSetKey::CConfirm::IsValid(pkt))
          OnThunderSetKeyConfirm(adapter, ThunderSetKey::CConfirm(pkt));
        else if(ThunderGetManufacturingString::CConfirm::IsValid(pkt))
          OnThunderGetManufacturingStringConfirm(adapter, ThunderGetManufacturingString::CConfirm(pkt));
        else
          OnUnknownMme(adapter, pkt);

        return true;
      }
      else
        return false;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1100, %rsp           # imm = 0x1100
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x10d0(%rbp)
movq -0x20(%rbp), %rdi
movl $0x88e1, %esi           # imm = 0x88E1
callq 0xb810
testb $0x1, %al
jne 0x7849
jmp 0x7a1e
movq -0x20(%rbp), %rdi
callq 0xbd20
testb $0x1, %al
jne 0x7858
jmp 0x788d
movq -0x18(%rbp), %rax
movq %rax, -0x10d8(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x77(%rbp), %rdi
callq 0xbd70
movq -0x10d0(%rbp), %rdi
movq -0x10d8(%rbp), %rsi
movq (%rdi), %rax
leaq -0x77(%rbp), %rdx
callq *0x8(%rax)
jmp 0x7a18
movq -0x20(%rbp), %rdi
callq 0xbdb0
testb $0x1, %al
jne 0x789c
jmp 0x78d7
movq -0x18(%rbp), %rax
movq %rax, -0x10e0(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x49b(%rbp), %rdi
callq 0xbe00
movq -0x10d0(%rbp), %rdi
movq -0x10e0(%rbp), %rsi
movq (%rdi), %rax
leaq -0x49b(%rbp), %rdx
callq *0x10(%rax)
jmp 0x7a16
movq -0x20(%rbp), %rdi
callq 0xbe40
testb $0x1, %al
jne 0x78e6
jmp 0x7921
movq -0x18(%rbp), %rax
movq %rax, -0x10e8(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xa80(%rbp), %rdi
callq 0xbec0
movq -0x10d0(%rbp), %rdi
movq -0x10e8(%rbp), %rsi
movq (%rdi), %rax
leaq -0xa80(%rbp), %rdx
callq *0x18(%rax)
jmp 0x7a14
movq -0x20(%rbp), %rdi
callq 0xbf00
testb $0x1, %al
jne 0x7930
jmp 0x796b
movq -0x18(%rbp), %rax
movq %rax, -0x10f0(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x105c(%rbp), %rdi
callq 0xbf80
movq -0x10d0(%rbp), %rdi
movq -0x10f0(%rbp), %rsi
movq (%rdi), %rax
leaq -0x105c(%rbp), %rdx
callq *0x20(%rax)
jmp 0x7a12
movq -0x20(%rbp), %rdi
callq 0xbfc0
testb $0x1, %al
jne 0x797a
jmp 0x79b2
movq -0x18(%rbp), %rax
movq %rax, -0x10f8(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x1071(%rbp), %rdi
callq 0xc010
movq -0x10d0(%rbp), %rdi
movq -0x10f8(%rbp), %rsi
movq (%rdi), %rax
leaq -0x1071(%rbp), %rdx
callq *0x28(%rax)
jmp 0x7a10
movq -0x20(%rbp), %rdi
callq 0xc050
testb $0x1, %al
jne 0x79c1
jmp 0x79f9
movq -0x18(%rbp), %rax
movq %rax, -0x1100(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x10c7(%rbp), %rdi
callq 0xc0a0
movq -0x10d0(%rbp), %rdi
movq -0x1100(%rbp), %rsi
movq (%rdi), %rax
leaq -0x10c7(%rbp), %rdx
callq *0x30(%rax)
jmp 0x7a0e
movq -0x10d0(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
callq *0x38(%rax)
jmp 0x7a10
jmp 0x7a12
jmp 0x7a14
jmp 0x7a16
jmp 0x7a18
movb $0x1, -0x1(%rbp)
jmp 0x7a22
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1100, %rsp           # imm = 0x1100
popq %rbp
retq