macro CrButtns n,hwnd,txt,txtsz { local .up3
        mov ebx,hwnd
        xor edi,edi
.up3:
        mov    eax,edi
        shl    eax,5
        add    eax,txt
        mov    ecx,edi
        add    ecx,IDCBtn1+IDE_ofst*n
        mov    edx,edi
        shl    edx,5
        add    edx,CrOfstYBtn
        invoke CreateWindowEx,0,'button',eax,dword WS_VISIBLE+WS_CHILD,dword CrOfstXBtn,dword edx,dword 94,dword 25,[DLL_hwnd],dword ecx,0,0
        mov    [ebx],eax
        inc    edi
        add    ebx,4
        cmp    ebx,txtsz*4+hwnd
        jb     .up3
        }
macro CrButtns2 cell,n,hwnd,txt,txtsz { local .up3
        mov ebx,hwnd
        xor edi,edi
        xor esi,esi
.up3:
        mov    eax,edi
        shl    eax,5
        add    eax,txt
        mov    ecx,edi
        add    ecx,IDCBtn1+IDE_ofst*n
        mov    edx,edi
        shl    edx,5
        add    edx,CrOfstYBtn
        invoke CreateWindowEx,0,'button',eax,dword WS_VISIBLE+WS_CHILD,dword CrOfstXBtn,dword edx,dword 94,dword 25,[DLL_hwnd],dword ecx,0,0
        mov    [ebx],eax
        inc    edi
        add    ebx,4
        cmp    ebx,txtsz*4+hwnd
        jb     .up3
        }
proc CreateWindow
      IDE_ofst = 20
      invoke  GetModuleHandle,0
        mov     [wc.hInstance],eax
        invoke  LoadIcon,0,IDI_APPLICATION
        mov     [wc.style],CS_HREDRAW or CS_VREDRAW +CS_DBLCLKS
        mov     [wc.hIcon],eax
        mov     [wc.hIconSm],eax
        invoke  LoadCursor,0,IDC_ARROW
        mov     [wc.hCursor],eax
        invoke  RegisterClassEx,wc
        test    eax,eax
        jz      .error
;direct2D draw i v WS_EX_NOREDIRECTIONBITMAP = 0 !
        WS_EX_NOREDIRECTIONBITMAP = 0;x00200000    ;this only Win8.1\Win 10
        WS_EX_COMPOSITED          = 0x02000000    ;WS_EX_TRANSPARENT
        invoke  CreateWindowEx,0,_class,_title,dword WS_VISIBLE+WS_OVERLAPPEDWINDOW ,1310-15,0,dword 286+45+300,dword 1030,\
                0,0,[wc.hInstance],NULL
        mov     [DLL_hwnd],eax

.error:

;buton symbols [] {} "" '' db "",0
rept 0 {
        xor edi,edi
        mov ebx,hwndBtnnSymbols
.up1:
        mov    eax,edi
        shl    eax,5
        add    eax,SymblsButtonsTxts
        mov    ecx,edi
        add    ecx,IDCBtn1
        mov    edx,edi
        shl    edx,5
        invoke CreateWindowEx,0,'button',eax,dword WS_VISIBLE+WS_CHILD,dword 4,dword edx,dword 94,dword 25,[DLL_hwnd],dword ecx,0,0
        mov    [ebx],eax
        inc    edi
        add    ebx,4
        cmp    ebx,(SymblsButtonsTxtsEnd-SymblsButtonsTxts)/32*4+hwndBtnnSymbols ;hwndBtnnSymbols+4*5
        jb     .up1

        mov ebx,hwndBtnnSymbols2
        xor edi,edi
.up2:
        mov    eax,edi
        shl    eax,5
        add    eax,SymblsButtonsTxts2
        mov    ecx,edi
        add    ecx,IDCBtn1+IDE_ofst
        mov    edx,edi
        shl    edx,5
        invoke CreateWindowEx,0,'button',eax,dword WS_VISIBLE+WS_CHILD,dword 100,dword edx,dword 94,dword 25,[DLL_hwnd],dword ecx,0,0
        mov    [ebx],eax
        inc    edi
        add    ebx,4
        cmp    ebx,(SymblsButtonsTxtsEnd2-SymblsButtonsTxts2)/32*4+hwndBtnnSymbols2
        jb     .up2

        mov ebx,hwndBtnnSymbols3
        xor edi,edi
.up3:
        mov    eax,edi
        shl    eax,5
        add    eax,SymblsButtonsTxts3
        mov    ecx,edi
        add    ecx,IDCBtn1+IDE_ofst*2
        mov    edx,edi
        shl    edx,5
        invoke CreateWindowEx,0,'button',eax,dword WS_VISIBLE+WS_CHILD,dword 200,dword edx,dword 94,dword 25,[DLL_hwnd],dword ecx,0,0
        mov    [ebx],eax
        inc    edi
        add    ebx,4
        cmp    ebx,(SymblsButtonsTxtsEnd3-SymblsButtonsTxts3)/32*4+hwndBtnnSymbols3
        jb     .up3

CrOfstYBtn = 0
CrOfstXBtn = 300
CrButtns 3,hwndBtnnSymbols4,SymblsButtonsTxts4,(SymblsButtonsTxtsEnd4-SymblsButtonsTxts4)/32
CrOfstXBtn = 400
CrButtns 4,hwndBtnnSymbols5,SymblsButtonsTxts5,(SymblsButtonsTxtsEnd5-SymblsButtonsTxts5)/32
CrOfstXBtn = 500
CrButtns 5,hwndBtnnSymbols6,SymblsButtonsTxts6,(SymblsButtonsTxtsEnd6-SymblsButtonsTxts6)/32
CrOfstYBtn = 424
CrOfstXBtn = 400
CrButtns 6,hwndBtnnSymbols7,SymblsButtonsTxts7,(SymblsButtonsTxtsEnd7-SymblsButtonsTxts7)/32
CrOfstXBtn = 500
CrButtns 7,hwndBtnnSymbols8,SymblsButtonsTxts8,(SymblsButtonsTxtsEnd8-SymblsButtonsTxts8)/32
}

;button proc
        IDCProca = 4000
        invoke CreateWindowEx,0,'button','proc',dword WS_VISIBLE+WS_CHILD,dword 4,dword 960,dword 50,dword 25,[DLL_hwnd],dword IDCProca,0,0
        invoke CreateWindowEx,0,'button','tab',dword WS_VISIBLE+WS_CHILD,dword 55,dword 960,dword 50,dword 25,[DLL_hwnd],dword IDCProca+1,0,0
        invoke CreateWindowEx,0,'button','repeat RichTxt',dword WS_VISIBLE+WS_CHILD,dword 51+55,dword 960,dword 110,dword 25,[DLL_hwnd],dword IDCProca+2,0,0
        invoke CreateWindowEx,0,'button','pTxt',dword WS_VISIBLE+WS_CHILD,dword 280+54,dword 960,dword 40,dword 25,[DLL_hwnd],dword IDCProca+3,0,0

;combobox
        IDCombRepeat = 5000
        invoke CreateWindowEx,0,'combobox','1',dword WS_VISIBLE+WS_CHILD,dword 51+55+118,dword 960,dword 100,dword 23,[DLL_hwnd],dword IDCombRepeat,0,0
        mov  [Combo_RepaetRichTxt],eax
;button
        IDCBtn1 = 226
