@@ -412,7 +412,7 @@ impl Emu {
412412 self.flags.f_nt = false;
413413 }
414414
415- pub fn init(&mut self, clear_registers: bool) {
415+ pub fn init(&mut self, clear_registers: bool, clear_flags: bool ) {
416416 self.pos = 0;
417417
418418 if !atty::is(Stream::Stdout) {
@@ -426,12 +426,16 @@ impl Emu {
426426 if clear_registers {
427427 self.regs.clear::<64>();
428428 }
429+ if clear_flags {
430+ self.flags.clear();
431+ }
429432 //self.regs.rand();
430433
431434 if self.cfg.is_64bits {
432435 self.regs.rip = self.cfg.entry_point;
433436 self.maps.is_64bits = true;
434- self.init_regs_tests();
437+
438+ //self.init_regs_tests(); // TODO: not sure why this was on
435439 self.init_mem64();
436440 self.init_stack64();
437441 //self.init_stack64_tests();
@@ -1102,7 +1106,7 @@ impl Emu {
11021106 rip: self.regs.rip,
11031107 op: "write".to_string(),
11041108 bits: 32,
1105- address: self.regs.get_esp(),
1109+ address: self.regs.get_esp() - 4 ,
11061110 old_value: self.maps.read_dword(self.regs.get_esp()).unwrap_or(0) as u64,
11071111 new_value: value as u64,
11081112 name: name.clone(),
@@ -1163,7 +1167,7 @@ impl Emu {
11631167 rip: self.regs.rip,
11641168 op: "write".to_string(),
11651169 bits: 64,
1166- address: self.regs.rsp,
1170+ address: self.regs.rsp - 8 ,
11671171 old_value: self.maps.read_qword(self.regs.rsp).unwrap_or(0) as u64,
11681172 new_value: value as u64,
11691173 name: name.clone(),
@@ -4283,7 +4287,7 @@ impl Emu {
42834287 continue;
42844288 }
42854289 // 00000098EB5DDFF0: 7FFC65FF8B8F-> 7FFBEF4E5FF0
4286- memory = format!("{} {:x }: {:x }-> {:x }", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
4290+ memory = format!("{} {:016X }: {:X }-> {:X }", memory, memory_op.address, memory_op.old_value, memory_op.new_value);
42874291 }
42884292
42894293 let mut trace_file = self.cfg.trace_file.as_ref().unwrap();
0 commit comments