Function at 0x60446c
Capabilities:
Encode data using xor
Get local ipv4 addresses
Get socket information
Get socket status
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x2e4
push 0
push 0
dec ecx
jne 0x604474
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x604f68
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x3d], 0
xor eax, eax
push ebp
push 0x604efd
push dword fs:[eax]
mov dword fs:[eax], esp
push 2
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_recv
test eax, eax
jle 0x604ea5
cmp byte [ebp - 0x14e], 5
jne 0x604edd
mov eax, dword [ebp - 4]
mov dx, word [eax + 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
call fcn.00603e9c
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x6044fa
call fcn.00405448
jmp 0x604f04
xor eax, eax
mov al, byte [ebp - 0x14d]
add eax, 2
push eax
push 0
lea ecx, [ebp - 0x14e]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
call fcn.00604028
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x604568
cmp dword [ebp - 0x3c], 0
jne 0x60455e
lea eax, [ebp - 0x16d4]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x604f80
call fcn.0047b9a8
mov eax, dword [ebp - 0x16d4]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
xor eax, eax
mov al, byte [ebp - 0x14d]
dec eax
test eax, eax
jl 0x604edd
inc eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x14]
cmp byte [ebp + eax - 0x14c], 2
jne 0x604753
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0
jne 0x6045c7
mov eax, dword [ebp - 4]
cmp dword [eax + 0xc], 0
jne 0x6045c7
mov byte [ebp - 0x14d], 0
push 0
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
jmp 0x604844
mov byte [ebp - 0x14d], 2
push 0
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x604640
lea eax, [ebp - 0x16e0]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x604fcc
call fcn.0047b9a8
mov eax, dword [ebp - 0x16e0]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
push 0x259
push 0
lea ecx, [ebp - 0x3b5]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
call fcn.00604028
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x6046a1
lea eax, [ebp - 0x16f4]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x605028
call fcn.0047b9a8
mov eax, dword [ebp - 0x16f4]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
cmp byte [ebp - 0x3b5], 1
jne 0x604844
xor ecx, ecx
mov cl, byte [ebp - 0x3b4]
lea edx, [ebp - 0x3b3]
lea eax, [ebp - 0x20]
call fcn.00406ebc
lea edx, [ebp - 0x3b5]
add edx, 3
xor eax, eax
mov al, byte [ebp - 0x3b4]
add edx, eax
xor eax, eax
mov al, byte [ebp - 0x3b4]
add eax, 2
xor ecx, ecx
mov cl, byte [ebp + eax - 0x3b5]
lea eax, [ebp - 0x24]
call fcn.00406ebc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x20]
call fcn.00407534
jne 0x604733
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp - 0x24]
call fcn.00407534
jne 0x604733
mov byte [ebp - 0x3b4], 0
push 0
push 2
lea eax, [ebp - 0x3b5]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
jmp 0x604844
mov byte [ebp - 0x3b4], 0xff
push 0
push 2
lea eax, [ebp - 0x3b5]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
jmp 0x604edd
mov eax, dword [ebp - 0x14]
cmp byte [ebp + eax - 0x14c], 0
jne 0x604817
mov eax, dword [ebp - 4]
cmp dword [eax + 0xc], 0
jne 0x6047f7
mov eax, dword [ebp - 4]
cmp dword [eax + 0xc], 0
jne 0x6047f7
mov byte [ebp - 0x14d], 0
push 0
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x604844
lea eax, [ebp - 0x16f8]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x605074
call fcn.0047b9a8
mov eax, dword [ebp - 0x16f8]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
mov byte [ebp - 0x14d], 0xff
push 0
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
jmp 0x604edd
xor eax, eax
mov al, byte [ebp - 0x14d]
cmp eax, dword [ebp - 0x14]
jne 0x604844
mov byte [ebp - 0x14d], 0xff
push 0
push 2
lea eax, [ebp - 0x14e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
jmp 0x604edd
push 2
push 0xc
lea eax, [ebp - 0x15c]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_recv
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x6048b6
lea eax, [ebp - 0x16fc]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x6050d0
call fcn.0047b9a8
mov eax, dword [ebp - 0x16fc]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
cmp byte [ebp - 0x15b], 1
jne 0x604edd
lea eax, [ebp - 0x15bc]
xor ecx, ecx
mov edx, 0x10
call fcn.00403b8c
cmp byte [ebp - 0x159], 1
jne 0x60491c
push 0xc
push 0
lea ecx, [ebp - 0x15c]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
call fcn.00604028
mov ax, word [ebp - 0x154]
mov word [ebp - 0x15ba], ax
lea edx, [ebp - 0x15b8]
lea eax, [ebp - 0x158]
mov ecx, 4
call fcn.0040331c
jmp 0x604b2f
cmp byte [ebp - 0x159], 3
jne 0x604b2f
lea eax, [ebp - 0x5aa]
xor ecx, ecx
mov edx, 0x1f5
call fcn.00403b8c
push 0
xor eax, eax
mov al, byte [ebp - 0x158]
add eax, 7
push eax
lea eax, [ebp - 0x5aa]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_recv
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x6049b7
lea eax, [ebp - 0x1700]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x60512c
call fcn.0047b9a8
mov eax, dword [ebp - 0x1700]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
push 0
xor ecx, ecx
mov cl, byte [ebp - 0x158]
lea edx, [ebp - 0x5aa]
add edx, 5
lea eax, [ebp - 0x28]
call fcn.00405cd0
lea eax, [ebp - 0x5aa]
add eax, 5
xor edx, edx
mov dl, byte [ebp - 0x158]
add eax, edx
mov ax, word [eax]
mov word [ebp - 0x15ba], ax
lea ecx, [ebp - 0x1704]
lea edx, [ebp - 0x3d]
mov eax, dword [ebp - 0x28]
call fcn.00603c6c
mov edx, dword [ebp - 0x1704]
lea eax, [ebp - 0x28]
call fcn.00405c48
xor eax, eax
mov al, byte [ebp - 0x5a6]
add eax, 7
cmp eax, 0x1f5
jbe 0x604a65
lea eax, [ebp - 0x1708]
push eax
xor eax, eax
mov al, byte [ebp - 0x5a6]
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x605188
call fcn.0047b9a8
mov eax, dword [ebp - 0x1708]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
add byte [ebp - 0x5a6], 4
xor eax, eax
mov al, byte [ebp - 0x5a6]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x28]
call fcn.00406358
lea edx, [ebp - 0x5aa]
add edx, 5
mov ecx, dword [ebp - 0x4c]
call fcn.0040331c
lea edx, [ebp - 0x5aa]
add edx, 5
xor eax, eax
mov al, byte [ebp - 0x5a6]
add edx, eax
lea eax, [ebp - 0x15ba]
mov ecx, 2
call fcn.0040331c
push 0
xor eax, eax
mov al, byte [ebp - 0x5a6]
add eax, 7
push eax
lea eax, [ebp - 0x5aa]
push eax
mov eax, dword [ebp - 0x2c]
push eax
call sub.wsock32.dll_send
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x604b2f
lea eax, [ebp - 0x170c]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x6051dc
call fcn.0047b9a8
mov eax, dword [ebp - 0x170c]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
mov byte [ebp - 0x15c], 5
mov byte [ebp - 0x15b], 0
mov byte [ebp - 0x15a], 0
mov byte [ebp - 0x159], 1
lea eax, [ebp - 0x16d0]
xor ecx, ecx
mov edx, 0x10
call fcn.00403b8c
mov dword [ebp - 0x38], 0x10
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x16d0]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_getsockname
lea edx, [ebp - 0x158]
lea eax, [ebp - 0x16cc]
mov ecx, 4
call fcn.0040331c
lea edx, [ebp - 0x154]
lea eax, [ebp - 0x16ce]
mov ecx, 2
call fcn.0040331c
mov ax, word [ebp - 0x16ce]
mov word [ebp - 0x154], ax
push 0
push 0xa
lea eax, [ebp - 0x15c]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
jg 0x604c24
lea eax, [ebp - 0x1710]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x605238
call fcn.0047b9a8
mov eax, dword [ebp - 0x1710]
xor edx, edx
call fcn.006039d8
call fcn.00405448
jmp 0x604f04
xor eax, eax
mov dword [ebp - 0x18], eax
push 0
push 0xa
lea eax, [ebp - 0x15c]
push eax
mov eax, dword [ebp - 0x2c]
push eax
call sub.wsock32.dll_recv
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xa
jge 0x604c4f
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xb
jne 0x604c29
cmp dword [ebp - 0xc], 0xa
jge 0x604ca0
lea eax, [ebp - 0x1714]
push eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x16f0], eax
mov byte [ebp - 0x16ec], 0
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16e8], eax
mov byte [ebp - 0x16e4], 0
lea edx, [ebp - 0x16f0]
mov ecx, 1
mov eax, 0x605294
call fcn.0047b9a8
mov eax, dword [ebp - 0x1714]
xor edx, edx
call fcn.006039d8
mov dword [ebp - 0x34], 5
lea eax, [ebp - 0x16c0]
call fcn.00434f70
lea edx, [ebp - 0x16c0]
mov eax, dword [ebp - 0x1c]
call fcn.00434f60
lea edx, [ebp - 0x16c0]
mov eax, dword [ebp - 0x2c]
call fcn.00434f60
push 0
push 0
push 0
lea eax, [ebp - 0x16c0]
push eax
push 0
call sub.wsock32.dll_select
inc eax
je 0x604e89
mov dword [ebp - 0x10], 0xffffff9c
mov dword [ebp - 0xc], 0xffffff9c
lea edx, [ebp - 0x16c0]
mov eax, dword [ebp - 0x2c]
call fcn.00434f48
test al, al
je 0x604dba
lea eax, [ebp - 0x15aa]
xor ecx, ecx
mov edx, 0x1000
call fcn.00403b8c
push 0
push 0x1000
lea eax, [ebp - 0x15aa]
push eax
mov eax, dword [ebp - 0x2c]
push eax
call sub.wsock32.dll_recv
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
jne 0x604d7c
lea eax, [ebp - 0x1718]
push eax
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x6052f0
call fcn.0047b9a8
mov eax, dword [ebp - 0x1718]
xor edx, edx
call fcn.006039d8
jmp 0x604edd
mov eax, dword [ebp - 0xc]
dec eax
test eax, eax
jl 0x604da4
inc eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x18]
mov dl, byte [ebp - 0x3d]
xor byte [ebp + eax - 0x15aa], dl
inc dword [ebp - 0x18]
dec dword [ebp - 0x48]
jne 0x604d8f
push 0
mov eax, dword [ebp - 0xc]
push eax
lea eax, [ebp - 0x15aa]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_send
lea edx, [ebp - 0x16c0]
mov eax, dword [ebp - 0x1c]
call fcn.00434f48
test al, al
je 0x604e7d
lea eax, [ebp - 0x15aa]
xor ecx, ecx
mov edx, 0x1000
call fcn.00403b8c
push 0
push 0x1000
lea eax, [ebp - 0x15aa]
push eax
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_recv
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0xffffffff
jne 0x604e3f
lea eax, [ebp - 0x171c]
push eax
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x605340
call fcn.0047b9a8
mov eax, dword [ebp - 0x171c]
xor edx, edx
call fcn.006039d8
jmp 0x604edd
mov eax, dword [ebp - 0x10]
dec eax
test eax, eax
jl 0x604e67
inc eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x18]
mov dl, byte [ebp - 0x3d]
xor byte [ebp + eax - 0x15aa], dl
inc dword [ebp - 0x18]
dec dword [ebp - 0x48]
jne 0x604e52
push 0
mov eax, dword [ebp - 0x10]
push eax
lea eax, [ebp - 0x15aa]
push eax
mov eax, dword [ebp - 0x2c]
push eax
call sub.wsock32.dll_send
cmp dword [ebp - 0x10], 0
jne 0x604e89
cmp dword [ebp - 0xc], 0
je 0x604edd
push 0x32
call sub.kernel32.dll_Sleep_2
jmp 0x604ca7
lea eax, [ebp - 0x1720]
push eax
call sub.wsock32.dll_WSAGetLastError
mov dword [ebp - 0x16dc], eax
mov byte [ebp - 0x16d8], 0
lea edx, [ebp - 0x16dc]
xor ecx, ecx
mov eax, 0x605390
call fcn.0047b9a8
mov eax, dword [ebp - 0x1720]
xor edx, edx
call fcn.006039d8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x604f04
mov eax, dword [ebp - 0x2c]
push eax
call sub.wsock32.dll_closesocket
mov eax, dword [ebp - 0x1c]
push eax
call sub.wsock32.dll_closesocket
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x604f6f
lea eax, [ebp - 0x1720]
mov edx, 7
call fcn.00406d78
lea eax, [ebp - 0x1704]
call fcn.00405b98
lea eax, [ebp - 0x1700]
mov edx, 4
call fcn.00406d78
lea eax, [ebp - 0x16e0]
call fcn.00406d70
lea eax, [ebp - 0x16d4]
call fcn.00406d70
lea eax, [ebp - 0x28]
call fcn.00405b98
lea eax, [ebp - 0x24]
mov edx, 2
call fcn.00406d78
ret