You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.2 KiB

2 years ago
.include "instr.inc"
.text
.global _start
_start:
push_pc
pop_r3
cp_r3 _start
jp_eq main
ld_r2_r3
add_r2 (str_wrong_address - _start)
jp PrintStr
main:
# Gather the password
ld_r2 str_prompt_password
call PrintStr
ld_r2 mem_password
ld_r3 0x10
call ReadStr
ld_r2 mem_password
call StrTrim
ld_r2 str_validating
call PrintStr
# Fuck you
# Fuck you
# Fuck you
ld_r3 0 # Fuck you
mix # Fuck you
mix1_ld_r1 mem_password # Fuck you
mix1_inc_r1 # Fuck you
mix1_ldr_r0_r1 # Fuck you
mix1_ld_r1 0x5871 # Fuck you
mix1_cp_r0_r1 # Fuck you
mix1_jp_ne mix1_skip_inc # Fuck you
mix1_inc_r3 # Fuck you
mix1_skip_inc: # Fuck you
# Fuck you
mix1_switch2 # Fuck you
mix2_ldr_r0 mem_password + 3 # Fuck you
mix2_xor_r0 0x54c2 # Fuck you
mix2_cp_r0 0x6da4 # Fuck you
mix2_jp_ne mix2_skip_inc # Fuck you
mix2_inc_r3 # Fuck you
mix2_skip_inc: # Fuck you
# Fuck you
mix2_switch3 # Fuck you
mix3_ld_r1 mem_password + 1 # Fuck you
mix3_dec_r1 # Fuck you
mix3_ldrb_r0_r1 # Fuck you
mix3_add_r0_r0 # Fuck you
mix3_add_r0_r0 # Fuck you
mix3_cp_r0 0x011c # Fuck you
mix3_jp_ne mix3_skip_inc # Fuck you
mix3_inc_r3 # Fuck you
mix3_skip_inc: # Fuck you
# Fuck you
mix3_ld_r0 -1 # Fuck you
mix_delay: # Fuck you
mix3_dec_r0 # Fuck you
mix3_cp_r0 0x0201 # Fuck you
mix3_jp_ne mix_delay # Fuck you
mix3_end # Fuck you
# Fuck you
# Fuck you
# Fuck you
ldrb_r0 mem_password + 5
cp_r0 0
jp_ne main_check
inc_r3
main_check:
cp_r3 4
jp_eq main_correct
ld_r2 str_incorrect
call PrintStr
ret
main_correct:
ld_r2 str_correct
call PrintStr
ret
str_prompt_password:
.ascii "MIX/UNMIX opcodes - proof of concept\n"
.ascii "Enter a password: \0"
str_aborted:
.ascii "Aborted.\n\0"
str_incorrect:
.ascii "Nope, it's wrong.\n\0"
str_validating:
.ascii "Validating...\n\0"
str_correct:
.ascii "Yes, it's correct! FOOLS2023_{*insert correct pass here*}\n\0"
str_wrong_address:
.ascii "Please load this program at address $2000.\n\0"
# GqXf9
mem_password:
.ascii "________________________\0"