extern io_get_udec, io_print_udec, io_print_char
section .bss
system resd 1
count resd 1
curr resd 1
prev resd 1
prevprev resd 1
global weirdFunc:
push ebp
mov ebp, esp
sub esp, 12
mov ebx, dword [ebp + 16]
mov esi, dword [ebp + 12]
mov edi, dword [ebp + 8]
mov dword [ebp - 4], 0 ;колво чиселок второго числа в сс к
mov eax, dword [ebp + 8]
mov dword [ebp - 8], eax ;деление второй чиселки
mov dword [ebp - 12], 1 ;степень
.L2:
cmp dword [ebp - 8], 0
je .L3
mov eax, dword [ebp - 8]
xor edx, edx
div dword [ebp + 16]
mov dword [ebp - 8], eax
add dword [ebp - 4], 1
jmp .L2
.L3:
cmp dword [ebp - 4], 0
je .NEXT1
mov eax, 2
mul dword [ebp - 12]
jmp .L3
.NEXT1:
mov eax, dword [ebp - 12]
mul esi
add esi, edi
mov eax, esi
add esp, 12
leave
ret
global main
main:
call io_get_udec
mov dword [system], eax
call io_get_udec
mov dword [counter], eax
xor edx, edx
call io_get_udec
div 2011
mov prevprev, edx
push dword [system]
push dword [prevprev]
push dword [prevprev]
call weirdFunc
add esp, 12
mov dword [prev], eax
sub count, 1
.L1:
cmp count, 0
je .FIN
push dword [system]
push dword [prevprev]
push dword [prev]
call weirdFunc
add esp, 12
mov ebx, dword [prev]
mov dword [prevprev], ebx
mov dword [prev], eax
.jmp L1
.FIN:
mov dword [prev], eax
call io_print_dec
xor eax, eax
ret