Function at 0x10001570
Capabilities:
Create tcp socket
Create udp socket
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Initialize winsock library
Receive data
Receive data on socket
Start tcp server

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1d4
lea eax, [esp + 0x44]
push ebx
push esi
push edi
push eax
push 0x202
mov esi, edx
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
jne 0x100017e3
mov dword [esp + 0x44], eax
mov eax, 2
push esi
mov word [esp + 0x44], ax
call dword [sym.imp.WS2_32.dll_htons]
push 0
push 1
push 2
mov word [esp + 0x4e], ax
call dword [sym.imp.WS2_32.dll_socket]
mov ebx, eax
mov dword [esp + 0x1c], ebx
cmp ebx, 0xffffffff
je 0x100017e3
push 0x10
lea eax, [esp + 0x44]
push eax
push ebx
call dword [sym.imp.WS2_32.dll_bind]
test eax, eax
jne 0x100017e3
push bind
push ebx
call dword [sym.imp.WS2_32.dll_listen]
test eax, eax
jne 0x100017e3
push eax
push eax
push ebx
call dword [sym.imp.WS2_32.dll_accept]
mov esi, eax
mov dword [esp + 0x18], esi
cmp esi, 0xffffffff
je 0x100017e3
push 0xf0000000
push 1
push 0
xorps xmm0, xmm0
mov dword [esp + 0x20], 0
push 0
lea eax, [esp + 0x24]
mov dword [esp + 0x20], 0
push eax
mov byte [esp + 0x34], 0
movups xmmword [esp + 0x35], xmm0
mov dword [esp + 0x4d], 0
movq qword [esp + 0x45], xmm0
mov word [esp + 0x51], 0
mov byte [esp + 0x53], 0
mov dword [esp + 0x20], 0x14
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x100017e3
lea eax, [esp + 0x10]
push eax
push 0
push 0
push 0x8004
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x100017e3
mov ecx, 0x100138c0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10001695
push 0
sub ecx, edx
push ecx
push 0x100138c0
push dword [esp + 0x1c]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x100017e3
push 0
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x28]
push eax
push 2
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x100017e3
push 0
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push 4
push 0x10014340
push esi
call dword [sym.imp.WS2_32.dll_recv]
mov ecx, dword [0x10014340]
xor edi, edi
mov al, cl
xor al, byte [esp + 0x20]
mov byte [esp + 0xc], al
mov al, ch
xor al, byte [esp + 0x21]
mov byte [esp + 0xd], al
movzx eax, byte [esp + 0x22]
xor al, byte [0x10014342]
mov byte [esp + 0xe], al
movzx eax, byte [esp + 0x23]
xor al, byte [0x10014343]
mov byte [esp + 0xf], al
mov eax, dword [esp + 0xc]
cmp eax, 0x300000
jae 0x100017dc
push 0x40
push 0x1000
add eax, 5
push eax
push edi
call dword [0x1001433c]
mov dword [0x10014334], eax
test eax, eax
je 0x100017dc
push 0x14
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.10003e60
mov ecx, dword [0x10014334]
add esp, 0xc
mov byte [ecx], 0xbf
mov dword [ecx + 1], esi
mov esi, dword [esp + 0xc]
test esi, esi
je 0x100017b6
mov ebx, dword [esp + 0x18]
push 0
push esi
lea eax, [edi + 5]
add eax, ecx
push eax
push ebx
call dword [sym.imp.WS2_32.dll_recv]
mov ecx, dword [0x10014334]
add edi, eax
sub esi, eax
jne 0x10001792
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x1c]
push ecx
lea eax, [esp + 0x24]
add ecx, 5
push eax
mov edx, esi
call fcn.100023b0
add esp, 8
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
mov eax, dword [0x10014334]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret