void FUN_004137e0(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int *__ptr;
  
  uVar1 = in6addr2str(param_1 + 4,0);
  dprintf(7,"remove_siteprefix","remove a site prefix %s/%d",uVar1,param_1[8]);
  if (param_1[10] != 0) {
    dhcp6_remove_timer(param_1 + 10);
  }
  __ptr = (int *)param_1[0xc];
  while (__ptr != (int *)0x0) {
    iVar2 = *__ptr;
    if (iVar2 == 0) {
      param_1[0xd] = __ptr[1];
    }
    else {
      *(int *)(iVar2 + 4) = __ptr[1];
    }
    iVar3 = __ptr[10];
    uVar1 = *(undefined4 *)(__ptr[2] + 8);
    *(int *)__ptr[1] = iVar2;
    ifaddrconf(1,uVar1,__ptr + 0xb,iVar3,0xffffffff,0xffffffff);
    free(__ptr);
    __ptr = (int *)param_1[0xc];
  }
  iVar2 = *param_1;
  if (iVar2 == 0) {
    *(int *)(param_1[0xb] + 0x2c) = param_1[1];
  }
  else {
    *(int *)(iVar2 + 4) = param_1[1];
  }
  *(int *)param_1[1] = iVar2;
  free(param_1);
  return;
}