IDCBtn10 = 500
        buttonYGen = 900
        invoke CreateWindowEx,0,'button','Generate all',dword WS_VISIBLE+WS_CHILD,dword 4,dword buttonYGen,dword 100,dword 25,[DLL_hwnd],dword IDCBtn10,0,0
        ;mov    [hwndBtnn1],eax
        invoke CreateWindowEx,0,'button','CopyRichTxt',dword WS_VISIBLE+WS_CHILD,dword 4+106,dword buttonYGen,dword 100,dword 25,[DLL_hwnd],dword IDCBtn10+1,0,0
        invoke CreateWindowEx,0,'button','PasteRichTxt',dword WS_VISIBLE+WS_CHILD,dword 4,dword buttonYGen+30,dword 100,dword 25,[DLL_hwnd],dword IDCBtn10+2,0,0
        invoke CreateWindowEx,0,'button','calculate',dword WS_VISIBLE+WS_CHILD,dword 4+106,dword buttonYGen+30,dword 100,dword 25,[DLL_hwnd],dword IDCBtn10+3,0,0
     ret
     msg MSG
     ;Cuts_Procs_tab dq prCut1,prCut2,prCutSlit
     ;include 'AllCuts.txt'
     wc WNDCLASSEX sizeof.WNDCLASSEX,0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class,NULL
     _class db 'dl0',0
     _title db 'IDE buzzer !',0
     DLL_hwnd   dd 0
     hwndBtnn1  dd 0
     macro String cLn,chNm {local ll,z1
     ll: db chNm
     z1: db cLn-(z1-ll) dup (0)
      }
     Combo_RepaetRichTxt dd 0
     hwndBtnnSymbols    dd 12 dup (0)
     hwndBtnnSymbols2   dd 12 dup (0)
     hwndBtnnSymbols3   dd 12 dup (0)
     hwndBtnnSymbols4   dd 12 dup (0)
     hwndBtnnSymbols5   dd 12 dup (0)
     hwndBtnnSymbols6   dd 12 dup (0)
     hwndBtnnSymbols7   dd 15 dup (0)
     hwndBtnnSymbols8   dd 15 dup (0)
     SymblsButtonsTxts: String 32,'[   ]'
                        String 32,'{   }'
                        String 32,'" " '
                        String 32,'" ",0'
                        String 32,<13,10,'db "",0'>
                        String 32,<13,10,'1 dup (0)'>
                        String 32,' xmm1,xmm2'
                        String 32,' xmm1,[ ]'
                        String 32,' [ ],xmm1'
                        String 32,' eax,ebx'
                        String 32,<13,10,'macro n a,b { }'>
                        String 32,'local .1,.2,.3'
        SymblsButtonsTxtsEnd:
SymblsButtonsTxts2: String 32,'ret'
                        String 32,'DX11Call '
                        String 32,'cinvoke '
                        String 32,<13,10,'@@: '>
                        String 32,' @f'
                        String 32,' @b'
                        String 32,<13,10,'jmp '>
                        String 32,<13,10,'call'>
                        String 32,<13,10,'push'>
                        String 32,<13,10,'pop'>
                        String 32,<13,10,'invoke'>
                        String 32,<13,10,'cominvk'>
        SymblsButtonsTxtsEnd2:
SymblsButtonsTxts3: String 32,<13,10,'rept 1 n:0 { #n }'>
                        String 32,' equ 1'
                        String 32,' match a, b { } '
                        String 32,'<13,10,"">'
                        String 32,'mov eax,[]'
                        String 32,<13,10,'db 15,"",0'>
                        String 32,<13,10,'repe stosb'>
                        String 32,<13,10,'repe cmpsb'>
                        String 32,'mov edi,'
                        String 32,'mov esi,'
                        String 32,<13,10,'xor'>
                        String 32,<13,10,'xchg'>
        SymblsButtonsTxtsEnd3:
SymblsButtonsTxts4: String 32,<13,10,'inc '>
                        String 32,<13,10,'dec '>
                        String 32,<13,10,'sub '>
                        String 32,<13,10,'add '>
                        String 32,<13,10,'imul '>
                        String 32,<13,10,'mov '>
                        String 32,<13,10,'cvtss2si'>
                        String 32,<13,10,'cmp '>
                        String 32,<13,10,'ja '>
                        String 32,<13,10,'jnz '>
                        String 32,<13,10,'jz '>
                        String 32,<13,10,'jb '>
        SymblsButtonsTxtsEnd4:
SymblsButtonsTxts5: String 32,<13,10,'xorps '>
                        String 32,<13,10,'addss '>
                        String 32,<13,10,'subss '>
                        String 32,<13,10,'mulss '>
                        String 32,<13,10,'divss '>
                        String 32,<13,10,'movss '>
                        String 32,<13,10,'movd '>
                        String 32,<13,10,'movups '>
                        String 32,<13,10,'roundss '>
                        String 32,<13,10,'sqrtss '>
                        String 32,<13,10,'rsqrtss '>
                        String 32,<13,10,'cvtsi2ss '>
        SymblsButtonsTxtsEnd5:
SymblsButtonsTxts6: String 32,<13,10,'rept 1 { }'>
                        String 32,<13,10,'irpv a,v { v }'>
                        String 32,' xmm1,eax'
                        String 32,' eax,xmm1'
                        String 32,<13,10,'Msg ""'>
                        String 32,<13,10,'cvtss2si '>
                        String 32,<13,10,'mov eax,1.0'>
                        String 32,<13,10,' '>
                        String 32,' word '
                        String 32,' byte '
                        String 32,' dqword '
                        String 32,' dword '
        SymblsButtonsTxtsEnd6:
