Advertisement
Guest User

Untitled

a guest
May 27th, 2014
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.22 KB | None | 0 0
  1. void __thiscall Blaze__Tdf__visit(Blaze::Tdf *this, Blaze::TdfVisitor *visitor, Blaze::Tdf *rootTdf, Blaze::Tdf *referenceTdfUncasted)
  2. {
  3.   int TdfMemberInfo; // ecx@1
  4.   Blaze::Tdf *TdfVar1; // ebp@1
  5.   Blaze::Tdf *TdfVar2; // ebx@2
  6.   Blaze::TdfVisitor *TdfVisitorVar; // esi@2
  7.   unsigned int v8; // eax@3
  8.   int v9; // ecx@3
  9.   char *v10; // ecx@4
  10.   int v11; // edi@4
  11.   unsigned __int8 v12; // al@31
  12.   int v13; // [sp+Ch] [bp-1Ch]@19
  13.   int TdfMemberInfo2; // [sp+20h] [bp-8h]@1
  14.   unsigned int v15; // [sp+2Ch] [bp+4h]@3
  15.  
  16.   TdfVar1 = this;
  17.   TdfMemberInfo = ((int (*)(void))this->vfptr->getTdfMemberInfo)();
  18.   TdfMemberInfo2 = TdfMemberInfo;
  19.   if ( TdfMemberInfo )
  20.   {
  21.     TdfVar2 = rootTdf;
  22.     TdfVisitorVar = visitor;
  23.     while ( 1 )
  24.     {
  25.       v8 = *(_DWORD *)TdfMemberInfo;
  26.       v9 = *(_WORD *)(TdfMemberInfo + 6);
  27.       v15 = v8;
  28.       if ( v8 & 1 )
  29.       {
  30.         v11 = *(int *)((char *)&TdfVar1->vfptr + v9);
  31.         v10 = *(char **)((char *)&referenceTdfUncasted->vfptr + v9);
  32.         v8 &= 0xFFFFFFFEu;
  33.         v15 = v8;
  34.       }
  35.       else
  36.       {
  37.         v11 = (int)((char *)TdfVar1 + v9);
  38.         v10 = (char *)referenceTdfUncasted + v9;
  39.       }
  40.       switch ( *(_BYTE *)(TdfMemberInfo2 + 4) )
  41.       {
  42.         case 0:
  43.           TdfVisitorVar->vfptr->visit(
  44.             TdfVisitorVar,
  45.             TdfVar2,
  46.             TdfVar1,
  47.             v8,
  48.             (Blaze::TdfMapBase *)v11,
  49.             (Blaze::TdfMapBase *)v10);
  50.           break;
  51.         case 1:
  52.           TdfVisitorVar->vfptr->visit(
  53.             TdfVisitorVar,
  54.             TdfVar2,
  55.             TdfVar1,
  56.             v8,
  57.             (Blaze::TdfVectorBase *)v11,
  58.             (Blaze::TdfVectorBase *)v10);
  59.           break;
  60.         case 2:
  61.           TdfVar2 = rootTdf;
  62.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, _DWORD, _DWORD))TdfVisitorVar->vfptr->visit)(
  63.             TdfVisitorVar,
  64.             rootTdf,
  65.             TdfVar1,
  66.             v8,
  67.             v11,
  68.             *(float *)v10,
  69.             *(float *)(TdfMemberInfo2 + 8));
  70.           break;
  71.         case 3:
  72.           TdfVar2 = rootTdf;
  73.           TdfVisitorVar->vfptr->visit(
  74.             TdfVisitorVar,
  75.             rootTdf,
  76.             TdfVar1,
  77.             v8,
  78.             (int *)v11,
  79.             *(_DWORD *)v10,
  80.             *(Blaze::TdfEnumMap **)(TdfMemberInfo2 + 12),
  81.             *(_DWORD *)(TdfMemberInfo2 + 8));
  82.           break;
  83.         case 4:
  84.           TdfVar2 = rootTdf;
  85.           TdfVisitorVar->vfptr->visit(
  86.             TdfVisitorVar,
  87.             rootTdf,
  88.             TdfVar1,
  89.             v8,
  90.             (Blaze::TdfString *)v11,
  91.             (Blaze::TdfString *)v10,
  92.             *(const char **)(TdfMemberInfo2 + 8),
  93.             *(_DWORD *)(TdfMemberInfo2 + 12));
  94.           break;
  95.         case 5:
  96.           TdfVisitorVar->vfptr->visit(TdfVisitorVar, TdfVar2, TdfVar1, v8, (Blaze::Tdf *)v11, (Blaze::Tdf *)v10);
  97.           break;
  98.         case 6:
  99.           TdfVisitorVar->vfptr->visit(
  100.             TdfVisitorVar,
  101.             TdfVar2,
  102.             TdfVar1,
  103.             v8,
  104.             (Blaze::VariableTdfBase *)v11,
  105.             (Blaze::VariableTdfBase *)v10);
  106.           break;
  107.         case 7:
  108.           TdfVisitorVar->vfptr->visit(
  109.             TdfVisitorVar,
  110.             TdfVar2,
  111.             TdfVar1,
  112.             v8,
  113.             (Blaze::TdfBitfield *)v11,
  114.             (Blaze::TdfBitfield *)v10);
  115.           break;
  116.         case 8:
  117.           TdfVisitorVar->vfptr->visit(TdfVisitorVar, TdfVar2, TdfVar1, v8, (Blaze::TdfBlob *)v11, (Blaze::TdfBlob *)v10);
  118.           break;
  119.         case 9:
  120.           TdfVisitorVar->vfptr->visit(
  121.             TdfVisitorVar,
  122.             TdfVar2,
  123.             TdfVar1,
  124.             v8,
  125.             (Blaze::TdfUnion *)v11,
  126.             (Blaze::TdfUnion *)v10);
  127.           break;
  128.         case 0xA:
  129.           TdfVar2 = rootTdf;
  130.           TdfVisitorVar->vfptr->visit(
  131.             TdfVisitorVar,
  132.             rootTdf,
  133.             TdfVar1,
  134.             v8,
  135.             (Blaze::Tdf *)(v11 + *(_WORD *)(TdfMemberInfo2 + 8)),
  136.             (Blaze::Tdf *)&v10[*(_WORD *)(TdfMemberInfo2 + 8)]);
  137.           break;
  138.         case 0xB:
  139.           TdfVar2 = rootTdf;
  140.           TdfVisitorVar->vfptr->visit(
  141.             TdfVisitorVar,
  142.             rootTdf,
  143.             TdfVar1,
  144.             v8,
  145.             (Blaze::BlazeObjectType *)v11,
  146.             (Blaze::BlazeObjectType *)v10,
  147.             BLAZE_OBJECT_TYPE_INVALID_9);
  148.           break;
  149.         case 0xC:
  150.           TdfVar2 = rootTdf;
  151.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, char *, _DWORD, _DWORD, _DWORD, int))TdfVisitorVar->vfptr->visit)(
  152.             TdfVisitorVar,
  153.             rootTdf,
  154.             TdfVar1,
  155.             v8,
  156.             v11,
  157.             v10,
  158.             BLAZE_OBJECT_ID_INVALID_9.id,
  159.             HIDWORD(BLAZE_OBJECT_ID_INVALID_9.id),
  160.             *(_DWORD *)&BLAZE_OBJECT_ID_INVALID_9.type.component,
  161.             v13);
  162.           break;
  163.         case 0xD:
  164.           TdfVar2 = rootTdf;
  165.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, char *, _DWORD, _DWORD))TdfVisitorVar->vfptr->visit)(
  166.             TdfVisitorVar,
  167.             rootTdf,
  168.             TdfVar1,
  169.             v8,
  170.             v11,
  171.             v10,
  172.             *(_DWORD *)(TdfMemberInfo2 + 8),
  173.             *(_DWORD *)(TdfMemberInfo2 + 12));
  174.           break;
  175.         case 0xE:
  176.         case 0xF:
  177.           TdfVar2 = rootTdf;
  178.           TdfVisitorVar->vfptr->visit(
  179.             TdfVisitorVar,
  180.             rootTdf,
  181.             TdfVar1,
  182.             v8,
  183.             (bool *)v11,
  184.             (unsigned __int8)*v10,
  185.             *(_DWORD *)(TdfMemberInfo2 + 8) != 0);
  186.           break;
  187.         case 0x10:
  188.           TdfVar2 = rootTdf;
  189.           TdfVisitorVar->vfptr->visit(
  190.             TdfVisitorVar,
  191.             rootTdf,
  192.             TdfVar1,
  193.             v8,
  194.             (char *)v11,
  195.             *v10,
  196.             *(_BYTE *)(TdfMemberInfo2 + 8));
  197.           break;
  198.         case 0x11:
  199.           TdfVar2 = rootTdf;
  200.           TdfVisitorVar->vfptr->visit(
  201.             TdfVisitorVar,
  202.             rootTdf,
  203.             TdfVar1,
  204.             v8,
  205.             (char *)v11,
  206.             *v10,
  207.             *(_BYTE *)(TdfMemberInfo2 + 8));
  208.           break;
  209.         case 0x12:
  210.           TdfVar2 = rootTdf;
  211.           TdfVisitorVar->vfptr->visit(
  212.             TdfVisitorVar,
  213.             rootTdf,
  214.             TdfVar1,
  215.             v8,
  216.             (__int16 *)v11,
  217.             *(_WORD *)v10,
  218.             *(_WORD *)(TdfMemberInfo2 + 8));
  219.           break;
  220.         case 0x13:
  221.         case 0x19:
  222.         case 0x1A:
  223.           TdfVar2 = rootTdf;
  224.           TdfVisitorVar->vfptr->visit(
  225.             TdfVisitorVar,
  226.             rootTdf,
  227.             TdfVar1,
  228.             v8,
  229.             (unsigned __int16 *)v11,
  230.             *(_WORD *)v10,
  231.             *(_WORD *)(TdfMemberInfo2 + 8));
  232.           break;
  233.         case 0x14:
  234.           TdfVar2 = rootTdf;
  235.           TdfVisitorVar->vfptr->visit(
  236.             TdfVisitorVar,
  237.             rootTdf,
  238.             TdfVar1,
  239.             v8,
  240.             (int *)v11,
  241.             *(_DWORD *)v10,
  242.             *(_DWORD *)(TdfMemberInfo2 + 8));
  243.           break;
  244.         case 0x15:
  245.           TdfVar2 = rootTdf;
  246.           TdfVisitorVar->vfptr->visit(
  247.             TdfVisitorVar,
  248.             rootTdf,
  249.             TdfVar1,
  250.             v8,
  251.             (unsigned int *)v11,
  252.             *(_DWORD *)v10,
  253.             *(_DWORD *)(TdfMemberInfo2 + 8));
  254.           break;
  255.         case 0x16:
  256.         case 0x18:
  257.           TdfVar2 = rootTdf;
  258.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, _DWORD, _DWORD, _DWORD, _DWORD))TdfVisitorVar->vfptr->visit)(
  259.             TdfVisitorVar,
  260.             rootTdf,
  261.             TdfVar1,
  262.             v8,
  263.             v11,
  264.             *(_DWORD *)v10,
  265.             *((_DWORD *)v10 + 1),
  266.             *(_DWORD *)(TdfMemberInfo2 + 8),
  267.             *(_DWORD *)(TdfMemberInfo2 + 12));
  268.           break;
  269.         case 0x17:
  270.           TdfVar2 = rootTdf;
  271.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, _DWORD, _DWORD, _DWORD, _DWORD))TdfVisitorVar->vfptr->visit)(
  272.             TdfVisitorVar,
  273.             rootTdf,
  274.             TdfVar1,
  275.             v8,
  276.             v11,
  277.             *(_DWORD *)v10,
  278.             *((_DWORD *)v10 + 1),
  279.             *(_DWORD *)(TdfMemberInfo2 + 8),
  280.             *(_DWORD *)(TdfMemberInfo2 + 12));
  281.           break;
  282.         case 0x1B:
  283.           TdfVar2 = rootTdf;
  284.           ((void (__thiscall *)(Blaze::TdfVisitor *, Blaze::Tdf *, Blaze::Tdf *, unsigned int, int, _DWORD, _DWORD, _DWORD, _DWORD))TdfVisitorVar->vfptr->visit)(
  285.             TdfVisitorVar,
  286.             rootTdf,
  287.             TdfVar1,
  288.             v15,
  289.             v11,
  290.             *(_DWORD *)v10,
  291.             *((_DWORD *)v10 + 1),
  292.             *(_DWORD *)(TdfMemberInfo2 + 8),
  293.             (unsigned __int64)*(_DWORD *)(TdfMemberInfo2 + 8) >> 32);
  294.           break;
  295.         default:
  296.           break;
  297.       }
  298.       v12 = *(_BYTE *)(TdfMemberInfo2 + 5);
  299.       if ( !v12 )
  300.         break;
  301.       TdfMemberInfo2 += v12;
  302.       TdfMemberInfo = TdfMemberInfo2;
  303.     }
  304.   }
  305. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement