void __usercall sub_410B10(int a1<edi>)
{
SOCKET v1; // ebp@3
SOCKET v2; // ST18_4@3
int v3; // eax@5
ULONG_PTR v4; // esi@5
int v5; // ecx@6
int v6; // eax@8
int v7; // edx@8
int v8; // eax@8
int v9; // ecx@12
char v10; // [sp+Ch] [bp-30h]@1
char cbBytesReturned; // [sp+13h] [bp-29h]@8
int addrlen; // [sp+14h] [bp-28h]@3
int vInBuffer; // [sp+18h] [bp-24h]@8
int v14; // [sp+1Ch] [bp-20h]@8
int v15; // [sp+20h] [bp-1Ch]@8
struct sockaddr addr; // [sp+24h] [bp-18h]@3
unsigned int v17; // [sp+34h] [bp-8h]@1 v17 = (unsigned int)&v10 ^ dword_616274;
if ( WaitForSingleObject(*(HANDLE *)(a1 + 164), 0) )
{
if ( !*(_DWORD *)(a1 + 20) )
{
v2 = *(_DWORD *)(a1 + 160);
addrlen = 16;
v1 = accept(v2, &addr, &addrlen);
if ( v1 != -1 || WSAGetLastError() == 10035 )
{
v3 = sub_4117A0(a1);
v4 = v3;
if ( v3 )
{
*(_DWORD *)(v3 + 4) = v1;
*(_DWORD *)(v3 + 60) = v3 + 64;
*(_DWORD *)(v3 + 56) = 8192;
if ( CreateIoCompletionPort((HANDLE)v1, *(HANDLE *)(a1 + 172), v3, 0) == *(HANDLE *)(a1 + 172) )
{
cbBytesReturned = 1;
setsockopt(*(_DWORD *)(v4 + 4), 65535, 8, &cbBytesReturned, 1);
v7 = *(_DWORD *)(a1 + 176); //
vInBuffer = 1;
v14 = v7; //
v15 = 10000;
v8 = WSAIoctl(*(_DWORD *)(v4 + 4), 0x98000004u, &vInBuffer, 0xCu, 0, 0, (LPDWORD)&cbBytesReturned, 0, 0);
sub_404FD0(v8, a1 + 64);
sub_4119F0(a1 + 36, v4);
(*(void (__thiscall **)(int))(*(_DWORD *)(a1 + 64) + 20))(a1 + 64);
v6 = operator new(0x18u);
if ( v6 )
{
*(_DWORD *)v6 = 0;
*(_DWORD *)(v6 + 4) = 0;
*(_DWORD *)(v6 + 8) = 0;
*(_DWORD *)(v6 + 12) = 0;
*(_DWORD *)(v6 + 16) = 0;
*(_DWORD *)(v6 + 20) = 0;
}
else
{
v6 = 0;
}
if ( PostQueuedCompletionStatus(*(HANDLE *)(a1 + 172), 0, v4, (LPOVERLAPPED)v6) || GetLastError() == 997 )
{
(*(void (__stdcall **)(_DWORD, ULONG_PTR, signed int))(a1 + 4))(*(_DWORD *)(a1 + 8), v4, 1);
if ( *(_DWORD *)(a1 + 28) )
sub_410EA0(v4, a1);
}
else
{
sub_411560(v9, a1, v4, 1);
}
}
else
{
sub_411560(v5, a1, v4, 1);
closesocket(v1);
closesocket(*(_DWORD *)(a1 + 160));
}
}
}
}
}
}
{
SOCKET v1; // ebp@3
SOCKET v2; // ST18_4@3
int v3; // eax@5
ULONG_PTR v4; // esi@5
int v5; // ecx@6
int v6; // eax@8
int v7; // edx@8
int v8; // eax@8
int v9; // ecx@12
char v10; // [sp+Ch] [bp-30h]@1
char cbBytesReturned; // [sp+13h] [bp-29h]@8
int addrlen; // [sp+14h] [bp-28h]@3
int vInBuffer; // [sp+18h] [bp-24h]@8
int v14; // [sp+1Ch] [bp-20h]@8
int v15; // [sp+20h] [bp-1Ch]@8
struct sockaddr addr; // [sp+24h] [bp-18h]@3
unsigned int v17; // [sp+34h] [bp-8h]@1 v17 = (unsigned int)&v10 ^ dword_616274;
if ( WaitForSingleObject(*(HANDLE *)(a1 + 164), 0) )
{
if ( !*(_DWORD *)(a1 + 20) )
{
v2 = *(_DWORD *)(a1 + 160);
addrlen = 16;
v1 = accept(v2, &addr, &addrlen);
if ( v1 != -1 || WSAGetLastError() == 10035 )
{
v3 = sub_4117A0(a1);
v4 = v3;
if ( v3 )
{
*(_DWORD *)(v3 + 4) = v1;
*(_DWORD *)(v3 + 60) = v3 + 64;
*(_DWORD *)(v3 + 56) = 8192;
if ( CreateIoCompletionPort((HANDLE)v1, *(HANDLE *)(a1 + 172), v3, 0) == *(HANDLE *)(a1 + 172) )
{
cbBytesReturned = 1;
setsockopt(*(_DWORD *)(v4 + 4), 65535, 8, &cbBytesReturned, 1);
v7 = *(_DWORD *)(a1 + 176); //
vInBuffer = 1;
v14 = v7; //
v15 = 10000;
v8 = WSAIoctl(*(_DWORD *)(v4 + 4), 0x98000004u, &vInBuffer, 0xCu, 0, 0, (LPDWORD)&cbBytesReturned, 0, 0);
sub_404FD0(v8, a1 + 64);
sub_4119F0(a1 + 36, v4);
(*(void (__thiscall **)(int))(*(_DWORD *)(a1 + 64) + 20))(a1 + 64);
v6 = operator new(0x18u);
if ( v6 )
{
*(_DWORD *)v6 = 0;
*(_DWORD *)(v6 + 4) = 0;
*(_DWORD *)(v6 + 8) = 0;
*(_DWORD *)(v6 + 12) = 0;
*(_DWORD *)(v6 + 16) = 0;
*(_DWORD *)(v6 + 20) = 0;
}
else
{
v6 = 0;
}
if ( PostQueuedCompletionStatus(*(HANDLE *)(a1 + 172), 0, v4, (LPOVERLAPPED)v6) || GetLastError() == 997 )
{
(*(void (__stdcall **)(_DWORD, ULONG_PTR, signed int))(a1 + 4))(*(_DWORD *)(a1 + 8), v4, 1);
if ( *(_DWORD *)(a1 + 28) )
sub_410EA0(v4, a1);
}
else
{
sub_411560(v9, a1, v4, 1);
}
}
else
{
sub_411560(v5, a1, v4, 1);
closesocket(v1);
closesocket(*(_DWORD *)(a1 + 160));
}
}
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货