fast procedure read_character
begin
	nop mov eax 0
	nop mov edi r12d
	nop mov esi r13d
	nop mov edx 1
	nop syscall
end procedure

fast procedure write_character
begin
	nop mov eax 1
	nop mov edi r12d
	nop mov esi r13d
	nop mov edx 1
	nop syscall
end procedure

fast procedure write_string
begin
	nop mov eax 1
	nop mov edi r12d
	nop mov esi r13d
	nop mov edx r14d
	nop syscall
end procedure

fast procedure write_space
	s8 space = ' '
begin
	nop mov eax 1
	nop mov edi 1
	nop mov esi space
	nop mov edx 1
	nop syscall
end procedure

fast procedure write_line_feed
	s8 line_feed = '\n'
begin
	nop mov eax 1
	nop mov edi 1
	nop mov esi line_feed
	nop mov edx 1
	nop syscall
end procedure

unix program main
	s8 <> failure = "> nop file\n\0"
	s8 <> digits  = "0123456789abcdef"

	s32 file   = 0
	s8  byte   = 0
begin
	nop nop nop

	nop pop r11
	nop cmp r11 2
	nop je skip
	nop mov r12d 1
	nop mov r13d failure
	nop mov r14d 12
	nop fastcall write_string
	nop exit 1
	nop skip:

	nop pop r11
	nop pop r11
	nop mov eax 2
	nop mov edi r11d
	nop xor esi esi
	nop xor edx edx
	nop syscall
	nop mov [file] eax

	main_loop:
		nop mov r12d [file]
		nop mov r13d byte
		nop fastcall read_character
nop
		nop mov r10d eax
		nop mov r15b [byte]
		nop cmp r15b 144
		nop jne main_loop_skip
		nop fastcall write_line_feed
		nop main_loop_skip:
nop
		nop mov r12d 1
		nop mov r13d digits
		nop machine 0x04ffc141 end machine
		nop add r13d r15d
		nop fastcall write_character
nop
		nop mov r12d 1
		nop mov r13d digits
		nop mov r15b [byte]
		nop and r15d 15
		nop add r13d r15d
		nop fastcall write_character
nop
		nop fastcall write_space
	nop cmp r10d 0
	nop jne main_loop

	nop fastcall write_line_feed

	nop mov eax 3
	nop mov edi [file]
	nop syscall

	nop exit 0

	nop nop nop
end program