libmwemu/winapi/winapi32/kernel32/
file_time_to_local_file_time.rs

1use crate::emu;
2
3pub fn FileTimeToLocalFileTime(emu: &mut emu::Emu) {
4    let lpFileTime =
5        emu.maps
6            .read_dword(emu.regs().get_esp())
7            .expect("kernel32!FileTimeToLocalFileTime cannot read lpFileTime") as u64;
8    let out_lpLocalFileTime = emu
9        .maps
10        .read_dword(emu.regs().get_esp() + 4)
11        .expect("kernel32!FileTimeToLocalFileTime cannot read out_lpLocalFileTime")
12        as u64;
13
14    let dwLowDateTime = emu
15        .maps
16        .read_dword(lpFileTime)
17        .expect("kernel32!FileTimeToLocalFileTime cannot read dwLowDateTime");
18    let dwHighDateTime = emu
19        .maps
20        .read_dword(lpFileTime + 4)
21        .expect("kernel32!FileTimeToLocalFileTime cannot read dwHighDateTime");
22
23    emu.maps.write_dword(out_lpLocalFileTime, dwLowDateTime);
24    emu.maps
25        .write_dword(out_lpLocalFileTime + 4, dwHighDateTime);
26
27    log_red!(
28        emu,
29        "kernel32!FileTimeToLocalFileTime {} {}",
30        dwLowDateTime,
31        dwHighDateTime
32    );
33
34    emu.stack_pop32(false);
35    emu.stack_pop32(false);
36    emu.regs_mut().rax = 1;
37}