libmwemu 0.24.5

x86 32/64bits and system internals emulator, for securely emulating malware and other stuff.
Documentation
use crate::emu;

pub fn LStrCmpI(emu: &mut emu::Emu) {
    let sptr1 = emu.regs().rcx;
    let sptr2 = emu.regs().rdx;

    let s1 = emu.maps.read_string(sptr1);
    let s2 = emu.maps.read_string(sptr2);

    let s1_lower = s1.to_lowercase();
    let s2_lower = s2.to_lowercase();

    let result = match s1_lower.cmp(&s2_lower) {
        std::cmp::Ordering::Less => {
            log_red!(emu, "kernel32!lstrcmpi `{}` < `{}`", s1, s2);
            -1i64 as u64
        }
        std::cmp::Ordering::Equal => {
            log_red!(emu, "kernel32!lstrcmpi `{}` == `{}`", s1, s2);
            0
        }
        std::cmp::Ordering::Greater => {
            log_red!(emu, "kernel32!lstrcmpi `{}` > `{}`", s1, s2);
            1
        }
    };

    emu.regs_mut().rax = result;
}