Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char __cdecl sub_45BE10(void *a1, int a2, int a3, LPCSTR lpPathName, int a5, char a6, int a7)
- {
- char v7; // bl
- int v8; // ebp
- unsigned int *v9; // esi
- int v10; // edi
- unsigned int v11; // ecx
- void **v12; // edi
- int v13; // ebp
- unsigned int v14; // eax
- int v15; // eax
- int v16; // eax
- unsigned int v17; // ecx
- void *v18; // eax
- unsigned int v19; // eax
- unsigned int v20; // ecx
- unsigned int v21; // eax
- int v22; // esi
- const CHAR *v23; // eax
- void *v25; // [esp+20h] [ebp-19Ch]
- int v26; // [esp+24h] [ebp-198h]
- unsigned int v27; // [esp+28h] [ebp-194h]
- int v28; // [esp+2Ch] [ebp-190h]
- int v29; // [esp+48h] [ebp-174h]
- int v30; // [esp+4Ch] [ebp-170h]
- unsigned int *v31; // [esp+50h] [ebp-16Ch]
- int v32; // [esp+54h] [ebp-168h]
- void (__cdecl *v33)(int, int); // [esp+58h] [ebp-164h]
- LPCSTR lpFileName; // [esp+5Ch] [ebp-160h]
- void *v35; // [esp+60h] [ebp-15Ch]
- int v36; // [esp+70h] [ebp-14Ch]
- unsigned int v37; // [esp+74h] [ebp-148h]
- void *Memory; // [esp+78h] [ebp-144h]
- int v39; // [esp+88h] [ebp-134h]
- unsigned int v40; // [esp+8Ch] [ebp-130h]
- char Dest; // [esp+94h] [ebp-128h]
- int v42; // [esp+98h] [ebp-124h]
- int v43; // [esp+9Ch] [ebp-120h]
- int v44; // [esp+A0h] [ebp-11Ch]
- int v45; // [esp+A4h] [ebp-118h]
- CHAR TempFileName; // [esp+A8h] [ebp-114h]
- char Dst; // [esp+A9h] [ebp-113h]
- int v48; // [esp+1B8h] [ebp-4h]
- lpFileName = (LPCSTR)a5;
- v33 = (void (__cdecl *)(int, int))a7;
- v25 = 0;
- v26 = 0;
- v25 = (void *)sub_45D1D0(&v25);
- v48 = 0;
- TempFileName = 0;
- memset(&Dst, 0, 0x103u);
- if ( GetTempFileNameA(lpPathName, "pak", 0, &TempFileName) )
- {
- sub_45B8D0(a1);
- sub_45BB60(a2, a3);
- strncpy(&Dest, "XPAK", 4u);
- v42 = 10;
- v43 = v26;
- v44 = 0;
- v45 = 2;
- sub_453E00();
- LOBYTE(v48) = 1;
- if ( !(unsigned __int8)sub_4540A0(&TempFileName, 1) )
- {
- sub_45B6C0(a1);
- v7 = 0;
- LABEL_54:
- LOBYTE(v48) = 0;
- sub_453E70(&v28);
- goto LABEL_55;
- }
- if ( !(*(unsigned __int8 (__thiscall **)(int *, char *, signed int))(v28 + 20))(&v28, &Dest, 20) )
- {
- sub_454040(&v28);
- sub_4542A0(&TempFileName);
- sub_45B6C0(a1);
- v7 = 0;
- goto LABEL_54;
- }
- v37 = 15;
- v36 = 0;
- LOBYTE(v35) = 0;
- LOBYTE(v48) = 2;
- v27 = 0;
- if ( a7 )
- ((void (__cdecl *)(_DWORD, int))a7)(0, v26);
- v8 = 0;
- v29 = 0;
- v9 = *(unsigned int **)v25;
- v31 = v9;
- if ( v9 == v25 )
- {
- LABEL_35:
- v22 = sub_454070(&v28);
- if ( !(unsigned __int8)sub_45CFF0(&v28)
- || (v44 = sub_454070(&v28) - v22,
- sub_454120(0),
- !(*(unsigned __int8 (__thiscall **)(int *, char *, signed int))(v28 + 20))(&v28, &Dest, 20)) )
- {
- LABEL_37:
- sub_454040(&v28);
- sub_4542A0(&TempFileName);
- sub_45B6C0(a1);
- goto LABEL_50;
- }
- sub_454040(&v28);
- if ( a6 )
- {
- v40 = 15;
- v39 = 0;
- LOBYTE(Memory) = 0;
- sub_403080((int)a1, 0, 0xFFFFFFFF);
- LOBYTE(v48) = 4;
- sub_45B6C0(a1);
- v23 = (const CHAR *)&Memory;
- if ( v40 >= 0x10 )
- v23 = (const CHAR *)Memory;
- if ( (unsigned __int8)sub_4542E0(&TempFileName, v23) )
- {
- sub_4542A0(&TempFileName);
- v7 = 1;
- }
- else
- {
- if ( lpFileName )
- sub_4542E0(&TempFileName, lpFileName);
- sub_4542A0(&TempFileName);
- v7 = 0;
- }
- if ( v40 >= 0x10 )
- j__free(Memory);
- }
- else
- {
- sub_45B6C0(a1);
- LABEL_50:
- v7 = 0;
- }
- if ( v37 >= 0x10 )
- j__free(v35);
- v37 = 15;
- v36 = 0;
- LOBYTE(v35) = 0;
- goto LABEL_54;
- }
- v10 = v30;
- while ( 1 )
- {
- if ( &v35 != (void **)(v9 + 4) )
- sub_403080((int)(v9 + 4), 0, 0xFFFFFFFF);
- if ( v9[81] )
- {
- sub_453E00();
- v11 = v9[81];
- LOBYTE(v48) = 3;
- if ( *(_BYTE *)v11 )
- {
- v9[12] = 0;
- }
- else
- {
- v12 = *(void ***)(v11 + 264);
- if ( v12 )
- {
- (*((void (__thiscall **)(void **, _DWORD))*v12 + 2))(v12, *(_DWORD *)(v11 + 268));
- v13 = *(_DWORD *)(v9[81] + 272);
- }
- else
- {
- if ( !(unsigned __int8)sub_4540A0(v11 + 1, 0) )
- goto LABEL_38;
- v12 = &Memory;
- v13 = (*((int (__thiscall **)(void **))Memory + 3))(&Memory);
- }
- if ( !(unsigned __int8)sub_45CF40(&v28, v12, &v30, v13, 0) || (v10 = v30, v30 != *(_DWORD *)(v9[81] + 276)) )
- {
- LABEL_38:
- sub_454040(&v28);
- sub_4542A0(&TempFileName);
- sub_45B6C0(a1);
- LOBYTE(v48) = 2;
- sub_453E70(&Memory);
- goto LABEL_50;
- }
- v9[12] = v13;
- v8 = v29;
- }
- v9[14] = v10;
- LOBYTE(v48) = 2;
- sub_453E70(&Memory);
- }
- else
- {
- v14 = v9[80];
- if ( !v14 )
- goto LABEL_34;
- sub_435500(*(_DWORD *)(v14 + 12));
- *(_DWORD *)(v9[80] + 4) = 0;
- v15 = sub_45CEE0(v9[80], dword_665BAC, *(_DWORD *)(v9[80] + 12));
- *(_DWORD *)(v9[80] + 4) = 0;
- if ( v15 == -1 )
- goto LABEL_37;
- v16 = sub_453C20(dword_665BAC, *(_DWORD *)(v9[80] + 12), -1);
- v17 = v9[80];
- if ( v16 != *(_DWORD *)(v17 + 20)
- || !(*(unsigned __int8 (__thiscall **)(int *, void *, _DWORD))(v28 + 20))(
- &v28,
- dword_665BAC,
- *(_DWORD *)(v17 + 12)) )
- {
- goto LABEL_37;
- }
- }
- v18 = &v35;
- if ( v37 >= 0x10 )
- v18 = v35;
- v19 = sub_453C20(v18, v36, -1);
- v20 = v9[12];
- v9[10] = v19;
- v9[11] = v27;
- v21 = (v20 + 3) & 0xFFFFFFFC;
- v9[13] = v21;
- if ( v21 > v20
- && !(*(unsigned __int8 (__thiscall **)(int *, int *, unsigned int))(v28 + 20))(&v28, &v32, v21 - v20) )
- {
- goto LABEL_37;
- }
- v27 += v9[13];
- if ( v33 )
- {
- v29 = ++v8;
- v33(v8, v26);
- }
- LABEL_34:
- sub_41EBF0(&v31);
- v9 = v31;
- if ( v31 == v25 )
- goto LABEL_35;
- }
- }
- sub_45B6C0(a1);
- v7 = 0;
- LABEL_55:
- v48 = -1;
- sub_45D320((int)&v32, *(void **)v25, (int)v25);
- j__free(v25);
- return v7;
- }
Advertisement
Add Comment
Please, Sign In to add comment