/* WARNING: Unknown calling convention -- yet parameter storage is locked */
__pid_t fork(void)
{
int iVar1;
undefined4 *puVar2;
undefined4 *puVar3;
undefined4 *puVar4;
pthread_mutexattr_t apStack_20 [3];
pthread_mutex_lock((pthread_mutex_t *)&DAT_000317f0);
puVar3 = DAT_00031810;
puVar4 = DAT_0003180c;
for (puVar2 = DAT_00031808; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)puVar2[1]) {
(*(code *)*puVar2)();
}
__pthread_once_fork_prepare();
pthread_mutex_lock((pthread_mutex_t *)&__malloc_lock);
iVar1 = __libc_fork() //possible issue identified - semgrep
if (iVar1 == 0) {
pthread_mutexattr_init(apStack_20);
pthread_mutexattr_settype(apStack_20,1);
pthread_mutex_init((pthread_mutex_t *)&__malloc_lock,apStack_20);
pthread_mutexattr_destroy(apStack_20);
pthread_mutexattr_init(apStack_20);
pthread_mutexattr_settype(apStack_20,0);
pthread_mutex_init((pthread_mutex_t *)&DAT_000317f0,apStack_20);
pthread_mutexattr_destroy(apStack_20);
__pthread_reset_main_thread() //possible issue identified - semgrep
__fresetlockfiles();
__pthread_once_fork_child();
for (; puVar4 != (undefined4 *)0x0; puVar4 = (undefined4 *)puVar4[1]) {
(*(code *)*puVar4)();
}
}
else {
pthread_mutex_unlock((pthread_mutex_t *)&__malloc_lock);
pthread_mutex_unlock((pthread_mutex_t *)&DAT_000317f0);
__pthread_once_fork_parent();
for (; puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)puVar3[1]) {
(*(code *)*puVar3)();
}
}
return iVar1;
}