void FUN_004015b0(void *param_1)
{
code *pcVar1;
if (*(int *)((int)param_1 + 0xc) != 0) {
if (*(int *)((int)param_1 + 0x38) == 1) {
pcVar1 = sloop_cancel_write_sock;
}
else {
pcVar1 = sloop_cancel_read_sock;
}
(*pcVar1)();
*(undefined4 *)((int)param_1 + 0xc) = 0;
}
if (*(int *)((int)param_1 + 0x10) != 0) {
sloop_cancel_timeout();
*(undefined4 *)((int)param_1 + 0x10) = 0;
}
if (-1 < *(int *)((int)param_1 + 8)) {
close(*(int *)((int)param_1 + 8));
}
if (*(void **)((int)param_1 + 0x1c) != (void *)0x0) {
free(*(void **)((int)param_1 + 0x1c));
}
if (*(void **)((int)param_1 + 0x20) != (void *)0x0) {
free(*(void **)((int)param_1 + 0x20));
}
if (*(void **)((int)param_1 + 0x24) != (void *)0x0) {
free(*(void **)((int)param_1 + 0x24));
}
if (*(void **)((int)param_1 + 0x28) != (void *)0x0) {
free(*(void **)((int)param_1 + 0x28));
}
if (*(void **)((int)param_1 + 0x2c) != (void *)0x0) {
free(*(void **)((int)param_1 + 0x2c));
}
free(param_1);
return;
}