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