SymblsButtonsTxts7:     String 32,', , , '
                        String 32,'db '
                        String 32,'dd '
                        String 32,'dq '
                        String 32,'dw '
                        String 32,'mov [],'
                        String 32,'edx'
                        String 32,'ebx'
                        String 32,'ecx'
                        String 32,'ebp'
                        String 32,'3.1415'
                        String 32,'57.295779'
                        String 32,<13,10,'cmp al,"0"'>
                        String 32,<13,10,'cmp al,"9"'>
                        String 32,<'8 dup(0)',13,10>
        SymblsButtonsTxtsEnd7:
SymblsButtonsTxts8:     String 32,<13,10,'fsin'>
                        String 32,<13,10,'fcos'>
                        String 32,<13,10,'fpatan'>
                        String 32,<13,10,'fstp dword [eax]'>
                        String 32,'360.0'
                        String 32,'180.0'
                        String 32,'1.0'
                        String 32,'xmm0,xmm1'
                        String 32,'0.017453'
                        String 32,<13,10,'fld dword [eax]'>
                        String 32,<13,10,'fild dword [eax]'>
                        String 32,'esi,eax'
                        String 32,'edi,eax'
                        String 32,<13,10,'mov ecx,1'>
                        String 32,<13,10,'.:'>
        SymblsButtonsTxtsEnd8:

     CutCombTxts: String 32,'Cut find'
                  String 32,'Cut from to'
                  String 32,'Sort text combo'
                  String 32,'Comb1+Line+Comb2'
                  String 32,'Comb1+Line#+Comb2'
                  String 32,'C math Comb1+Comb2'
                  ;String 32,'Cut6'
     CutCombTxtsEnd:
     pCombTxts: String 32,'Data args'
                String 32,'Text'
                String 32,'String'
                String 32,'pData & pText'
                String 32,'Procs'
                String 32,'ProcsTab'
                String 32,'Macros'
                String 32,'Rects'
                String 32,'m_Eq'
                String 32,'Labels'
                String 32,'.Labels'
                String 32,'irps'
                String 32,'Names'
                ;String 32,'SmartCall'
                String 32,'.while'
                String 32,'.if'
                String 32,'.repeat'
                String 32,'Case'
                String 32,'combo1+name+combo2'
     EndpCombTxts: Names_ok_ dq 0     ;FeditStatus22
                   StartNamesBase_    dq 0,0
                   CurName_End_       dq _title
endp
macro IDEBtns ID,txt,num { local .l1,.l2
      xor     esi,esi
.l1:  mov     eax,esi
      add     eax,ID
      cmp     [wparam],eax
      jnz     .l2
      mov    eax,esi
      shl    eax,5
      ;mov    esi,SymblsButtonsTxts+32;.t1
      mov     esi,eax
      add     esi,txt
      call   CopyToWinClipboard
      PasteTxtTo
      ;invoke SendMessage,[RichUsrMessages], WM_PASTE,0,0
      ret
.l2:  inc    esi
      cmp    esi,num
      jb     .l1
      }
macro vecOpsBtns n,txt { local .a,.b,.c
      cmp     [wparam],IDCBtn20+n
      jnz     .c
      mov     esi,txt
      mov     edi,stringVec
.a:   mov     al,[esi]
      ;test    al,al
      ;jz      .b
      mov     [edi],al
      test    al,al
      jz      .b
      inc     edi
      inc     esi
      jmp     .a
      ;mov     dword [stringVec],txt
.b:   ret
.c:

      }
macro vecOpsBtns2 n,txt,pars=0 { local .a,.b,.c
      cmp     [wparam],IDCBtn20+n
      jnz     .c
      ;mov     esi,txt
      ;mov     edi,stringVec
.a:   ;mov     al,[esi]
      ;mov     [edi],al
      ;test    al,al
      ;jz      .b
      ;inc     edi
      ;inc     esi
      ;jmp     .a
.b:	if pars = 1
	call ParseC2Name
	end if
	mov    esi,txt ;stringVec
	call   CopyToWinClipboard
	PasteTxtTo
	if pars = 1
	call ParseC2Fasm
	end if
      ret
.c:
      }
