Function at 0x420de0
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [0x490d40]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x34], ecx
movzx ecx, word [eax + 0xa]
push ebx
mov ebx, ecx
and ecx, 0x8000
mov dword [ebp - 0x38], ecx
mov ecx, dword [eax + 6]
mov dword [ebp - 0x10], ecx
mov ecx, dword [eax + 2]
movzx eax, word [eax]
and ebx, 0x7fff
sub ebx, 0x3fff
shl eax, 0x10
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], eax
cmp ebx, 0xffffc001
jne 0x420e5c
xor ebx, ebx
xor eax, eax
cmp dword [ebp + eax*4 - 0x10], ebx
jne 0x420e4c
inc eax
cmp eax, 3
jl 0x420e39
xor eax, eax
jmp 0x4212e4
xor eax, eax
lea edi, [ebp - 0x10]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
push 2
stosd dword es:[edi], eax
pop eax
jmp 0x4212e4
and dword [ebp - 0x24], 0
push esi
lea esi, [ebp - 0x10]
lea edi, [ebp - 0x1c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, dword [0x491120]
dec edi
lea eax, [edi + 1]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
lea edx, [edi + 1]
and edx, reloc.OLEAUT32.dll_CreateStdDispatch
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], eax
jns 0x420e93
dec edx
or edx, 0xffffffe0
inc edx
lea esi, [ebp + eax*4 - 0x10]
push 0x1f
xor eax, eax
pop ecx
sub ecx, edx
inc eax
shl eax, cl
mov dword [ebp - 0x30], ecx
test dword [esi], eax
je 0x420f39
mov eax, dword [ebp - 0x28]
or edx, 0xffffffff
shl edx, cl
not edx
test dword [ebp + eax*4 - 0x10], edx
jmp 0x420ec1
cmp dword [ebp + eax*4 - 0x10], 0
jne 0x420ecb
inc eax
cmp eax, 3
jl 0x420ebc
jmp 0x420f39
mov eax, edi
cdq
push 0x1f
pop ecx
and edx, ecx
add eax, edx
sar eax, 5
and edi, reloc.OLEAUT32.dll_CreateStdDispatch
jns 0x420ee5
dec edi
or edi, 0xffffffe0
inc edi
and dword [ebp - 0x24], 0
sub ecx, edi
xor edx, edx
inc edx
shl edx, cl
lea ecx, [ebp + eax*4 - 0x10]
mov edi, dword [ecx]
add edi, edx
mov dword [ebp - 0x20], edi
mov edi, dword [ecx]
cmp dword [ebp - 0x20], edi
jb 0x420f24
cmp dword [ebp - 0x20], edx
jmp 0x420f22
test ecx, ecx
je 0x420f36
and dword [ebp - 0x24], 0
lea ecx, [ebp + eax*4 - 0x10]
mov edx, dword [ecx]
lea edi, [edx + 1]
mov dword [ebp - 0x20], edi
cmp edi, edx
jb 0x420f24
cmp edi, 1
jae 0x420f2b
mov dword [ebp - 0x24], 1
dec eax
mov edx, dword [ebp - 0x20]
mov dword [ecx], edx
mov ecx, dword [ebp - 0x24]
jns 0x420f07
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x30]
or eax, 0xffffffff
shl eax, cl
push 3
pop ecx
and dword [esi], eax
mov eax, dword [ebp - 0x28]
inc eax
cmp eax, ecx
jge 0x420f58
lea edi, [ebp + eax*4 - 0x10]
sub ecx, eax
xor eax, eax
rep stosd dword es:[edi], eax
cmp dword [ebp - 0x24], 0
je 0x420f5f
inc ebx
mov eax, dword [0x49111c]
mov ecx, eax
sub ecx, dword [0x491120]
cmp ebx, ecx
jge 0x420f7d
xor eax, eax
lea edi, [ebp - 0x10]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
jmp 0x421186
cmp ebx, eax
jg 0x421190
sub eax, dword [ebp - 0x2c]
lea esi, [ebp - 0x1c]
mov ecx, eax
lea edi, [ebp - 0x10]
movsd dword es:[edi], dword [esi]
cdq
and edx, 0x1f
add eax, edx
movsd dword es:[edi], dword [esi]
mov edx, ecx
sar eax, 5
and edx, reloc.OLEAUT32.dll_CreateStdDispatch
movsd dword es:[edi], dword [esi]
jns 0x420fab
dec edx
or edx, 0xffffffe0
inc edx
and dword [ebp - 0x28], 0
and dword [ebp - 0x20], 0
or edi, 0xffffffff
mov ecx, edx
shl edi, cl
mov dword [ebp - 0x24], 0x20
sub dword [ebp - 0x24], edx
not edi
inc ebp
fsub qword [eax]
add byte [eax], al
add byte [ecx], ch
push ebp
fdivr st(7), st(0)
xlatb
mov ebx, dword [ebp - 0x20]
lea ebx, [ebp + ebx*4 - 0x10]
mov esi, dword [ebx]
mov ecx, esi
and ecx, edi
mov dword [ebp - 0x2c], ecx
mov ecx, edx
shr esi, cl
mov ecx, dword [ebp - 0x24]
or esi, dword [ebp - 0x28]
mov dword [ebx], esi
mov esi, dword [ebp - 0x2c]
shl esi, cl
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 3
mov dword [ebp - 0x28], esi
jl 0x420fc6
mov esi, eax
push 2
shl esi, 2
lea ecx, [ebp - 8]
pop edx
sub ecx, esi
mov bl, dh
ror dword [ebx], 0x9c
xor ch, byte [esp + edx*2 - 0x72721fc8]
mov eax, dword [0x84e8d774]
mov ah, 0x63
cmpsb byte [esi], byte es:[edi]
push ecx
js 0x42105a
inc ebx
xor al, ah
mov word [ecx + 2], ss
js 0x420fbb
inc eax
sbb dword [ebx + 0x72858f73], eax
test al, bl
in ax, dx
pop es
cdq
retf 0x4c1f
out 0x99, eax
fbstp tbyte [ecx - 0x71]
imul cl
xchg ebp, eax
or edi, dword [ecx + eax + 9]
xchg ch, dl
or byte [edx + 0x5b], dh
fisub dword [eax + ebp*8 - 0xd]
jmp 0x4210d8
add eax, esp
salc
ret
pop edi
pop esp
adc bl, ch
ficomp dword [edx - 0x39]
add byte [ebx + 2], al
add al, byte [0x34d4200]
xor eax, 0x48007c05
or ch, byte [esi + 0x2c94d09d]
xor byte [esp - 0x700a8365], ah
jg 0x4211a9
inc dword [ebp + 0x7c0205b4]
test byte [0x7c0205b4], ah
add dword [eax + 0x78a15af1], ebx
pop edi
js 0x42119b
bound edx, qword [esi - 0x17]
cld
dec esp
invalid
out dx, eax
adc eax, 0xe3cbc9f2
pop ss
clc
dec ecx
in al, dx
dec esp
add dword [eax - 0x732164d5], edx
pop eax
cmp esi, esi
int 0x3e
jge 0x4212b9
fstp qword [eax - 0x3e]
in eax, 0x2f
int1
ret 0xdd23
mov edx, 0x1912228c
mov ecx, 0x62a14454
cmpsb byte [esi], byte es:[edi]
cmp eax, 0x2a465c75
retf 0x36ab
shl byte [ebp + 0x4e], 0x48
rcr byte [ecx + 0x1fae1a4f], 0xd9
push ebp
or eax, 0x1179aa78
scasb al, byte es:[edi]
pop ds
fst dword [ebp + 0xd]
js 0x421295
jns 0x4212fe
lds eax, [edi - 0x7e]
scasd eax, dword es:[edi]
dec esp
jno 0x4212dc
jg 0x421310
ret 0xcce1
or dword [0x4e181a7a], ebp
ljmp 0x4549
dec edi
movsb byte es:[edi], byte [esi]
xor dword [edx], edx
and al, 0x29
sbb edx, dword [edx]
push eax
in al, dx
inc esp
inc esp
and eax, dword [ecx + 0x2acc4ebb]
push ecx
mov edx, dword [ecx - 0x24]
add eax, 0x790ac011
mov byte [ecx], ah
and edi, ebx
enter 0xffffffffffff8ac5, 9
adc eax, 0x64c7a42a
add bh, dl
mov bl, 0x35
cmp byte [esi - 0x1b9306d8], ah
push edi
sub ah, byte [edi + eax*8 - 0x4c28ff9c]
xor eax, 0xf928a638
insb byte es:[edi], dx
in al, 0x57
cli
aaa
fdivr dword [ebp - 0x6e]
mov eax, 0x25227920
test edx, 0x25dec1cd
out 0xa4, al
xchg byte [esi], cl
xchg dword [eax + 0x31818851], ecx
imul dword [edi]
lcall 0xba67, 0xb7543849
and byte [eax], ah
dec eax
xchg edx, eax
xor cl, dl
imul esp, dword [eax + 0x36f970a3], 0x20
je 0x421334
or al, byte [eax]
int1
or ch, byte [ebx]
add dh, al
je 0x421386
add dword [eax + 0x18], edx
aas
cwde
outsd dx, dword [esi]
or dword [edi], 0x53
movsb byte es:[edi], byte [esi]
cdq
jb 0x4213a9
invalid
out dx, al
movsb byte es:[edi], byte [esi]
ljmp 0x8c8e