extern io_get_udec
extern io_print_udec
extern io_print_char
section .bss
a11: resd 1
a12: resd 1
a21: resd 1
a22: resd 1
b1: resd 1
b2: resd 1
key1: resd 1
key2: resd 1
andmask1: resd 1
section .text
global main
main:
; Scanning data
call io_get_udec
mov [a11], eax
call io_get_udec
mov [a12], eax
call io_get_udec
mov [a21], eax
call io_get_udec
mov [a22], eax
call io_get_udec
mov [b1], eax
call io_get_udec
mov [b2], eax
; Computing key1
mov eax, dword [a12]
not eax
and eax, dword [a11]
mov ebx, eax
mov eax, dword [a22]
not eax
and eax, dword [a21]
or eax, ebx
mov [key1], eax
; Computing key2 (copy + paste)
mov eax, dword [a11]
not eax
and eax, dword [a12]
mov ebx, eax
mov eax, dword [a21]
not eax
and eax, dword [a22]
or eax, ebx
mov [key2], eax
; Computing andmask1 (copy + paste again)
mov eax, dword [a11]
and eax, dword [a12]
and eax, dword [b1]
mov [andmask1], eax
mov eax, dword [a21]
and eax, dword [a22]
and eax, dword [b2]
or eax, dword [andmask1]
and eax, dword [key1]
;mov [andmask1], eax
; Computing andmask2 (in ebx)
not eax
xor ebx, eax
; PRINT DATA
mov eax, dword [key1]
and eax, dword [b1]
;or eax, dword [andmask1]
call io_print_udec
mov eax, ' '
call io_print_char
mov eax, dword [key2]
and eax, dword [b2]
;or eax, ebx
call io_print_udec
xor eax, eax
ret