Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __thiscall Character__QueueNiNodeUpdate(Character *this, bool unk1)
- {
- int result; // eax@1
- Character *v3; // edi@1
- volatile LONG **v4; // eax@4
- void *v5; // esi@4
- int v6; // esi@4
- void *v7; // esi@8
- volatile LONG **v8; // eax@8
- volatile LONG **v9; // eax@9
- int v10; // ebx@17
- void *v11; // [sp+10h] [bp+8h]@6
- v3 = this;
- result = TESObjectREFR__GetNiNode(this);
- if ( result )
- {
- if ( unk1 )
- {
- if ( v3 == LODWORD(g_player2) )
- {
- v4 = (volatile LONG **)((int (__stdcall *)(_DWORD, int))g_player->baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr[31].ReleaseRefs)(
- 0,
- v6);
- v5 = *v4;
- if ( *v4 )
- InterlockedIncrement(*v4);
- v11 = v5;
- if ( v5 != 0 ? (int)sub_A51DE0 : 0 )
- ActorWeightModel__UpdateWeightData(v5);
- v8 = (volatile LONG **)((int (__cdecl *)(signed int))g_player->baseclass_0.baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr[31].ReleaseRefs)(1);
- sub_4145F0(&unk1, v8);
- v7 = (void *)unk1;
- }
- else
- {
- v9 = (volatile LONG **)((int (__thiscall *)(Character *))v3->baseclass_0.baseclass_0.baseclass_0.baseclass_0.vfptr[31].CopyFromBase)(v3);
- v7 = *v9;
- if ( *v9 )
- InterlockedIncrement(*v9);
- }
- if ( v7 != 0 ? (int)sub_A51DE0 : 0 )
- ActorWeightModel__UpdateWeightData(v7);
- if ( v7 )
- {
- if ( !InterlockedDecrement((volatile LONG *)v7) )
- {
- sub_46DAA0(v7);
- Heap__Free((int)&g_heap, v7, 0);
- }
- }
- }
- if ( IsTaskThreadBusy() )
- {
- result = sub_6A3B30(g_bsTaskPool, v10, (int)v3);
- }
- else
- {
- ActorEquipData__SetEquipFlag(0x17u);
- ActorEquipData__UpdateEquipment(v3->baseclass_0.unk080[2], &v3->baseclass_0);
- result = sub_6AE350(v3);
- if ( !result )
- result = sub_6FD1A0(v3->baseclass_0.unk080[2], 0);
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement