NumbtnsThiiss = 9 ;8
macro DoCopy00 a,b,z { local .1,.2
.1:   mov al,[a]
      cmp al,z
      jz .2
      mov [b],al
      inc  a
      inc  b
      jmp  .1
.2:
      }
macro Inc_DigECX a,v { local .1
      add  byte [a],v
      cmp  byte [a],'9'
      jbe  .1
      ;mov  byte [a],'0'
      sub  byte [a],10
      inc  byte [a-1]
.1:
      }
macro tknSplitWord mtk { local .00,.0b,.0c,.a1,.a2,.a3,.aa
        cmp dword [eax],'::sr'
        jnz .aa
        add eax,4
        cmp byte [eax],'2'
        jnz .a1
        lea edx,dword [eax+2]
        mov esi,RichTxt
        mov word [txtCMP2Word+14+1],'00'
        mov word [txtCMP2Word+9+1],'[e'
;pusha
;Msg ComboText ;"CMP2W"
;popa
.00:    mov ecx,txtCMP2Word
    rept 1 \{
        DoCopy00 ecx,esi,'?'
        mov ax,word [edx]
        add edx,2
        mov word [esi],ax ;0x3232;ax
        mov byte [esi+2],'"'
        add esi,3
        Inc_DigECX ecx-4,2
        inc  ecx
        DoCopy00 ecx,esi,0
        cmp byte [edx+1],0 ;'"'
        jnz .00
        \}
        mov word [esi],0
        ;pusha
        ;Msg RichTxt
        ;popa
        mov esi,RichTxt
        mov ecx,ComboText
        DoCopy00 esi,ecx,0
        mov word [ecx],0
        ;pusha
        ;Msg ComboText
        ;popa
        jmp mtk
.a1:    cmp byte [eax],'4'
        jnz .a2
         lea edx,dword [eax+2]
        mov esi,RichTxt
        mov word [txtCMP4Word+15+1],'00'
        mov word [txtCMP4Word+10+1],'[e'
.0b:    mov ecx,txtCMP4Word
        DoCopy00 ecx,esi,'?'
        mov eax,dword [edx]
        add edx,4
        mov dword [esi],eax
        mov byte [esi+4],'"'
        add esi,5
        Inc_DigECX ecx-4,4
        inc  ecx
        DoCopy00 ecx,esi,0
        cmp byte [edx+1],0 ;'"'
        jnz .0b
        mov word [esi],0
        ;pusha
        ;Msg RichTxt
        ;popa
        mov esi,RichTxt
        mov ecx,ComboText
        DoCopy00 esi,ecx,0
        mov word [ecx],0
        jmp mtk
.a2:    cmp byte [eax],'8'
        jnz .aa
          lea edx,dword [eax+2]
        mov esi,RichTxt
        mov word [txtCMP8Word+15+1],'00'
        mov word [txtCMP8Word+10+1],'[r'
.0c:    mov ecx,txtCMP8Word
        DoCopy00 ecx,esi,'?'
        mov eax,dword [edx]
        mov dword [esi],eax
        mov eax,dword [edx+4]
        mov dword [esi+4],eax
        add edx,8
        mov byte [esi+8],'"'
        add esi,9
        Inc_DigECX ecx-4,8
        inc  ecx
        DoCopy00 ecx,esi,0
        cmp byte [edx+1],0 ;'"'    ;[edx+1] daval crash
        jnz .0c
        mov word [esi],0
        ;pusha
        ;Msg txtCMP8Word
        ;popa
        mov esi,RichTxt
        mov ecx,ComboText
        DoCopy00 esi,ecx,0
        mov word [ecx],0
        jmp mtk
.aa:
        }
macro replcSlash v { local .ll,.l0,.kk
        mov eax,v
        dec eax
.ll:    inc eax
        tknSplitWord .l0
        cmp byte [eax],'~'
        jnz .kk
        mov byte [eax],9
        jmp .ll
.kk:
        cmp byte [eax],0
        jz  .l0
        cmp byte [eax],'\'
        jnz .ll
        mov byte [eax],13
        jmp .ll
.l0:
        }
macro AllListBtns {local .ll,.l0,.l3,.l3b,.mm
      xor     ecx,ecx
.ll:  mov     eax,ecx
      add     eax,IDC_UserCombo+20
      cmp     [wparam],eax
      jnz     .l0
mov [curRezim_],eax
push ecx
invoke SendMessage,[ComboList], CB_RESETCONTENT, 0, 0
pop ecx
      mov     eax,[pUsrFile+ecx*4]
      call    LoadBtnUsrTxt
      ret
.l0:  inc     ecx
      cmp     ecx,NumbtnsThiiss
      jnz     .ll
cmp     [wparam],IDC_UserCombo+47       ;delete
jnz     .l3bt
        invoke SendMessage,[FasmFeditHwnd],WM_KEYDOWN,VK_DELETE,2
invoke SetForegroundWindow,[FasmFeditHwnd]
        ret
.l3bt:  cmp     [wparam],IDC_UserCombo+48       ;backspace
        jnz     .l3bq
        invoke SendMessage,[FasmFeditHwnd],WM_KEYDOWN,VK_BACK,2
invoke SetForegroundWindow,[FasmFeditHwnd]
        ret
.l3bq:
cmp     [wparam],IDC_UserCombo+18       ;entr VK_RETURN
jnz     .l3b
        invoke SendMessage,[FasmFeditHwnd],WM_KEYDOWN,VK_RETURN,2
;invoke SetActiveWindow,[FasmFeditHwnd]
;invoke ShowWindow,[FasmFeditHwnd],1
invoke SetForegroundWindow,[FasmFeditHwnd]
        ;mov dword [ComboText],0x00000a0d
        ;mov    esi,ComboText
        ;call   CopyToWinClipboard
        ;PasteTxtTo
        ret
.l3b:   cmp     [wparam],IDC_UserCombo+45
        jnz     .l3q  
        invoke SendMessage,[FasmFeditHwnd], WM_UNDO, 0, 0       
        ret
.l3q:   cmp     [wparam],IDC_UserCombo+46
        jnz     .l3t
        invoke SendMessage,dword [ComboList],WM_GETTEXT,ComboTextSize,ComboText 
        mov dword [ComboText+ComboTextSize+1],0
        replcSlash ComboText
        mov    esi,ComboText
        call   CopyToWinClipboard
        invoke SendMessage,dword [AllRichEditHwnd], WM_PASTE,0,0 ;AllRichEditHwnd RichUsrMessages
        ret
.l3t:
      cmp     [wparam],IDC_UserCombo+19  ;send
      jnz     .l3
      cmp     [curRezim_],IDC_UserCombo+20+8
      jnz     .mm
        invoke SendMessage,dword [ComboUser],WM_GETTEXT,18,RichTxt
        cmp   eax,15
        jbe   .gghhf02
        movups xmm1,dqword [RichTxt]
        movups dqword [UsrSmartTxt+4],xmm1
        invoke SendMessage,[ComboList], CB_RESETCONTENT, 0, 0
        mov     eax,[pUsrFile+8*4]
        call    LoadBtnUsrTxt
.gghhf02:
        mov esi,GenTxt
        call   Proc_Smart 
        ret
      ;Msg     "Smart"
.mm:
invoke SendMessage,dword [ComboList],WM_GETTEXT,ComboTextSize,ComboText 
mov dword [ComboText+ComboTextSize+1],0
replcSlash ComboText
invoke SendMessage,[BtnCheckReplacer],BM_GETSTATE,0,0
test    eax,BST_CHECKED ;BST_PUSHED 
  je    .NotSet
        mov  eax,RichUsrMessages ;AllRichEditHwnd
        call GetRichTxt
        mov    esi,ComboText
        call   UsrTknReplace
        PasteTxtTo
        ;Msg RichTxt
        ret
.NotSet:
     mov    esi,ComboText
     call   CopyToWinClipboard
     PasteTxtTo
     ret
.l3:
      }
