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