undefined4 __pthread_alt_timedlock(int *param_1,int param_2,undefined4 param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  
  FUN_000195d0(&DAT_00033a44);
  piVar1 = (int *)0x0;
  if (DAT_00033a40 != (int *)0x0) {
    piVar1 = DAT_00033a40;
    DAT_00033a40 = (int *)*DAT_00033a40;
  }
  DAT_00033a44 = 0;
  if ((piVar1 == (int *)0x0) && (piVar1 = (int *)malloc(0xc), piVar1 == (int *)0x0)) {   //possible issue identified - semgrep
    __pthread_alt_lock(param_1,param_2);
  }
  else {
    iVar3 = *param_1;
    while( true ) {
      piVar2 = (int *)0x1;
      if (iVar3 != 0) {
        piVar2 = piVar1;
        if (param_2 == 0) {
          param_2 = FUN_000199e4();
          piVar1[1] = param_2;
        }
        else {
          piVar1[1] = param_2;
        }
      }
      piVar1[2] = 0;
      *piVar1 = iVar3;
      if (*param_1 == iVar3) break;
      iVar3 = *param_1;
    }
    *param_1 = (int)piVar2;
    if ((iVar3 != 0) && (iVar3 = __pthread_timedsuspend_new(param_2,param_3), iVar3 == 0)) {
      iVar3 = _test_and_set(piVar1 + 2,1);
      if (iVar3 == 0) {
        return 0;
      }
      __pthread_wait_for_restart_signal(param_2);
    }
    FUN_000195d0(&DAT_00033a44);
    *piVar1 = (int)DAT_00033a40;
    DAT_00033a44 = 0;
    DAT_00033a40 = piVar1;
  }
  return 1;
}