// File: dguglielmi[P]dlan-linux-software/common/dlanmonitor.cpp
// Function: CDlanMonitor::SendLocalDeviceBroadcasts(std::_Rb_tree_iterator<std::pair<CMACAddress const, CDlanMonitor::NetwAdapter>>)
void CDlanMonitor::SendLocalDeviceBroadcasts(
  std::map<CMACAddress,NetwAdapter>::iterator itNIC)
{
  if((m_eMode & eMonitorLocalThunderbolt) == eMonitorLocalThunderbolt)
  {
    itNIC->second.queuePendingPackets.push(
      new HomePlugAvMMEs::ThunderReadModuleData::CRequest(CMACAddress(HomePlugAvMMEs::cIntellonLocalBroadcastAddr), 
      itNIC->first, HomePlugAvMMEs::ThunderReadModuleData::ePib, 64, 36));

    itNIC->second.queuePendingPackets.push(
      new HomePlugAvMMEs::ThunderNetworkInfo::CRequest(CMACAddress::Broadcast(), itNIC->first));
      
    itNIC->second.bNetworkInfoV1Sent = false;

    itNIC->second.queuePendingPackets.push(
      new HomePlugAvMMEs::ThunderGetVersion::CRequest(CMACAddress::Broadcast(), itNIC->first));

    itNIC->second.queuePendingPackets.push(
      new HomePlugAvMMEs::ThunderReadModuleData::CRequest(CMACAddress::Broadcast(), 
      itNIC->first, HomePlugAvMMEs::ThunderReadModuleData::ePib, 208, 36));
  }

  if((m_eMode & eMonitorLocalTurbo) == eMonitorLocalTurbo)
  {
    itNIC->second.queuePendingPackets.push(
      new HomePlugMMEs::TurboDeviceDescription::CRequest(CMACAddress::Broadcast(), itNIC->first));
  }

  if((m_eMode & eMonitorLocalHP1) == eMonitorLocalHP1)
  {
    itNIC->second.queuePendingPackets.push(
      new HomePlugMMEs::Int51NetStat::CRequest(CMACAddress::Broadcast(), itNIC->first));
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
movl 0x20(%rax), %eax
andl $0x10, %eax
cmpl $0x10, %eax
jne 0x12a9e
leaq -0x8(%rbp), %rdi
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0x98(%rbp)
movl $0x28, %edi
callq 0x5320
movq %rax, -0x90(%rbp)
movb $0x1, -0x2d(%rbp)
leaq 0x25d30(%rip), %rsi     # 0x384bf
leaq -0x1e(%rbp), %rdi
callq 0x182d0
jmp 0x1279a
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0x90(%rbp), %rdi
movq %rax, %rdx
leaq -0x1e(%rbp), %rsi
movl $0x2, %ecx
movl $0x40, %r8d
movl $0x24, %r9d
callq 0x18300
jmp 0x127c9
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rax
movb $0x0, -0x2d(%rbp)
movq %rax, -0x18(%rbp)
leaq -0x18(%rbp), %rsi
callq 0x182a0
jmp 0x127ea
leaq -0x1e(%rbp), %rdi
callq 0x6b70
leaq -0x8(%rbp), %rdi
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0xa8(%rbp)
movl $0x20, %edi
callq 0x5320
movq %rax, -0xa0(%rbp)
movb $0x1, -0x3f(%rbp)
leaq -0x3e(%rbp), %rdi
callq 0x6940
jmp 0x12829
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0xa0(%rbp), %rdi
movq %rax, %rdx
leaq -0x3e(%rbp), %rsi
callq 0x18370
jmp 0x12847
movq -0xa8(%rbp), %rdi
movq -0xa0(%rbp), %rax
movb $0x0, -0x3f(%rbp)
movq %rax, -0x38(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x182a0
jmp 0x12868
leaq -0x3e(%rbp), %rdi
callq 0x6b70
leaq -0x8(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x17d40
movq -0xc0(%rbp), %rdi
movb $0x0, 0x10(%rax)
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0xb8(%rbp)
movl $0x20, %edi
callq 0x5320
movq %rax, -0xb0(%rbp)
movb $0x1, -0x4f(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x6940
jmp 0x128be
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0xb0(%rbp), %rdi
movq %rax, %rdx
leaq -0x4e(%rbp), %rsi
callq 0x183c0
jmp 0x128dc
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rax
movb $0x0, -0x4f(%rbp)
movq %rax, -0x48(%rbp)
leaq -0x48(%rbp), %rsi
callq 0x182a0
jmp 0x128fd
leaq -0x4e(%rbp), %rdi
callq 0x6b70
leaq -0x8(%rbp), %rdi
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0xd0(%rbp)
movl $0x28, %edi
callq 0x5320
movq %rax, -0xc8(%rbp)
movb $0x1, -0x5f(%rbp)
leaq -0x5e(%rbp), %rdi
callq 0x6940
jmp 0x1293c
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0xc8(%rbp), %rdi
movq %rax, %rdx
leaq -0x5e(%rbp), %rsi
movl $0x2, %ecx
movl $0xd0, %r8d
movl $0x24, %r9d
callq 0x18300
jmp 0x1296b
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rax
movb $0x0, -0x5f(%rbp)
movq %rax, -0x58(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x182a0
jmp 0x1298c
leaq -0x5e(%rbp), %rdi
callq 0x6b70
jmp 0x12a9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x129bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x2d(%rbp)
jne 0x129c5
jmp 0x129d6
movq -0x90(%rbp), %rdi
movl $0x28, %esi
callq 0x5330
jmp 0x12c52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x129fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x3e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x3f(%rbp)
jne 0x12a06
jmp 0x12a17
movq -0xa0(%rbp), %rdi
movl $0x20, %esi
callq 0x5330
jmp 0x12c52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x12a3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x4e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x4f(%rbp)
jne 0x12a47
jmp 0x12a58
movq -0xb0(%rbp), %rdi
movl $0x20, %esi
callq 0x5330
jmp 0x12c52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x12a80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x5f(%rbp)
jne 0x12a88
jmp 0x12a99
movq -0xc8(%rbp), %rdi
movl $0x28, %esi
callq 0x5330
jmp 0x12c52
movq -0x88(%rbp), %rax
movl 0x20(%rax), %eax
andl $0x4, %eax
cmpl $0x4, %eax
jne 0x12b75
leaq -0x8(%rbp), %rdi
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0xe0(%rbp)
movl $0x20, %edi
callq 0x5320
movq %rax, -0xd8(%rbp)
movb $0x1, -0x6f(%rbp)
leaq -0x6e(%rbp), %rdi
callq 0x6940
jmp 0x12aea
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0xd8(%rbp), %rdi
movq %rax, %rdx
leaq -0x6e(%rbp), %rsi
callq 0x18410
jmp 0x12b08
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rax
movb $0x0, -0x6f(%rbp)
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rsi
callq 0x182a0
jmp 0x12b29
leaq -0x6e(%rbp), %rdi
callq 0x6b70
jmp 0x12b75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x12b57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x6e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x6f(%rbp)
jne 0x12b5f
jmp 0x12b70
movq -0xd8(%rbp), %rdi
movl $0x20, %esi
callq 0x5330
jmp 0x12c52
movq -0x88(%rbp), %rax
movl 0x20(%rax), %eax
andl $0x1, %eax
cmpl $0x1, %eax
jne 0x12c49
leaq -0x8(%rbp), %rdi
callq 0x17d40
addq $0x198, %rax            # imm = 0x198
movq %rax, -0xf0(%rbp)
movl $0xd8, %edi
callq 0x5320
movq %rax, -0xe8(%rbp)
movb $0x1, -0x7f(%rbp)
leaq -0x7e(%rbp), %rdi
callq 0x6940
jmp 0x12bc1
leaq -0x8(%rbp), %rdi
callq 0x17d40
movq -0xe8(%rbp), %rdi
movq %rax, %rdx
leaq -0x7e(%rbp), %rsi
callq 0x18470
jmp 0x12bdf
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rax
movb $0x0, -0x7f(%rbp)
movq %rax, -0x78(%rbp)
leaq -0x78(%rbp), %rsi
callq 0x182a0
jmp 0x12c00
leaq -0x7e(%rbp), %rdi
callq 0x6b70
jmp 0x12c49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x12c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x7e(%rbp), %rdi
callq 0x6b70
testb $0x1, -0x7f(%rbp)
jne 0x12c36
jmp 0x12c47
movq -0xe8(%rbp), %rdi
movl $0xd8, %esi
callq 0x5330
jmp 0x12c52
addq $0xf0, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x5530
nopl (%rax,%rax)