those variant of
Code:
asm    
    MOVF    ADRESL,W
    MOVWF   _TARGET_L
    MOVF    ADRESH,W
    MOVWF   _TARGET_H
endasm
shoud be replaced with
current.lowbyte = ADRESL
Current.HighByte = ADRESH

That's the first thing I see here on a lazy sunday while watching TV