format PE console
entry start

include 'win32a.inc'

section '.text' code readable executable

  start:
        invoke  GetStdHandle,-11
        mov     [stdout],eax
        invoke  WriteConsoleA,[stdout],hello, len, dummy,0
        invoke  IsAvxSupported
        cmp     eax, 2
        je      yesavx
        invoke  WriteConsoleA,[stdout],no, 10, dummy,0
        jmp     cont
yesavx:
        invoke  WriteConsoleA,[stdout],yes, 10, dummy,0
cont:
        invoke  GetCpuName
        invoke  WriteConsoleA,[stdout],eax, 48, dummy,0
        invoke  ExitProcess,0

section '.data' data readable writeable

dummy   dd ?
stdout  dd ?
hello   db 'Simple test for cpuname.dll',13,10,0
len     = $ - hello
yes     db 'AVX Yes',13,10,0
no      db 'AVX No',13,10,0

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          cpuname,'cpuname.DLL'

  import kernel,\
         GetStdHandle,'GetStdHandle',\
         WriteConsoleA, 'WriteConsoleA',\
         ExitProcess,'ExitProcess'

  import cpuname,\
         IsAvxSupported,'IsAvxSupported',\
         GetCpuName, 'GetCpuName'
