fast procedure getchar
begin
	nop mov eax 0
	nop mov edi 0
	nop mov edx 1
	nop syscall
end procedure

fast procedure putchar
begin
	nop mov eax 1
	nop mov edi 1
	nop mov edx 1
	nop syscall
end procedure

unix program main
	s8 <> digits = "0123456789ABCDEF"
	s8    byte   = 0
	s8    space  = ' '
	s8    line   = '\n'
begin
	main_loop:
		nop mov esi byte
		nop fastcall getchar
		nop cmp eax 0
		nop je main_skip
			nop cmp [byte] 144     // Compare byte to "nop" instruction.
			nop jne main_loop_skip // Skip if not "nop" instruction.
			nop mov esi line
			nop fastcall putchar
			main_loop_skip:
		nop mov esi digits
		# nop sar [byte] 4
		# nop add esi [byte]
		nop fastcall putchar
		nop mov esi digits
		nop and [byte] 15
		nop add esi [byte]
		nop fastcall putchar
		nop mov esi space
		nop fastcall putchar
	nop jmp main_loop // Loop back if not equal.
	main_skip:
	nop mov esi line
	nop fastcall putchar
	nop exit 0
end program