undefined4 sendACK(int param_1,in_addr_t param_2)
{
uint uVar1;
bool bVar2;
uint uVar3;
int iVar4;
char *pcVar5;
char *__src;
int iVar6;
undefined4 uVar7;
uint uVar8;
undefined4 *puVar9;
uint local_348;
char acStack_344 [256];
undefined1 auStack_244 [16];
in_addr local_234;
undefined1 auStack_228 [212];
undefined1 auStack_154 [308];
uVar3 = DAT_0041bc60;
FUN_004043f0(auStack_244,param_1,5);
local_234.s_addr = param_2;
iVar4 = find_static_lease_by_chaddr(param_1 + 0x1c);
if (iVar4 == 0) {
uVar8 = get_option(param_1,0x33);
if (uVar8 != 0) {
uVar3 = uVar8 + 3 & 3;
uVar1 = uVar8 & 3;
uVar3 = (*(int *)((uVar8 + 3) - uVar3) << (3 - uVar3) * 8 |
uVar8 & 0xffffffffU >> (uVar3 + 1) * 8) & -1 << (4 - uVar1) * 8 |
*(uint *)(uVar8 - uVar1) >> uVar1 * 8;
uVar3 = uVar3 << 0x18 | uVar3 >> 0x18 | uVar3 >> 8 & 0xff00 | (uVar3 & 0xff00) << 8;
if ((uVar3 != 0xffffffff) &&
((local_348 = DAT_0041bc60, DAT_0041bc60 < uVar3 || (uVar3 < DAT_0041bc7c)))) {
bVar2 = false;
goto LAB_0040475c;
}
}
local_348 = uVar3;
bVar2 = false;
}
else {
local_348 = 0xffffffff;
bVar2 = true;
}
LAB_0040475c:
add_simple_option(auStack_154,0x33,
local_348 << 0x18 | local_348 >> 0x18 | local_348 >> 8 & 0xff00 |
(local_348 & 0xff00) << 8);
for (puVar9 = DAT_0041bc4c; puVar9 != (undefined4 *)0x0; puVar9 = (undefined4 *)puVar9[1]) {
if (*(char *)*puVar9 != '3') {
add_option_string(auStack_154);
}
}
FUN_00404494(auStack_244);
pcVar5 = inet_ntoa(local_234);
syslog(0xe5,"DHCP: Server sending ACK to %s. (Lease time = %ld)",pcVar5,local_348);
__src = (char *)get_option(param_1,0xc);
pcVar5 = __src;
if (__src != (char *)0x0) {
pcVar5 = acStack_344;
memcpy(pcVar5,__src,(uint)(byte)__src[-1]) //possible issue identified - semgrep
acStack_344[(byte)__src[-1]] = '\0';
}
iVar6 = FUN_00404520(auStack_244,0);
uVar7 = 0xffffffff;
if (-1 < iVar6) {
if ((iVar4 != 0) && (*(undefined4 *)(iVar4 + 0x18) = 1, pcVar5 != (char *)0x0)) {
strncpy((char *)(iVar4 + 0x1c),pcVar5,0x40) //possible issue identified - semgrep
*(undefined1 *)(iVar4 + 0x5b) = 0;
}
uVar7 = 0;
if (!bVar2) {
iVar4 = add_lease(auStack_228,local_234.s_addr,local_348,pcVar5);
if (iVar4 != 0) {
*(undefined4 *)(iVar4 + 0x18) = 1;
}
write_leases();
uVar7 = 0;
}
}
return uVar7;
}