undefined4 * dhcp6_add_listval(int param_1,undefined4 param_2,undefined4 *param_3,int param_4)

{
  undefined4 *__ptr;
  int iVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  
  __ptr = (undefined4 *)malloc(0x30)   //possible issue identified - semgrep
  if (__ptr == (undefined4 *)0x0) {
    dprintf(3,"dhcp6_add_listval","failed to allocate memory for list entry");
    return (undefined4 *)0x0;
  }
  *__ptr = 0;
  __ptr[1] = 0;
  __ptr[3] = 0;
  __ptr[4] = 0;
  __ptr[5] = 0;
  __ptr[6] = 0;
  __ptr[7] = 0;
  __ptr[8] = 0;
  __ptr[9] = 0;
  __ptr[2] = param_2;
  __ptr[10] = 0;
  __ptr[0xb] = __ptr + 10;
  switch(param_2) {
  default:
    dprintf(3,"dhcp6_add_listval","unexpected list value type (%d)",param_2);
    goto LAB_004098f4;
  case 1:
    __ptr[3] = *param_3;
    break;
  case 2:
    *(undefined2 *)(__ptr + 3) = *(undefined2 *)param_3;
    break;
  case 3:
    uVar5 = param_3[3];
    uVar3 = param_3[1];
    uVar4 = param_3[2];
    __ptr[3] = *param_3;
    __ptr[4] = uVar3;
    __ptr[5] = uVar4;
    __ptr[6] = uVar5;
    break;
  case 4:
  case 6:
    uVar3 = param_3[2];
    uVar4 = param_3[1];
    __ptr[3] = *param_3;
    __ptr[4] = uVar4;
    __ptr[5] = uVar3;
    break;
  case 5:
    uVar8 = param_3[6];
    uVar3 = param_3[1];
    uVar4 = param_3[2];
    uVar5 = param_3[3];
    uVar6 = param_3[4];
    uVar7 = param_3[5];
    __ptr[3] = *param_3;
    __ptr[4] = uVar3;
    __ptr[5] = uVar4;
    __ptr[6] = uVar5;
    __ptr[7] = uVar6;
    __ptr[8] = uVar7;
    __ptr[9] = uVar8;
    break;
  case 7:
    uVar7 = param_3[5];
    uVar3 = param_3[1];
    uVar4 = param_3[2];
    uVar5 = param_3[3];
    uVar6 = param_3[4];
    __ptr[3] = *param_3;
    __ptr[4] = uVar3;
    __ptr[5] = uVar4;
    __ptr[6] = uVar5;
    __ptr[7] = uVar6;
    __ptr[8] = uVar7;
    break;
  case 8:
    iVar1 = FUN_004097b0(__ptr + 3,param_3);
    if (iVar1 == 0) break;
    goto LAB_004098f4;
  }
  if ((param_4 == 0) || (iVar1 = dhcp6_copy_list(__ptr + 10,param_4), iVar1 == 0)) {
    puVar2 = *(undefined4 **)(param_1 + 4);
    *__ptr = 0;
    __ptr[1] = puVar2;
    *puVar2 = __ptr;
    *(undefined4 **)(param_1 + 4) = __ptr;
  }
  else {
LAB_004098f4:
    free(__ptr);
    __ptr = (undefined4 *)0x0;
  }
  return __ptr;
}