Загрузка данных


int __userpurge sub_E33B68@<eax>(int a1@<edi>, int a2@<esi>, _DWORD *a3, _DWORD *a4, _DWORD *a5, int a6, int a7)
{
  int v7; // ebx
  _DWORD *v9; // esi
  int v10; // eax
  int v11; // eax
  int (__stdcall *v12)(char *, int, int); // esi
  int v13; // edi
  int v14; // eax
  int v15; // eax
  int v16; // eax
  int v17; // eax
  int v18; // ebx
  int v19; // eax
  int v20; // ebx
  int v21; // ebx
  int v22; // eax
  int v23; // ebx
  int v24; // ebx
  int v25; // eax
  int v26; // eax
  int v27; // ebx
  int v28; // ebx
  int v29; // ebx
  int v30; // eax
  int v31; // eax
  int v32; // ebx
  int v33; // ebx
  int v34; // ebx
  int v35; // ebx
  int v36; // eax
  int v37; // ebx
  int v38; // ebx
  int v39; // ebx
  int v40; // ebx
  int v41; // eax
  int v42; // eax
  _DWORD *v43; // edi
  int v44; // esi
  int v45; // esi
  int v46; // eax
  int v47; // [esp-Ch] [ebp-48h]
  int v49; // [esp-8h] [ebp-44h]
  _DWORD *v50; // [esp-8h] [ebp-44h]
  int v52; // [esp-4h] [ebp-40h]
  int v53; // [esp+0h] [ebp-3Ch]
  char v54[4]; // [esp+4h] [ebp-38h] BYREF
  char v55[4]; // [esp+8h] [ebp-34h] BYREF
  _DWORD *v56; // [esp+Ch] [ebp-30h] BYREF
  int v57; // [esp+10h] [ebp-2Ch] BYREF
  int v58; // [esp+14h] [ebp-28h] BYREF
  int v59; // [esp+18h] [ebp-24h] BYREF
  int v60; // [esp+1Ch] [ebp-20h] BYREF
  int v61; // [esp+20h] [ebp-1Ch] BYREF
  int v62; // [esp+24h] [ebp-18h] BYREF
  int v63; // [esp+28h] [ebp-14h] BYREF
  int v64; // [esp+2Ch] [ebp-10h] BYREF
  int v65; // [esp+30h] [ebp-Ch] BYREF
  int v66; // [esp+34h] [ebp-8h] BYREF
  int v67; // [esp+38h] [ebp-4h] BYREF

  v7 = 0;
  v61 = 0;
  v65 = 0;
  v64 = 0;
  v59 = 0;
  v60 = 0;
  v63 = 0;
  v67 = 0;
  if ( dword_E371E8(0, &v67) < 0 )
    return 0;
  v9 = (_DWORD *)sub_E313DF(28);
  v56 = v9;
  if ( !v9 )
  {
    (*(void (__stdcall **)(int))(*(_DWORD *)v67 + 8))(v67);
    return 0;
  }
  *v9 = &off_E3A00C;
  v9[1] = &off_E3A038;
  v9[2] = &off_E3A050;
  v9[6] = 1;
  if ( sub_E3366F(&v61, &v57) == 1 )
  {
    if ( !sub_E345DA(v61, v57, &v62, &v66, v54, v55, 1) )
    {
      (*(void (__stdcall **)(int))(*(_DWORD *)v67 + 8))(v67);
      sub_E313F8(v9);
      sub_E313F8(v61);
      return 0;
    }
    sub_E313F8(v61);
    if ( a3 && !sub_E345DA(*a3, a3[1], &v65, &v64, 0, 0, 0) )
    {
      (*(void (__stdcall **)(int))(*(_DWORD *)v67 + 8))(v67);
      sub_E313F8(v9);
      sub_E313F8(v62);
      return 0;
    }
    if ( a6 && !sub_E345DA(a6, a7, &v59, &v60, 0, 0, 0)
      || (v10 = dword_E370BC(0, v60 + v66 + v64 + 20), (v9[5] = v10) == 0) )
    {
      (*(void (__stdcall **)(int))(*(_DWORD *)v67 + 8))(v67);
      sub_E313F8(v9);
      sub_E313F8(v62);
      if ( v65 )
        sub_E313F8(v65);
      return 0;
    }
    v47 = v10;
    v11 = ((int (*)(void))dword_E370B8)();
    v12 = (int (__stdcall *)(char *, int, int))dword_E37154;
    v13 = v11;
    v14 = dword_E37154(aU);
    sub_E31000(v13, aU_0, v14);
    v15 = v12(aU_1, v62, v66);
    sub_E31000(v13 + v15, v47, a1);
    v16 = ((int (*)(void))v12)();
    v17 = v12(aU_2, (int)asc_E37E38, v16);
    sub_E31000(v66 + v13 + v17, asc_E37E34, a2);
    sub_E313F8(v62);
    if ( v65 )
    {
      v49 = ((int (*)(void))v12)();
      v18 = v13 + ((int (*)(void))v12)();
      v19 = ((int (__stdcall *)(char *))v12)(aU_3);
      sub_E31000(v66 + v18 + v19, asc_E37E4C, asc_E37E44);
      v20 = ((int (*)(void))v12)();
      v21 = ((int (__stdcall *)(char *))v12)(asc_E37E54) + v20;
      v22 = v12(aU_4, v65, v64);
      sub_E31000(v66 + v13 + v21 + v22, asc_E37E58, v49);
      v23 = ((int (*)(void))v12)();
      v24 = ((int (__stdcall *)(char *))v12)(asc_E37E68) + v23;
      v25 = ((int (__stdcall *)(char *))v12)(asc_E37E5C);
      v26 = v12(aU_5, (int)asc_E37E60, v25);
      sub_E31000(v64 + v66 + v13 + v24 + v26, asc_E37E6C, asc_E37E40);
      sub_E313F8(v65);
      v7 = 0;
    }
    if ( v59 )
    {
      v27 = ((int (*)(void))v12)();
      v28 = ((int (*)(void))v12)() + v27;
      v29 = ((int (*)(void))v12)() + v28;
      v30 = ((int (*)(void))v12)();
      v31 = v12(aU_6, (int)aP_0, v30);
      sub_E31000(v64 + v66 + v13 + v29 + v31, aP, asc_E37E7C);
      v32 = ((int (*)(void))v12)();
      v33 = ((int (__stdcall *)(char *))v12)(asc_E37E94) + v32;
      v34 = ((int (__stdcall *)(char *))v12)(asc_E37E90) + v33;
      v35 = ((int (__stdcall *)(char *))v12)(asc_E37E8C) + v34;
      v36 = v12(aU_7, v59, v60);
      sub_E31000(v64 + v66 + v13 + v35 + v36, aP_1, asc_E37E80);
      v37 = ((int (*)(void))v12)();
      v38 = ((int (__stdcall *)(char *))v12)(asc_E37EB0) + v37;
      v39 = ((int (__stdcall *)(char *))v12)(asc_E37EAC) + v38;
      v40 = ((int (__stdcall *)(char *))v12)(asc_E37EA8) + v39;
      v41 = ((int (__stdcall *)(char *))v12)(asc_E37E9C);
      v42 = v12(aU_8, (int)asc_E37EA0, v41);
      sub_E31000(v64 + v60 + v66 + v13 + v40 + v42, aP_2, asc_E37E84);
      sub_E313F8(v59);
      v7 = 0;
    }
    v43 = v56;
    dword_E370B4(v56[5]);
    if ( sub_E368A2(v67, v43, 0, 0) < 0 )
    {
      v50 = v43;
      (*(void (**)(void))(*v43 + 8))();
    }
    else
    {
      a6 = 0;
      if ( sub_E3345A() )
      {
        sub_E335DE(&a3);
      }
      else if ( sub_E32C12(::a7, &a7) )
      {
        sub_E31027(a7, &a3, 0);
        sub_E313F8(a7);
      }
      v44 = sub_E3689C(0, a3, &a6, v52);
      if ( v44 >= 0 )
      {
        v44 = (*(int (__stdcall **)(int, int, _DWORD, void *, _DWORD **, int))(*(_DWORD *)a6 + 36))(
                a6,
                v67,
                0,
                &unk_E38B74,
                &v56,
                v53);
        if ( v44 < 0 )
        {
          ++dword_E3A078;
          sub_E33400(&v63);
          ++v63;
        }
        else
        {
          v63 = 0;
        }
        sub_E3337A(&v63);
        (*(void (__cdecl **)(int))(*(_DWORD *)a6 + 8))(a6);
        if ( v56 )
          (*(void (__stdcall **)(_DWORD *))(*v56 + 8))(v56);
      }
      sub_E313F8(a3);
      (*(void (__cdecl **)(int))(*(_DWORD *)v67 + 8))(v67);
      dword_E370A4(v43[5]);
      if ( v44 < 0 )
      {
        sub_E313F8(v43);
        return 0;
      }
    }
    if ( dword_E371EC(v43[4], &v58) >= 0 )
    {
      a6 = 0;
      a3 = 0;
      v45 = dword_E370B8(v58, v50);
      v46 = dword_E370AC(v58);
      if ( a4 && v46 )
      {
        if ( !sub_E3654B(v45, v46, &a6, &a3, v54, v55) )
        {
          dword_E370B4(v58);
LABEL_42:
          sub_E313F8(v43);
          return v7;
        }
        *a4 = a6;
        *a5 = a3;
      }
      dword_E370B4(v58);
    }
    v7 = 1;
    goto LABEL_42;
  }
  (*(void (__stdcall **)(int))(*(_DWORD *)v67 + 8))(v67);
  sub_E313F8(v9);
  return 0;
}