diff --git a/src/vminstrs.cpp b/src/vminstrs.cpp index 49e1270..6573dd3 100644 --- a/src/vminstrs.cpp +++ b/src/vminstrs.cpp @@ -194,6 +194,16 @@ namespace vm::instrs vm::instrs::decrypt_operand( vm_handler.transforms, imm_val.value(), entry.decrypt_key ).first; } + if ( profile && vm_handler.imm_size && profile->extention == vm::handler::extention_t::sign_extend ) + { + if ( result.operand.imm.u >> ( vm_handler.imm_size - 1 ) ) + { + result.operand.imm.u = + ( ( std::numeric_limits< std::uint64_t >::max() >> vm_handler.imm_size ) << vm_handler.imm_size ) + + result.operand.imm.u; + } + } + return result; }