Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char __fastcall AGameSession::AtCapacity(AGameSession *this, bool bSpectator, const FString *AuthToken, UNetConnection *Connection)
- {
- UNetConnection *v4; // rsi
- const FString *v5; // rdi
- AGameSession *v6; // rbx
- int v7; // ebp
- int v9; // er12
- __int64 v10; // rax
- int v11; // er14
- int v12; // esi
- __int64 v13; // rax
- int v14; // eax
- int v15; // edi
- int v16; // er15
- __int64 v17; // rax
- int v18; // er13
- __int64 v19; // r12
- __int64 v20; // r14
- __int64 v21; // rax
- wint_t *v22; // rbx
- EAppMsgType::Type *v23; // rdi
- signed __int64 v24; // rdi
- wint_t v25; // cx
- wint_t v26; // si
- wint_t v27; // ax
- char v28; // bl
- __int64 v29; // rdi
- FMalloc *v30; // rcx
- char v31; // si
- __int64 v32; // rbx
- FMalloc *v33; // rcx
- SharedPointerInternals::FReferenceControllerState *v34; // rbx
- int v35; // [rsp+20h] [rbp-98h]
- int v36; // [rsp+24h] [rbp-94h]
- int v37; // [rsp+28h] [rbp-90h]
- int v38; // [rsp+2Ch] [rbp-8Ch]
- __int64 v39; // [rsp+38h] [rbp-80h]
- __int64 v40; // [rsp+40h] [rbp-78h]
- wint_t *v41; // [rsp+48h] [rbp-70h]
- int v42; // [rsp+50h] [rbp-68h]
- TSharedPtr<IOnlineSession,1> result; // [rsp+60h] [rbp-58h]
- __int64 v44; // [rsp+70h] [rbp-48h]
- __int64 v45; // [rsp+78h] [rbp-40h]
- v44 = -2i64;
- v4 = Connection;
- v5 = AuthToken;
- v6 = this;
- v7 = 0;
- if ( bSpectator )
- return *(_DWORD *)(*(_QWORD *)(((__int64 (__fastcall *)(AGameSession *))this->vfptr[4].DoesObjectWantToLoadFromSaveGame)(this)
- + 584)
- + 1176i64) >= this->MaxSpectators;
- v9 = this->MaxPlayers;
- v37 = this->MaxPlayers;
- v10 = ((__int64 (__fastcall *)(AGameSession *))this->vfptr[4].DoesObjectWantToLoadFromSaveGame)(this);
- v11 = (*(__int64 (__fastcall **)(_QWORD))(**(_QWORD **)(v10 + 584) + 2896i64))(*(_QWORD *)(v10 + 584));
- v36 = v11;
- Online::GetSessionInterface(&result, 0i64);
- if ( result.Object )
- {
- v11 = result.Object->vfptr->GetNumConnectedPlayersExcludingAuthToken(result.Object, v5);
- v36 = v11;
- }
- v4->UPlayer::UObject::UObjectBaseUtility::UObjectBase::vfptr[12].ShouldInstance(v4, (UProperty *)&v41);
- v12 = 0;
- v35 = 0;
- v13 = ((__int64 (__fastcall *)(AGameSession *))v6->vfptr[4].DoesObjectWantToLoadFromSaveGame)(v6);
- v14 = (*(__int64 (__fastcall **)(_QWORD))(**(_QWORD **)(v13 + 584) + 3344i64))(*(_QWORD *)(v13 + 584));
- v15 = v14 + 1;
- v38 = v14 + 1;
- if ( ((__int64 (__fastcall *)(AGameSession *))v6->vfptr[4].DoesObjectWantToLoadFromSaveGame)(v6)
- && *(_QWORD *)(((__int64 (__fastcall *)(AGameSession *))v6->vfptr[4].DoesObjectWantToLoadFromSaveGame)(v6) + 264) )
- {
- v16 = 0;
- v17 = *(_QWORD *)(((__int64 (__fastcall *)(AGameSession *))v6->vfptr[4].DoesObjectWantToLoadFromSaveGame)(v6) + 264);
- v39 = v17;
- v18 = 0;
- if ( *(_DWORD *)(v17 + 136) > 0 )
- {
- v40 = v15;
- v19 = 0i64;
- while ( 1 )
- {
- v20 = *(_QWORD *)(v19 + *(_QWORD *)(v17 + 128));
- if ( *(_QWORD *)(v20 + 96) )
- {
- v21 = (*(__int64 (__fastcall **)(__int64, __int64 *))(*(_QWORD *)v20 + 720i64))(v20, &v45);
- v7 |= 1u;
- v22 = (wint_t *)&Data;
- if ( v42 )
- v22 = v41;
- if ( *(_DWORD *)(v21 + 8) )
- v23 = *(EAppMsgType::Type **)v21;
- else
- v23 = &Data;
- v24 = (char *)v23 - (char *)v22;
- while ( 1 )
- {
- v25 = *(wint_t *)((char *)v22 + v24);
- if ( !v25 && !*v22 )
- goto LABEL_21;
- v26 = towlower(v25);
- v27 = towlower(*v22);
- if ( v26 != v27 )
- break;
- ++v22;
- }
- if ( v26 == v27 )
- {
- LABEL_21:
- v28 = 1;
- v12 = v35;
- goto LABEL_24;
- }
- v12 = v35;
- }
- v28 = 0;
- LABEL_24:
- if ( v7 & 1 )
- {
- v7 &= 0xFFFFFFFE;
- v29 = v45;
- if ( v45 )
- {
- v30 = GMalloc;
- if ( !GMalloc )
- {
- GCreateMalloc();
- v30 = GMalloc;
- }
- ((void (__fastcall *)(FMalloc *, __int64))v30->vfptr[2].Exec)(v30, v29);
- }
- }
- if ( v28 )
- v35 = ++v12;
- if ( v40 > 0 && v12 >= v38 )
- goto LABEL_43;
- if ( *(_QWORD *)(v20 + 336) && *(_BYTE *)(v20 + 220) & 2 )
- ++v16;
- ++v18;
- v19 += 8i64;
- v17 = v39;
- if ( v18 >= *(_DWORD *)(v39 + 136) )
- {
- v11 = v36;
- v9 = v37;
- break;
- }
- }
- }
- if ( v11 >= v16 )
- v16 = v11;
- v11 = v16;
- }
- if ( v9 <= 0 || v11 < v9 )
- {
- v31 = 0;
- goto LABEL_45;
- }
- LABEL_43:
- v31 = 1;
- LABEL_45:
- v32 = (__int64)v41;
- if ( v41 )
- {
- v33 = GMalloc;
- if ( !GMalloc )
- {
- GCreateMalloc();
- v33 = GMalloc;
- }
- ((void (__fastcall *)(FMalloc *, __int64))v33->vfptr[2].Exec)(v33, v32);
- }
- v34 = result.SharedReferenceCount.ReferenceController;
- if ( result.SharedReferenceCount.ReferenceController
- && !_InterlockedDecrement(&result.SharedReferenceCount.ReferenceController->SharedReferenceCount) )
- {
- v34->DestroyObject(v34->Object);
- if ( !_InterlockedDecrement(&v34->WeakReferenceCount) )
- operator delete(v34);
- }
- return v31;
- }
Advertisement
Add Comment
Please, Sign In to add comment