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;
}