; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

    .486
    .model flat, stdcall
    option casemap :none

    szLen PROTO :DWORD

    .code

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

szCatStr proc lpszSource:DWORD, lpszAdd:DWORD

    push edi

    invoke szLen,lpszSource ; get source length
    mov edi, lpszSource
    mov ecx, lpszAdd
    add edi, eax            ; set write starting position
    xor edx, edx            ; zero index
    xor eax, eax            ; avoid stall with following AL reads and writes

  @@:
    mov al, [ecx+edx]       ; write append string to end of source
    mov [edi+edx], al
    add edx, 1
    test al, al             ; exit when terminator is written
    jne @B

    pop edi
    mov eax, lpszSource     ; return start address of source

    ret

szCatStr endp

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

end

