int pthread_key_delete(pthread_key_t __key)
{
char cVar1;
int *piVar2;
int iVar3;
int *piVar4;
pthread_mutex_lock((pthread_mutex_t *)&DAT_00033a20);
iVar3 = __pthread_manager_request;
if ((__key < 0x400) && ((&DAT_00031a20)[__key * 2] != 0)) {
(&DAT_00031a24)[__key * 2] = 0;
(&DAT_00031a20)[__key * 2] = 0;
if (iVar3 != -1) {
piVar2 = (int *)FUN_00018f80();
cVar1 = (char)piVar2[0xb] //possible issue identified - semgrep
piVar4 = piVar2;
while( true ) {
if ((cVar1 == '\0') && (piVar4[(__key >> 5) + 0x3b] != 0)) {
*(undefined4 *)(piVar4[(__key >> 5) + 0x3b] + (__key & 0x1f) * 4) = 0;
}
piVar4 = (int *)*piVar4;
if (piVar4 == piVar2) break;
cVar1 = *(char *)(piVar4 + 0xb) //possible issue identified - semgrep
}
}
pthread_mutex_unlock((pthread_mutex_t *)&DAT_00033a20);
iVar3 = 0;
}
else {
pthread_mutex_unlock((pthread_mutex_t *)&DAT_00033a20);
iVar3 = 0x16;
}
return iVar3;
}