Function at 0x409a90
Capabilities:
Create thread
Receive data
Receive data on socket

Disassembly:
push ebp
lea ebp, [esp - 0x1a0]
sub esp, 0x220
mov eax, dword [0x42a43c]
xor eax, ebp
mov dword [ebp + 0x19c], eax
push ebx
push edi
mov edi, dword [0x43f758]
xor ebx, ebx
mov eax, edi
xor ecx, ecx
cmp eax, ebx
je 0x409b17
mov eax, dword [eax + 0x450c]
inc ecx
cmp eax, ebx
jne 0x409abd
cmp ecx, 0x64
jl 0x409b17
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x78]
push eax
push ebx
push 0x204
lea eax, [ebp - 0x68]
push eax
push dword [ebp + 0x1a8]
mov dword [ebp - 0x7c], 0x10
call dword [sym.imp.WS2_32.dll_recvfrom]
test eax, eax
jle 0x409b0f
push dword [ebp - 0x74]
call dword [sym.imp.WS2_32.dll_inet_ntoa]
push eax
push str.max_number_of_threads_reached__connection_from__s_dropped
push 1
call fcn.004010eb
add esp, 0xc
or eax, 0xffffffff
jmp 0x409cf5
push esi
mov esi, edi
jmp 0x409b2b
cmp dword [esi + 4], ebx
je 0x409b25
cmp dword [esi], ebx
je 0x409b2f
mov esi, dword [esi + 0x450c]
cmp esi, ebx
jne 0x409b1c
xor eax, eax
cmp esi, ebx
sete al
mov dword [ebp - 0x80], eax
cmp eax, ebx
je 0x409b84
cmp edi, ebx
je 0x409b55
mov eax, dword [edi + 0x450c]
cmp eax, ebx
je 0x409b51
mov edi, eax
cmp edi, ebx
jne 0x409b41
cmp edi, ebx
jne 0x409b68
push 0x4510
push 1
call fcn.0040f638
mov dword [0x43f758], eax
jmp 0x409b7a
push 0x4510
push 1
call fcn.0040f638
mov dword [edi + 0x450c], eax
pop ecx
mov esi, eax
pop ecx
mov dword [esi + 0x450c], ebx
push esi
call fcn.004098b7
pop ecx
lea ecx, [ebp - 0x7c]
push ecx
lea edi, [esi + 0x4268]
push edi
push 0
mov eax, 0x204
push eax
lea ebx, [esi + 0x4278]
push ebx
push dword [ebp + 0x1a8]
mov dword [ebp - 0x7c], eax
call dword [sym.imp.WS2_32.dll_recvfrom]
test eax, eax
jge 0x409bf3
call fcn.0040c61e
push eax
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
push str.Error_:_RecvFrom_returns__d:___s_
push 0
call fcn.004010eb
add esp, 0x10
cmp dword [esi + 4], 0
jne 0x409cf1
mov eax, dword [0x43f758]
jmp 0x409be7
mov eax, ecx
mov ecx, dword [eax + 0x450c]
cmp ecx, esi
jne 0x409be5
jmp 0x409c3b
push eax
push ebx
push edi
call fcn.004099ec
add esp, 0xc
test eax, eax
je 0x409c53
push dword [esi + 0x426c]
call dword [sym.imp.WS2_32.dll_inet_ntoa]
push eax
push str.Warning_:_Unaccepted_request_received_from__s
push 1
call fcn.004010eb
add esp, 0xc
cmp dword [esi + 4], 0
jne 0x409cf1
mov eax, dword [0x43f758]
jmp 0x409c31
mov eax, ecx
mov ecx, dword [eax + 0x450c]
cmp ecx, esi
jne 0x409c2f
mov ecx, dword [esi + 0x450c]
push esi
mov dword [eax + 0x450c], ecx
call fcn.0040e676
pop ecx
jmp 0x409cf1
movzx eax, word [esi + 0x426a]
push eax
call dword [sym.imp.WS2_32.dll_ntohs]
movzx eax, ax
push eax
push dword [esi + 0x426c]
call dword [sym.imp.WS2_32.dll_inet_ntoa]
push eax
xor edi, edi
push str.Connection_received_from__s_on_port__d
inc edi
push edi
call fcn.004010eb
xor ebx, ebx
add esp, 0x10
mov dword [esi], edi
cmp dword [ebp - 0x80], ebx
je 0x409cd0
lea edi, [esi + 0xc]
push edi
push ebx
push esi
push 0x40b361
push 0x2000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push esi
mov dword [esi + 8], eax
push dword [0x43f758]
push dword [esi + 0x18]
push dword [edi]
push str.Thread__d_transfer__d_started__records__p__p__n
call fcn.0040c685
push dword [esi + 8]
push str.thread__d_started
push 9
call fcn.004010eb
add esp, 0x20
jmp 0x409cf1
push dword [esi + 0x18]
push dword [esi + 0xc]
push str.waking_up_thread__d_for_transfer__d_n
call fcn.0040c685
mov esi, dword [esi + 0x10]
add esp, 0xc
cmp esi, ebx
je 0x409cf1
push esi
call dword [sym.imp.KERNEL32.dll_SetEvent]
xor eax, eax
inc eax
pop esi
mov ecx, dword [ebp + 0x19c]
pop edi
xor ecx, ebp
pop ebx
call fcn.0040e1f0
add ebp, 0x1a0
leave
ret