Function at 0x407310
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49609d
mov eax, dword fs:[0]
push eax
sub esp, 0x8c
mov eax, dword [0x4bb0c8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x94], esi
mov dword [ebp - 0x94], esi
mov dword [ebp - 4], 0
mov dword [ebp - 0x68], 0
mov byte [ebp - 4], 1
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xf
mov byte [ebp - 0x68], 0
cmp dword [ebp + 0x18], 0
mov dword [ebp - 0x90], 0
jne 0x4073df
movups xmm0, xmmword [ebp - 0x68]
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x58]
movq qword [esi + 0x10], xmm0
mov edx, dword [ebp + 0x1c]
cmp edx, 0x10
jb 0x407937
mov ecx, dword [ebp + 8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4073d8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407954
push edx
push ecx
jmp 0x40792f
xorps xmm0, xmm0
mov dword [ebp - 0x20], 0x240220b3
lea eax, [ebp - 0x20]
mov dword [ebp - 0x1c], 0x70205187
mov dword [ebp - 0x18], 0xb0585271
mov edx, 0x14321083
mov word [ebp - 0x14], 0x421
xor esi, esi
movq qword [ebp - 0x78], xmm0
mov dword [ebp - 0x70], 0
mov word [ebp - 0x6c], 0
mov dword [ebp - 0x80], eax
lea eax, [ebp - 0x78]
mov dword [ebp - 0x84], eax
nop word [eax + eax]
mov eax, dword [ebp - 0x80]
mov ecx, dword [eax + esi]
mov eax, dword [ebp - 0x84]
xor ecx, edx
imul edx, edx, 0x558f
mov dword [eax + esi], ecx
add esi, 4
add edx, 0x8f5409
rol edx, 3
cmp esi, 0xc
jb 0x407430
lea eax, [ebp - 0x20]
mov esi, 0xc
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x78]
mov dword [ebp - 0x80], eax
nop dword [eax]
mov eax, dword [ebp - 0x84]
mov cl, byte [eax + esi]
mov eax, dword [ebp - 0x80]
xor cl, dl
shr edx, 8
mov byte [eax + esi], cl
inc esi
cmp esi, 0xe
jb 0x407470
mov dword [ebp - 0x38], 0
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0xf
lea edx, [ecx + 1]
mov byte [ebp - 0x38], 0
mov byte [ebp - 4], 5
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4074b0
sub ecx, edx
lea eax, [ebp - 0x78]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.00403da0
mov ecx, 0xe
lea eax, [ebp - 0x78]
nop
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x4074d0
cmp dword [ebp - 0x24], 0x10
lea esi, [ebp - 0x38]
mov edi, dword [ebp + 8]
lea ecx, [ebp + 8]
cmovae esi, dword [ebp - 0x38]
setae byte [ebp - 0x7a]
cmp dword [ebp + 0x1c], 0x10
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x28]
cmovae ecx, edi
setae byte [ebp - 0x79]
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x8c], ecx
cmp eax, edx
ja 0x4078a9
test eax, eax
jne 0x407520
xor edi, edi
jmp 0x4075f0
mov eax, ecx
inc edx
sub eax, dword [ebp - 0x28]
add eax, edx
movsx edx, byte [esi]
mov dword [ebp - 0x84], eax
sub eax, ecx
push eax
push edx
push ecx
mov dword [ebp - 0x80], edx
call fcn.0046f480
mov edi, eax
add esp, 0xc
test edi, edi
je 0x4078a6
nop dword [eax + eax]
mov edx, esi
mov ecx, edi
mov esi, dword [ebp - 0x28]
sub esi, 4
jb 0x407571
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x407576
add ecx, 4
add edx, 4
sub esi, 4
jae 0x407560
cmp esi, 0xfffffffc
je 0x4075aa
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4075a3
cmp esi, 0xfffffffd
je 0x4075aa
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4075a3
cmp esi, 0xfffffffe
je 0x4075aa
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4075a3
cmp esi, 0xffffffff
je 0x4075aa
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x4075aa
sbb eax, eax
or eax, 1
jmp 0x4075ac
xor eax, eax
test eax, eax
je 0x4075db
mov eax, dword [ebp - 0x84]
inc edi
sub eax, edi
push eax
push dword [ebp - 0x80]
push edi
call fcn.0046f480
mov esi, dword [ebp - 0x88]
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x407550
jmp 0x4078a6
sub edi, dword [ebp - 0x8c]
cmp edi, 0xffffffff
je 0x4078a6
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x90], 0xa
jae 0x40788c
lea ecx, [eax + edi]
lea eax, [ecx + 4]
mov dword [ebp - 0x88], eax
cmp eax, edx
jae 0x40788c
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0xf
mov byte [ebp - 0x50], 0
mov byte [ebp - 4], 8
cmp edx, ecx
jb 0x407963
sub edx, ecx
lea eax, [ebp + 8]
mov edi, 4
cmp edx, edi
cmovb edi, edx
cmp byte [ebp - 0x79], 0
cmovne eax, dword [ebp + 8]
add eax, ecx
mov dword [ebp - 0x8c], eax
cmp edi, 0xf
ja 0x40767b
push edi
push eax
lea eax, [ebp - 0x50]
mov dword [ebp - 0x40], edi
push eax
call fcn.0046e7f0
mov byte [ebp + edi - 0x50], 0
mov esi, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x50]
jmp 0x40770d
cmp edi, 0x7fffffff
ja 0x40795e
mov esi, edi
or esi, 0xf
cmp esi, 0x7fffffff
jbe 0x40769e
mov esi, closesocket
lea ecx, [esi + 0x24]
jmp 0x4076be
cmp esi, 0x16
mov eax, 0x16
cmovb esi, eax
lea eax, [esi + 1]
cmp eax, 0x1000
jb 0x4076dc
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x407959
push ecx
call fcn.0046ce86
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x407954
lea eax, [ecx + 0x23]
and eax, 0xffffffe0
mov dword [eax - 4], ecx
jmp 0x4076ed
test eax, eax
je 0x4076eb
push eax
call fcn.0046ce86
add esp, 4
jmp 0x4076ed
xor eax, eax
push edi
push dword [ebp - 0x8c]
mov dword [ebp - 0x80], eax
push eax
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x3c], esi
call fcn.0046e7f0
mov ecx, dword [ebp - 0x80]
mov dword [ebp - 0x50], ecx
mov byte [ecx + edi], 0
add esp, 0xc
cmp esi, 0x10
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x50]
cmovae eax, ecx
lea ecx, [ebp - 0x68]
push edi
push eax
call fcn.00403e90
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0x3c]
cmp edx, 0x10
jb 0x40775f
mov ecx, dword [ebp - 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x407755
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407954
push edx
push ecx
call fcn.0046cebb
add esp, 8
push 1
push 0x4b107c
lea ecx, [ebp - 0x68]
call fcn.00403e90
inc dword [ebp - 0x90]
lea esi, [ebp - 0x38]
cmp byte [ebp - 0x7a], 0
lea ecx, [ebp + 8]
mov edx, dword [ebp + 0x18]
cmovne esi, dword [ebp - 0x38]
cmp dword [ebp + 0x1c], 0x10
mov edi, dword [ebp - 0x28]
cmovae ecx, dword [ebp + 8]
setae byte [ebp - 0x79]
mov dword [ebp - 0x84], esi
mov dword [ebp - 0x80], ecx
mov dword [ebp - 0x94], edx
cmp edi, edx
ja 0x40788c
mov eax, edx
sub eax, edi
mov edi, dword [ebp - 0x88]
cmp edi, eax
ja 0x40788c
cmp dword [ebp - 0x28], 0
je 0x407883
movsx edx, byte [esi]
inc eax
add eax, ecx
mov dword [ebp - 0x88], edx
add ecx, edi
mov dword [ebp - 0x8c], eax
sub eax, ecx
push eax
push edx
push ecx
call fcn.0046f480
mov edi, eax
add esp, 0xc
test edi, edi
je 0x40788c
mov eax, esi
mov edx, edi
mov esi, dword [ebp - 0x28]
sub esi, 4
jb 0x407811
nop
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x407816
add edx, 4
add eax, 4
sub esi, 4
jae 0x407800
cmp esi, 0xfffffffc
je 0x40784a
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x407843
cmp esi, 0xfffffffd
je 0x40784a
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x407843
cmp esi, 0xfffffffe
je 0x40784a
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x407843
cmp esi, 0xffffffff
je 0x40784a
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
je 0x40784a
sbb eax, eax
or eax, 1
jmp 0x40784c
xor eax, eax
test eax, eax
je 0x40787a
mov eax, dword [ebp - 0x8c]
inc edi
sub eax, edi
push eax
push dword [ebp - 0x88]
push edi
call fcn.0046f480
mov edi, eax
add esp, 0xc
test edi, edi
je 0x40788c
mov esi, dword [ebp - 0x84]
jmp 0x4077f2
sub edi, dword [ebp - 0x80]
mov edx, dword [ebp - 0x94]
cmp edi, 0xffffffff
jne 0x4075ed
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x4078a6
dec ecx
lea eax, [ebp - 0x68]
cmp dword [ebp - 0x54], 0x10
mov dword [ebp - 0x58], ecx
cmovae eax, dword [ebp - 0x68]
mov byte [eax + ecx], 0
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x98]
movups xmm0, xmmword [ebp - 0x68]
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x58]
movq qword [esi + 0x10], xmm0
cmp byte [ebp - 0x7a], 0
je 0x407908
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x38]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4078fb
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407954
push ecx
push edx
call fcn.0046cebb
mov edi, dword [ebp + 8]
add esp, 8
mov eax, dword [ebp + 0x1c]
cmp eax, 0x10
jb 0x407937
lea ecx, [eax + 1]
mov eax, edi
cmp ecx, 0x1000
jb 0x40792d
mov edi, dword [edi - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x407954
push ecx
push edi
call fcn.0046cebb
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0046ce78
mov esp, ebp
pop ebp
ret
call fcn.00471c84
call fcn.004015f0
call fcn.004016c0
call fcn.004042c0
int3