undefined4 FUN_00407540(void)

{
  uint uVar1;
  char *pcVar2;
  uint uVar4;
  undefined4 uVar5;
  char *pcVar3;
  
  uVar5 = 1;
  uVar1 = (uint)CONCAT11(*(undefined1 *)(g_discover_hdr + 2),*(undefined1 *)(g_discover_hdr + 3));
  if (DAT_0042af58 != 1) {
    uVar4 = 0;
    uVar5 = 0;
    pcVar2 = (char *)(g_discover_hdr + 4);
    while( true ) {
      pcVar3 = pcVar2;
      pcVar2 = pcVar3 + 6;
      if (((char *)(g_ethernet_hdr + g_rcvd_pkt_len) < pcVar2) || ((int)uVar1 <= (int)uVar4)) break;
      uVar4 = uVar4 + 1;
      if (((*pcVar3 == g_hwaddr) &&
          (((pcVar3[1] == DAT_0041f029 && (pcVar3[2] == DAT_0041f02a)) &&
           (pcVar3[3] == DAT_0041f02b)))) &&
         ((pcVar3[4] == DAT_0041f02c && (pcVar3[5] == DAT_0041f02d)))) {
        uVar5 = 1;
      }
    }
    if (uVar4 != uVar1) {
      warn("rx_discover: truncated frame: ended at station %d, but numstations claimed %d\n",uVar4,
           uVar1);
    }
  }
  return uVar5;
}