Nie bardzo działam biegle w asmeblerze a muszę zmienić tylko kawałek kodu na 64-bit czy może ktoś mi pomóc ?

function StrLPos(const Str1, Str2: PChar; Len1, Len2: integer): PChar; assembler; register;
// EAX = Str1, EDX = Str2, ECX = Len1,
{$ASMMODE intel}
asm
        PUSH    EDI
        PUSH    ESI
        PUSH    EBX
        OR      EAX,EAX
        JE      @@2
        MOV     ESI, Len2
        INC     ECX
        OR      EDX,EDX
        JE      @@2
        OR      ESI, ESI
        JE      @@2
        SUB     ECX, ESI
        JBE     @@2
        MOV     EDI,EAX
        LEA     EBX,[RSI-1]
        MOV     ESI,EDX
@@1:
        LODSB
        REPNE   SCASB
        MOV     EAX,ECX
        JNE     @@2
        PUSH    EDI
        MOV     ECX,EBX
        REPE    CMPSB
        POP     EDI
        MOV     ECX,EAX
        MOV     ESI,EDX
        JNE     @@1
        LEA     EAX,[RDI-1]
        JMP     @@3
@@2:    XOR     EAX,EAX
@@3:    POP     EBX
        POP     ESI
        POP     EDI
end;


function StrLScan(const Str: PChar; Chr: Char; Len: integer): PChar;assembler; register;
// EAX = Str, DL=Chr, ECX = Len
{$ASMMODE intel}
asm
        PUSH    EDI
        MOV     EDI, EAX
        MOV     AL,DL
        REPNE   SCASB
        MOV     EAX,0
        JNE     @@1
        MOV     EAX, EDI
        DEC     EAX
@@1:    POP     EDI

end;

z góry dzięki