I've reversed AimAssist_GetTagPos and it seems to be working, but the weird thing is that the stance of the player doesn't affect the tag position - as if I were using entity_t.origin. I've isolated the relevant part of the code, this is the actual GetTagPos call (1.4.382):
Obviously this only finds j_head for entity 0, I test it joining my empty server so that I'm entity 0. I know there's the function to resolve tag names to numbers, it's not included here because it's not relevant.
int tagNum = 0x127A; //j_head
DWORD dwCall = GETTAGPOS_ADDR; //0x571790
__asm LEA ESI, [result]
__asm PUSH ESI
__asm MOV EDI, tagNum
__asm MOV ESI, ENTITY_BASE_ADDR //0xA08630
__asm CALL dwCall
__asm ADD ESP, 4
printf("location %.2lf %.2lf %.2lf | %.2lf %.2lf %.2lf ", result, result, result, ((entity_t*)ENTITY_BASE_ADDR)->Origin, ((entity_t*)ENTITY_BASE_ADDR)->Origin, ((entity_t*)ENTITY_BASE_ADDR)->Origin);
So basically, in this way, the position will change if I'm moving around, or even when I fire because of the recoil, but it will not change if I crouch/prone. Since it works for everyone I've asked, I'm not really sure what the issue could be. Thanks for your help.