Function at 0x4094f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov edi, dword [ebp + 8]
mov dword [esp + 0x1c], ecx
add edi, dword [ecx + 0x60]
movaps xmm0, xmmword [0x43a550]
movups xmmword [esp + 0x78], xmm0
movaps xmm0, xmmword [0x43a560]
movups xmmword [esp + 0x88], xmm0
mov dword [esp + 0x98], 0xd8eae642
mov word [esp + 0x9c], 0xc9d4
mov dword [esp + 0x9e], 0
mov byte [esp + 0xa2], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 0x2a
ja 0x40959f
nop dword [eax]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x20]
movzx edx, byte [esp + eax + 0x78]
lea eax, [ecx + edx]
add ecx, 0x3d
and ecx, edx
add ecx, ecx
sub eax, ecx
add eax, 0x4c390d3d
mov ecx, eax
or ecx, 0x54
and eax, 0x54
add eax, ecx
inc al
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 0x78], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 0x2b
jb 0x409560
mov dword [esp + 8], 0x3121628
mov dword [esp + 0xc], 0
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
cmp eax, 7
ja 0x4095ef
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + 1]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add al, 0xfa
mov ecx, dword [esp + 0x20]
mov byte [esp + ecx + 8], al
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, 8
jb 0x4095c0
movaps xmm0, xmmword [0x43a570]
movups xmmword [esp + 0x20], xmm0
movaps xmm0, xmmword [0x43a580]
movups xmmword [esp + 0x30], xmm0
movaps xmm0, xmmword [str._v_t_r_bmyopv]
movups xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [str.dhvj]
movups xmmword [esp + 0x50], xmm0
movsd xmm0, qword [0x43a5b0]
movsd qword [esp + 0x60], xmm0
mov dword [esp + 0x68], 0x664f5441
mov word [esp + 0x6c], 0xad8e
mov dword [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov byte [esp + 0x76], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x56
ja 0x40969f
nop word cs:[eax + eax]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + 0x1c]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add al, 0x58
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x57
jb 0x409670
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x20]
mov edx, edi
test cl, cl
je 0x4096cb
lea esi, [esp + 0x21]
mov edx, edi
nop word cs:[eax + eax]
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4096c0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x4096eb
inc eax
nop word cs:[eax + eax]
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4096e0
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x40970b
lea ecx, [esp + 9]
nop dword [eax + eax]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409700
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x78]
test al, al
mov dword [esp + 0x14], edi
je 0x40973b
lea ecx, [esp + 0x79]
nop word cs:[eax + eax]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409730
mov byte [edx], 0
mov ebx, dword [ebp + 0x14]
mov ecx, ebx
shr ecx, 2
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and eax, 0xfffffffc
mov ecx, esi
lea esi, [edx + eax]
add eax, ecx
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov ebx, eax
mov edi, esi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ecx, dword [ebp + 0x14]
test cl, 1
je 0x40977e
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
movaps xmm0, xmmword [0x43a5c0]
movups xmmword [esp + 0x20], xmm0
movsd xmm0, qword [0x43a5d0]
movsd qword [esp + 0x30], xmm0
mov word [esp + 0x38], 0xc339
mov byte [esp + 0x3a], 0xc8
mov dword [esp + 0x3f], 0
mov dword [esp + 0x3b], 0
mov dword [esp + 0x43], 0
mov dword [esp + 0x78], 0
mov eax, dword [esp + 0x78]
cmp eax, 0x26
ja 0x409821
nop dword [eax]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x78]
movzx esi, byte [esp + ecx + 0x20]
lea ecx, [eax - 0x5fc7a05d]
mov edi, ecx
and edi, esi
mov ebx, ecx
xor ebx, esi
or ecx, esi
mov eax, 0x5c
sub eax, dword [esp + 0x18]
or eax, esi
xor ecx, ebx
lea ebx, [ebx + edi*2]
add eax, dword [esp + 0x18]
add eax, ecx
sub ebx, eax
add bl, 0xe7
mov eax, dword [esp + 0x78]
mov byte [esp + eax + 0x20], bl
inc dword [esp + 0x78]
mov eax, dword [esp + 0x78]
cmp eax, 0x27
jb 0x4097d0
add edx, dword [ebp + 0x14]
movzx eax, byte [esp + 0x20]
test al, al
je 0x40984d
lea ecx, [esp + 0x21]
mov esi, dword [esp + 0x14]
nop word cs:[eax + eax]
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409840
jmp 0x409851
mov esi, dword [esp + 0x14]
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x1c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10