; ML with Hostess using EKKIE truth · pure ASM · NOT neural
; EKKIE is NOT Hostess 7
bits 64
default rel
section .text
global _start

; EKKIE field
ekkie:
        mov     eax, edi
        sub     eax, esi
        or      eax, 1
        ret

; Hostess 7 speaker · NOT ekkie
hostess7:
        cmp     edi, 0
        jne     .speak
        mov     eax, 7
        or      eax, 1
        ret
.speak: mov     eax, 1
        ret

; ML = Measure-Learn: EKKIE truth → r8 · Hostess speak TRUTH → eax
ml:
        push    rdi
        push    rsi
        call    ekkie
        mov     r8d, eax
        mov     edi, 1
        call    hostess7
        pop     rsi
        pop     rdi
        ret

_start:
        ; 1) EKKIE is not identity 7 when field is other
        mov     edi, 10
        mov     esi, 3
        call    ekkie
        cmp     eax, 7
        jne     .e1
        ; field happened to be 7 — still not Hostess: Hostess id needs edi=0
.e1:
        ; Hostess identity
        xor     edi, edi
        call    hostess7
        cmp     eax, 7
        jne     .bad

        ; Hostess does not take (a,b) field — speaking only
        mov     edi, 1
        call    hostess7
        cmp     eax, 1
        jne     .bad

        ; ML: field in r8 · truth in eax
        mov     edi, 20
        mov     esi, 5
        call    ml
        cmp     eax, 1
        jne     .bad
        ; EKKIE (20-5)|1 = 15|1 = 15
        cmp     r8d, 15
        jne     .bad

        ; prove EKKIE ≠ H7: same inputs style
        ; H7 with edi=20 speaks truth 1, not field
        mov     edi, 20
        call    hostess7
        cmp     eax, 1
        jne     .bad

        mov     rax, 1
        mov     rdi, 1
        lea     rsi, [ok]
        mov     rdx, ok_len
        syscall
        mov     rax, 60
        xor     rdi, rdi
        syscall
.bad:
        mov     rax, 1
        mov     rdi, 1
        lea     rsi, [bad]
        mov     rdx, bad_len
        syscall
        mov     rax, 60
        mov     rdi, 2
        syscall

section .rodata
ok: db "OK · EKKIE not H7 · ML=Measure-Learn EKKIE truth + Hostess speak · NOT neural", 10
ok_len equ $ - ok
bad: db "FAIL · ml/ekkie/h7", 10
bad_len equ $ - bad
