61 lines
833 B
ArmAsm
61 lines
833 B
ArmAsm
|
%define BUFF_LIM 32768
|
||
|
|
||
|
global _start
|
||
|
[bits 64]
|
||
|
[section .text]
|
||
|
|
||
|
;%include "utils.s"
|
||
|
|
||
|
_start:
|
||
|
|
||
|
xor rcx, rcx ; race
|
||
|
; check race
|
||
|
check_race:
|
||
|
push rcx
|
||
|
mov rsi, 53837288
|
||
|
mov rdi, 0x12F02ACD6888C
|
||
|
;mov rsi, 71530
|
||
|
;mov rdi, 940200
|
||
|
;mov rbx, [(dists+4)+rcx*4]
|
||
|
xor rbp, rbp ; poss
|
||
|
|
||
|
mov rcx, 1 ; test ms
|
||
|
check_strat:
|
||
|
mov rax, rsi
|
||
|
sub rax, rcx ; remaining time
|
||
|
mul rcx
|
||
|
;cmp rdx, rbx ; high part
|
||
|
;jb .cont ; high part is less
|
||
|
cmp rax, rdi ; low part
|
||
|
jbe .cont
|
||
|
inc rbp
|
||
|
.cont:
|
||
|
inc rcx
|
||
|
cmp rcx, rsi
|
||
|
jl check_strat
|
||
|
|
||
|
mov rax, [final_value]
|
||
|
mul rbp
|
||
|
mov [final_value], rax
|
||
|
|
||
|
are_we_done:
|
||
|
pop rcx
|
||
|
inc rcx
|
||
|
cmp rcx, [race_count]
|
||
|
jl check_race
|
||
|
|
||
|
game_over:
|
||
|
mov rbx, [final_value]
|
||
|
jmp $
|
||
|
|
||
|
[section .data]
|
||
|
final_value: dq 1
|
||
|
race_count: dq 1
|
||
|
timelist: dd 53837288
|
||
|
dists: dq 333163512891532 ; 12F02ACD6888C
|
||
|
;timelist: dd 71530
|
||
|
;dists: dq 940200
|
||
|
|
||
|
|
||
|
[section .bss]
|