All pastes #935393 Raw Edit

Something

public text v1 · immutable
·published 2008-03-09 16:43 UTC
rendered paste body
int __cdecl sub_100404F0(int a1, size_t Count, char *Dest)
{
  int result; // eax@1
  char *v4; // ebx@2
  unsigned int v5; // esi@2
  int v6; // eax@8
  int v7; // edx@8
  int v8; // ecx@8
  int v9; // ST04_4@8
  char *v10; // ST08_4@8
  unsigned int v11; // ST0C_4@8
  size_t v12; // esi@9
  char *v13; // eax@4
  int v14; // eax@8
  int v15; // eax@13
  int v16; // edi@14
  int Src; // [sp+10h] [bp-4B0h]@7
  char Dst; // [sp+14h] [bp-4ACh]@7
  char v19; // [sp+15h] [bp-4ABh]@7
  __int16 v20; // [sp+4BDh] [bp-3h]@7
  char v21; // [sp+4BFh] [bp-1h]@7
  char v22; // [sp+1Ah] [bp-4A6h]@8
  char v23; // [sp+18h] [bp-4A8h]@14

  result = dword_100AB128;
  if ( dword_100AB128 )
  {
    v4 = Dest;
    v5 = Count;
    if ( (unsigned int)dword_100AAB64 > 0xA )
    {
      if ( (signed int)Count <= 15 )
        return result;
      v13 = (char *)sub_10015170();
      sub_10004BE0(v4, v5, v13, 84, 9006);
      v5 = strlen(v4) + 1;
    }
    if ( (signed int)v5 > 1100 )
      v5 = 1100;
    Src = dword_1008934C;
    Dst = byte_10089350;
    memset(&v19, 0, 0x4A8u);
    v20 = 0;
    v21 = 0;
    if ( dword_100B66C8 )
    {
      v14 = (dword_100AAD78 + 1940858520) ^ dword_100BB7E0[(dword_100AAD78 + 1940858520) ^ (dword_100AAD78 + 1940857420)] ^ (dword_100AAD78 - 1486054502);
      BYTE3(Src) = 69;
      ((int (__cdecl *)(char *, char *, unsigned int))v14)(&v22, v4, v5);
      v11 = v5;
      v10 = &Dst;
      v9 = dword_100B66C8;
      v8 = dword_100AAD78 + 380589220;
      v7 = (dword_100AAD78 + 380589220) ^ (dword_100AAD78 + 380589035);
      v6 = dword_100AAD78 - 1033049690;
    }
    else
    {
      if ( !dword_100AAF74 || !*(_BYTE *)(dword_100AAFA4 + dword_100AAF74) || *v4 == 74 )
      {
        v16 = (dword_100AAD78 + 978067213) ^ dword_100BB7E0[(dword_100AAD78 + 978067213) ^ (dword_100AAD78 + 978066393)] ^ (dword_100AAD78 - 292576753);
        BYTE3(Src) = 80;
        ((int (__cdecl *)(char *, int *, signed int))v16)(&Dst, &dword_100AAD60, 4);
        ((int (__cdecl *)(char *, char *, unsigned int))v16)(&v23, v4, v5);
        v12 = v5 + 8;
        goto LABEL_15;
      }
      v15 = (dword_100AAD78 + 846030328) ^ dword_100BB7E0[(dword_100AAD78 + 846030328) ^ (dword_100AAD78 + 846029100)] ^ (dword_100AAD78 - 424748806);
      BYTE3(Src) = 69;
      ((int (__cdecl *)(char *, char *, unsigned int))v15)(&v22, v4, v5);
      v11 = v5;
      v10 = &Dst;
      v8 = dword_100AAD78 + 339877202;
      v7 = (dword_100AAD78 + 339877202) ^ (dword_100AAD78 + 339876382);
      v9 = dword_100AAF74 + dword_100AAFA4;
      v6 = dword_100AAD78 - 1065246640;
    }
    ((int (__cdecl *)(int, char *, unsigned int))(v8 ^ dword_100BB7E0[v7] ^ v6))(v9, v10, v11);
    v12 = v5 + 10;
LABEL_15:
    if ( !dword_100AB15C )
      dword_100AB15C = ((int (*)(void))((dword_100AAD78 + 1361977163) ^ dword_100BB7E0[(dword_100AAD78 + 1361977163) ^ (dword_100AAD78 + 1361976198)] ^ (dword_100AAD78 - 2048023991)))();
    dword_100AB164 += v12;
    if ( (dword_100AB2E8 || !dword_100ADDC4) && byte_100ADD82 && word_100ADDC8 )
    {
      if ( (signed int)v12 > 1196 )
        v12 = 1196;
      memcpy(&Dst, &Src, v12);
      Src = -1;
      (*(int (__cdecl **)(char *, _DWORD, unsigned int, int *))(a1 + 400))(
        &byte_100ADD82,
        (unsigned __int16)word_100ADDC8,
        v12 + 4,
        &Src);
      result = dword_100AB124++ + 1;
    }
    else
    {
      (*(int (__cdecl **)(size_t, int *))(a1 + 388))(v12, &Src);
      result = dword_100AB124++ + 1;
    }
  }
  return result;
}