Hey, I have a quick question. I'm looking at GetCorpseMapPosition
Code:
; sub_873A80
; Attributes: bp-based frame
//Start Method
var_28= qword ptr -28h
var_1C= qword ptr -1Ch
var_14= dword ptr -14h
var_10= byte ptr -10h
var_C= dword ptr -0Ch
var_8= dword ptr -8
var_4= dword ptr -4
arg_0= dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
xorps xmm0, xmm0
push esi
lea eax, [ebp+var_10]
push eax
lea ecx, [ebp+var_1C]
push ecx ; double
lea edx, [ebp+var_4]
push edx
movss dword ptr [ebp+var_1C], xmm0
movss dword ptr [ebp+var_1C+4], xmm0
movss [ebp+var_14], xmm0
;Call to fnc(dword*,qword*,char*)
call sub_82D640
mov edx, [ebp+var_4]
push 0
push 0
push 0
lea eax, [ebp+var_C]
push eax
lea ecx, [ebp+var_8]
push ecx
push edx
lea eax, [ebp+var_1C]
push eax
call sub_871D50
fld [ebp+var_8]
mov esi, [ebp+arg_0]
fstp [esp+48h+var_28]
add esp, 20h
push esi ; int
call sub_4359D0
fld [ebp+var_C]
add esp, 4
fstp [esp+28h+var_28]
push esi ; int
call sub_4359D0
add esp, 0Ch
mov eax, 2
pop esi
mov esp, ebp
pop ebp
retn
//End method
Hex-rays
Code:
signed int __cdecl sub_873A80(int a1)
{
double v3; // [sp+Ch] [bp-1Ch]@1
char v5; // [sp+18h] [bp-10h]@1
float v6; // [sp+1Ch] [bp-Ch]@1
float v7; // [sp+20h] [bp-8h]@1
int v8; // [sp+24h] [bp-4h]@1
;Zero the floats/double
__asm
{
xorps xmm0, xmm0
movss dword ptr [ebp+var_1C], xmm0
movss dword ptr [ebp+var_1C+4], xmm0
movss [ebp+var_14], xmm0
}
//Calls a function fnc(dword *,qword*,char*)
sub_82D640(&v8, &v3, &v5);
//What does this do?
sub_871D50(&v3, v8, &v7, &v6, 0, 0, 0);
;Put Y on the return value?
sub_4359D0(a1, v7);
;Put X on the return value?
sub_4359D0(a1, v6);
return 2;
}
I dont understand exactly where or what function could possibly retrieve the x/y/z of the corpse. It seems to be sub_871D50 but when I looked at that, it was a veeeeery long function. Not much I could understand from it.
Any help please?
Thank you!