Function at 0x40ded1
Capabilities:
Authenticate hmac
Connect socket
Initialize winsock library
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
mov eax, 0x485aac
call fcn.004847e4
sub esp, 0x340
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 0x5c], ebx
call fcn.0040eca4
mov ecx, ebx
call fcn.0040ef8c
push 0xa
pop eax
push eax
lea eax, [ebp - 0x158]
push eax
xor eax, eax
push eax
call fcn.00473d37
add esp, 0xc
lea ecx, [ebp - 0x50]
xor eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
push eax
push eax
call fcn.00402cee
xor eax, eax
lea ecx, [ebp - 0x74]
push eax
mov dword [ebp - 4], eax
push eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
call fcn.00402cee
push 0x53
xor edi, edi
pop ecx
mov edx, edi
mov al, byte [edx + 0x4975f8]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x99], al
and ecx, 0x800000ff
jns 0x40df59
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 0x1d
jl 0x40df39
xor eax, eax
mov byte [ebp - 0x7c], al
push 2
pop eax
mov byte [ebp - 4], al
lea eax, [ebp - 0x99]
push eax
call fcn.004014c9
pop ecx
push eax
lea eax, [ebp - 0x99]
push eax
lea ecx, [ebp - 0x50]
call fcn.00402f9d
lea esi, [ebx + 0x3f4]
mov byte [ebp - 4], 1
push esi
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
mov word [ebp - 0xe], 0x26
lea eax, [ebp - 0xe]
mov byte [ebp - 4], 3
push eax
call fcn.004014c9
pop ecx
push eax
lea eax, [ebp - 0xe]
push eax
lea ecx, [ebp - 0x50]
call fcn.00402f9d
push 0x55
pop ecx
xor eax, eax
push 2
mov edx, eax
pop edi
mov al, byte [edx + 0x49761c]
xor al, cl
inc ecx
mov byte [ebp + edx - 0xf], al
and ecx, 0x800000ff
jns 0x40dfea
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, edi
jl 0x40dfcd
xor eax, eax
mov byte [ebp - 0xd], al
lea eax, [ebp - 0xf]
mov byte [ebp - 4], 4
push eax
call fcn.004014c9
pop ecx
push eax
lea eax, [ebp - 0xf]
push eax
lea ecx, [ebp - 0x50]
call fcn.00402f9d
lea esi, [ebx + 0xbf4]
mov byte [ebp - 4], 1
push esi
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
push 0x6daddf1
lea ecx, [ebp - 0x38]
call fcn.00412393
mov esi, eax
push esi
mov byte [ebp - 4], 5
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
mov eax, 0x49762c
lea ecx, [ebp - 0x98]
sub eax, 0x7fde1c86
push eax
call fcn.004123d1
mov esi, eax
push esi
mov byte [ebp - 4], 6
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
push 0x509b609d
lea ecx, [ebp - 0xf]
call fcn.0041240f
mov esi, eax
push esi
mov byte [ebp - 4], 7
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
push 0x509b60a1
lea ecx, [ebp - 0xf]
call fcn.0041240f
mov esi, eax
push esi
mov byte [ebp - 4], 8
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x50]
call fcn.00402f9d
lea eax, [ebp - 0x34c]
mov byte [ebp - 4], 1
push eax
push 2
pop esi
push esi
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x40e0fc
mov eax, 0x497654
lea ecx, [ebp - 0xc8]
sub eax, 0x6194925e
push eax
call fcn.00412225
mov byte [ebp - 4], 9
push eax
call fcn.00410bd4
push 6
push 1
push esi
call dword [sym.imp.WS2_32.dll_socket]
mov ebx, eax
test ebx, ebx
jns 0x40e125
push 0x732e5a3
lea ecx, [ebp - 0xc4]
call fcn.00412261
push 0xa
pop ecx
mov byte [ebp - 4], cl
jmp 0x40e0f6
xor eax, eax
lea edi, [ebp - 0xf4]
stosd dword es:[edi], eax
lea ecx, [ebp - 0xc3]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, 0x497678
sub eax, 0x37a4b193
mov word [ebp - 0xf4], si
push eax
call fcn.0041244d
push eax
call dword [sym.imp.WS2_32.dll_inet_addr]
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0xf0], eax
movzx eax, word [edi + 0x3d4]
push eax
call dword [sym.imp.WS2_32.dll_htons]
mov word [ebp - 0xf2], ax
lea eax, [ebp - 0xf4]
push 0x10
push eax
push ebx
call dword [sym.imp.WS2_32.dll_connect]
test eax, eax
jns 0x40e1a0
push 0x80b9ee
lea ecx, [ebp - 0xc5]
call fcn.00412489
mov byte [ebp - 4], 0xb
jmp 0x40e0f6
cmp dword [ebp - 0x3c], 0x10
lea eax, [ebp - 0x50]
mov esi, dword [ebp - 0x40]
cmovae eax, dword [ebp - 0x50]
xor edi, edi
push edi
push esi
push eax
push ebx
call dword [sym.imp.WS2_32.dll_send]
cmp eax, esi
je 0x40e1dd
mov eax, 0x49769c
lea ecx, [ebp - 0xb1]
sub eax, 0x69990267
push eax
call fcn.004124c5
mov byte [ebp - 4], 0xc
jmp 0x40e0f6
mov esi, 0x494753
push esi
call fcn.004014c9
pop ecx
push eax
push esi
lea ecx, [ebp - 0x74]
call fcn.00402e2f
xor eax, eax
push eax
push 1
lea eax, [ebp - 0x10]
push eax
push ebx
call dword [sym.imp.WS2_32.dll_recv]
mov esi, eax
test esi, esi
jle 0x40e25c
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0xcc]
call fcn.00401fa0
push esi
xor edi, edi
mov byte [ebp - 4], 0xd
push edi
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, eax
call fcn.00410f31
push 0xffffffffffffffff
push edi
push eax
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0xe
call fcn.0040303f
xor eax, eax
lea ecx, [ebp - 0x2c]
push eax
push 1
call fcn.00402cee
xor eax, eax
mov byte [ebp - 4], 1
push eax
push 1
lea ecx, [ebp - 0xcc]
call fcn.00402cee
cmp esi, 1
je 0x40e1f3
cmp dword [ebp - 0x60], 0x10
lea eax, [ebp - 0x74]
push 0xa
cmovae eax, dword [ebp - 0x74]
pop ecx
mov word [ebp - 0x14], cx
lea ecx, [ebp - 0x14]
push ecx
push eax
call fcn.0046ea36
pop ecx
pop ecx
mov esi, eax
jmp 0x40e56a
push esi
lea ecx, [ebp - 0x2c]
call fcn.00401fa0
push 0x20
xor eax, eax
mov byte [ebp - 4], 0xf
push eax
lea eax, [ebp - 0xe4]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00410f31
push eax
lea ecx, [ebp - 0x2c]
call fcn.00410f68
xor eax, eax
lea ecx, [ebp - 0xe4]
push eax
push 1
call fcn.00402cee
cmp dword [ebp - 0x18], 0x10
lea ecx, [ebp - 0x2c]
cmovae ecx, dword [ebp - 0x2c]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40e2ce
push 0xa
pop eax
push eax
lea eax, [ebp - 0x1bc]
sub ecx, edx
push eax
push ecx
call fcn.00473d37
add esp, 0xc
xor eax, eax
mov edx, eax
push 0x36
pop ecx
push 2
pop edi
mov al, byte [edx + 0x4976d8]
xor al, cl
inc ecx
mov byte [ebp + edx - 0xf], al
and ecx, 0x800000ff
jns 0x40e312
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, edi
jl 0x40e2f5
mov esi, dword [ebp - 0x18]
lea ecx, [ebp - 0xf]
xor eax, eax
cmp esi, 0x10
mov byte [ebp - 0xd], al
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40e34c
test dl, dl
je 0x40e346
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40e34c
add eax, edi
add ecx, edi
test dl, dl
jne 0x40e32c
xor edx, edx
mov eax, edx
jmp 0x40e353
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
mov word [ebp - 0xf], dx
mov byte [ebp - 0xd], dl
sete al
test al, al
jne 0x40e733
push 0x3d
pop ecx
mov al, byte [edx + str.sQj3_0]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x7b], al
and ecx, 0x800000ff
jns 0x40e387
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 6
jl 0x40e36a
xor eax, eax
lea ecx, [ebp - 0x7b]
mov byte [ebp - 0x75], al
cmp esi, 0x10
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40e3bf
test dl, dl
je 0x40e3b9
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40e3bf
add eax, edi
add ecx, edi
test dl, dl
jne 0x40e39f
xor edx, edx
mov eax, edx
jmp 0x40e3c6
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
lea edi, [ebp - 0x7b]
sete cl
xor eax, eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
test cl, cl
jne 0x40e6b7
push 0x28
pop ecx
mov al, byte [edx + str.fFzJ_]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x33], al
and ecx, 0x800000ff
jns 0x40e3fc
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 6
jl 0x40e3df
xor eax, eax
lea ecx, [ebp - 0x33]
mov byte [ebp - 0x2d], al
cmp esi, 0x10
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
push 2
pop edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40e437
test dl, dl
je 0x40e431
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40e437
add eax, edi
add ecx, edi
test dl, dl
jne 0x40e417
xor edx, edx
mov eax, edx
jmp 0x40e43e
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
lea edi, [ebp - 0x33]
sete cl
xor eax, eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
test cl, cl
jne 0x40e67b
push 0x2b
pop ecx
mov al, byte [edx + str.n_A_]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x56], al
and ecx, 0x800000ff
jns 0x40e474
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 5
jl 0x40e457
xor eax, eax
lea ecx, [ebp - 0x56]
mov byte [ebp - 0x51], al
cmp esi, 0x10
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
push 2
pop edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40e4af
test dl, dl
je 0x40e4a9
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40e4af
add eax, edi
add ecx, edi
test dl, dl
jne 0x40e48f
xor edx, edx
mov eax, edx
jmp 0x40e4b6
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
mov dword [ebp - 0x56], edx
mov word [ebp - 0x52], dx
sete al
test al, al
jne 0x40e613
mov ecx, 0xa7
mov al, byte [edx + 0x497784]
xor al, cl
inc ecx
mov byte [ebp + edx - 0xc3], al
and ecx, 0x800000ff
jns 0x40e4ef
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 0xe
jl 0x40e4cf
xor eax, eax
lea ecx, [ebp - 0xc3]
mov byte [ebp - 0xb5], al
cmp esi, 0x10
lea eax, [ebp - 0x2c]
cmovae eax, dword [ebp - 0x2c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40e52d
test dl, dl
je 0x40e527
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40e52d
add eax, edi
add ecx, edi
test dl, dl
jne 0x40e50d
xor edx, edx
mov eax, edx
jmp 0x40e534
sbb eax, eax
or eax, 1
xor edx, edx
test eax, eax
lea edi, [ebp - 0xc3]
sete cl
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
test cl, cl
jne 0x40e5ac
lea eax, [ebp - 0x14]
push eax
push edx
call fcn.0046ea36
pop ecx
pop ecx
mov esi, eax
mov byte [ebp - 4], 1
xor eax, eax
lea ecx, [ebp - 0x2c]
push eax
push 1
call fcn.00402cee
test esi, esi
jne 0x40e286
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
xor ebx, ebx
lea ecx, [ebp - 0x74]
push ebx
push 1
call fcn.00402cee
push ebx
push 1
lea ecx, [ebp - 0x50]
call fcn.00402cee
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 8
lea ecx, [ebp - 0xe4]
call fcn.0040ccac
mov esi, eax
mov ecx, 0xf0
xor eax, eax
mov edx, eax
mov al, byte [edx + 0x497794]
xor al, cl
inc ecx
mov byte [ebp + edx - 0xa1], al
and ecx, 0x800000ff
jns 0x40e5e2
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 0x25
jl 0x40e5c2
xor ecx, ecx
mov byte [ebp - 0x7c], cl
cmp dword [esi + 0x14], 0x10
jb 0x40e5f5
mov esi, dword [esi]
push 0x10
push esi
lea eax, [ebp - 0xa1]
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
push 9
lea edi, [ebp - 0xa1]
jmp 0x40e717
lea ecx, [ebp - 0xe4]
call fcn.0040ccac
push 0x5c
xor edi, edi
pop edx
mov esi, edi
mov cl, byte [esi + str._t.__]
xor cl, dl
inc edx
mov byte [ebp + esi - 0x9b], cl
and edx, 0x800000ff
jns 0x40e645
dec edx
or edx, 0xffffff00
inc edx
inc esi
cmp esi, 0x1f
jl 0x40e625
xor ecx, ecx
mov byte [ebp - 0x7c], cl
cmp dword [eax + 0x14], 0x10
jb 0x40e658
mov eax, dword [eax]
push 0x10
push eax
lea eax, [ebp - 0x9b]
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x9b]
rep stosd dword es:[edi], eax
jmp 0x40e71e
lea ecx, [ebp - 0xe4]
call fcn.0040ccac
xor edi, edi
mov edx, 0xaf
mov esi, edi
mov cl, byte [esi + 0x497740]
xor cl, dl
inc edx
mov byte [ebp + esi - 0x95], cl
and edx, 0x800000ff
jns 0x40e6af
dec edx
or edx, 0xffffff00
inc edx
inc esi
cmp esi, 0x19
jl 0x40e68f
jmp 0x40e6f1
lea ecx, [ebp - 0xe4]
call fcn.0040ccac
xor edi, edi
mov edx, 0x8a
mov esi, edi
mov cl, byte [esi + 0x49771c]
xor cl, dl
inc edx
mov byte [ebp + esi - 0x95], cl
and edx, 0x800000ff
jns 0x40e6eb
dec edx
or edx, 0xffffff00
inc edx
inc esi
cmp esi, 0x19
jl 0x40e6cb
xor ecx, ecx
mov byte [ebp - 0x7c], cl
cmp dword [eax + 0x14], 0x10
jb 0x40e6fe
mov eax, dword [eax]
push 0x10
push eax
lea eax, [ebp - 0x95]
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
push 6
lea edi, [ebp - 0x95]
xor eax, eax
pop ecx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
lea ecx, [ebp - 0xe4]
push eax
push 1
call fcn.00402cee
jmp 0x40e817
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov esi, dword [sym.imp.USER32.dll_GetDlgItem]
push 0x416
push dword [ebp + 8]
call esi
xor edi, edi
push edi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
push ecx
mov ecx, dword [ebp - 0x5c]
call fcn.0041406d
xor eax, eax
mov ecx, 0xe9
mov edx, eax
mov al, byte [edx + 0x4976dc]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x36], al
and ecx, 0x800000ff
jns 0x40e782
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 9
jl 0x40e765
xor eax, eax
mov byte [ebp - 0x2d], al
lea eax, [ebp - 0x36]
push eax
push 0x416
push dword [ebp + 8]
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
push 0x68
xor eax, eax
pop ecx
mov edx, eax
mov al, byte [edx + 0x4976e8]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x34], al
and ecx, 0x800000ff
jns 0x40e7c6
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 7
jl 0x40e7a9
xor eax, eax
mov ecx, 0xa1
mov byte [ebp - 0x2d], al
mov edx, eax
mov al, byte [edx + 0x4976f0]
xor al, cl
inc ecx
mov byte [ebp + edx - 0x9d], al
and ecx, 0x800000ff
jns 0x40e7f8
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
cmp edx, 0x21
jl 0x40e7d8
push 0x40
lea eax, [ebp - 0x34]
xor ecx, ecx
push eax
lea eax, [ebp - 0x9d]
mov byte [ebp - 0x7c], cl
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
xor ebx, ebx
lea ecx, [ebp - 0x2c]
push ebx
push 1
call fcn.00402cee
push ebx
push 1
lea ecx, [ebp - 0x74]
call fcn.00402cee
push ebx
push 1
lea ecx, [ebp - 0x50]
call fcn.00402cee
xor eax, eax
inc eax
jmp 0x40e599