Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __fastcall sub_14034C720(__int64 a1, unsigned int **a2)
- {
- unsigned int **v2; // r14
- __int64 v3; // r12
- unsigned int *v4; // rdi
- unsigned int v5; // ebx
- int v6; // edi
- unsigned int v7; // eax
- int v8; // edi
- void *v9; // r15
- void *v10; // rax
- __int64 v11; // rbx
- int v12; // eax
- __int64 v13; // rsi
- __int64 v14; // rax
- __int64 v15; // rax
- void *v16; // rsi
- unsigned int *v17; // rbx
- __int64 v18; // rdi
- __int64 v19; // rax
- unsigned int v20; // er15
- void *v21; // rsi
- int v22; // ebx
- signed __int64 v23; // rdi
- __int64 v24; // rax
- unsigned __int64 v25; // rcx
- __int64 v26; // rax
- void *v27; // rax
- int v28; // er13
- void *v29; // rax
- __int64 v30; // rbx
- void *v31; // rax
- __int64 v32; // r12
- int v33; // eax
- unsigned int *v34; // rdi
- unsigned int i; // ebx
- __int64 v36; // rax
- signed int v37; // ebx
- __int64 v38; // rax
- __int64 v39; // rax
- signed __int64 v40; // r13
- __int64 v41; // rax
- __int64 v42; // rax
- void *v43; // rax
- char *v44; // rbx
- char *v45; // rdi
- unsigned __int64 v46; // rdx
- char *v47; // rax
- unsigned __int64 v48; // rbx
- char *v49; // rdi
- char *v50; // rbx
- char *j; // r12
- unsigned __int64 v52; // rdx
- char *v53; // rax
- unsigned __int64 v54; // rdi
- int v55; // edi
- char *v56; // r12
- __int64 v57; // rax
- BOOL v58; // ebx
- __int64 v59; // rbx
- signed int v60; // edi
- __int64 v61; // rax
- __int64 v62; // rcx
- int v63; // [rsp+30h] [rbp-D0h]
- int v64; // [rsp+34h] [rbp-CCh]
- unsigned __int64 v65; // [rsp+38h] [rbp-C8h]
- int v66; // [rsp+40h] [rbp-C0h]
- int v67; // [rsp+44h] [rbp-BCh]
- int v68; // [rsp+48h] [rbp-B8h]
- int v69; // [rsp+4Ch] [rbp-B4h]
- __int64 v70; // [rsp+50h] [rbp-B0h]
- __int64 v71; // [rsp+58h] [rbp-A8h]
- __int64 v72; // [rsp+60h] [rbp-A0h]
- __int64 v73; // [rsp+68h] [rbp-98h]
- unsigned __int64 v74; // [rsp+70h] [rbp-90h]
- unsigned __int64 v75; // [rsp+78h] [rbp-88h]
- __int128 v76; // [rsp+80h] [rbp-80h]
- __int128 v77; // [rsp+90h] [rbp-70h]
- __int128 v78; // [rsp+A0h] [rbp-60h]
- LPVOID v79[2]; // [rsp+B0h] [rbp-50h]
- __int64 v80; // [rsp+C0h] [rbp-40h]
- char v81; // [rsp+C8h] [rbp-38h]
- LPVOID lpMem[2]; // [rsp+D8h] [rbp-28h]
- __int64 v83; // [rsp+E8h] [rbp-18h]
- char v84; // [rsp+F0h] [rbp-10h]
- char v85; // [rsp+100h] [rbp+0h]
- BOOL v86; // [rsp+110h] [rbp+10h]
- __int64 v87; // [rsp+118h] [rbp+18h]
- char v88; // [rsp+120h] [rbp+20h]
- char v89; // [rsp+130h] [rbp+30h]
- char v90; // [rsp+140h] [rbp+40h]
- LPVOID v91; // [rsp+150h] [rbp+50h]
- __int128 v92; // [rsp+160h] [rbp+60h]
- char v93; // [rsp+170h] [rbp+70h]
- LPVOID v94; // [rsp+190h] [rbp+90h]
- char v95; // [rsp+1A0h] [rbp+A0h]
- char v96; // [rsp+1B0h] [rbp+B0h]
- __int64 v97; // [rsp+230h] [rbp+130h]
- char v98; // [rsp+240h] [rbp+140h]
- unsigned __int64 v99; // [rsp+248h] [rbp+148h]
- v97 = a1;
- v87 = -2i64;
- v2 = a2;
- v3 = a1;
- v68 = 0;
- HIDWORD(v65) = 0;
- v66 = 0;
- v67 = 0;
- v63 = 0;
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)a2[1] + 16i64))(a2[1], &v68, 4i64);
- sub_14034F3F0(&v84, &v68, 4i64);
- sub_140358550(&v88, &v84);
- if ( (unsigned __int8)sub_140358660(&v88, "AGAR") )
- {
- HIDWORD(v65) = 1;
- v66 = 0;
- v67 = 0;
- }
- else
- {
- (*(void (__fastcall **)(unsigned int *, char *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- (char *)&v65 + 4,
- 4i64);
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v66, 4i64);
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v67, 4i64);
- }
- _mm_storeu_si128((__m128i *)&v76, (__m128i)0i64);
- v4 = *v2;
- if ( *v2 )
- {
- v5 = *v4;
- if ( *v4 )
- {
- while ( (unsigned int)sub_14034A660(v4, v5, v5 + 1) != v5 )
- {
- v5 = *v4;
- if ( !*v4 )
- goto LABEL_11;
- }
- if ( v5 != -1 )
- v76 = *(_OWORD *)v2;
- }
- }
- LABEL_11:
- if ( SHIDWORD(v65) > 1 || HIDWORD(v65) == 1 && v66 >= 1 )
- {
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v63, 4i64);
- v6 = v63;
- v7 = v63 & 0x80000000;
- *(_DWORD *)(v3 + 328) = v63 & 0x80000000;
- v8 = v6 & 0x7FFFFFFF;
- v63 = v8;
- if ( v7 )
- {
- v9 = operator new(v8);
- (*(void (__fastcall **)(unsigned int *, void *, _QWORD))(*(_QWORD *)v2[1] + 16i64))(v2[1], v9, (unsigned int)v8);
- *(_QWORD *)(v97 + 344) = (*(__int64 (**)(void))(*(_QWORD *)v2[1] + 48i64))();
- v10 = operator new(0x90ui64);
- v70 = (__int64)v10;
- if ( v10 )
- v11 = sub_140382070(v10, &unk_140854820, 128i64);
- else
- v11 = 0i64;
- _mm_storeu_si128((__m128i *)&v77, (__m128i)0i64);
- if ( v11 )
- {
- v12 = sub_140035680(v11, v11);
- v13 = *(_QWORD *)(v11 + 8);
- if ( !v12 )
- sub_1400355E0(*(_QWORD *)(v11 + 8));
- *(_QWORD *)&v77 = v13;
- *((_QWORD *)&v77 + 1) = v11;
- }
- else
- {
- v11 = *((_QWORD *)&v77 + 1);
- }
- sub_1403820D0(v11, v9, (unsigned int)v8);
- v14 = sub_140132B30(&qword_140D13680);
- v70 = v14;
- if ( v14 )
- v15 = sub_14036CBB0(v14, v9, v8, 1i64);
- else
- v15 = 0i64;
- sub_1400418E0(v2, v15);
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v63, 4i64);
- sub_14034BB50(&v77);
- v3 = v97;
- }
- }
- else
- {
- v63 = v68;
- }
- if ( v67 > 0 )
- {
- v16 = operator new(v67);
- v17 = v2[1];
- v18 = *(_QWORD *)v17;
- v19 = (*(__int64 (__fastcall **)(unsigned int *))(*(_QWORD *)v17 + 48i64))(v2[1]);
- (*(void (__fastcall **)(unsigned int *, __int64))(v18 + 40))(v17, v19 + v67);
- j_j_j__free_base(v16);
- }
- v20 = 256;
- v21 = operator new(0x100ui64);
- v22 = 0;
- if ( v63 > 0 )
- {
- v23 = v3 + 296;
- do
- {
- LODWORD(v65) = 0;
- (*(void (__fastcall **)(unsigned int *, unsigned __int64 *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- &v65,
- 4i64);
- if ( (unsigned int)v65 > v20 )
- {
- j_j_j__free_base(v21);
- v20 = v65;
- v21 = operator new((unsigned int)v65);
- }
- (*(void (__fastcall **)(unsigned int *, void *))(*(_QWORD *)v2[1] + 16i64))(v2[1], v21);
- *((_BYTE *)v21 + (unsigned int)v65) = 0;
- sub_14034F4C0(&v71);
- v71 = 0i64;
- v72 = 0i64;
- v73 = 0i64;
- v74 = 0i64;
- v75 = 0i64;
- v24 = sub_14034F3F0(&v89, v21, 0xFFFFFFFFi64);
- sub_14034F560(&v71, v24);
- sub_14034F530(&v89);
- (*(void (__fastcall **)(unsigned int *, unsigned __int64 *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- &v74,
- 8i64);
- (*(void (__fastcall **)(unsigned int *, __int64 *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v73, 8i64);
- if ( HIDWORD(v65) != 1 || v66 != 1 )
- {
- v75 = __PAIR__(v74 >> 62, (v74 & 0x8000000000000000ui64) != 0i64) & 0x1FFFFFFFFi64;
- v25 = v74 & 0x3FFFFFFFFFFFFFFFi64;
- v73 &= 0x7FFFFFFFFFFFFFFFui64;
- }
- else
- {
- LODWORD(v75) = (v74 >> 31) & 1;
- v25 = v74 & 0xFFFFFFFF7FFFFFFFui64;
- v73 &= 0x7FFFFFFFu;
- }
- v74 = v25;
- v26 = sub_14034B3C0(&v95, &v71, &v71);
- v27 = (void *)sub_14034A810(v23, v26);
- sub_14034AEA0(v23, v27);
- sub_14034F530(&v96);
- sub_14034F530(&v95);
- sub_14034F530(&v71);
- ++v22;
- }
- while ( v22 < v63 );
- v3 = v97;
- }
- if ( SHIDWORD(v65) > 1 || HIDWORD(v65) == 1 && v66 >= 1 )
- {
- sub_14034BED0(v2, &v76);
- v64 = 0;
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v64, 4i64);
- v28 = v64 & 0x7FFFFFFF;
- v64 &= 0x7FFFFFFFu;
- if ( *(_DWORD *)(v3 + 328) )
- {
- v29 = operator new(v28);
- v30 = (__int64)v29;
- v70 = (__int64)v29;
- (*(void (__fastcall **)(unsigned int *, void *, _QWORD))(*(_QWORD *)v2[1] + 16i64))(v2[1], v29, (unsigned int)v28);
- *(_QWORD *)(v3 + 344) = (*(__int64 (**)(void))(*(_QWORD *)v2[1] + 48i64))();
- v31 = operator new(0x1058ui64);
- *(_QWORD *)&v77 = v31;
- if ( v31 )
- v32 = sub_140381B30(v31, &unk_1408548A0, 56i64);
- else
- v32 = 0i64;
- _mm_storeu_si128((__m128i *)&v78, (__m128i)0i64);
- if ( v32 )
- {
- v33 = sub_140035680(v32, v32);
- v34 = *(unsigned int **)(v32 + 8);
- if ( !v33 )
- {
- for ( i = *v34; *v34; i = *v34 )
- {
- if ( (unsigned int)sub_14034A660(v34, i, i + 1) == i )
- break;
- }
- v30 = v70;
- }
- *(_QWORD *)&v78 = v34;
- *((_QWORD *)&v78 + 1) = v32;
- }
- else
- {
- v32 = *((_QWORD *)&v78 + 1);
- v34 = (unsigned int *)v78;
- }
- sub_140381BA0(v32, v30, (unsigned int)v28);
- v36 = sub_140132B30(&qword_140D13680);
- *(_QWORD *)&v77 = v36;
- if ( v36 )
- v36 = sub_14036CBB0(v36, v30, v28, 1i64);
- sub_1400418E0(v2, v36);
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v64, 4i64);
- if ( v34 )
- {
- v37 = 0;
- if ( (unsigned int)sub_14034A670(v34) )
- {
- v39 = *v34;
- }
- else
- {
- if ( (unsigned int)sub_14034A670(v34 + 1) )
- {
- v38 = v34[1];
- v32 = *((_QWORD *)&v78 + 1);
- v34 = (unsigned int *)v78;
- }
- else
- {
- v37 = 1;
- }
- *((_QWORD *)v34 + 1) = 0i64;
- if ( v32 )
- (**(void (__fastcall ***)(__int64, signed __int64))v32)(v32, 1i64);
- if ( v37 )
- sub_14034EFA0(v34);
- }
- }
- v28 = v64;
- v3 = v97;
- }
- LODWORD(v70) = 0;
- if ( v28 > 0 )
- {
- v40 = v3 + 312;
- do
- {
- LODWORD(v99) = 0;
- (*(void (__fastcall **)(unsigned int *, unsigned __int64 *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- &v99,
- 4i64);
- if ( (unsigned int)v99 > v20 )
- {
- j_j_j__free_base(v21);
- v20 = v99;
- v21 = operator new((unsigned int)v99);
- }
- (*(void (__fastcall **)(unsigned int *, void *))(*(_QWORD *)v2[1] + 16i64))(v2[1], v21);
- *((_BYTE *)v21 + (unsigned int)v99) = 0;
- v69 = 0;
- (*(void (__fastcall **)(unsigned int *, int *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(v2[1], &v69, 4i64);
- _mm_storeu_si128((__m128i *)v79, (__m128i)0i64);
- v80 = 0i64;
- v41 = sub_14034F3F0(&v90, v21, 0xFFFFFFFFi64);
- v42 = sub_14034B440(&v81, v41, v79);
- v43 = (void *)sub_14034A870(v40, v42);
- sub_14034B0C0(v40, v43);
- v44 = (char *)lpMem[0];
- if ( lpMem[0] )
- {
- v45 = (char *)lpMem[1];
- if ( lpMem[0] != lpMem[1] )
- {
- do
- {
- sub_14034F530(v44);
- v44 += 24;
- }
- while ( v44 != v45 );
- v44 = (char *)lpMem[0];
- }
- v46 = ((unsigned __int64)((unsigned __int128)((v83 - (signed __int64)v44)
- * (signed __int128)3074457345618258603i64) >> 64) >> 63)
- + ((signed __int64)((unsigned __int128)((v83 - (signed __int64)v44)
- * (signed __int128)3074457345618258603i64) >> 64) >> 2);
- if ( v46 > 0xAAAAAAAAAAAAAAAi64 )
- invalid_parameter_noinfo_noreturn();
- if ( 24 * v46 >= 0x1000 )
- {
- if ( (unsigned __int8)v44 & 0x1F )
- invalid_parameter_noinfo_noreturn();
- v47 = (char *)*((_QWORD *)v44 - 1);
- if ( v47 >= v44 )
- invalid_parameter_noinfo_noreturn();
- v48 = v44 - v47;
- if ( v48 < 8 )
- invalid_parameter_noinfo_noreturn();
- if ( v48 > 0x27 )
- invalid_parameter_noinfo_noreturn();
- v44 = v47;
- }
- j_j__free_base(v44);
- _mm_storeu_si128((__m128i *)lpMem, (__m128i)0i64);
- v83 = 0i64;
- }
- sub_14034F530(&v81);
- sub_14034F530(&v90);
- v49 = (char *)v79[0];
- if ( v79[0] )
- {
- v50 = (char *)v79[0];
- for ( j = (char *)v79[1]; v50 != j; v50 += 24 )
- sub_14034F530(v50);
- v52 = ((unsigned __int64)((unsigned __int128)((v80 - (signed __int64)v49)
- * (signed __int128)3074457345618258603i64) >> 64) >> 63)
- + ((signed __int64)((unsigned __int128)((v80 - (signed __int64)v49)
- * (signed __int128)3074457345618258603i64) >> 64) >> 2);
- if ( v52 > 0xAAAAAAAAAAAAAAAi64 )
- invalid_parameter_noinfo_noreturn();
- if ( 24 * v52 >= 0x1000 )
- {
- if ( (unsigned __int8)v49 & 0x1F )
- invalid_parameter_noinfo_noreturn();
- v53 = (char *)*((_QWORD *)v49 - 1);
- if ( v53 >= v49 )
- invalid_parameter_noinfo_noreturn();
- v54 = v49 - v53;
- if ( v54 < 8 )
- invalid_parameter_noinfo_noreturn();
- if ( v54 > 0x27 )
- invalid_parameter_noinfo_noreturn();
- v49 = v53;
- }
- j_j__free_base(v49);
- }
- v55 = 0;
- if ( v69 > 0 )
- {
- v56 = (char *)v91;
- do
- {
- LODWORD(v99) = 0;
- (*(void (__fastcall **)(unsigned int *, unsigned __int64 *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- &v99,
- 4i64);
- if ( (unsigned int)v99 > v20 )
- {
- j_j_j__free_base(v21);
- v20 = v99;
- v21 = operator new((unsigned int)v99);
- }
- (*(void (__fastcall **)(unsigned int *, void *))(*(_QWORD *)v2[1] + 16i64))(v2[1], v21);
- *((_BYTE *)v21 + (unsigned int)v99) = 0;
- (*(void (__fastcall **)(unsigned int *, char *, signed __int64))(*(_QWORD *)v2[1] + 16i64))(
- v2[1],
- &v98,
- 1i64);
- v57 = sub_14034F3F0(&v93, v21, 0xFFFFFFFFi64);
- v92 = *(_OWORD *)sub_140358550(&v94, v57);
- v58 = v98 != 0;
- sub_14034F250(&v85, &v92);
- v86 = v58;
- sub_14034EBB0(v56 + 48, &v85);
- sub_14034F530(&v85);
- sub_14034F530(&v93);
- ++v55;
- }
- while ( v55 < v69 );
- }
- LODWORD(v70) = v70 + 1;
- }
- while ( (signed int)v70 < v64 );
- }
- }
- j_j_j__free_base(v21);
- if ( !*(_DWORD *)(v97 + 328) )
- *(_QWORD *)(v97 + 344) = (*(__int64 (**)(void))(*(_QWORD *)v2[1] + 48i64))();
- v59 = v76;
- if ( (_QWORD)v76 )
- {
- v60 = 0;
- if ( (unsigned int)sub_14034A670(v76) )
- {
- v62 = *(unsigned int *)v76;
- }
- else
- {
- if ( (unsigned int)sub_14034A670(v59 + 4) )
- v61 = *(unsigned int *)(v59 + 4);
- else
- v60 = 1;
- *(_QWORD *)(v76 + 8) = 0i64;
- if ( *((_QWORD *)&v76 + 1) )
- (***((void (__fastcall ****)(_QWORD, signed __int64))&v76 + 1))(*((_QWORD *)&v76 + 1), 1i64);
- if ( v60 )
- sub_14034EFA0(v76);
- }
- }
- sub_14034F530(&v84);
- sub_140041840(v2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement