void cleanup_module(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  local_bh_disable();
  puVar3 = &sw_turbo_hash;
  puVar2 = sw_turbo_hash;
  while( true ) {
    while (puVar2 != (undefined4 *)0x0) {
      puVar1 = (undefined4 *)*puVar2;
      *(undefined4 *)(puVar2[3] + 0x88) = 0;
      kmem_cache_free(sw_turbo_net_cache,puVar2);
      puVar2 = puVar1;
    }
    puVar3 = puVar3 + 1;
    if (puVar3 == &need_sync) break;
    puVar2 = (undefined4 *)*puVar3;
  }
  local_bh_enable();
  unregister_hw_tcpip(sw_tcpip);
  kmem_cache_destroy(sw_turbo_net_cache);
  proc_cleanup_forskip();
  proc_cleanup_foraqos();
  proc_cleanup_formqos();
  proc_cleanup_system()   //possible issue identified - semgrep
  remove_proc_entry("fastnat",0);
  printk("Unregister REDSonic turbo net\n");
  return;
}