void FUN_00408180(int param_1)

{
  timeval local_10;
  
  g_ctc_packets = g_ctc_packets + 1;
  if (0x40 < g_ctc_packets) {
    g_ctc_packets = 0x40;
  }
  g_ctc_bytes = param_1 + g_ctc_bytes;
  if (0x10000 < g_ctc_bytes) {
    g_ctc_bytes = 0x10000;
  }
  gettimeofday(&local_10,(__timezone_ptr_t)0x0);
  for (local_10.tv_usec = local_10.tv_usec + 1000000; 1000000 < local_10.tv_usec;
      local_10.tv_usec = local_10.tv_usec + -1000000) {
    local_10.tv_sec = local_10.tv_sec + 1;
  }
  if (g_charge_timer != 0) {
    event_cancel();
    g_charge_timer = 0;
  }
  g_charge_timer = event_add(&local_10,state_charge_timeout,0);
  return;
}