IDC_UserCombo = 10000
        jmp @f
        curRezim_    dd 0
        ComboList    dd 0
        UsrCPUTxt    db 'usr\cpu.txt',0
        UsrSSETxt    db 'usr\sse.txt',0
        UsrFPUTxt    db 'usr\fpu.txt',0
        UsrAVXTxt    db 'usr\avx.txt',0
        UsrRegsTxt   db 'usr\regs.txt',0
        UsrValsTxt   db 'usr\vals.txt',0
        UsrDataTxt   db 'usr\data.txt',0
        UsrFasmTxt   db 'usr\fasm.txt',0
        UsrSmartTxt  db 'usr\smart0000000.txt',0

        pUsrFile  dd UsrCPUTxt,UsrSSETxt,UsrAVXTxt,UsrFPUTxt,UsrRegsTxt,UsrValsTxt,UsrDataTxt,UsrFasmTxt,UsrSmartTxt
LoadBtnUsrTxt:
        ;mov eax,UsrCPUTxt
        mov edx,GenTxt ;UserAllTxt
        call LoadFile
        cmp  dword [rbait],0
        jz   .jj
        mov  esi,GenTxt ;UserAllTxt
        mov  ebx,esi
        add  ebx,[rbait]
.gg:    mov  ecx,tmptxt ;-2048
.ii:    mov  al,[esi]
        cmp  esi,ebx
        jae  .jj
        mov  [ecx],al
        inc  ecx
        inc  esi
        cmp  al,13
        ja   .ii
        mov  word [ecx-1],0
        inc  esi
        invoke SendMessage,[ComboList],dword CB_ADDSTRING,dword 0,tmptxt ;-2048
        jmp  .gg
.jj:    ret
@@:
;CBS_AUTOHSCROLL bolshe>300 symbols in combobox budet
invoke CreateWindowEx,0,'combobox',0,dword CBS_AUTOHSCROLL+WS_VISIBLE+13+WS_VSCROLL+WS_CHILD+CBS_HASSTRINGS,\
          dword 4,dword 4,dword 335,dword 302,[DLL_hwnd],dword IDC_UserCombo,0,NULL
mov  [ComboList],eax
invoke CreateWindowEx,0,'button','Send',dword WS_VISIBLE+WS_CHILD,dword 340,dword 4,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+19,0,0
invoke CreateWindowEx,0,'button','Enter',dword WS_VISIBLE+WS_CHILD,dword 340,dword 26,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+18,0,0
invoke CreateWindowEx,0,'button','Undo',dword WS_VISIBLE+WS_CHILD,dword 340,dword 26+22,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+45,0,0
invoke CreateWindowEx,0,'button','Delet',dword WS_VISIBLE+WS_CHILD,dword 340,dword 26+22*2,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+47,0,0
invoke CreateWindowEx,0,'button','BakSp',dword WS_VISIBLE+WS_CHILD,dword 340,dword 26+22*3,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+48,0,0
invoke CreateWindowEx,0,'button','ToRich',dword WS_VISIBLE+WS_CHILD,dword 340,dword 26+22*4,dword 50,dword 22,[DLL_hwnd],dword IDC_UserCombo+46,0,0
              
        mov  eax,[pUsrFile]
        call LoadBtnUsrTxt
        jmp  @f
        ListBtnsTxt_ db ' CPU   ',0
                     db ' SSE   ',0
                     db ' AVX   ',0
                     db ' FPU   ',0
                     db ' Regs  ',0
                     db ' Values',0
                     db ' Data  ',0
                     db ' Fasm  ',0
                     db ' Smart ',0
@@:
        xor ebx,ebx
        mov esi,4
        mov edi,ListBtnsTxt_
.ewyr:
        mov eax,IDC_UserCombo+20
        add eax,ebx
        invoke CreateWindowEx,0,'button',edi,dword WS_VISIBLE+WS_CHILD,dword esi,dword 308,dword 50,dword 22,[DLL_hwnd],dword eax,0,0
        add edi,8
        add esi,52
        inc ebx
        cmp ebx,NumbtnsThiiss
        jb  .ewyr
