Advertisement
Guest User

3DCUBE.exe

a guest
Jun 24th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.04 KB | None | 0 0
  1. int __fastcall main_(int a1, int a2, int a3, int a4)
  2. {
  3.   int v4; // eax@1
  4.   int v5; // edx@4
  5.   int v6; // eax@4
  6.   int v7; // eax@4
  7.   int v8; // eax@4
  8.   int v9; // eax@4
  9.   int v10; // eax@5
  10.   int v11; // eax@5
  11.   int v12; // edi@8
  12.   int v13; // esi@8
  13.   int v14; // ebx@10
  14.   int v15; // ebx@10
  15.   double v16; // ST14_8@10
  16.   int v17; // edx@12
  17.   int v18; // eax@43
  18.   double v19; // ST14_8@44
  19.   int v20; // eax@55
  20.   _UNKNOWN *v21; // ecx@62
  21.   int v22; // edx@63
  22.   int v23; // edx@64
  23.   int v24; // ecx@64
  24.   int v25; // eax@64
  25.   int v26; // eax@64
  26.   int v27; // eax@64
  27.   int v28; // eax@64
  28.   int v29; // edx@65
  29.   int v30; // eax@82
  30.   int v31; // eax@82
  31.   int v32; // eax@82
  32.   int v33; // eax@82
  33.   int v34; // eax@82
  34.   int v35; // eax@82
  35.   int v36; // eax@82
  36.   int v37; // eax@82
  37.   int v38; // eax@82
  38.   int v39; // eax@82
  39.   int v40; // eax@82
  40.   int v41; // eax@82
  41.   int v42; // eax@82
  42.   int result; // eax@84
  43.   int v44; // eax@85
  44.   int v45; // eax@85
  45.   int v46; // ebx@85
  46.   int v47; // eax@85
  47.   int v48; // eax@85
  48.   int v49; // eax@86
  49.   int v50; // eax@86
  50.   int v51; // ebx@86
  51.   int v52; // eax@86
  52.   int v53; // eax@86
  53.   int v54; // eax@87
  54.   int v55; // eax@87
  55.   char v56; // [sp+0h] [bp-D0h]@1
  56.   int v57; // [sp+34h] [bp-9Ch]@1
  57.   int v58; // [sp+38h] [bp-98h]@1
  58.   int v59; // [sp+3Ch] [bp-94h]@1
  59.   char v60; // [sp+40h] [bp-90h]@1
  60.   char v61; // [sp+44h] [bp-8Ch]@1
  61.   double v62; // [sp+50h] [bp-80h]@64
  62.   double v63; // [sp+58h] [bp-78h]@64
  63.   double v64; // [sp+60h] [bp-70h]@64
  64.   double v65; // [sp+68h] [bp-68h]@64
  65.   int v66; // [sp+70h] [bp-60h]@16
  66.   int v67; // [sp+74h] [bp-5Ch]@4
  67.   int v68; // [sp+78h] [bp-58h]@1
  68.   int v69; // [sp+7Ch] [bp-54h]@1
  69.   int v70; // [sp+80h] [bp-50h]@1
  70.   int v71; // [sp+84h] [bp-4Ch]@1
  71.   int v72; // [sp+88h] [bp-48h]@1
  72.   int (*v73)(); // [sp+8Ch] [bp-44h]@1
  73.   int v74; // [sp+90h] [bp-40h]@1
  74.   unsigned int v75; // [sp+94h] [bp-3Ch]@1
  75.   int v76; // [sp+98h] [bp-38h]@1
  76.   int v77; // [sp+9Ch] [bp-34h]@62
  77.   int v78; // [sp+A0h] [bp-30h]@64
  78.   int v79; // [sp+A4h] [bp-2Ch]@12
  79.   int v80; // [sp+A8h] [bp-28h]@85
  80.   int v81; // [sp+ACh] [bp-24h]@8
  81.   unsigned __int8 v82; // [sp+B0h] [bp-20h]@13
  82.   unsigned __int8 v83; // [sp+B4h] [bp-1Ch]@11
  83.   unsigned __int8 v84; // [sp+B8h] [bp-18h]@13
  84.   int v85; // [sp+C4h] [bp-Ch]@1
  85.   int v86; // [sp+C8h] [bp-8h]@1
  86.  
  87.   v86 = a4;
  88.   v85 = a2;
  89.   v57 = dword_107414;
  90.   v58 = (int)&unk_761E0;
  91.   dword_107414 = (int)&v57;
  92.   v68 = 0;
  93.   v69 = 1259;
  94.   v70 = 1229;
  95.   v71 = 340;
  96.   v72 = (int)&unk_100000;
  97.   v73 = (int (*)())((char *)sub_2D781 + 3);
  98.   v74 = 0;
  99.   v75 = 257;
  100.   v60 |= 1u;
  101.   v59 = 2;
  102.   v76 = sub_51060(&v61, &unk_105EB0, 9);
  103.   v59 = 4;
  104.   v60 &= 0xFEu;
  105.   v4 = setjmp_(&v56);
  106.   if ( (unsigned int)v4 < 2 )
  107.   {
  108.     if ( v4 == 1 )
  109.     {
  110.       v59 = 6;
  111.       sub_4F410(&unk_105EB0);
  112.       sub_5B3A4(&unk_107498, dword_107410);
  113.       v44 = sub_59A7C(&unk_107498, unknown_libname_10);
  114.       v45 = sub_59A7C(v44, unknown_libname_10);
  115.       sub_59A7C(v45, unknown_libname_10);
  116.       operator__(&unk_107498, "****************************************************************\n");
  117.       v46 = sub_556A0(v80);
  118.       v47 = operator__(&unk_107498, "* c3D ERROR: ");
  119.       v48 = operator__(v47, v46);
  120.       sub_59A7C(v48, unknown_libname_10);
  121.       operator__(&unk_107498, "****************************************************************\n");
  122.       _wcpp_2_catch_done__();
  123.       v59 = 1;
  124.       goto LABEL_83;
  125.     }
  126.   }
  127.   else
  128.   {
  129.     if ( (unsigned int)v4 <= 2 )
  130.     {
  131.       v59 = 8;
  132.       sub_4F410(&unk_105EB0);
  133.       sub_5B3A4(&unk_107498, dword_107410);
  134.       v49 = sub_59A7C(&unk_107498, unknown_libname_10);
  135.       v50 = sub_59A7C(v49, unknown_libname_10);
  136.       sub_59A7C(v50, unknown_libname_10);
  137.       operator__(&unk_107498, "****************************************************************\n");
  138.       v51 = sub_49F10(v80);
  139.       v52 = operator__(&unk_107498, "* DVect ERROR: ");
  140.       v53 = operator__(v52, v51);
  141.       sub_59A7C(v53, unknown_libname_10);
  142.       operator__(&unk_107498, "****************************************************************\n");
  143.       _wcpp_2_catch_done__();
  144.       v59 = 1;
  145.       goto LABEL_83;
  146.     }
  147.     if ( v4 == 3 )
  148.     {
  149.       v59 = 10;
  150.       sub_4F410(&unk_105EB0);
  151.       sub_5B3A4(&unk_107498, dword_107410);
  152.       v54 = sub_59A7C(&unk_107498, unknown_libname_10);
  153.       v55 = sub_59A7C(v54, unknown_libname_10);
  154.       sub_59A7C(v55, unknown_libname_10);
  155.       operator__(&unk_107498, "****************************************************************\n");
  156.       operator__(&unk_107498, "* Unknown Exception\n");
  157.       operator__(&unk_107498, "****************************************************************\n");
  158.       _wcpp_2_catch_done__();
  159.       v59 = 1;
  160.       goto LABEL_83;
  161.     }
  162.   }
  163.   dword_107410 = dword_1074A8;
  164.   v6 = operator__(&unk_107498, "### Initializing r3D from: ");
  165.   v7 = operator__(v6, &unk_74EE2);
  166.   sub_59A7C(v7, unknown_libname_10);
  167.   sub_55860(&unk_AECA8, "SWORLD1.DAT");
  168.   operator__(&unk_107498, "### After r3D Init\n");
  169.   v8 = operator__(&unk_107498, "### Opening LOG FILE: ");
  170.   v9 = operator__(v8, "SWORLD1.LOG");
  171.   sub_59A7C(v9, unknown_libname_10);
  172.   v67 = fopen_("SWORLD1.LOG", "w");
  173.   if ( !v67 )
  174.   {
  175.     v10 = operator__(&unk_107498, "###### Cannot Create LOG FILE:");
  176.     v11 = operator__(v10, "SWORLD1.LOG");
  177.     sub_59A7C(v11, unknown_libname_10);
  178.     goto LABEL_84;
  179.   }
  180.   sub_510B0(&v61, v5, sub_10010, __CS__);
  181.   v75 = dword_7091C[8 * v68];
  182.   sub_4F970(&unk_105EB0, v67);
  183.   sub_4FC40(&unk_105EB0, (unsigned __int16)v75, v67);
  184.   ((void (__cdecl *)(int, _DWORD, char))fprintf_)(v67, "\n\n### T_B3D : Setting Video Mode\n", v56);
  185.   sub_50260(0);
  186.   sub_50570(&unk_105EB0, v67, 1);
  187.   fprintf_(v67, "\t ERROR Returned = 0x%X\n", dword_106F54);
  188.   if ( dword_106F54 )
  189.   {
  190.     sub_59A7C(&unk_107498, unknown_libname_10);
  191.     operator__(&unk_107498, "*********************************************************************\n");
  192.     operator__(&unk_107498, "* c3D ERROR: You need VESA 640x480 256 Color mode to run this demo  *\n");
  193.     operator__(&unk_107498, "*********************************************************************\n");
  194.     goto LABEL_84;
  195.   }
  196.   fprintf_(v67, "\n\n### T_B3D : Programming Palette\n");
  197.   sub_4F8A0(&unk_105EB0);
  198.   fprintf_(v67, "\t ERROR Returned = 0x%X\n", dword_106F54);
  199.   v13 = *MK_FP(word_106F6A, 18);
  200.   v12 = *MK_FP(word_106F6A, 20) & 0xFFFF;
  201.   v81 = v12 * v13;
  202.   if ( v12 * v13 > (unsigned int)loc_4B000 )
  203.   {
  204.     fprintf_(v67, "\t ERROR - Too Small Screen\n");
  205.     goto LABEL_84;
  206.   }
  207.   sub_49D80(&unk_106F9C, &unk_BAEB0, v13, v12);
  208.   dword_1073E8 = 255;
  209.   dword_1073E4 = 0;
  210.   dword_1073EC = 40;
  211.   dword_1073F0 = 220;
  212.   dword_106FE0 = 1;
  213.   dword_106FD0 = (dword_106FD8 / 2 - 9 * dword_106FDC / 2) * dword_106FD4 + dword_106FC8;
  214.   dword_106FCC = (dword_106FD8 / 2 - 9 * dword_106FDC / 2) * dword_106FD4 + dword_106FC8;
  215.   v15 = v81;
  216.   memset_(&unk_BAEB0, 0, v81);
  217.   sub_50570(&unk_105EB0, v67, v15);
  218.   fprintf_(v67, "### T_B3D: About to Prepare Video\n");
  219.   HIDWORD(v16) = dword_70934[8 * v68];
  220.   LODWORD(v16) = dword_70930[8 * v68];
  221.   sub_55C50(
  222.     dword_70920[8 * v68],
  223.     dword_70924[8 * v68],
  224.     dword_70928[8 * v68],
  225.     dword_7092C[8 * v68],
  226.     dword_70938[8 * v68],
  227.     v16);
  228.   sub_55920(4);
  229.   sub_55A90(&unk_AECA8, v72, v73, v74);
  230.   sub_5B3A4(&unk_107498, &unk_106F9C);
  231.   sub_57840(&unk_AECA8);
  232.   v14 = 32 * v68;
  233.   sub_58100(dword_70924[8 * v68] - dword_70920[8 * v68] + 1, dword_7092C[8 * v68] - dword_70928[8 * v68] + 1);
  234.   sub_503E0(&unk_105EB0, &unk_BAEB0);
  235.   do
  236.     v83 = byte_BAEAC;
  237.   while ( !byte_BAEAC );
  238.   sub_57840(&unk_AECA8);
  239.   sub_503E0(&unk_105EB0, v17);
  240.   v79 = 0;
  241.   do
  242.   {
  243. LABEL_13:
  244.     v82 = v84;
  245.     v84 = v83;
  246.     v83 = byte_BAEAC;
  247.   }
  248.   while ( !byte_BAEAC );
  249. LABEL_14:
  250.   if ( v83 == v84 )
  251.   {
  252.     if ( v83 == v82 )
  253.       v66 = 32;
  254.     else
  255.       v66 = 16;
  256.   }
  257.   else
  258.   {
  259.     v66 = 8;
  260.   }
  261.   while ( 1 )
  262.   {
  263.     LOBYTE(v14) = v83;
  264.     if ( v83 >= 0x48u )
  265.     {
  266.       v17 = v66 >> 31;
  267.       v20 = v66 / 2;
  268.       if ( v83 <= 0x48u )
  269.       {
  270.         if ( !sub_55AB0(&unk_AECA8, v20 + v66) )
  271.         {
  272.           if ( v79 )
  273.           {
  274.             sub_578E0(&unk_AECA8, &unk_BAEB0);
  275.             sub_503E0(&unk_105EB0, v17);
  276.           }
  277.           goto LABEL_13;
  278.         }
  279.       }
  280.       else
  281.       {
  282.         if ( v83 < 0x4Du )
  283.         {
  284.           if ( v83 <= 0x49u )
  285.           {
  286.             if ( !sub_55B30(&unk_AECA8, v66) )
  287.             {
  288.               if ( v79 )
  289.               {
  290.                 sub_578E0(&unk_AECA8, &unk_BAEB0);
  291.                 sub_503E0(&unk_105EB0, v17);
  292.               }
  293.               goto LABEL_13;
  294.             }
  295.           }
  296.           else
  297.           {
  298.             if ( v83 != 75 )
  299.               goto LABEL_45;
  300.             sub_55B50(&unk_AECA8, v66, v14);
  301.           }
  302.         }
  303.         else
  304.         {
  305.           if ( v83 <= 0x4Du )
  306.           {
  307.             sub_55B50(&unk_AECA8, -v66, v14);
  308.           }
  309.           else
  310.           {
  311.             if ( v83 < 0x50u )
  312.               goto LABEL_45;
  313.             if ( v83 <= 0x50u )
  314.             {
  315.               if ( !sub_55AB0(&unk_AECA8, -v66 - v20) )
  316.               {
  317.                 if ( v79 )
  318.                 {
  319.                   sub_578E0(&unk_AECA8, &unk_BAEB0);
  320.                   sub_503E0(&unk_105EB0, v17);
  321.                 }
  322.                 goto LABEL_13;
  323.               }
  324.             }
  325.             else
  326.             {
  327.               if ( v83 != 81 )
  328.                 goto LABEL_45;
  329.               if ( !sub_55B30(&unk_AECA8, -v66) )
  330.               {
  331.                 if ( v79 )
  332.                 {
  333.                   sub_578E0(&unk_AECA8, &unk_BAEB0);
  334.                   sub_503E0(&unk_105EB0, v17);
  335.                 }
  336.                 goto LABEL_13;
  337.               }
  338.             }
  339.           }
  340.         }
  341.       }
  342. LABEL_32:
  343.       sub_57890(&unk_AECA8);
  344.       v82 = v84;
  345.       v84 = v83;
  346.       v83 = byte_BAEAC;
  347.       if ( byte_BAEAC )
  348.       {
  349.         v79 = 1;
  350.         sub_57930(&unk_AECA8, &unk_BAEB0);
  351.         sub_503E0(&unk_105EB0, v17);
  352.         goto LABEL_14;
  353.       }
  354.       v79 = (unsigned __int8)byte_BAEAC;
  355.       sub_578E0(&unk_AECA8, &unk_BAEB0);
  356.       sub_503E0(&unk_105EB0, v17);
  357.       goto LABEL_13;
  358.     }
  359.     if ( v83 < 0x14u )
  360.       break;
  361.     if ( v83 > 0x14u )
  362.     {
  363.       if ( v83 >= 0x1Fu )
  364.       {
  365.         if ( v83 <= 0x1Fu )
  366.         {
  367.           if ( dword_7093C[8 * v68] )
  368.             ++v68;
  369.           else
  370.             v68 = 0;
  371.         }
  372.         else
  373.         {
  374.           if ( v83 != 48 )
  375.             goto LABEL_45;
  376.           if ( !v68 )
  377.           {
  378.             while ( dword_7091C[8 * v68] )
  379.               ++v68;
  380.           }
  381.           --v68;
  382.         }
  383.         if ( dword_7091C[8 * v68] != v75 )
  384.         {
  385.           v75 = dword_7091C[8 * v68];
  386.           sub_50260(0);
  387.           HIWORD(v13) = 0;
  388.           sub_4F8A0(&unk_105EB0);
  389.           LOWORD(v13) = *MK_FP(word_106F6A, 18);
  390.           v12 = *MK_FP(word_106F6A, 20);
  391.           sub_49D80(&unk_106F9C, &unk_BAEB0, v13, *MK_FP(word_106F6A, 20));
  392.           dword_106FE0 = 1;
  393.           dword_1073F0 = 220;
  394.           dword_1073E8 = 255;
  395.           dword_1073E4 = 0;
  396.           dword_1073EC = 40;
  397.           v18 = dword_106FD4 * (dword_106FD8 / 2 - 3 * dword_106FDC / 2);
  398.           dword_106FD0 = v18 + dword_106FC8;
  399.           dword_106FCC = v18 + dword_106FC8;
  400.         }
  401.         memset_(&unk_BAEB0, 0, v12 * v13);
  402.         HIDWORD(v19) = dword_70934[8 * v68];
  403.         LODWORD(v19) = dword_70930[8 * v68];
  404.         sub_55C50(
  405.           dword_70920[8 * v68],
  406.           dword_70924[8 * v68],
  407.           dword_70928[8 * v68],
  408.           dword_7092C[8 * v68],
  409.           dword_70938[8 * v68],
  410.           v19);
  411.         sub_57840(&unk_AECA8);
  412.         v79 = 1;
  413.       }
  414. LABEL_45:
  415.       if ( v79 )
  416.         sub_578E0(&unk_AECA8, v17);
  417.       v14 = 32 * v68;
  418.       sub_58100(dword_70924[8 * v68] - dword_70920[8 * v68] + 1, dword_7092C[8 * v68] - dword_70928[8 * v68] + 1);
  419.       goto LABEL_48;
  420.     }
  421.     v77 = *MK_FP(word_106F52, 1132);
  422.     v14 = 0;
  423.     v21 = &unk_AECA8;
  424.     do
  425.     {
  426.       sub_55B50(v21, 24, v14);
  427.       sub_57890(v21);
  428.       sub_57930(v21, &unk_BAEB0);
  429.       ++v14;
  430.       sub_503E0(&unk_105EB0, v22);
  431.     }
  432.     while ( v14 < 30 );
  433.     v78 = *MK_FP(word_106F52, 1132);
  434.     sub_578E0(&unk_AECA8, &unk_BAEB0);
  435.     sub_503E0(&unk_105EB0, v23);
  436.     v79 = v24;
  437.     HIDWORD(v65) = v24;
  438.     LODWORD(v65) = v78 - v77;
  439.     v64 = (long double)*(signed __int64 *)&v65 * dbl_756BC * dbl_756C4;
  440.     v65 = 1.0 / v64;
  441.     v25 = operator__(&unk_107498, "FRAME RATE=");
  442.     v63 = v65;
  443.     v26 = __outfloat(v25, &v63);
  444.     v27 = operator__(v26, "[FPS]  ");
  445.     v62 = v64;
  446.     v28 = __outfloat(v27, &v62);
  447.     operator__(v28, "[s]\n");
  448.     operator__(&unk_107498, &unk_7512A);
  449. LABEL_48:
  450.     sub_503E0(&unk_105EB0, &unk_BAEB0);
  451.     do
  452.     {
  453.       do
  454.       {
  455.         v82 = v84;
  456.         v84 = v83;
  457.         v83 = byte_BAEAC;
  458.       }
  459.       while ( !byte_BAEAC );
  460.     }
  461.     while ( v83 == v84 );
  462.     if ( v75 < 0x100 )
  463.     {
  464.       v14 = v12 * v13;
  465.       memset_(&unk_BAEB0, 0, v12 * v13);
  466.     }
  467.     sub_57840(&unk_AECA8);
  468.     sub_503E0(&unk_105EB0, v17);
  469.   }
  470.   if ( v83 != 1 )
  471.     goto LABEL_45;
  472.   sub_57840(&unk_AECA8);
  473.   sub_503E0(&unk_105EB0, v29);
  474.   operator__(&unk_107498, "DO YOU REALLY WANT TO EXIT? (Y/N)\n");
  475.   operator__(&unk_107498, &unk_7514F);
  476.   sub_503E0(&unk_105EB0, &unk_BAEB0);
  477.   do
  478.   {
  479.     do
  480.     {
  481.       v82 = v84;
  482.       v84 = v83;
  483.       v83 = byte_BAEAC;
  484.     }
  485.     while ( !byte_BAEAC );
  486.   }
  487.   while ( v83 == v84 );
  488.   if ( v83 != 21 )
  489.     goto LABEL_32;
  490.   fclose_(v67);
  491.   sub_4F410(&unk_105EB0);
  492.   sub_5B3A4(&unk_107498, dword_107410);
  493.   v30 = operator__(&unk_107498, "*****************************************************************\n");
  494.   v31 = operator__(v30, "*         Real-Time 3D Rendering System (C)1996 SAJ FAZA        *\n");
  495.   v32 = operator__(v31, "*          PO Box 8024, Huntington Beach CA, 92615-8024         *\n");
  496.   v33 = operator__(v32, "*           Tel (909) 794-0130  Fax/Msg (909) 794-5720          *\n");
  497.   v34 = operator__(v33, "*                   E-Mail: faza@faza.win.net                   *\n");
  498.   v35 = operator__(v34, "*              Web Site: http://www.win.net/faza                *\n");
  499.   v36 = operator__(v35, "*                                                               *\n");
  500.   v37 = operator__(v36, "* Please Check my Web Site Again. I am working on:              *\n");
  501.   v38 = operator__(v37, "*   1. DirectX (Windows95) Version of Cube 3D                   *\n");
  502.   v39 = operator__(v38, "*   2. Creating more examples, more detailed models             *\n");
  503.   v40 = operator__(v39, "*   3. Completing \"dynamic loading\" allowing creating huge      *\n");
  504.   v41 = operator__(v40, "*      disk-based models. See documentation on the web.         *\n");
  505.   v42 = operator__(v41, "*   4. Further speeding up the algorithm                        *\n");
  506.   operator__(v42, "*****************************************************************\n\n\n");
  507. LABEL_83:
  508.   v59 = 1;
  509. LABEL_84:
  510.   _wcpp_2_destruct_all__();
  511.   result = v57;
  512.   dword_107414 = v57;
  513.   return result;
  514. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement