int pthread_atfork(__prepare *__prepare,__parent *__parent,__child *__child)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
int *piVar4;
puVar2 = (undefined4 *)malloc(0x18) //possible issue identified - semgrep
iVar3 = 0xc;
if (puVar2 != (undefined4 *)0x0) {
pthread_mutex_lock((pthread_mutex_t *)&DAT_000317f0);
if (__prepare != (__prepare *)0x0) {
*puVar2 = __prepare;
puVar1 = puVar2;
puVar2[1] = DAT_00031808;
DAT_00031808 = puVar1;
}
if (__parent != (__parent *)0x0) {
piVar4 = &DAT_00031810;
for (iVar3 = DAT_00031810; iVar3 != 0; iVar3 = *(int *)(iVar3 + 4)) {
piVar4 = (int *)(iVar3 + 4);
}
puVar2[2] = __parent;
puVar2[3] = *piVar4;
*piVar4 = (int)(puVar2 + 2);
}
if (__child != (__child *)0x0) {
piVar4 = &DAT_0003180c;
for (iVar3 = DAT_0003180c; iVar3 != 0; iVar3 = *(int *)(iVar3 + 4)) {
piVar4 = (int *)(iVar3 + 4);
}
puVar2[4] = __child;
puVar2[5] = *piVar4;
*piVar4 = (int)(puVar2 + 4);
}
pthread_mutex_unlock((pthread_mutex_t *)&DAT_000317f0);
iVar3 = 0;
}
return iVar3;
}