/* WARNING: Type propagation algorithm not settling */

void FUN_004043b8(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  char *pcVar2;
  byte bVar3;
  int iVar4;
  int local_28 [6];
  
  iVar4 = param_4 + 8;
  int_set_mld_version(param_1,1);
  FUN_00401448(7,"Received a ICMPv6 MLDv1 Report for %s on %s/%u\n",iVar4,param_1);
  if (((*(char *)(param_4 + 8) == -1) && (bVar3 = *(byte *)(param_4 + 9) & 0xf, bVar3 != 1)) &&
     (bVar3 != 2)) {
    iVar1 = groupint_get(iVar4,param_1,local_28);
    if (iVar1 == 0) {
      pcVar2 = "Couldn\'t find or create new group %s for %s/%u\n";
    }
    else {
      local_28[1] = 0;
      local_28[2] = 0;
      local_28[3] = 0;
      local_28[4] = 0;
      iVar1 = grpint_refresh(iVar1,local_28 + 1,1);
      if (iVar1 != 0) {
        if (local_28[0] == 0) {
          return;
        }
        FUN_00403ef4(param_1,iVar4);
        return;
      }
      pcVar2 = "Couldn\'t create subscription to %s for %s/%u\n";
    }
    FUN_00401448(4,pcVar2,iVar4,param_1);
  }
  return;
}