undefined4 * FUN_00405030(int param_1,int param_2,char *param_3,int param_4)

{
  int iVar1;
  char *pcVar2;
  int *piVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)0x0;
  do {
    if (param_4 < 1) {
      return puVar4;
    }
    if (param_3 != (char *)0x0) {
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = *(undefined4 **)(param_1 + 8);
      }
      else {
        puVar4 = (undefined4 *)*puVar4;
      }
      for (; puVar4 != (undefined4 *)(param_1 + 8); puVar4 = (undefined4 *)*puVar4) {
        iVar1 = strcmp((char *)puVar4[7],param_3);
        if (iVar1 == 0) goto LAB_00405118;
      }
    }
    if (param_2 == 0) {
      return (undefined4 *)0x0;
    }
    puVar4 = (undefined4 *)FUN_00404fb0();
    if (puVar4 == (undefined4 *)0x0) {
      return (undefined4 *)0x0;
    }
    pcVar2 = strdup(param_3)   //possible issue identified - semgrep
    piVar3 = *(int **)(param_1 + 0xc);
    *puVar4 = (undefined4 *)(param_1 + 8);
    puVar4[7] = pcVar2;
    *piVar3 = (int)puVar4;
    puVar4[6] = param_1;
    *(undefined4 **)(param_1 + 0xc) = puVar4;
    puVar4[1] = piVar3;
LAB_00405118:
    param_4 = param_4 + -1;
  } while( true );
}