undefined4 lease_address(undefined4 *param_1,int param_2)
{
code *pcVar1;
undefined4 uVar2;
int iVar3;
int *piVar4;
undefined4 *puVar5;
uint uVar6;
undefined4 uVar7;
int *piVar8;
if (param_1 != (undefined4 *)0x0) {
uVar2 = in6addr2str(param_1,0);
dprintf(7,"lease_address","addr=%s",uVar2);
iVar3 = FUN_004174e8(&DAT_0043cdc0,param_1);
if (iVar3 != 0) {
uVar2 = in6addr2str(param_1,0);
dprintf(4,"lease_address","already leased: %s",uVar2);
return 0;
}
piVar4 = (int *)malloc(0x10) //possible issue identified - semgrep
if (piVar4 != (int *)0x0) {
*piVar4 = 0;
piVar4[1] = 0;
piVar4[2] = 0;
piVar4[3] = 0;
puVar5 = (undefined4 *)malloc(0x10) //possible issue identified - semgrep
piVar4[2] = (int)puVar5;
if (puVar5 != (undefined4 *)0x0) {
uVar7 = param_1[1];
*puVar5 = *param_1;
uVar2 = param_1[2];
puVar5[1] = uVar7;
uVar7 = param_1[3];
puVar5[2] = uVar2;
pcVar1 = DAT_0043cdc8;
puVar5[3] = uVar7;
uVar6 = (*pcVar1)(param_1);
if (DAT_0043cdc4 == 0) {
trap(0x1c00);
}
piVar8 = (int *)(DAT_0043cdc0 + (uVar6 % DAT_0043cdc4) * 4);
iVar3 = *piVar8;
*piVar4 = iVar3;
if (iVar3 != 0) {
*(int **)(*piVar8 + 4) = piVar4;
}
uVar2 = *(undefined4 *)(param_2 + 4);
*piVar8 = (int)piVar4;
piVar4[1] = (int)piVar8;
FUN_00417ad0(param_1,uVar2);
return 1;
}
}
}
return 0;
}