def METHOD_NAME(inst_dir=INST_DIR):
    # Run uninstaller
    for uninst_bin in [f"{inst_dir}\\uninst.exe", f"{OLD_DIR}\\uninst.exe"]:
        if os.path.exists(uninst_bin):
            run_command([uninst_bin, "/S", "/delete-root-dir", "/delete-install-dir"])
            # This is needed to avoid a race condition where the uninstall is completing
            start_time = time.time()
            while "Un_A.exe" in (p.name() for p in psutil.process_iter()):
                # Sometimes the Uninstall binary hangs... we'll kill it after 10 seconds
                if (time.time() - start_time) > 10:
                    for proc in psutil.process_iter():
                        if proc.name() == "Un_A.exe":
                            proc.kill()
                time.sleep(0.1)
    # This is needed to avoid a race condition where the installer isn't closed
    start_time = time.time()
    while os.path.basename(INST_BIN) in (p.name() for p in psutil.process_iter()):
        if (time.time() - start_time) > 10:
            # If it's not dead after 10 seconds, kill it
            for proc in psutil.process_iter():
                if proc.name() == os.path.basename(INST_BIN):
                    proc.kill()
                time.sleep(0.1)
    # Remove root_dir
    if os.path.exists(DATA_DIR):
        shutil.rmtree(DATA_DIR)
    # Remove install dir
    if os.path.exists(inst_dir):
        shutil.rmtree(inst_dir)
    # Remove old salt dir (C:\salt)
    if os.path.exists(OLD_DIR):
        shutil.rmtree(OLD_DIR)
    # Remove custom config
    if os.path.exists(rf"{REPO_DIR}\custom_conf"):
        os.remove(rf"{REPO_DIR}\custom_conf")
    # Remove registry entries
    delete_key(key="SOFTWARE\\Salt Project\\Salt")
    delete_key(key="SOFTWARE\\Salt Project")