proc WindowProc  hwnd,wmsg,wparam,lparam
     cmp     [wmsg],WM_CLOSE
     jnz     .0
        invoke Sleep,100            ; avoid FireThread drawing without window
        invoke DestroyWindow,[hwnd]
        ;invoke DestroyWindow,[Comb10]
        invoke DestroyWindow,[hwndBtnn1]
        mov    dword [DLL_hwnd],0
        ;Msg 'dddds'
        invoke  UnregisterClass,_class,[wc.hInstance]
        invoke PostQuitMessage,1-1
        ret
.0:
     cmp     [wmsg],WM_COMMAND
     jnz     .defwndproc
pusha
;Msg "WM_COMMAND"
call CheckFEDIT.b
popa
rept 1 {
     cmp     [wparam],IDCProca
     jnz     .01
     mov    esi,.t0
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .t0 db 13,10,'proc fun_',13,10,13,10,9,'ret',13,10,'endp',0
.01: cmp     [wparam],IDCProca+1        ;tab
     jnz     .02
invoke SendMessage,[FasmFeditHwnd],WM_KEYDOWN,VK_TAB,2
invoke SetForegroundWindow,[FasmFeditHwnd]
     ;mov    esi,.ttab
     ;call   CopyToWinClipboard
     ;PasteTxtTo
     ret
     .ttab  db 9,0
.02: cmp     [wparam],IDCProca+3        ;pTxt array
     jnz     .02t
     mov    esi,.ttxt
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .ttxt  db 13,10,'pTxt dd .t1,.t2,.t3,.t4',13,10
            db '.t1: db "txt1",0',13,10
            db '.t2: db "txt2",0',13,10
            db '.t3: db "txt3",0',13,10
            db '.t4: db "txt4",0',13,10,0
.02t: cmp     [wparam],IDCProca+2        ;repeat rich txt to fasmIDE
     jnz     .03
        mov eax,Combo_RepaetRichTxt
        call GetComboInt        ;in eax int num
;       mov edi,eax
;.02a:  PasteTxtTo
;       dec edi
;       jnz .02a
mov  eax,AllRichEditHwnd
call GetRichTxt
call ExecutRichTxt
     ret
.03:

     }
     cmp     [wparam],IDCBtn10+1
     jnz     .2     
     invoke SetFocus,[RichUsrMessages]    
     invoke SendMessage,[RichUsrMessages], WM_COPY,0,0
     ret
.2:  cmp     [wparam],IDCBtn10+2
     jnz     .3
     invoke SetFocus,[RichUsrMessages]    
     invoke SendMessage,[RichUsrMessages], WM_PASTE,0,0
     ret
.3:  cmp     [wparam],IDCBtn10+3
     jnz     .u3
     mov     eax,AllRichEditHwnd
     call    GetRichTxt
	mov word [RichTxt+eax],'+0'
;Msg RichTxt
mov edi,RichTxt
call sscan2
invoke SetWindowText,[ComboUserChastoPasteHistory],strng_cmd
     ret
.u3: 
     cmp     [wparam],IDCBtnVec1
     jnz     .4
     mov     [.curvec],0
     mov    esi,.t1
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .t1 db 'movss xmm1,[v1]',13,10,'?? xmm1,[v2]',13,10,0
.4:  cmp     [wparam],IDCBtnVec1+1
     jnz     .5
     mov     [.curvec],1
     mov    esi,.t2
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .t2 db 'movss xmm1,[v1]',13,10,'movss xmm2,[v1+4]',13,10,\
            '?? xmm1,[v2]',13,10,'?? xmm2,[v2+4]',13,10,0
.5:  cmp     [wparam],IDCBtnVec1+2
     jnz     .6
     mov     [.curvec],2
     mov    esi,.t3
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .t3 db 'movss xmm1,[v1]',13,10,'movss xmm2,[v1+4]',13,10,'movss xmm3,[v1+8]',13,10,\
            '?? xmm1,[v2]',13,10,'?? xmm2,[v2+4]',13,10,'?? xmm3,[v2+8]',13,10,0
.6:  cmp     [wparam],IDCBtnVec1+3
     jnz  .7
     movzx   eax,[.curvec]
     mov     esi,[.toutvec+eax*4]
     call   CopyToWinClipboard
     PasteTxtTo
     ret
     .toutvec dd .tou1,.tou2,.tou3,.tou4
     .tou1 db 13,10,'movss dword [vout],xmm1',0
     .tou2 db 13,10,'movss dword [vout],xmm1'
           db 13,10,'movss dword [vout+4],xmm2',0

     .tou3 db 13,10,'movss dword [vout],xmm1'
           db 13,10,'movss dword [vout+4],xmm2'
           db 13,10,'movss dword [vout+8],xmm3',0

     .tou4 db 13,10,'movups dqword [vout],xmm1',0

