Okay, well, 06D5E8 in the ROM is some ASM that is in my notes as activating every step. This calls the Repel checks and such as well. I suggest you branch from here.
Try just making it heal once every step for now.
0803FBE8 is GetPokemonData. R0 needs to contain a pointer to the Pokemon. R1 is either 0x39 for getting the Pokemon's Current HP; 0x3A for getting it's Max HP; 0x37 for it's Status Ailment.
0804037C is SetPokemonData. R0 contains the pointer to the Pokemon. R1 contains the same values as above. R2 contains a pointer to free RAM.
When I say free RAM, I mean it's best to use the Stack for that. So just subtract 4 from the Stack at the start of the function and add 4 to it after everything.
EG:
PUSH {R0-R2,LR}
SUB SP, SP, 4
............
Everything else
...........
ADD SP, SP, 4
POP {R0-R2,PC}
You dig?