void FUN_00404a90(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)
{
int iVar1;
int iVar2;
char *pcVar3;
byte bVar4;
int iVar5;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14;
iVar5 = param_4 + 8;
int_set_mld_version(param_1,1);
FUN_00401448(7,"Received a ICMPv6 MLDv1 Reduction for %s on %s/%u\n",iVar5,param_1);
if (((*(char *)(param_4 + 8) == -1) && (bVar4 = *(byte *)(param_4 + 9) & 0xf, bVar4 != 1)) &&
(bVar4 != 2)) {
iVar1 = group_find(iVar5);
if (iVar1 == 0) {
pcVar3 = "Couldn\'t find group %s for reduction of %s/%u\n";
}
else {
iVar1 = grpint_find(*(undefined4 *)(iVar1 + 0x10),param_1);
if (iVar1 == 0) {
pcVar3 = "Couldn\'t find the grpint %s for reduction of %s/%u\n";
}
else {
local_20 = 0;
local_1c = 0;
local_18 = 0;
local_14 = 0;
iVar2 = subscr_unsub(*(undefined4 *)(iVar1 + 4),&local_20);
if (iVar2 != 0) {
if (0 < *(int *)(*(int *)(iVar1 + 4) + 8)) {
return;
}
FUN_00401448(7,"Querying for other listeners to %s on interface %s/%u\n",iVar5,param_1);
FUN_004044e0(param_1,iVar5,0,0);
*(undefined4 *)(*(int *)(iVar1 + 4) + 8) = 0xfffffffe;
return;
}
pcVar3 = "Couldn\'t unsubscribe from %s on interface %s/%u\n";
}
}
FUN_00401448(4,pcVar3,iVar5,param_1);
}
return;
}