.7:     mUsrBtns
        mZnakiBtns
	AllListBtns
	AllUsrBtns22
	mFindReplaceBtns
	CountrBtns
     vecOpsBtns 0,.tadd
     vecOpsBtns 1,.tsubs
     vecOpsBtns 2,.tmul
     vecOpsBtns 3,.tdiv
     movzx   eax,[.curvec]
     vecOpsBtns2 13,[.tnormalize+eax*4]
     vecOpsBtns2 14,[.fromc2fasm+eax*4],1 ;c++ 2 fasm dGeomSetPosition (box,p[0],p[1]) = ode_ dGeomSetPosition,[box],p.0,p.1
rept 0 {
     IDEBtns  IDCBtn1+IDE_ofst*0,SymblsButtonsTxts,12
     IDEBtns  IDCBtn1+IDE_ofst*1,SymblsButtonsTxts2,12
     IDEBtns  IDCBtn1+IDE_ofst*2,SymblsButtonsTxts3,12
     IDEBtns  IDCBtn1+IDE_ofst*3,SymblsButtonsTxts4,12
     IDEBtns  IDCBtn1+IDE_ofst*4,SymblsButtonsTxts5,12
     IDEBtns  IDCBtn1+IDE_ofst*5,SymblsButtonsTxts6,12
     IDEBtns  IDCBtn1+IDE_ofst*6,SymblsButtonsTxts7,12+3
     IDEBtns  IDCBtn1+IDE_ofst*7,SymblsButtonsTxts8,12+3
}
     ret
     .curvec    db 0 ;znat kakoi seichas vec1 or 2 or 3
     .tadd            db 'addss',0
     .tsubs           db 'subss',0
     .tmul            db 'mulss',0
     .tdiv            db 'divss',0
     .fromc2fasm      dd .fromc2fasmODE,.fromc2fasmODE,.fromc2fasmODE ;.fromc2fasmInvoke,.fromc2fasmCinvoke
	.fromc2fasmODE     db 'ode_ ,'
			   db 64 dup(0)
	;.fromc2fasmInvoke  db 'ode_ ,',0
	;.fromc2fasmCinvoke db 'cinvoke',0
     .tnormalize      dd .tnormaliz1,.tnormaliz2,.tnormaliz3
     .tnormaliz1        db 0;'movss xmm0,xmm1',13,10
                        ;db 'mulss xmm0,xmm0',13,10
                        ;db 'sqrtss xmm0,xmm0',13,10,0
     .tnormaliz2        db 'movss xmm0,xmm1',13,10
                        db 'movss xmm4,xmm2',13,10
                        db 'mulss xmm0,xmm0',13,10
                        db 'mulss xmm4,xmm4',13,10
                        db 'addss xmm0,xmm4',13,10
                        db 'rsqrtss xmm0,xmm0',13,10    ;'sqrtss'
                        db 'mulss xmm1,xmm0',13,10      ;'divss xmm1,xmm0'
                        db 'mulss xmm2,xmm0',13,10,0

     .tnormaliz3        db 'movss xmm0,xmm1',13,10
                        db 'movss xmm4,xmm2',13,10
                        db 'movss xmm5,xmm3',13,10
                        db 'mulss xmm0,xmm0',13,10
                        db 'mulss xmm4,xmm4',13,10
                        db 'mulss xmm5,xmm5',13,10
                        db 'addss xmm0,xmm4',13,10
                        db 'addss xmm0,xmm5',13,10
                        db 'rsqrtss xmm0,xmm0',13,10
                        db 'mulss xmm1,xmm0',13,10
                        db 'mulss xmm2,xmm0',13,10
                        db 'mulss xmm3,xmm0',13,10,0

.defwndproc:
        invoke  DefWindowProc,[hwnd],dword [wmsg],[wparam],[lparam]
        ret
endp
macro SlashToEnter cTxt { local .l1,.l2
      mov  rax,cTxt
.l1:  inc  rax
      cmp  byte [rax],0
      jz   .l2
      cmp  word [rax],'\\'
      jnz  .l1
      mov  word [rax],0x0a0d
      jmp  .l1
.l2:

      }
