PATCH Solution
WRONG OP
PATCH wrong alu operator

Prerequisites
Unlocks
mixop=sub
Accepted keysCALC
Editable slots1
Rulenonzero
Walkthrough
The decode uses the right constant but the wrong operation, so it can never reproduce the stored targets. Only the marked decode op can move. Find the single operation that turns the real key into the stored targets, then TEST.
The constant is fixed, so this is not a mask hunt. Line the key up against the targets and ask which operation maps one to the other. The targets are the key minus the constant, so the decode has to subtract.
Valid Patch Combos
- mixop=sub
Reject Battery
- CALD
- CALE
- DALC
- CAL
- CALCC
Editable Slot Options
- mixop: add, sub, xor, or
Broken Listing
; WRONG OP: a PATCH job. Each byte is decoded against the SAME constant and then
; compared to a stored target. The constant is right; the OPERATION is wrong. The
; stored targets were produced by one specific operator, and no other operator can
; reproduce them from the real key, so swapping the constant would get you nowhere.
; Only the marked decode op (label "mixop") is yours to edit; the constant, the
; target table, and the verdict are frozen.
;
; The real key is CALC. The targets were made by SUBTRACTING the constant from
; each byte, so the decode has to subtract, not add. Read the targets against the
; key and the operation reveals itself.
;
; r0 = 1 on accept; rule: nonzero. SHIPPED op is "add", which pushes every byte
; the wrong way and bounces the real key.
len r2
cmp r2, 4
jnz bad
mov r7, 0
loop: cmp r7, 4
jge ok
ldb r0, [r7]
mixop: add r0, 0x07 ; SHIPPED BROKEN: wrong operation -> want sub
cmp r7, 0
jz t0
cmp r7, 1
jz t1
cmp r7, 2
jz t2
mov r1, 0x3C ; target for position 3
jmp chk
t0: mov r1, 0x3C
jmp chk
t1: mov r1, 0x3A
jmp chk
t2: mov r1, 0x45
jmp chk
chk: cmp r0, r1
jnz bad
inc r7
jmp loop
ok: mov r0, 1
ret
bad: mov r0, 0
ret