undefined4 * FUN_00417b38(undefined4 *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  if (param_1 == (undefined4 *)0x0) {
switchD_00417bb4_default:
    return (undefined4 *)0x0;
  }
  puVar4 = (undefined4 *)0x0;
  switch(param_1[2]) {
  case 0:
  case 5:
  case 6:
  case 7:
  case 8:
    goto switchD_00417bb4_default;
  case 1:
    puVar4 = (undefined4 *)FUN_004177e0(param_1);
    uVar3 = FUN_00417b38(param_1[0xb],param_2);
    puVar4[0xb] = uVar3;
    if (param_2 == 0) {
      return puVar4;
    }
    iVar1 = FUN_00417b38(param_1[8],param_2);
    puVar4[8] = iVar1;
    if (iVar1 != 0) {
      iVar2 = *(int *)(iVar1 + 0x28);
      *(undefined4 **)(iVar1 + 0x1c) = puVar4;
      for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x28)) {
        *(undefined4 **)(iVar2 + 0x1c) = puVar4;
      }
    }
    uVar3 = param_1[10];
    goto LAB_00417c34;
  case 2:
    puVar4 = (undefined4 *)FUN_00417608(param_1);
    uVar3 = param_1[10];
LAB_00417c34:
    iVar1 = FUN_00417b38(uVar3,param_2);
    puVar4[10] = iVar1;
    if (iVar1 != 0) {
      *(undefined4 **)(iVar1 + 0x24) = puVar4;
    }
    break;
  case 3:
    puVar4 = (undefined4 *)malloc(0x34)   //possible issue identified - semgrep
    if (puVar4 != (undefined4 *)0x0) {
      uVar3 = *param_1;
      *puVar4 = 0;
      puVar4[1] = 0;
      puVar4[2] = 0;
      puVar4[3] = 0;
      puVar4[4] = 0;
      puVar4[5] = 0;
      puVar4[6] = 0;
      puVar4[7] = 0;
      puVar4[8] = 0;
      puVar4[9] = 0;
      puVar4[10] = 0;
      puVar4[0xb] = 0;
      puVar4[0xc] = 0;
      ixmlNode_setNodeName(puVar4,uVar3);
      FUN_00416a38(puVar4,param_1[1]);
      puVar4[2] = 3;
    }
    return puVar4;
  case 4:
    puVar4 = (undefined4 *)FUN_004179e8(param_1);
    break;
  case 9:
    puVar4 = (undefined4 *)FUN_0041774c(param_1);
    if (param_2 != 0) {
      iVar1 = FUN_00417b38(param_1[8],param_2);
      puVar4[8] = iVar1;
      if (iVar1 != 0) {
        *(undefined4 **)(iVar1 + 0x1c) = puVar4;
      }
    }
  }
  return puVar4;
}