Function at 0x401090
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x44e054]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x34], edx
mov edx, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0x14]
add edx, 8
push esi
adc ebx, 0
mov byte [ebp - 0x1d], cl
mov byte [ebp - 0x1c], 0x82
push edi
test ebx, ebx
ja 0x4010d8
jb 0x4010c4
cmp edx, 0x7e
jae 0x4010d8
or dl, 0x80
mov dword [ebp - 0x28], 0xe
mov byte [ebp - 0x1b], dl
mov ebx, 2
jmp 0x401151
mov ecx, edx
mov eax, ebx
shrd ecx, eax, 8
mov dword [ebp - 0x24], ecx
test ebx, ebx
ja 0x401109
jb 0x4010f1
cmp edx, 0xffff
ja 0x401109
mov byte [ebp - 0x1b], 0xfe
mov ebx, 4
mov byte [ebp - 0x1a], cl
mov byte [ebp - 0x19], dl
mov dword [ebp - 0x28], 0x10
jmp 0x401151
mov eax, ebx
mov byte [ebp - 0x17], bl
shr eax, 0x18
mov ecx, edx
mov byte [ebp - 0x1a], al
mov eax, ebx
shr eax, 0x10
mov byte [ebp - 0x19], al
mov eax, ebx
shr eax, 8
mov byte [ebp - 0x18], al
mov eax, ebx
shrd ecx, eax, 0x18
mov eax, edx
mov byte [ebp - 0x1b], 0xff
shrd eax, ebx, 0x10
mov byte [ebp - 0x16], cl
mov ebx, 0xa
mov byte [ebp - 0x15], al
mov eax, dword [ebp - 0x24]
mov byte [ebp - 0x14], al
mov byte [ebp - 0x13], dl
mov dword [ebp - 0x28], 0x16
cmp dword [0x451a1c], 0
mov dword [ebp - 0x24], ebx
jne 0x401175
push 0
call fcn.0042e491
add esp, 4
mov dword [0x451a1c], eax
push eax
call fcn.0042eb62
add esp, 4
lea esi, [ebp - 0x1c]
add esi, ebx
mov dword [ebp - 0x38], esi
call fcn.0042eb41
cmp dword [0x451a1c], 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x44c180]
mulsd xmm0, qword [0x44c1a0]
cvttsd2si eax, xmm0
mov word [esi], ax
jne 0x4011c2
push 0
call fcn.0042e491
add esp, 4
mov dword [0x451a1c], eax
push eax
call fcn.0042eb62
add esp, 4
call fcn.0042eb41
mov esi, dword [ebp + 8]
xor edx, edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x44c180]
mulsd xmm0, qword [0x44c1a0]
cvttsd2si eax, xmm0
mov word [ebp + ebx - 0x1a], ax
lea eax, [ebp - 0x18]
mov byte [eax + ebx], 7
mov al, byte [ebp - 0x1d]
mov byte [ebp + ebx - 0x17], al
mov eax, esi
mov ebx, dword [ebp + 0xc]
mov ecx, ebx
shrd eax, ecx, 0x10
mov edi, ebx
or edx, eax
shr ecx, 0x10
and edi, 0xff0000
mov eax, ebx
or edi, ecx
and eax, 0xff00
shrd edx, edi, 0x10
xor ecx, ecx
shr edi, 0x10
or edi, eax
movzx eax, bl
shrd edx, edi, 0x10
shr edi, 0x10
or edi, eax
mov eax, esi
shrd edx, edi, 8
shld ebx, eax, 0x10
mov dword [ebp - 0x2c], edx
mov edx, esi
and edx, 0xff00
shl eax, 0x10
or edx, eax
shr edi, 8
or ecx, ebx
mov eax, esi
shld ecx, edx, 0x10
and eax, 0xff0000
and esi, 0xff000000
shl edx, 0x10
or edx, eax
mov eax, dword [ebp - 0x2c]
shld ecx, edx, 0x10
shl edx, 0x10
or edx, esi
mov esi, dword [ebp - 0x24]
shld ecx, edx, 8
shl edx, 8
or edi, ecx
or eax, edx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x30], eax
lea edi, [ebp - 0x18]
mov eax, dword [ebp - 0x2e]
xor edx, edx
mov dword [ebp + esi - 0x16], eax
add edi, esi
mov ax, word [ebp - 0x2a]
mov word [ebp + esi - 0x12], ax
nop
mov eax, edx
lea ecx, [edi + edx]
and eax, 3
inc edx
add eax, esi
mov al, byte [ebp + eax - 0x1c]
xor byte [ecx], al
cmp edx, 8
jb 0x4012a0
mov ebx, dword [ebp - 0x34]
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x14]
test ebx, ebx
je 0x4012f6
mov eax, esi
or eax, edi
je 0x4012f6
and dl, 3
mov ecx, ebx
movzx eax, dl
mov edx, ebx
push eax
push dword [ebp - 0x38]
push esi
call fcn.00408470
mov ecx, dword [0x451a94]
lea edx, [ebp - 0x1c]
add esp, 0xc
push dword [ebp - 0x28]
call fcn.00407270
add esp, 4
jmp 0x401314
push dword [ebp - 0x28]
mov ecx, dword [0x451a94]
lea edx, [ebp - 0x1c]
call fcn.00407270
add esp, 4
test ebx, ebx
je 0x401336
mov eax, esi
or eax, edi
je 0x401336
mov ecx, dword [0x451a94]
mov edx, ebx
push esi
call fcn.00407270
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00427ba1
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00427ba1
mov esp, ebp
pop ebp
ret