pub fn obfuscate_filename(filename: &str) -> String {
let filename_length = filename.len();
let salt = filename_length & 0xFFFFFFFC;
let mut obfuscated_name = filename.to_uppercase();
if filename_length & 3 != 0 {
let fill_char = (filename_length - salt) as u8 as char;
obfuscated_name.push(fill_char);
let fill_count = 3 - (filename_length & 3);
for _ in 0..fill_count {
let salt_char = obfuscated_name.chars().nth(salt).unwrap_or('A');
obfuscated_name.push(salt_char);
}
}
obfuscated_name
}
pub fn ra2_crc(filename: &str) -> u32 {
let obfuscated_name = obfuscate_filename(filename);
let binary_data = obfuscated_name.as_bytes();
crc32fast::hash(binary_data)
}