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;
}