Function at 0x4a3870
Capabilities:
Receive data
Receive data on socket
Resolve function by parsing pe exports
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x3f0
mov ebx, dword [edx + 0x20]
mov esi, dword [edx + 0x14]
mov edi, ecx
test ebx, ebx
je 0x4a38f6
mov eax, dword [edx + 0x18]
cmp ebx, eax
mov dword [esp + 0xc], eax
jae 0x4a38a1
cmp byte [esi + ebx], 0xbf
jg 0x4a38a7
jmp 0x4a50c3
jne 0x4a50c3
cmp ebx, 5
je 0x4a38e0
cmp ebx, 4
jne 0x4a38f6
cmp dword [esi], 0x70747468
mov al, 1
mov dword [esp + 0x40], eax
je 0x4a38c7
cmp dword [esi], 0x74736574
jne 0x4a38f6
cmp ebx, dword [esp + 0xc]
jae 0x4a398f
cmp byte [esi + ebx], 0xbf
jg 0x4a3995
jmp 0x4a50c3
mov eax, 0x70747468
movzx ecx, byte [esi + 4]
xor eax, dword [esi]
xor ecx, 0x73
or ecx, eax
je 0x4a397d
lea ecx, [esp + 0xe0]
lea eax, [esp + 0x60]
mov dword [esp + 0x270], 0x60cbdc
mov dword [esp + 0x274], 2
mov dword [esp + 0x280], 0
lea edx, [esp + 0x270]
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], ebx
mov dword [esp + 0x278], ecx
lea ecx, [edi + 0x4c]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], 0x493590
mov dword [esp + 0x27c], 1
call fcn.0040d730
mov dword [edi], 2
mov dword [edi + 4], 2
mov dword [edi + 0x58], 0
mov byte [edi + 0x60], 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x40], 0
cmp ebx, dword [esp + 0xc]
jb 0x4a38d1
jne 0x4a50c3
cmp ebx, 5
jne 0x4a39ac
mov eax, 0x70747468
movzx ecx, byte [esi + 4]
xor eax, dword [esi]
xor ecx, 0x73
or ecx, eax
je 0x4a3a13
mov eax, dword [edx + 0x58]
cmp byte [eax + 0x8c], 1
jne 0x4a3a13
movzx eax, byte [0x62314d]
xor ecx, ecx
mov edx, 0x33
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov esi, eax
push 0x33
push str.cant_perform_non_https_request_with_https_only_set
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [edi], 2
mov dword [edi + 4], 2
mov dword [edi + 0x4c], 0x33
mov dword [edi + 0x50], esi
mov dword [edi + 0x54], 0x33
mov dword [edi + 0x58], 0
mov byte [edi + 0x60], 3
jmp 0x4a3975
cmp byte [ebp + 0x10], 0
mov dword [esp + 0x4c], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], edi
je 0x4a4753
movzx eax, byte [edx + 0x1c]
mov ecx, dword [edx + 0x2c]
mov dword [esp + 0x18], ebx
mov byte [esp + 0x1e], al
movzx eax, byte [edx + 0x34]
mov dword [esp + 0x1ec], ecx
mov byte [esp + 0x1d], al
mov eax, dword [edx + 0x28]
sub ecx, eax
mov dword [esp + 0x50], eax
add eax, esi
mov dword [esp + 0x5c], ecx
mov ecx, dword [edx + 0x5c]
mov dword [esp + 0x48], eax
lea edi, [ecx + 0x10]
mov dword [esp + 0x30], ecx
add ecx, 0x28
mov dword [esp + 0x3c], edi
mov edi, dword [edx + 0x58]
movzx edx, word [edx + 0x1e]
mov dword [esp + 0x1f4], ecx
mov word [esp + 0x5a], dx
mov dword [esp + 0x1f0], edi
xor eax, eax
mov dword [esp + 4], getsockopt
cmp eax, dword [edi + 0x5c]
jo 0x4a3bb8
mov eax, dword [edi + 0x64]
test eax, eax
mov dword [esp + 4], eax
js 0x4a50c3
mov esi, dword [edi + 0x60]
je 0x4a3ac7
movzx eax, byte [0x62314d]
mov edx, dword [esp + 4]
xor ecx, ecx
call fcn.0048bb80
test eax, eax
jne 0x4a3acc
jmp 0x4a50c3
mov eax, 1
push dword [esp + 4]
push esi
mov dword [esp + 0x218], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 0x80]
mov dword [esp + 0x34], getsockopt
mov dword [esp + 0x38], getsockopt
mov dword [esp + 0x20c], eax
xor eax, eax
cmp eax, dword [edi + 0x68]
jo 0x4a3b4e
mov eax, dword [edi + 0x70]
test eax, eax
mov dword [esp + 0x38], eax
js 0x4a50c3
mov esi, dword [edi + 0x6c]
je 0x4a3b34
movzx eax, byte [0x62314d]
mov edx, dword [esp + 0x38]
xor ecx, ecx
call fcn.0048bb80
test eax, eax
jne 0x4a3b39
jmp 0x4a50c3
mov eax, 1
push dword [esp + 0x38]
push esi
mov dword [esp + 0x208], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor eax, eax
cmp eax, dword [edi + 0x74]
jo 0x4a3b9e
mov eax, dword [edi + 0x7c]
test eax, eax
mov dword [esp + 0x34], eax
js 0x4a50c3
mov esi, dword [edi + 0x78]
je 0x4a3b84
movzx eax, byte [0x62314d]
mov edx, dword [esp + 0x34]
xor ecx, ecx
call fcn.0048bb80
test eax, eax
jne 0x4a3b89
jmp 0x4a50c3
mov eax, 1
push dword [esp + 0x34]
push esi
mov dword [esp + 0x204], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, byte [edi + 0x84]
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x10]
mov byte [esp + 0x1f], al
mov dword [esp + 0x208], ecx
test byte [esp + 0x1e], 1
movzx edx, word [esp + 0x5a]
mov ax, 1
jne 0x4a3be8
cmp ebx, dword [esp + 0xc]
jae 0x4a3bd9
cmp byte [esi + ebx], 0xbf
jg 0x4a3bdf
jmp 0x4a50c3
jne 0x4a50c3
mov ecx, esi
mov edx, ebx
call fcn.004ba610
cmp ebx, dword [esp + 0xc]
mov word [esp + 8], ax
mov word [esp + 0x14], dx
jae 0x4a3c03
cmp byte [esi + ebx], 0xbf
jg 0x4a3c09
jmp 0x4a50c3
jne 0x4a50c3
movzx eax, byte [0x62314d]
xor ecx, ecx
mov edx, ebx
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov esi, eax
push ebx
push dword [esp + 0x14]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
xor ebx, ebx
cmp byte [esp + 0x1d], 0
mov edi, 1
je 0x4a3c6f
mov ecx, dword [esp + 0x1ec]
cmp ecx, dword [esp + 0x50]
jb 0x4a50c3
cmp dword [esp + 0x50], 0
je 0x4a3c7c
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0xc]
jae 0x4a3c76
mov eax, dword [esp + 0x48]
cmp byte [eax], 0xbf
jg 0x4a3c7c
jmp 0x4a50c3
mov eax, 1
jmp 0x4a3cce
jne 0x4a50c3
test ecx, ecx
je 0x4a3c9b
cmp ecx, dword [esp + 0xc]
jae 0x4a3c95
mov eax, dword [esp + 0x10]
cmp byte [eax + ecx], 0xbf
jg 0x4a3c9b
jmp 0x4a50c3
jne 0x4a50c3
cmp dword [esp + 0x5c], 0
js 0x4a50c3
mov eax, dword [esp + 0x48]
je 0x4a3cce
movzx eax, byte [0x62314d]
mov ebx, dword [esp + 0x5c]
xor ecx, ecx
mov edx, ebx
call fcn.0048bb80
mov edi, eax
test eax, eax
mov eax, dword [esp + 0x48]
je 0x4a50c3
push ebx
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x3c]
mov cl, 1
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x1a8], esi
mov dword [esp + 0x1ac], eax
movzx eax, word [esp + 8]
mov dword [esp + 0x1b0], ebx
mov dword [esp + 0x1b4], edi
mov dword [esp + 0x1b8], ebx
mov word [esp + 0x1e8], ax
movzx eax, word [esp + 0x14]
mov word [esp + 0x1ea], ax
mov eax, dword [esp + 4]
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 0x208]
mov dword [esp + 0x1c4], eax
mov eax, dword [esp + 0x210]
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x200]
mov dword [esp + 0x1cc], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1d4], eax
mov dword [esp + 0x1dc], eax
mov eax, dword [esp + 0x1fc]
mov dword [esp + 0x1d8], eax
mov eax, dword [esp + 0x20c]
mov dword [esp + 0x1e0], eax
movzx eax, byte [esp + 0x1f]
mov byte [esp + 0x1e4], al
xor eax, eax
lock cmpxchg byte [edx], cl
jne 0x4a4676
mov esi, dword [esp + 0x1ac]
test esi, esi
js 0x4a50c3
mov edi, dword [esp + 0x1a8]
je 0x4a3de5
movzx eax, byte [0x62314d]
xor ecx, ecx
mov edx, esi
call fcn.0048bb80
test eax, eax
jne 0x4a3dea
jmp 0x4a50c3
mov eax, 1
push esi
push edi
mov dword [esp + 0x1c], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esp + 0x1b8]
test ebx, ebx
js 0x4a50c3
mov edi, dword [esp + 0x1b4]
je 0x4a3e2a
movzx eax, byte [0x62314d]
xor ecx, ecx
mov edx, ebx
call fcn.0048bb80
test eax, eax
jne 0x4a3e2f
jmp 0x4a50c3
mov eax, 1
push ebx
push edi
mov dword [esp + 0x5c], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, word [esp + 0x1ea]
movzx edx, word [esp + 0x1e8]
mov edi, connect
mov word [esp + 0x2c], ax
xor eax, eax
cmp eax, dword [esp + 0x1bc]
jo 0x4a3fae
mov eax, dword [esp + 0x1c4]
test eax, eax
mov dword [esp + 0x28], eax
js 0x4a50c3
mov edi, dword [esp + 0x1c0]
mov word [esp + 0x58], dx
je 0x4a3ea3
movzx eax, byte [0x62314d]
mov edx, dword [esp + 0x28]
xor ecx, ecx
call fcn.0048bb80
test eax, eax
jne 0x4a3ea8
jmp 0x4a50c3
mov eax, 1
push dword [esp + 0x28]
push edi
mov dword [esp + 0x2c], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x1e0]
mov dword [esp + 8], getsockopt
mov dword [esp + 0x204], eax
xor eax, eax
cmp eax, dword [esp + 0x1c8]
mov eax, connect
jo 0x4a3f36
mov ecx, dword [esp + 0x1d0]
test ecx, ecx
js 0x4a50c3
mov edi, dword [esp + 0x1cc]
mov dword [esp + 4], ecx
je 0x4a3f1b
movzx eax, byte [0x62314d]
mov edx, dword [esp + 4]
xor ecx, ecx
call fcn.0048bb80
mov ecx, dword [esp + 4]
test eax, eax
jne 0x4a3f20
jmp 0x4a50c3
mov eax, 1
push ecx
push edi
mov dword [esp + 0x200], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x10]
add esp, 0xc
mov dword [esp + 4], eax
xor eax, eax
mov edi, dword [esp + 0x28]
cmp eax, dword [esp + 0x1d4]
jo 0x4a3fa1
mov edx, dword [esp + 0x1dc]
test edx, edx
js 0x4a50c3
mov ecx, dword [esp + 0x1d8]
mov dword [esp + 8], edx
je 0x4a3f8d
mov dword [esp + 0x44], ecx
xor ecx, ecx
movzx eax, byte [0x62314d]
mov edx, dword [esp + 8]
call fcn.0048bb80
mov edx, dword [esp + 8]
test eax, eax
je 0x4a50c3
mov ecx, dword [esp + 0x44]
jmp 0x4a3f92
mov eax, 1
push edx
push ecx
mov dword [esp + 0x4c], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx eax, byte [esp + 0x1e4]
movzx edx, word [esp + 0x58]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xe8], esi
mov dword [esp + 0xec], ebx
lea esi, [esp + 0x270]
mov dword [esp + 0xf0], ecx
movzx ecx, word [esp + 0x2c]
mov dword [esp + 0xf4], ebx
mov word [esp + 0x124], dx
mov edx, dword [esp + 0x1f8]
mov word [esp + 0x126], cx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xf8], edi
mov dword [esp + 0x100], edi
mov dword [esp + 0xfc], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x104], ecx
mov dword [esp + 0x10c], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x108], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x110], ecx
mov dword [esp + 0x118], ecx
mov ecx, dword [esp + 0x204]
mov dword [esp + 0x114], edx
mov edx, dword [esp + 0x1f4]
mov dword [esp + 0x11c], ecx
mov byte [esp + 0x120], al
lea eax, [esp + 0xe0]
mov ecx, esi
push eax
call fcn.004b0d70
add esp, 4
xor eax, eax
cmp eax, dword [esp + 0x270]
jno 0x4a40ad
mov ecx, 0x14
lea edi, [esp + 0x21c]
lea esi, [esp + 0x274]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x218], getsockopt
jmp 0x4a40d1
mov ecx, 0x16
lea edi, [esp + 0x218]
rep movsd dword es:[edi], dword [esi]
mov edi, reloc.WS2_32.dll_accept
cmp eax, dword [esp + 0x218]
mov ebx, dword [esp + 0x18]
jno 0x4a44b8
mov ecx, 0x14
lea edi, [esp + 0x358]
lea esi, [esp + 0x21c]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x3a0]
mov ebx, dword [eax - 4]
test ebx, ebx
je 0x4a50c3
dec ebx
mov esi, 0
mov dword [eax - 4], ebx
mov ecx, dword [eax - 8]
mov edx, dword [eax - 0x10]
mov eax, dword [eax - 0xc]
add ecx, ebx
cmp ecx, edx
cmovb edx, esi
sub ecx, edx
mov edx, ecx
shl edx, 7
lea ecx, [edx + ecx*8]
mov edx, dword [eax + ecx + 4]
cmp edx, reloc.WS2_32.dll_accept
mov dword [esp + 0x54], edx
je 0x4a50c3
lea esi, [eax + ecx]
mov eax, dword [eax + ecx]
mov ecx, 0x20
lea edi, [esp + 0x270]
add esi, 8
test ebx, ebx
mov dword [esp + 0x214], eax
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x28], ebx
jne 0x4a42b6
mov eax, dword [esp + 0x268]
mov esi, dword [esp + 0x264]
pcmpeqd xmm1, xmm1
mov ecx, dword [eax]
mov dword [esp + 4], esi
mov edx, ecx
sub edx, esi
sar edx, 3
imul esi, edx, 0xba2e8ba3
lea edi, [esi - 0x10]
and edi, dword [eax + 4]
movdqu xmm0, xmmword [ecx + edi]
pcmpeqb xmm0, xmm1
pmovmskb edx, xmm0
test edx, edx
je 0x4a419e
bsr bx, dx
xor ebx, 0xf
jmp 0x4a41a2
mov bx, 0x10
movdqu xmm0, xmmword [ecx + esi]
pcmpeqb xmm0, xmm1
pmovmskb edx, xmm0
or edx, 0x10000
tzcnt edx, edx
add ebx, edx
mov dl, 0x80
cmp bx, 0xf
ja 0x4a41c8
inc dword [eax + 8]
mov dl, 0xff
mov ebx, dword [esp + 0x21c]
mov byte [ecx + esi], dl
mov esi, dword [esp + 4]
mov byte [ecx + edi + 0x10], dl
dec dword [eax + 0xc]
mov ecx, 0x16
lea edi, [esp + 0xe0]
add esi, 0xffffffa8
neg ebx
rep movsd dword es:[edi], dword [esi]
jo 0x4a41fe
lea ecx, [esp + 0x21c]
call fcn.0049e080
mov eax, dword [esp + 0x128]
mov ebx, dword [esp + 0x12c]
mov esi, dword [esp + 0x130]
mov edi, dword [esp + 0x134]
lea ecx, [esp + 0xe0]
mov dword [esp + 4], eax
call fcn.0049e080
test edi, edi
je 0x4a42a0
mov edx, dword [esp + 4]
mov ecx, 0
mov dword [esp + 8], ebx
mov dword [esp + 0x14], edi
cmp esi, edx
mov eax, edx
cmovb eax, ecx
sub esi, eax
mov eax, edx
sub eax, esi
lea ebx, [esi + edi]
sub edi, eax
mov dword [esp + 0x2c], eax
cmova ebx, edx
cmovb edi, ecx
sub ebx, esi
je 0x4a4280
mov eax, esi
shl eax, 7
lea esi, [eax + esi*8]
add esi, dword [esp + 8]
nop dword [eax + eax]
mov ecx, esi
call fcn.0049e120
add esi, 0x88
dec ebx
jne 0x4a4270
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 8]
cmp eax, dword [esp + 0x14]
jae 0x4a42a0
mov esi, ebx
mov ecx, esi
call fcn.0049e120
add esi, 0x88
dec edi
jne 0x4a4290
cmp dword [esp + 4], 0
je 0x4a42b6
push ebx
push 0
push dword [0x623140]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebx, dword [esp + 0x30]
xor eax, eax
mov esi, dword [ebx + 0x24]
mov edi, dword [ebx + 0x18]
test esi, esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], edi
je 0x4a42ed
mov eax, dword [ebx + 0x20]
mov ecx, edi
mov edx, 0
cmp eax, edi
cmovb ecx, edx
mov edx, edi
sub eax, ecx
mov ecx, esi
sub edx, eax
sub ecx, edx
jbe 0x4a42f1
mov edx, edi
jmp 0x4a42f6
xor edx, edx
jmp 0x4a42f4
lea edx, [eax + esi]
xor ecx, ecx
shl eax, 3
shl edx, 3
mov esi, dword [ebx + 0x1c]
lea edi, [eax + eax*8]
lea eax, [edx + edx*8]
mov dword [esp + 0x24], eax
sub eax, edi
shr eax, 3
imul edx, eax, 0x38e38e39
lea eax, [ecx + ecx*8]
mov dword [esp + 8], esi
add edx, ecx
shl ecx, 3
lea esi, [esi + eax*8 - 0x48]
lea ebx, [ecx + ecx*8]
neg ebx
nop dword [eax]
test ebx, ebx
mov dword [esp + 4], edx
je 0x4a4357
mov ecx, esi
lea edx, [esp + 0x1a4]
call fcn.004b0f80
mov edx, dword [esp + 4]
add esi, 0xffffffb8
add ebx, 0x48
dec edx
test al, al
je 0x4a4330
jmp 0x4a4397
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 8]
xor ebx, ebx
lea esi, [eax + ecx - 0x48]
sub edi, ecx
nop word [eax + eax]
test edi, edi
je 0x4a50c3
mov ecx, esi
lea edx, [esp + 0x1a4]
call fcn.004b0f80
add esi, 0xffffffb8
add edi, 0x48
inc ebx
test al, al
je 0x4a4370
mov edx, dword [esp + 4]
sub edx, ebx
cmp dword [esp + 0x14], edx
jbe 0x4a50c3
mov ecx, dword [esp + 0x30]
mov eax, edx
mov esi, 0
mov edi, dword [esp + 8]
mov ecx, dword [ecx + 0x20]
lea ebx, [ecx + edx]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x24], ecx
cmp ebx, edx
mov ecx, edx
cmovb ecx, esi
sub ebx, ecx
lea ecx, [ebx + ebx*8]
mov esi, dword [edi + ecx*8]
mov dword [esp + 4], esi
lea esi, [edi + ecx*8 + 4]
mov ecx, 0x11
lea edi, [esp + 0x3a8]
rep movsd dword es:[edi], dword [esi]
mov esi, eax
mov edi, dword [esp + 0x14]
not esi
add esi, edi
cmp esi, eax
jae 0x4a4411
lea eax, [ebx + 1]
mov ecx, 0
cmp eax, edx
mov eax, edx
cmovb eax, ecx
mov ecx, edx
mov edx, dword [esp + 8]
neg eax
lea eax, [ebx + eax + 1]
push esi
push ebx
push eax
jmp 0x4a443a
mov ebx, dword [esp + 0x24]
mov esi, 0
lea ecx, [ebx + 1]
cmp ecx, edx
mov ecx, edx
cmovb ecx, esi
neg ecx
lea esi, [ebx + ecx + 1]
mov ecx, dword [esp + 0x30]
mov dword [ecx + 0x20], esi
mov ecx, edx
mov edx, dword [esp + 8]
push eax
push esi
push ebx
call fcn.004b10b0
add esp, 0xc
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x30]
dec edi
mov edx, ecx
mov dword [eax + 0x24], edi
neg edx
jo 0x4a50c3
mov dword [esp + 0xe0], ecx
mov ecx, 0x11
lea edi, [esp + 0xe4]
lea esi, [esp + 0x3a8]
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0xe0]
call fcn.0049e080
cmp dword [esp + 0x28], 0
mov ecx, 0x20
lea edi, [esp + 0x60]
lea esi, [esp + 0x270]
rep movsd dword es:[edi], dword [esi]
je 0x4a44b0
mov eax, dword [esp + 0x358]
neg eax
jo 0x4a44b0
lea ecx, [esp + 0x358]
call fcn.0049e080
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x54]
mov ecx, dword [esp + 0x3c]
xor eax, eax
xchg byte [ecx], al
mov esi, dword [esp + 0x4c]
cmp al, 2
jne 0x4a4510
push dword [esp + 0x3c]
call dword [sym.imp.api_ms_win_core_synch_l1_2_0.dll_WakeByAddressSingle]
xor eax, eax
cmp eax, dword [esp + 0x218]
jo 0x4a451b
lea ecx, [esp + 0x218]
call fcn.0049e080
lea ecx, [esp + 0x1a4]
call fcn.0049e080
cmp edi, reloc.WS2_32.dll_accept
jne 0x4a4533
jmp 0x4a474d
xor eax, eax
cmp eax, dword [esp + 0x218]
jno 0x4a44dd
lea ecx, [esp + 0x1a4]
call fcn.0049e080
cmp edi, reloc.WS2_32.dll_accept
je 0x4a474d
mov eax, dword [esp + 0x214]
mov ecx, 0x20
lea esi, [esp + 0x60]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], edi
lea edi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x164]
push dword [esp + 0x160]
call dword [eax + 0x5c]
add esp, 4
test eax, eax
je 0x4a471e
mov byte [esp + 0x218], 0
mov edi, eax
lea ecx, [esp + 0x270]
mov eax, dword [eax]
mov dword [esp + 0x270], 1
push ecx
push 0x8004667e
push eax
call dword [sym.imp.WS2_32.dll_ioctlsocket]
cmp eax, 0xffffffff
je 0x4a4693
push 2
push 1
lea eax, [esp + 0x220]
push eax
push dword [edi]
call dword [sym.imp.WS2_32.dll_recv]
mov ebx, 0x104
cmp eax, 0xffffffff
je 0x4a45ca
jmp 0x4a4610
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov esi, eax
cmp eax, 0x274a
je 0x4a4610
lea ecx, [esp + 0x270]
mov dword [esp + 0x274], esi
mov dword [esp + 0x270], 0
call fcn.00499640
xor ebx, ebx
cmp al, 0xd
sete bl
shl ebx, 2
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, dword [edi]
lea ecx, [esp + 0x270]
mov dword [esp + 0x270], 0
push ecx
push 0x8004667e
push eax
call dword [sym.imp.WS2_32.dll_ioctlsocket]
cmp eax, 0xffffffff
je 0x4a4693
cmp bl, 4
jne 0x4a469f
test bh, bh
mov ebx, dword [esp + 0x18]
je 0x4a471e
lea ecx, [esp + 0xe0]
call fcn.0049e120
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x1f0]
xor eax, eax
mov dword [esp + 4], getsockopt
cmp eax, dword [edi + 0x5c]
jno 0x4a3a98
jmp 0x4a3bb8
mov ecx, dword [esp + 0x3c]
call fcn.004defa0
mov esi, dword [esp + 0x1ac]
test esi, esi
jns 0x4a3dc3
jmp 0x4a50c3
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
xor ebx, ebx
mov esi, eax
mov bh, bl
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x218]
mov byte [esp + 0x218], bl
mov byte [esp + 0x219], bh
mov word [esp + 0x21a], 0
mov dword [esp + 0x274], 2
mov dword [esp + 0x2bc], getsockopt
mov dword [esp + 0x2c8], 0
mov byte [esp + 0x2d0], 8
mov dword [esp + 0x21c], esi
mov dword [esp + 0x270], 2
lea edx, [esp + 0x270]
push eax
call fcn.00496ec0
add esp, 4
lea ecx, [esp + 0xe0]
call fcn.0049e120
jmp 0x4a3975
mov esi, dword [esp + 0x20]
lea eax, [esi + 4]
push 0x88
lea ecx, [esp + 0xe4]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [esi + 0x8c], 1
mov dword [esi], 3
jmp 0x4a3975
mov edx, esi
mov esi, dword [esp + 0x10]
cmp ebx, dword [esp + 0xc]
jae 0x4a4764
cmp byte [esi + ebx], 0xbf
jg 0x4a476a
jmp 0x4a50c3
jne 0x4a50c3
cmp byte [esp + 0x40], 0
je 0x4a478f
push ebx
push 0x61ecd9
push dword [esp + 0x18]
mov esi, edx
call sub.VCRUNTIME140.dll_memcmp
mov edx, esi
add esp, 0xc
test eax, eax
je 0x4a4978
mov esi, dword [esp + 0x10]
cmp ebx, 5
jne 0x4a47ae
mov eax, 0x70747468
movzx ecx, byte [esi + 4]
xor eax, dword [esi]
xor ecx, 0x73
or ecx, eax
je 0x4a49df
cmp byte [esp + 0x40], 0
je 0x4a47cc
push ebx
push str.testunknown_scheme
push esi
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x4a4b73
lea eax, [esp + 0x218]
mov dword [esp + 0x218], esi
mov dword [esp + 0x270], 0x60cc9c
mov dword [esp + 0x274], 1
mov dword [esp + 0x21c], ebx
mov dword [esp + 0x280], 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0x493590
lea eax, [esp + 0x60]
lea ecx, [esp + 0x12c]
lea edx, [esp + 0x270]
mov dword [esp + 0x278], eax
mov dword [esp + 0x27c], 1
call fcn.0040d730
mov dword [esp + 0xe4], 2
mov dword [esp + 0x138], 0
mov byte [esp + 0x140], 1
lea eax, [esp + 0xe4]
lea ecx, [esp + 0x270]
push 0x88
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x174]
movsd xmm2, qword [esp + 0x184]
movq xmm0, qword [esp + 0x16c]
mov edi, 2
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esp + 0x17c]
movsd qword [esp + 0x78], xmm2
movsd xmm2, qword [esp + 0x194]
movq qword [esp + 0x60], xmm0
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x18c]
movsd qword [esp + 0x88], xmm2
movsd qword [esp + 0x80], xmm1
movq xmm1, qword [esp + 0x19c]
movq qword [esp + 0x90], xmm1
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x270]
lea eax, [esi + 4]
push 0x88
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x68]
movsd xmm2, qword [esp + 0x78]
movsd xmm0, qword [esp + 0x60]
movsd qword [esi + 0x94], xmm1
movsd xmm1, qword [esp + 0x70]
movsd qword [esi + 0xa4], xmm2
movsd xmm2, qword [esp + 0x88]
movsd qword [esi + 0x8c], xmm0
movsd qword [esi + 0x9c], xmm1
movsd xmm1, qword [esp + 0x80]
movsd qword [esi + 0xb4], xmm2
movsd qword [esi + 0xac], xmm1
movsd xmm1, qword [esp + 0x90]
movsd qword [esi + 0xbc], xmm1
mov dword [esi], edi
jmp 0x4a3975
cmp byte [edx + 0x1c], 0
mov bx, 0x50
je 0x4a4986
movzx ebx, word [edx + 0x1e]
movzx eax, byte [0x62314d]
xor ecx, ecx
mov edx, 4
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov ecx, dword [ebp + 0xc]
mov dword [eax], 0x70747468
test ecx, ecx
js 0x4a50c3
mov dword [esp + 0xc], eax
je 0x4a4bf1
mov edx, dword [ebp + 0xc]
movzx eax, byte [0x62314d]
xor ecx, ecx
call fcn.0048bb80
mov ecx, dword [ebp + 0xc]
mov edi, eax
test eax, eax
jne 0x4a4bf6
jmp 0x4a50c3
cmp byte [edx + 0x1c], 0
mov ax, 0x1bb
je 0x4a49ed
movzx eax, word [edx + 0x1e]
mov esi, edx
lea ecx, [esp + 0x270]
mov dword [esp + 4], eax
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.004b2af0
add esp, 0xc
movsd xmm1, qword [esp + 0x280]
mov edi, dword [esp + 0x270]
mov eax, esi
movsd xmm0, qword [esp + 0x278]
movsd xmm2, qword [esp + 0x288]
mov esi, dword [esp + 0x274]
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esp + 0x290]
cmp edi, 3
movsd qword [esp + 0x60], xmm0
movsd qword [esp + 0x70], xmm2
movsd qword [esp + 0x78], xmm1
jne 0x4a4b8c
movsd xmm1, qword [esp + 0x68]
movq xmm0, qword [esp + 0x60]
movsd xmm2, qword [esp + 0x70]
mov eax, dword [eax + 0x58]
mov edx, 4
movsd qword [esp + 0x340], xmm1
movq xmm1, qword [esp + 0x78]
movq qword [esp + 0x338], xmm0
movsd qword [esp + 0x348], xmm2
movq qword [esp + 0x350], xmm1
mov ecx, dword [eax + 0x48]
mov edi, dword [eax + 0x4c]
mov dword [esp + 0xc], ecx
mov ebx, dword [edi + 8]
xor ecx, ecx
movzx eax, byte [0x62314d]
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov ecx, dword [esp + 0xc]
dec ebx
mov dword [eax], esi
and ebx, 0xfffffff8
lea ecx, [ecx + ebx + 8]
push 0x60cb14
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push ecx
lea ebx, [esp + 0x284]
push ebx
call dword [edi + 0xc]
add esp, 0x18
mov edi, dword [esp + 0x270]
mov esi, dword [esp + 0x274]
mov ebx, dword [esp + 0x278]
cmp edi, 3
jne 0x4a4e56
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], esi
xor ecx, ecx
mov edx, 5
movzx eax, byte [0x62314d]
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov ecx, dword [ebp + 0xc]
mov esi, dword [esp + 0x4c]
mov ebx, eax
mov byte [eax + 4], 0x73
mov dword [eax], 0x70747468
test ecx, ecx
js 0x4a50c3
je 0x4a4ebe
mov edx, dword [ebp + 0xc]
movzx eax, byte [0x62314d]
xor ecx, ecx
call fcn.0048bb80
mov ecx, dword [ebp + 0xc]
mov edi, eax
test eax, eax
jne 0x4a4ec3
jmp 0x4a50c3
cmp ebx, dword [esp + 0xc]
jae 0x4a4e05
cmp byte [esi + ebx], 0xbf
jg 0x4a4e0b
jmp 0x4a50c3
lea eax, [esp + 0x298]
lea ecx, [esp + 0x108]
push 0x9c
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x68]
movq xmm0, qword [esp + 0x60]
movsd xmm2, qword [esp + 0x70]
movsd qword [esp + 0xf0], xmm1
movq xmm1, qword [esp + 0x78]
movq qword [esp + 0xe8], xmm0
movsd qword [esp + 0xf8], xmm2
movq qword [esp + 0x100], xmm1
mov dword [esp + 0xe4], esi
jmp 0x4a4e81
mov edi, 1
push ecx
push dword [ebp + 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edx, dword [esi + 0x5c]
lea esi, [edx + 4]
jmp 0x4a4c0d
pause
mov eax, dword [esi]
nop
cmp eax, 0xffffffff
je 0x4a4c0b
test eax, eax
js 0x4a50c3
lea ecx, [eax + 1]
lock cmpxchg dword [esi], ecx
jne 0x4a4c10
mov dword [esp + 4], edx
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x270]
push ebx
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x1c], ebx
mov ebx, eax
push eax
push dword [ebp + 8]
call fcn.004b2af0
add esp, 0xc
mov eax, dword [esp + 4]
movsd xmm1, qword [esp + 0x220]
cmp dword [esp + 0x270], 3
movq xmm0, qword [esp + 0x218]
movsd xmm2, qword [esp + 0x230]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x64], 4
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 4
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], getsockopt
movsd qword [esp + 0x88], xmm1
movsd xmm1, qword [esp + 0x228]
mov eax, dword [esp + 0x18]
movq qword [esp + 0x80], xmm0
movsd qword [esp + 0x98], xmm2
movsd qword [esp + 0x90], xmm1
movq xmm1, qword [esp + 0x238]
movq qword [esp + 0xa0], xmm1
mov word [esp + 0xa8], 1
mov word [esp + 0xaa], ax
jne 0x4a4d23
mov edx, dword [esp + 0x274]
lea esi, [esp + 0xe4]
lea edi, [esp + 0x60]
lea eax, [esp + 0x278]
mov ecx, esi
push edi
push eax
call fcn.004b4b70
add esp, 8
jmp 0x4a5013
lea edi, [esp + 0x64]
lea eax, [esp + 0xe0]
push 0xc4
lea ebx, [esp + 0x274]
push ebx
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [esp + 0x10]
add esp, 0xc
cmp eax, 0xffffffff
je 0x4a4d61
lock dec dword [esi]
jne 0x4a4d61
push eax
push 0
push dword [0x623140]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, edi
call fcn.0049e080
mov edi, dword [esp + 0xe0]
lea esi, [esp + 0xe4]
push 0x88
push esi
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x174]
movsd xmm2, qword [esp + 0x184]
movq xmm0, qword [esp + 0x16c]
cmp edi, 3
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esp + 0x17c]
movsd qword [esp + 0x78], xmm2
movsd xmm2, qword [esp + 0x194]
movq qword [esp + 0x60], xmm0
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x18c]
movsd qword [esp + 0x88], xmm2
movsd qword [esp + 0x80], xmm1
movq xmm1, qword [esp + 0x19c]
movq qword [esp + 0x90], xmm1
jne 0x4a48e9
jmp 0x4a509b
jne 0x4a50c3
lea eax, [esp + 0x60]
mov dword [esp + 0x60], esi
mov dword [esp + 0x270], 0x60cbdc
mov dword [esp + 0x274], 2
mov dword [esp + 0x64], ebx
mov dword [esp + 0x280], 0
mov dword [esp + 0x218], eax
lea eax, [esp + 0x218]
mov dword [esp + 0x21c], 0x493590
jmp 0x4a4812
lea eax, [esp + 0x27c]
lea ecx, [esp + 0xec]
push 0xb8
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], ebx
lea eax, [esp + 0xe4]
push 0x88
push eax
lea eax, [esp + 0x278]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x174]
movsd xmm2, qword [esp + 0x184]
movq xmm0, qword [esp + 0x16c]
jmp 0x4a4892
mov edi, 1
push ecx
push dword [ebp + 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov esi, dword [esi + 0x5c]
jmp 0x4a4ed7
pause
mov eax, dword [esi + 4]
cmp eax, 0xffffffff
je 0x4a4ed5
test eax, eax
js 0x4a50c3
lea ecx, [eax + 1]
lock cmpxchg dword [esi + 4], ecx
jne 0x4a4eda
mov dword [esp + 0x10], edi
xor ecx, ecx
mov edx, 8
movzx eax, byte [0x62314d]
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov edi, eax
mov eax, dword [esp + 0xc]
xor ecx, ecx
mov edx, 0x2000
mov dword [edi], eax
mov eax, dword [esp + 0x18]
mov dword [edi + 4], eax
movzx eax, byte [0x62314d]
call fcn.0048bb80
test eax, eax
je 0x4a50c3
mov ecx, dword [ebp + 0xc]
mov edx, dword [esp + 0x10]
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], 5
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], 5
movsd xmm1, qword [esp + 0x340]
movsd xmm0, qword [esp + 0x338]
movsd xmm2, qword [esp + 0x350]
lea esi, [esp + 0xe4]
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], edx
mov dword [esp + 0xfc], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x100], getsockopt
mov word [esp + 0x12c], 1
mov word [esp + 0x12e], cx
movsd qword [esp + 0x138], xmm1
movsd xmm1, qword [esp + 0x348]
movsd qword [esp + 0x130], xmm0
movsd qword [esp + 0x148], xmm2
movsd qword [esp + 0x140], xmm1
movss xmm1, dword [0x4e1750]
mov dword [esp + 0x150], eax
movups xmmword [esp + 0x154], xmm1
mov dword [esp + 0x164], edi
mov dword [esp + 0x168], 0x60ca70
push 0x88
push esi
lea eax, [esp + 0x278]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esp + 0x174]
movsd xmm2, qword [esp + 0x184]
movq xmm0, qword [esp + 0x16c]
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [esp + 0x17c]
movsd qword [esp + 0x78], xmm2
movsd xmm2, qword [esp + 0x194]
movq qword [esp + 0x60], xmm0
movsd qword [esp + 0x70], xmm1
movsd xmm1, qword [esp + 0x18c]
movsd qword [esp + 0x88], xmm2
movsd qword [esp + 0x80], xmm1
movq xmm1, qword [esp + 0x19c]
movq qword [esp + 0x90], xmm1
mov edi, dword [esp + 0x20]
lea eax, [edi + 4]
push 0x88
push esi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [edi + 0x8c], 0
mov dword [edi], 3
jmp 0x4a3975
ud2