Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __cdecl sub_76D4F0(int a1)
- {
- int result; // eax
- float v2; // eax
- double v3; // st7
- int v4; // esi
- int v5; // esi
- unsigned int v6; // eax
- int i; // esi
- unsigned __int64 v8; // rax
- float v9; // [esp+20h] [ebp-B58h]
- float v10; // [esp+24h] [ebp-B54h]
- double v11; // [esp+28h] [ebp-B50h]
- double v12; // [esp+30h] [ebp-B48h]
- double Y[129]; // [esp+38h] [ebp-B40h]
- char v14[12]; // [esp+440h] [ebp-738h] BYREF
- int v15; // [esp+44Ch] [ebp-72Ch]
- __int16 v16[770]; // [esp+570h] [ebp-608h] BYREF
- int v17; // [esp+B74h] [ebp-4h]
- v17 = dword_857A00;
- result = (*(int (__stdcall **)(int, char *))(*(_DWORD *)a1 + 28))(a1, v14);
- if ( (v15 & 0x20000) != 0 )
- {
- *(float *)&v11 = *(float *)(dword_19BA9E8 + 40) + 1.0;
- *(float *)&v12 = *(float *)(dword_19BA9E8 + 44) + 1.0;
- *((float *)&v11 + 1) = *(float *)(dword_19BA9E8 + 48) + 1.0;
- *(float *)&v11 = *(float *)&v11 * 100.0 * ((2.4000001 - 0.0) / 200.0) + 0.0;
- *(float *)&v12 = *(float *)&v12 * 100.0 * 0.0049999999 + 0.5;
- *((float *)&v11 + 1) = *((float *)&v11 + 1) * 100.0 * 0.0049999999 + 0.5;
- if ( HIDWORD(v11) == 1065353216 )
- HIDWORD(v11) = 1065437102;
- v2 = 0.0;
- v10 = 0.0;
- do
- {
- v3 = (double)SLODWORD(v10);
- ++LODWORD(v2);
- v10 = v2;
- *((float *)Y + LODWORD(v2) + 1) = v3;
- }
- while ( SLODWORD(v2) < 256 );
- v4 = 0;
- v10 = 1.0 / *(float *)&v11;
- Y[0] = v10;
- do
- {
- v10 = *((float *)&Y[1] + v4) * 0.00390625;
- *(float *)&v11 = pow(v10, Y[0]);
- if ( *(float *)&v11 >= 0.0 )
- {
- if ( *(float *)&v11 > 1.0 )
- LODWORD(v11) = 1065353216;
- }
- else
- {
- LODWORD(v11) = 0;
- }
- LODWORD(v10) = (unsigned __int16)(unsigned __int64)(*(float *)&v11 * 256.0);
- *((float *)Y + ++v4 + 1) = (float)SLODWORD(v10);
- }
- while ( v4 < 256 );
- v5 = 0;
- v10 = flt_84DFB0 * *(float *)&v12;
- v12 = v10;
- do
- {
- v10 = (float)(int)(unsigned __int64)((tan(v12) + 1.0) * 128.0);
- if ( *((float *)&Y[1] + v5) >= (double)v10
- || (v10 = (float)(int)(unsigned __int64)(128.0 - tan(v12) * 128.0), *((float *)&Y[1] + v5) <= (double)v10) )
- {
- v10 = (float)(int)(unsigned __int64)((tan(v12) + 1.0) * 128.0);
- if ( *((float *)&Y[1] + v5) < (double)v10 )
- *((_DWORD *)&Y[1] + v5) = 0;
- else
- *((_DWORD *)&Y[1] + v5) = 1132396544;
- }
- else
- {
- Y[0] = *((float *)&Y[1] + v5) - 128.0;
- *((float *)&Y[1] + v5) = Y[0] / tan(v12) + 128.0;
- }
- ++v5;
- }
- while ( v5 < 256 );
- v6 = 0;
- v10 = *((float *)&v11 + 1) - 1.0;
- *(float *)&v11 = v10 * 256.0;
- do
- {
- v6 += 8;
- *(&v9 + v6) = *(float *)&v11 + *(&v9 + v6);
- *(&v10 + v6) = *(float *)&v11 + *(&v10 + v6);
- *((float *)&v11 + v6) = *(float *)&v11 + *((float *)&v11 + v6);
- *((float *)&v11 + v6 + 1) = *(float *)&v11 + *((float *)&v11 + v6 + 1);
- *((float *)&v12 + v6) = *(float *)&v11 + *((float *)&v12 + v6);
- *((float *)&v12 + v6 + 1) = *(float *)&v11 + *((float *)&v12 + v6 + 1);
- *(float *)&Y[v6 / 2] = *(float *)&v11 + *(float *)&Y[v6 / 2];
- *((float *)&Y[v6 / 2] + 1) = *(float *)&v11 + *((float *)&Y[v6 / 2] + 1);
- }
- while ( (int)v6 < 256 );
- for ( i = 0; i < 256; ++i )
- {
- v8 = (unsigned __int64)(*((float *)&Y[1] + i) * 256.0);
- if ( (int)v8 > 0 )
- {
- if ( (int)v8 > 0xFFFF )
- LOWORD(v8) = -1;
- }
- else
- {
- LOWORD(v8) = 1;
- }
- v16[i + 512] = v8;
- v16[i + 256] = v8;
- v16[i] = v8;
- }
- result = (*(int (__stdcall **)(int, _DWORD, _DWORD, __int16 *))(*(_DWORD *)a1 + 84))(a1, 0, 0, v16);
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement