section .bss
ax resd 3
ay resd 3
section .text
global main
extern io_get_dec, io_print_dec, io_newline
main:
push ebx
push esi
push edi
xor ecx, ecx
.r:
call io_get_dec
mov [ax + ecx*4], eax
call io_get_dec
mov [ay + ecx*4], eax
inc ecx
cmp ecx, 3
jl .r
mov eax, [ax]
mov ebx, [ay+4]
sub ebx, [ay+8]
imul eax, ebx
mov edx, [ax+4]
mov ebx, [ay+8]
sub ebx, [ay]
imul edx, ebx
add eax, edx
mov edx, [ax+8]
mov ebx, [ay]
sub ebx, [ay+4]
imul edx, ebx
add eax, edx
cdq
xor eax, edx
sub eax, edx
mov edi, eax
xor esi, esi
mov eax, [ax]
sub eax, [ax+4]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [ay]
sub eax, [ay+4]
cdq
xor eax, edx
sub eax, edx
call g
add esi, eax
mov eax, [ax+4]
sub eax, [ax+8]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [ay+4]
sub eax, [ay+8]
cdq
xor eax, edx
sub eax, edx
call g
add esi, eax
mov eax, [ax+8]
sub eax, [ax]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [ay+8]
sub eax, [ay]
cdq
xor eax, edx
sub eax, edx
call g
add esi, eax
mov eax, edi
sub eax, esi
add eax, 2
sar eax, 1
call io_print_dec
call io_newline
pop edi
pop esi
pop ebx
xor eax, eax
ret
g:
push ebx
push edx
.l:
test ebx, ebx
jz .e
xor edx, edx
div ebx
mov eax, ebx
mov ebx, edx
jmp .l
.e:
pop edx
pop ebx
ret