All pastes #956332 Raw Edit

Something

public text v1 · immutable
#956332 ·published 2008-03-25 05:14 UTC
rendered paste body
//----- (004CBBC0) --------------------------------------------------------
int __cdecl sub_4CBBC0(int a1)
{
  int v1; // esi@1
  int result; // eax@2
  char (**v3)[18]; // eax@3
  int v4; // ebx@5
  int (__cdecl *v5)(_DWORD); // eax@13
  int v6; // eax@1
  int v7; // eax@11
  int v8; // ecx@13

  v6 = sub_4CC080(0x4Cu, (int)".\\crypto\\dh\\dh_lib.c", 111);
  v1 = v6;
  if ( !v6 )
  {
    sub_4CEC20(5u, 105, 65, (int)".\\crypto\\dh\\dh_lib.c", 114);
    return 0;
  }
  v3 = (char (**)[18])dword_542C1C;
  if ( !dword_542C1C )
  {
    v3 = sub_4CC8C0();
    dword_542C1C = (int)v3;
  }
  v4 = a1;
  *(_DWORD *)(v1 + 68) = v3;
  if ( v4 )
  {
    if ( !sub_4CD7D0(v4) )
    {
      sub_4CEC20(5u, 105, 38, (int)".\\crypto\\dh\\dh_lib.c", 124);
      sub_4CC300((void *)v1);
      return 0;
    }
    *(_DWORD *)(v1 + 72) = v4;
  }
  else
  {
    *(_DWORD *)(v1 + 72) = sub_4CE580();
  }
  if ( !*(_DWORD *)(v1 + 72) || (v7 = _fileno(*(FILE **)(v1 + 72)), *(_DWORD *)(v1 + 68) = v7, v7) )
  {
    v8 = *(_DWORD *)(v1 + 68);
    *(_DWORD *)v1 = 0;
    *(_DWORD *)(v1 + 4) = 0;
    *(_DWORD *)(v1 + 8) = 0;
    *(_DWORD *)(v1 + 12) = 0;
    *(_DWORD *)(v1 + 16) = 0;
    *(_DWORD *)(v1 + 20) = 0;
    *(_DWORD *)(v1 + 24) = 0;
    *(_DWORD *)(v1 + 36) = 0;
    *(_DWORD *)(v1 + 40) = 0;
    *(_DWORD *)(v1 + 44) = 0;
    *(_DWORD *)(v1 + 48) = 0;
    *(_DWORD *)(v1 + 52) = 0;
    *(_DWORD *)(v1 + 32) = 0;
    *(_DWORD *)(v1 + 56) = 1;
    *(_DWORD *)(v1 + 28) = *(_DWORD *)(v8 + 24);
    sub_4CE4A0(8, v1, v1 + 60);
    v5 = *(int (__cdecl **)(_DWORD))(*(_DWORD *)(v1 + 68) + 16);
    if ( v5 )
    {
      if ( !v5(v1) )
      {
        if ( *(_DWORD *)(v1 + 72) )
          sub_4CD860(*(void **)(v1 + 72));
        sub_4CE510(8, v1, v1 + 60);
        sub_4CC300((void *)v1);
        v1 = 0;
      }
    }
    result = v1;
  }
  else
  {
    sub_4CEC20(5u, 105, 38, (int)".\\crypto\\dh\\dh_lib.c", 137);
    sub_4CD860(*(void **)(v1 + 72));
    sub_4CC300((void *)v1);
    result = 0;
  }
  return result;
}

//----- (004CBD20) --------------------------------------------------------
void __cdecl sub_4CBD20(void *Memory)
{
  int v1; // esi@1
  int (__cdecl *v2)(_DWORD); // eax@3
  int v3; // eax@2

  v1 = (int)Memory;
  if ( Memory )
  {
    sub_4CF410((int)((char *)Memory + 56), -1, 26, (int)".\\crypto\\dh\\dh_lib.c", 178);
    if ( v3 <= 0 )
    {
      v2 = *(int (__cdecl **)(_DWORD))(*(_DWORD *)(v1 + 68) + 20);
      if ( v2 )
        v2(v1);
      if ( *(_DWORD *)(v1 + 72) )
        sub_4CD860(*(void **)(v1 + 72));
      sub_4CE510(8, v1, v1 + 60);
      if ( *(_DWORD *)(v1 + 8) )
        sub_4CCD30(*(void **)(v1 + 8));
      if ( *(_DWORD *)(v1 + 12) )
        sub_4CCD30(*(void **)(v1 + 12));
      if ( *(_DWORD *)(v1 + 36) )
        sub_4CCD30(*(void **)(v1 + 36));
      if ( *(_DWORD *)(v1 + 40) )
        sub_4CCD30(*(void **)(v1 + 40));
      if ( *(_DWORD *)(v1 + 44) )
        sub_4CC300(*(void **)(v1 + 44));
      if ( *(_DWORD *)(v1 + 52) )
        sub_4CCD30(*(void **)(v1 + 52));
      if ( *(_DWORD *)(v1 + 20) )
        sub_4CCD30(*(void **)(v1 + 20));
      if ( *(_DWORD *)(v1 + 24) )
        sub_4CCD30(*(void **)(v1 + 24));
      sub_4CC300((void *)v1);
    }
  }
}