node/lib/metasm/metasm/gui/dasm_main.rb
def disassemble(addr)
		session_append "disassemble(#{addr.inspect}) ; wait_disassemble_bg"
		if di = @dasm.di_at(addr) and di.opcode.props[:saveip]
			di.block.each_to_normal { |t|
				t = @dasm.normalize t
				next if not @dasm.decoded[t]
				@dasm.function[t] ||= @dasm.function[:default] ? @dasm.function[:default].dup : DecodedFunction.new
			}
			di.block.add_to_subfuncret(di.next_addr)
			@dasm.addrs_todo << [di.next_addr, addr, true]
		elsif addr
			@dasm.addrs_todo << [addr]
		end
		start_disassemble_bg
	end
# disassemble from this point
# if points to a call, make it return
disassemble from this point
if points to a call, make it return
disassemble from this point if points to a call make it return
def disassemble(addr)
		session_append "disassemble(#{addr.inspect}) ; wait_disassemble_bg"
		if di = @dasm.di_at(addr) and di.opcode.props[:saveip]
			di.block.each_to_normal { |t|
				t = @dasm.normalize t
				next if not @dasm.decoded[t]
				@dasm.function[t] ||= @dasm.function[:default] ? @dasm.function[:default].dup : DecodedFunction.new
			}
			di.block.add_to_subfuncret(di.next_addr)
			@dasm.addrs_todo << [di.next_addr, addr, true]
		elsif addr
			@dasm.addrs_todo << [addr]
		end
		start_disassemble_bg
	end
def disassemble ( addr ) session_append "disassemble(#{addr.inspect}) ; wait_disassemble_bg" if di = @dasm . di_at ( addr ) and di . opcode . props [ :saveip ] di . block . each_to_normal { | t | t = @dasm . normalize t next if not @dasm . decoded [ t ] @dasm . function [ t ] ||= @dasm . function [ :default ] ? @dasm . function [ :default ] . dup : DecodedFunction . new } di . block . add_to_subfuncret ( di . next_addr ) @dasm . addrs_todo << [ di . next_addr , addr , true ] elsif addr @dasm . addrs_todo << [ addr ] end start_disassemble_bg end
disassemble from this point
if points to a call, make it return
disassemble from this point if points to a call make it return
addr