void FUN_004054bc(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int *__ptr;
  
  __ptr = (int *)param_1[4];
  if (param_1[6] < 0xb) {
    param_1[6] = param_1[6] + 1;
    iVar1 = vifs_get_ver_by_id((short)param_1[5]);
    if (iVar1 == 0x22) {
      uVar2 = vifs_get_ipaddr();
      send_igmp_v3(uVar2,__ptr[2],0x11,0x7d,__ptr[2],1,0);
    }
    else {
      iVar1 = vifs_get_ver_by_id((short)param_1[5]);
      if ((iVar1 == 0x16) || (iVar1 = vifs_get_ver_by_id((short)param_1[5]), iVar1 == 0x12)) {
        uVar2 = vifs_get_ipaddr((short)param_1[5]);
        send_igmp(uVar2,__ptr[2],0x11,10,__ptr[2]);
      }
    }
    iVar1 = sloop_register_timeout(10,0,FUN_004054bc,param_1);
    param_1[7] = iVar1;
  }
  else {
    piVar3 = (int *)param_1[1];
    iVar1 = *param_1;
    *piVar3 = iVar1;
    *(int **)(iVar1 + 4) = piVar3;
    *param_1 = 0;
    param_1[1] = 0;
    FUN_00404900();
    FUN_004050a4(__ptr);
    if ((int *)__ptr[5] == __ptr + 5) {
      FUN_00404a40(__ptr);
      piVar3 = (int *)__ptr[1];
      iVar1 = *__ptr;
      *piVar3 = iVar1;
      *(int **)(iVar1 + 4) = piVar3;
      *__ptr = 0;
      __ptr[1] = 0;
                    /* WARNING: Could not recover jumptable at 0x00405564. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      free(__ptr);
      return;
    }
  }
  return;
}