Created
April 17, 2019 06:39
-
-
Save Konctantin/2463b7f8f9b05642c9d250a3b3c5387f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| char __fastcall ClientCache::WriteCreatureRecord(__int64 a1, __int64 a2) | |
| { | |
| __int64 v2; // r13 | |
| __int64 v3; // r12 | |
| unsigned int v4; // ebx | |
| unsigned int v5; // edi | |
| unsigned int v6; // esi | |
| char v7; // bl | |
| unsigned int v8; // edx | |
| char v9; // dl | |
| char v10; // r9 | |
| _DWORD *v11; // r12 | |
| signed __int64 v12; // r14 | |
| unsigned int v13; // er15 | |
| unsigned int v14; // er8 | |
| char v15; // si | |
| unsigned int v16; // er15 | |
| unsigned int v17; // er8 | |
| char v18; // si | |
| signed __int64 v19; // r15 | |
| signed __int64 v20; // rbx | |
| signed __int64 v21; // rdi | |
| signed __int64 v22; // rsi | |
| int *v23; // rbx | |
| int *v24; // rbx | |
| int v25; // edx | |
| unsigned int v26; // eax | |
| __int64 v27; // rsi | |
| __int64 v28; // r12 | |
| signed __int64 v29; // rdi | |
| int *v30; // rbx | |
| int v31; // edx | |
| int v32; // eax | |
| __int64 v33; // rdi | |
| signed __int64 v34; // rax | |
| __int64 v36; // [rsp+20h] [rbp-10h] | |
| __int16 v37; // [rsp+28h] [rbp-8h] | |
| __int64 v38; // [rsp+70h] [rbp+40h] | |
| __int64 v39; // [rsp+78h] [rbp+48h] | |
| v39 = a2; | |
| v38 = a1; | |
| v2 = 0i64; | |
| v36 = a2; | |
| v3 = a1; | |
| v37 = 0; | |
| if ( *(_QWORD *)a1 ) | |
| v4 = *(_DWORD *)(a1 + 8) + 1; | |
| else | |
| v4 = 0; | |
| CDataStore::PutInt8(a2, v4 >> 3); | |
| CDataStore::PutBits3((__int64)&v36, v4 & 7); | |
| if ( *(_QWORD *)(v3 + 16) ) | |
| v5 = *(_DWORD *)(v3 + 24) + 1; | |
| else | |
| v5 = 0; | |
| v6 = v5 >> 3; | |
| if ( HIBYTE(v37) ) | |
| { | |
| v7 = HIBYTE(v37); | |
| CDataStore::PutInt8(v36, ((unsigned __int8)v6 >> SHIBYTE(v37)) | ((_BYTE)v37 << (8 - HIBYTE(v37)))); | |
| LOBYTE(v37) = v6 & ((1 << v7) - 1); | |
| } | |
| else | |
| { | |
| CDataStore::PutInt8(v36, v6); | |
| } | |
| CDataStore::PutBits3((__int64)&v36, v5 & 7); | |
| if ( *(_QWORD *)(v3 + 32) ) | |
| v8 = *(_DWORD *)(v3 + 40) + 1; | |
| else | |
| v8 = 0; | |
| CDataStore::PutBits6((__int64)&v36, v8); | |
| v9 = *(_BYTE *)(v3 + 136) | 2 * v37; | |
| v10 = HIBYTE(v37) + 1; | |
| LOBYTE(v37) = *(_BYTE *)(v3 + 136) | 2 * v37; | |
| HIBYTE(v37) = v10; | |
| if ( v10 == 8 ) | |
| { | |
| CDataStore::PutInt8(v36, v9); | |
| v10 = 0; | |
| v37 = 0; | |
| v9 = 0; | |
| } | |
| v11 = (_DWORD *)(v3 + 304); | |
| v12 = 4i64; | |
| while ( 1 ) | |
| { | |
| v13 = *((_QWORD *)v11 - 9) ? *(v11 - 16) + 1 : 0; | |
| v14 = v13 >> 3; | |
| if ( v10 ) | |
| { | |
| v15 = v10; | |
| CDataStore::PutInt8(v36, ((unsigned __int8)v14 >> v10) | (v9 << (8 - v10))); | |
| LOBYTE(v37) = (v13 >> 3) & ((1 << v15) - 1); | |
| } | |
| else | |
| { | |
| CDataStore::PutInt8(v36, v14); | |
| } | |
| CDataStore::PutBits3((__int64)&v36, v13 & 7); | |
| v16 = *((_QWORD *)v11 - 1) ? *v11 + 1 : 0; | |
| v17 = v16 >> 3; | |
| if ( HIBYTE(v37) ) | |
| { | |
| v18 = HIBYTE(v37); | |
| CDataStore::PutInt8(v36, ((unsigned __int8)v17 >> SHIBYTE(v37)) | ((_BYTE)v37 << (8 - HIBYTE(v37)))); | |
| LOBYTE(v37) = (v16 >> 3) & ((1 << v18) - 1); | |
| } | |
| else | |
| { | |
| CDataStore::PutInt8(v36, v17); | |
| } | |
| CDataStore::PutBits3((__int64)&v36, v16 & 7); | |
| v11 += 4; | |
| if ( !--v12 ) | |
| break; | |
| v10 = HIBYTE(v37); | |
| v9 = v37; | |
| } | |
| switch ( HIBYTE(v37) ) | |
| { | |
| case 1u: | |
| CDataStore::PutBits7((__int64)&v36, 0); | |
| break; | |
| case 2u: | |
| CDataStore::PutBits6((__int64)&v36, 0); | |
| break; | |
| case 3u: | |
| CDataStore::PutBits5((__int64)&v36, 0); | |
| break; | |
| case 4u: | |
| CDataStore::PutBits4((__int64)&v36, 0); | |
| break; | |
| case 5u: | |
| CDataStore::PutBits3((__int64)&v36, 0); | |
| break; | |
| case 6u: | |
| CDataStore::PutBits2((__int64)&v36, 0); | |
| break; | |
| case 7u: | |
| if ( HIBYTE(v37) == 7 ) | |
| CDataStore::PutInt8(v36, 2 * v37); | |
| break; | |
| default: | |
| break; | |
| } | |
| v19 = 4i64; | |
| v20 = v38 + 296; | |
| do | |
| { | |
| CDataStore::PutWowString2(v20 - 64, v39); | |
| CDataStore::PutWowString2(v20, v39); | |
| v20 += 16i64; | |
| --v19; | |
| } | |
| while ( v19 ); | |
| v21 = 2i64; | |
| v22 = 2i64; | |
| v23 = (int *)(v38 + 216); | |
| do | |
| { | |
| CDataStore::PutInt32(v39, *v23); | |
| ++v23; | |
| --v22; | |
| } | |
| while ( v22 ); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 48)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 52)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 56)); | |
| v24 = (int *)(v38 + 224); | |
| do | |
| { | |
| CDataStore::PutInt32(v39, *v24); | |
| ++v24; | |
| --v21; | |
| } | |
| while ( v21 ); | |
| v25 = *(_DWORD *)(v38 + 112); | |
| if ( v25 == -1 ) | |
| v25 = *(_DWORD *)(v38 + 64); | |
| CDataStore::PutInt32(v39, v25); | |
| CDataStore::PutFloat(v39, *(float *)(v38 + 120)); | |
| v26 = *(_DWORD *)(v38 + 112); | |
| if ( v26 == -1 ) | |
| v26 = *(_DWORD *)(v38 + 64); | |
| if ( (signed int)v26 > 0 ) | |
| { | |
| v27 = 0i64; | |
| v28 = v26; | |
| do | |
| { | |
| if ( *(_DWORD *)(v38 + 112) == -1 ) | |
| v29 = *(_QWORD *)(v38 + 72); | |
| else | |
| v29 = v38 + 64; | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v27 + v29)); | |
| CDataStore::PutFloat(v39, *(float *)(v27 + v29 + 4)); | |
| CDataStore::PutFloat(v39, *(float *)(v27 + v29 + 8)); | |
| v27 += 12i64; | |
| --v28; | |
| } | |
| while ( v28 ); | |
| } | |
| CDataStore::PutFloat(v39, *(float *)(v38 + 128)); | |
| CDataStore::PutFloat(v39, *(float *)(v38 + 132)); | |
| v30 = (int *)(v38 + 144); | |
| v31 = *(_DWORD *)(v38 + 176); | |
| if ( v31 == -1 ) | |
| v31 = *v30; | |
| CDataStore::PutInt32(v39, v31); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 184)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 188)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 192)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 196)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 200)); | |
| CDataStore::PutFloat(v39, *(float *)(v38 + 204)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 208)); | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v38 + 212)); | |
| CDataStore::PutWowString2(v38, v39); | |
| CDataStore::PutWowString2(v38 + 16, v39); | |
| CDataStore::PutWowString2(v38 + 32, v39); | |
| v32 = *(_DWORD *)(v38 + 176); | |
| if ( v32 == -1 ) | |
| v32 = *v30; | |
| if ( v32 > 0 ) | |
| { | |
| v33 = (unsigned int)v32; | |
| do | |
| { | |
| if ( *(_DWORD *)(v38 + 176) == -1 ) | |
| v34 = *(_QWORD *)(v38 + 152); | |
| else | |
| v34 = v38 + 144; | |
| CDataStore::PutInt32(v39, *(_DWORD *)(v34 + v2)); | |
| v2 += 4i64; | |
| --v33; | |
| } | |
| while ( v33 ); | |
| } | |
| return 1; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment