;%%%2 0 STRG Use strings to retrieve APIs

API	macro	s
_&s     dd 0
	CHASH &s
endm


CHASH	macro s
	db "&s",0
endm


COMPARE	macro
LOCAL @@cmp
LOCAL @@match
	pushad
	mov edi,[ebx]
  @@cmp:
  	lodsb
  	test al,al
  	jz @@match
  	inc edi
  	xor al,[ebp.edi-1]
  	jz @@cmp
  @@match:
	popad
endm


GONEXT	macro
LOCAL @@seekend
  @@seekend:
	lodsb
	test al,al
	jnz @@seekend
endm


X_PUSH  macro r, x
        _xsize = 0
        l = 0
        irpc c, <x>
        l = l + 1
        endm
        j = 0
        s = 0
        l0 = l
        if (l0 and 3) ne 0
        j = j shl 8 + "x"
        s = s + 8
        l0 = l0 + 1
        endif
        if (l0 and 3) ne 0
        j = j shl 8 + "y"
        s = s + 8
        l0 = l0 + 1
        endif
        if (l0 and 3) ne 0
        j = j shl 8 + "z"
        s = s + 8
        l0 = l0 + 1
        endif
        q = 0
        i = l - 1
        irpc c1, <x>
        t = 0
        irpc c, <x>
        k = "&c"
        if k eq "~"    			;zero
        k = 0
        endif
        if k eq "|"    			;space
        k = 32
        endif
        if k eq "ö"    			;cr
        k = 13
        endif
        if k eq "õ"    			;lf
        k = 10
        endif
	if t eq i
        j = j shl 8
        if k ne 0
        j = j + k
        endif
        s = s + 8
        if s eq 32
        _xsize = _xsize + 4
        push j
        s = 0
        j = 0
        endif
        exitm
        endif
        t = t + 1
        endm l irpc
        i = i - 1
        endm
        if s ne 0
        error
        endif
endm


X_POP   macro
        lea esp, [esp + _xsize]
endm

