section .bss
ptx resd 3
pty 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 [ptx + ecx*4], eax
call io_get_dec
mov [pty + ecx*4], eax
inc ecx
cmp ecx, 3
jl .r
mov eax, [ptx]
mov ebx, [pty+4]
sub ebx, [pty+8]
imul eax, ebx
mov edx, [ptx+4]
mov ebx, [pty+8]
sub ebx, [pty]
imul edx, ebx
add eax, edx
mov edx, [ptx+8]
mov ebx, [pty]
sub ebx, [pty+4]
imul edx, ebx
add eax, edx
cdq
xor eax, edx
sub eax, edx
mov edi, eax
xor esi, esi
mov eax, [ptx]
sub eax, [ptx+4]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [pty]
sub eax, [pty+4]
cdq
xor eax, edx
sub eax, edx
call g
add esi, eax
mov eax, [ptx+4]
sub eax, [ptx+8]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [pty+4]
sub eax, [pty+8]
cdq
xor eax, edx
sub eax, edx
call g
add esi, eax
mov eax, [ptx+8]
sub eax, [ptx]
cdq
xor eax, edx
sub eax, edx
mov ebx, eax
mov eax, [pty+8]
sub eax, [pty]
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