macro searchLastWord { local k1
k1:   inc ebx
   cmp byte [ebx],' '
   ja k1
}
macro ignorCConst lb { local v1
      cmp dword [ebx],'cons'
      jnz v1
      cmp word [ebx+4],'t '
      jnz v1
      add ebx,5
      jmp lb
v1:
}
macro txtFGetLineWords f,l,lb { local l1,ll,enn
      mov [f],0
      mov [l],0
      mov ecx,f
l1:
      inc ebx
      ignorCConst  l1
      cmp byte [ebx],0
      jz  lb
      cmp byte [ebx],13
      jbe enn
      cmp word [ebx],'//'
      jz  ll
      cmp byte [ebx],' '
      jbe l1
      mov [ecx],ebx
      add ecx,4
      searchLastWord
      jmp l1
ll:
      inc ebx
      cmp byte [ebx],13
      ja  ll
      ;dec ebx
enn:

}

macro @copy@Word t {  local l1,l2,l3
      mov eax,t
      test eax,eax
      jz  l3
l1:   mov cl,[eax]
      cmp cl,';'
      jz  l2
      cmp cl,'/'
      jz  l2
      cmp cl,13
      jbe l2
      mov [edi],cl
      inc eax
      inc edi
      cmp cl,' '
      ja  l1
l2:   mov word [edi],0x0909
      add edi,2
l3:
}

macro @ReplacedWord { local k1,k2,l1,l2,l3,l4,enn
      mov ecx,edx
k1:   inc ecx
      cmp byte [ecx],10
      jz  k2
      cmp byte [ecx],'*'
      jnz k1
      mov dword [edx],'dd 0'
      mov byte [edx+4],';'
      lea edi,[edx+5]
      @copy@Word [tfFirstWord]
        mov byte [edi],10
        inc edi
      jmp enn
k2:
      cmp dword [edx],'int '
      jnz l1
      mov dword [edx],'dd 0'
      jmp enn
l1:   cmp dword [edx],'floa'
      jnz l2
      cmp byte  [edx+4],'t'
      mov dword [edx],'dd 0'
      mov byte  [edx+4],' '
      jmp enn
l2:   cmp dword [edx],'bool'
      jnz l3
      mov dword [edx],'db 0'
      jmp enn
l3:   cmp dword [edx],'uint'
      jnz l4
      cmp dword [edx+4],'32_t'
      jnz l4
      mov dword [edx],'dd 0'
      mov byte  [edx+4],';'
      jmp enn
l4:   cmp dword [edx],'uint'
      jnz l5
      cmp dword [edx+4],'16_t'
      jnz l5
      mov dword [edx],'dw 0'
      mov byte  [edx+4],';'
      jmp enn
l5:   cmp dword [edx],'uint'
      jnz l6
      cmp dword [edx+4],'64_t'
      jnz l6
      mov dword [edx],'dq 0'
      mov byte  [edx+4],';'
      jmp enn
l6:
enn:

}

pCStruct2Fasm:
        ;Msg Status    ;text from winclipboard
        mov ebx,Status-1
        mov edi,[@p_TxtIn+4]
pCStruct2FasmB:
        txtFGetLineWords tfFirstWord,tfLastWord,DoneExt@pCStruct
        cmp [tfFirstWord],0
        jz  pCStruct2FasmB
        @copy@Word [tfLastWord]
        mov edx,edi             ;for replace int\float\void*
        @copy@Word [tfFirstWord]
        mov byte [edi],10
        inc edi
        @ReplacedWord
        jmp  pCStruct2FasmB
        ;Msg        [@p_TxtIn+4]

DoneExt@pCStruct:  mov dword [edi],0
                   ;Msg  [tfFirstWord]
                   ;Msg  [tfFirstWord+4]
        ret
        ;struct have only two words
        tfFirstWord   dd 0 ;ptr to first word in line
        tfLastWord    dd 0 ;ptr to last word in line