rendered paste bodyint __thiscall EQPlayer__CreateFromSpawn(int EQPlayer, int EQSpawn)
{
struct_EQSpawnPtr *EQSpawnPtr; // edi@1
struct_EQPlayerPtr *EQPlayerPtr; // esi@1
int result; // eax@2
int v5; // eax@3
char *v6; // ebx@3
struct_EQPlayerPtr *v7; // ecx@4
char *v8; // eax@5
char *v9; // ecx@5
int v10; // ecx@5
int v11; // ecx@8
int v12; // eax@9
signed int v13; // edx@10
int v14; // ecx@22
int v16; // [sp-8h] [bp-24h]@15
int v17; // [sp+8h] [bp-14h]@25
int v18; // [sp+Ch] [bp-10h]@25
int v19; // [sp+10h] [bp-Ch]@25
int v20; // [sp+14h] [bp-8h]@1
int v21; // [sp+18h] [bp-4h]@12
signed int v22; // [sp+24h] [bp+8h]@3
signed int v23; // [sp+24h] [bp+8h]@5
signed int v24; // [sp+24h] [bp+8h]@12
signed int v25; // [sp+24h] [bp+8h]@19
char *v26; // [sp+24h] [bp+8h]@21
EQSpawnPtr = (struct_EQSpawnPtr *)EQSpawn;
EQPlayerPtr = (struct_EQPlayerPtr *)EQPlayer;
v20 = 1;
if ( EQSpawn )
{
v5 = *(_DWORD *)(EQSpawn + 75);
v22 = 0;
*(_DWORD *)(EQPlayer + 572) = v5;
*(_BYTE *)(EQPlayer + 589) = EQSpawnPtr->byte6;
*(_DWORD *)(EQPlayer + 576) = EQSpawnPtr->dword144;
*(_DWORD *)(EQPlayer + 0x230) = EQSpawnPtr->dwordE9;
v6 = EQSpawnPtr->fC5;
do
{
sub_47A406(v22, *(_DWORD *)(v6 + 151));
sub_47A3EB(v22++, *(_DWORD *)v6);
v6 += 4;
}
while ( v22 < 9 );
EQPlayerPtr->dword258 = EQSpawnPtr->dword154;
EQPlayerPtr->dword270 = EQSpawnPtr->dword14F;
EQPlayerPtr->dword25C = EQSpawnPtr->dwordBD;
EQPlayerPtr->dword274 = EQSpawnPtr->byte56;
EQPlayerPtr->dword284 = 100;
EQPlayerPtr->byte245 = EQSpawnPtr->byte55;
EQPlayerPtr->byte246 = EQSpawnPtr->byte92;
EQPlayerPtr->byte247 = EQSpawnPtr->byte72;
EQPlayerPtr->byte248 = EQSpawnPtr->byte14C;
EQPlayerPtr->byte249 = EQSpawnPtr->byte91;
EQPlayerPtr->byte24A = EQSpawnPtr->byte9C;
EQPlayerPtr->byte1B7 = EQSpawnPtr->byte112;
EQPlayerPtr->byte1B8 = EQSpawnPtr->byte8B;
EQPlayerPtr->byte24B = EQSpawnPtr->byte0;
EQPlayerPtr->dword280 = EQSpawnPtr->dword47;
EQPlayerPtr->dword288 = EQSpawnPtr->dwordEE;
EQPlayerPtr->dword27C = EQSpawnPtr->dwordC1;
EQPlayer__SetBoatAttribs(v7, EQSpawnPtr->dword11C);
EQPlayerPtr->byte244 = EQSpawnPtr->byte53;
EQPlayerPtr->byte252 = EQSpawnPtr->byte14B;
EQPlayerPtr->byte24E = EQSpawnPtr->byte14E;
EQPlayerPtr->byte24C = EQSpawnPtr->byte97;
EQPlayerPtr->byte250 = EQSpawnPtr->byte54;
EQPlayerPtr->byte1B1 = EQSpawnPtr->byte4;
EQPlayerPtr->byte24F = EQSpawnPtr->byte148;
EQPlayerPtr->byte251 = EQSpawnPtr->byte57;
EQPlayerPtr->byte253 = EQSpawnPtr->byte14A;
EQPlayerPtr->dword264 = EQSpawnPtr->byte5;
sub_47E900(v10, EQSpawnPtr->byteED);
EQPlayerPtr->byte1B4 = EQSpawnPtr->byte180;
EQPlayerPtr->byte1B5 = EQSpawnPtr->byte149;
EQPlayerPtr->byte1B2 = EQSpawnPtr->byte90;
EQPlayerPtr->byte256 = EQSpawnPtr->byte1;
EQPlayerPtr->dword28C = EQSpawnPtr->byte14D;
EQPlayerPtr->byte254 = EQSpawnPtr->byte153;
EQPlayerPtr->byte255 = EQSpawnPtr->byte113;
strcpy(&EQPlayerPtr->char1, &EQSpawnPtr->char124);
EQPlayerPtr->dword278 = EQSpawnPtr->byte3;
*(float *)&EQPlayerPtr->dword30 = 0.0;
v9 = &EQPlayerPtr->f1B9[83];
*(float *)&EQPlayerPtr->dword34 = 0.0;
*(float *)&EQPlayerPtr->dword38 = 0.0;
EQPlayerPtr->float4C = 0.0;
EQPlayerPtr->float50 = 0.0;
EQPlayerPtr->float48 = 0.0;
EQPlayerPtr->float3C = 0.0;
EQPlayerPtr->float40 = 0.0;
EQPlayerPtr->float44 = 0.0;
EQPlayerPtr->float58 = 0.0;
EQPlayerPtr->float54 = 0.0;
EQPlayerPtr->float5C = 0.0;
v23 = 0;
EQPlayerPtr->byte1B3 = EQSpawnPtr->byte123 == 1;
EQPlayerPtr->byte1B0 = EQSpawnPtr->byte58;
EQPlayerPtr->dword294 = EQSpawnPtr->dword98;
EQPlayerPtr->dword298 = EQSpawnPtr->dword8C;
EQPlayerPtr->dword29C = EQSpawnPtr->dword93;
EQPlayerPtr->dword2A0 = EQSpawnPtr->dword4F;
EQPlayerPtr->dword1A0 = EQSpawnPtr->dword158;
v8 = EQSpawnPtr->f114;
do
{
*(_DWORD *)v9 = *(_DWORD *)v8;
++v23;
v8 += 4;
v9 += 4;
}
while ( v23 < 2 );
dword_9006AC = 1;
if ( (EQSpawnPtr->dword62 & 0x1FF80000) == 34603008 )
{
v11 = EQSpawnPtr->dword5E;
if ( (EQSpawnPtr->dword5E & 0x3FF) == 66 )
{
v12 = EQSpawnPtr->dword62 & 0xE007FFFF;
v20 = 2;
EQSpawnPtr->dword62 = v12;
EQSpawnPtr->dword5E = v11 & 0xFFFFFC00;
}
}
sub_465304(&EQPlayerPtr->dword30, &EQSpawnPtr->dword5E, EQPlayerPtr);
v13 = 0;
dword_9006AC = 0;
if ( EQPlayerPtr->byte254 > -1 && sub_479E02(-1) )
{
v24 = v13;
v21 = (int)EQSpawnPtr->f15C;
do
{
if ( v24 && v24 < 7 )
v16 = EQPlayerPtr->byte254;
else
v16 = *(_DWORD *)(v21 - 151);
sub_47A3EB(v24, v16);
sub_47A406(v24++, *(_DWORD *)v21);
v21 += 4;
}
while ( v24 < 9 );
EQPlayerPtr->byte254 = -1;
}
else
{
v25 = v13;
v21 = (int)EQSpawnPtr->f15C;
do
{
sub_47A3EB(v25, *(_DWORD *)(v21 - 151));
sub_47A406(v25++, *(_DWORD *)v21);
v21 += 4;
}
while ( v25 < 9 );
}
v26 = EQSpawnPtr->f73;
v21 = 6;
do
{
v14 = *(_DWORD *)v26;
if ( *(_DWORD *)v26 )
{
if ( v14 < dword_85139C )
{
if ( (char *)dword_851398 + 268 * v14 )
{
v17 = EQPlayerPtr->dword30;
v18 = EQPlayerPtr->dword34;
v19 = EQPlayerPtr->dword38;
sub_495CC3(v14, 2, (char *)dword_851398 + 268 * v14, EQPlayerPtr, EQPlayerPtr, &v17, 0, 0, 0);
}
}
}
v26 += 4;
}
while ( v21-- != 1 );
sub_47A77B((int)EQPlayerPtr, &EQSpawnPtr->charF2);
sub_47A7B7((int)EQPlayerPtr, &EQSpawnPtr->char9D);
result = v20;
}
else
{
result = 0;
}
return result;
}