undefined ** FUN_00403240(char *param_1,int param_2)

{
  undefined *puVar1;
  int iVar2;
  char *pcVar3;
  undefined **ppuVar4;
  undefined **ppuVar5;
  
  ppuVar5 = (undefined **)0x0;
  while( true ) {
    ppuVar4 = (undefined **)PTR_LOOP_0041b0d0;
    if (ppuVar5 != (undefined **)0x0) {
      ppuVar4 = (undefined **)*ppuVar5;
    }
    if ((ppuVar4 == &PTR_LOOP_0041b0d0) || (ppuVar4 == (undefined **)0x0)) break;
    iVar2 = strcmp(ppuVar4[2],param_1);
    if (iVar2 == 0) {
      return ppuVar4;
    }
    ppuVar5 = ppuVar4;
    if (ppuVar4[3] != (undefined *)0x0) {
      solist_get_reset();
      while (iVar2 = solist_get_next(ppuVar4[3]), iVar2 != 0) {
        iVar2 = sobj_strcmp(iVar2,param_1);
        if (iVar2 == 0) {
          return ppuVar4;
        }
      }
    }
  }
  ppuVar5 = (undefined **)0x0;
  if ((param_2 != 0) && (ppuVar5 = (undefined **)malloc(0x38), ppuVar5 != (undefined **)0x0)) {   //possible issue identified - semgrep
    memset(ppuVar5,0,0x38)   //possible issue identified - semgrep
    pcVar3 = strdup(param_1)   //possible issue identified - semgrep
    puVar1 = PTR_LOOP_0041b0d4;
    *ppuVar5 = (undefined *)&PTR_LOOP_0041b0d0;
    PTR_LOOP_0041b0d4 = (undefined *)ppuVar5;
    ppuVar5[2] = pcVar3;
    *(undefined ***)puVar1 = ppuVar5;
    ppuVar5[1] = puVar1;
  }
  return ppuVar5;
}