Function at 0x40d331
Capabilities:
Encode data using xor

Disassembly:
aas
inc ebx
pop ss
das
pop ss
aas
inc ebx
salc
cmp byte [edi], bl
pop ss
movq mm0, qword [ebx]
outsd dx, dword [esi]
pop edx
mov bl, 0
xor ebp, dword [esi]
xor dword [esi], ebp
xor eax, 0x6e202c
outsd dx, dword [esi]
and byte [eax + 0x61], dh
jb 0x40d3b8
outsb dx, byte [esi]
je 0x40d356
and byte [esi + 0x6f], ah
jne 0x40d3c9
sub al, 0x20
inc eax
outsd dx, dword [si]
and byte [ecx + 0x62], ah
jae 0x40d366
or byte [0x30320a00], 0x32
xor ch, byte [0x2d003131]
xor dword [edx], esi
and byte [ecx], dh
xor eax, 0x3100313a
cmp dh, byte [0x49202c38]
outsb dx, byte [esi]
mov byte [esi + 0x6f], ah
and byte [esi], cl
add byte [ebx + 0x42], al
push ebx
add dword [esi], esp
add byte [ecx + 0x70], al
jo 0x40d3ff
cmp ah, byte [eax]
inc eax
je 0x40d3ff
arpl word [eax + 0x50], si
add ch, byte [esi + 0xe00812c]
push cs
arpl word [ebx + 0x61], bp
cmp al, byte gs:[di]
adc byte [eax], al
pop edi
xor esi, dword [ecx]
pop edi
outsw dx, word [esi]
jb 0x40d414
add byte [ebx + 0x42], cl
xor esi, dword [ecx]
aaa
xor eax, 0x33003434
jle 0x40d3f5
xor dword [edx + 0x66], esp
xor edi, dword [eax]
add byte [0x33646136], dh
xor al, 0x65
popal
xor esi, dword fs:[esi]
xor al, 0x65
add byte [ebx], dh
xor eax, 0x646d617e
xor al, 0x10
jle 0x40d45a
add al, 0xa5
imul esi, dword fs:[ebx], 0x69736f70
je 0x40d453
outsd dx, dword [esi]
outsb dx, byte [esi]
add byte [eax], ah
jae 0x40d464
popal
je 0x40d458
and byte [esi + 0x18], ah
jb 0x40d467
sbb byte [edx + 0x6f], dh
insd dword es:[edi], dx
add al, 0x68
add esp, dword [edi + 0x3a]
and byte [ecx + 1], al
cmp al, 0xb6
inc ecx
add dword [esi + esi*4], edi
inc ebp
jbe 0x40d467
insb byte es:[edi], dx
jne 0x40d46a
je 0x40d3a3
imul ebp, dword [esi + 0x67], 0x59028900
and byte [ecx - 0x80], ah
add byte [bx + di + 0x63], ch
popal
bound ebp, qword [ecx + 0x6c]
imul esi, dword [edx + ecx*8 + 0x79], 0x86729080
and byte [edi], 0x69
arpl word [ecx + 0x62], sp
imul ebp, dword [ecx + ebp*2 + 0x74], 0x908079ca
jb 0x40d3ab
or al, 0x50
popal
adc byte [eax], 0xb0
mov ecx, 0x656c2985
add esp, dword [ebp + 0x39]
pop esp
add al, 0x59
cmp dword gs:[ebx + 0x2c53867d], 0xb8b95205
les esi, [edi]
dec ebx
inc eax
test dword [edx], ebp
sbb edi, edi
xchg dh, dl
xchg byte [edx], dh
in eax, dx
xchg byte [ebp + 0x63694d7f], al
add byte [edx + 0x6f], dh
dec ebp
imul esp, dword [ebx], 0x6f736f72
outsd dx, dword [esi]
jae 0x40d4ca
outsd dx, dword [esi]
je 0x40d48b
push edi
add byte [ecx + 0x6e], ch
push eax
inc ebp
sub eax, 0x8c554b53
sub eax, 0x80b4c146
push ebp
mov word [0x80b4c146], gs
inc esi
sal dword [eax + eax*4 + 0x2d6e6f74], 4
xor al, 0
sub eax, 0x74656e69
arpl word [edi + 0x72], bp
je 0x40d4df
outsb dx, byte [esi]
sub eax, 0x2d003404
imul ebp, dword [esi + 0x65], 0x726f6374
and byte [ebp + 0x15], 0x9d
jae 0x40d4f9
sub eax, 0x9e424553
add byte [ecx], bh
xor byte ss:[eax], dh
xor byte [eax], dh
xor dword cs:[esi], esi
xor esp, dword [eax]
cmp byte [esp + ebp], dh
and byte [eax + ecx - 0x60], al
cmp eax, 0x2440220
mov eax, 0x6556202c
jb 0x40d518
add dword [eax + 0x6d6f43a4], eax
inc ebx
outsd dx, dword [esi]
insd dword es:[edi], dx
jo 0x40d4e7
and byte [ebp], al
push ecx
sub al, 0x20
push ebx
jb 0x40d52d
imul eax, dword [ebx], 0x42040765
jne 0x40d529
insb byte es:[edi], dx
add eax, dword fs:[edi + 0x74118003]
jb 0x40d533
bound esi, qword [ebp + 0x74]
add dword [esi + 0xd], eax
inc edi
inc ebp
sub al, 0x20
je 0x40d4cf
inc esi
or eax, 0x202c4547
push edx
jbe 0x40d4de
imul eax, edi, 0x45044111
js 0x40d549
imul esi, dword [ebx + 0x74], 0x70203a20
jb 0x40d54d
jae 0x40d556
and byte [edx], bh
and byte [eax + 0x72], dh
jg 0x40d4cc
jg 0x40d4cc
arpl word [ebp + edi*8 + 0x45], si
dec eax
jo 0x40d4b4
lodsb al, byte [esi]
mov byte [ebp + 0x710c2d9f], al
fild word [ebp + 0xed85df]
test dword [ebx - 0x21], eax
test dword [edi - 0x7a20c9ec], edi
fild word [ebp - 0x1e10a6c1]
lcall 0x85df, 0x16ca0064
outsd dx, dword [esi]
rol byte [ebp + 0x2e2c2e3f], 1
test edi, ebx
test ebp, ebp
add byte [ebp - 0x407a20bd], al
adc al, 0x36
fild word [ebp + 0x593f85df]
out dx, eax
loope 0x40d4a8
add dl, cl
push ss
fild word [ebp + 0x3f85d06f]
sub al, 0x2e
pop ebx
fild word [ebp + 0x420b3df]
pop ss
fild word [ebp + 0x5fb52163]
out dx, al
xor edi, dword [edi - 0x5beb53ec]
lodsb al, byte [esi]
adc al, 0xa4
imul esp, dword [eax], 0xffffffa5
adc eax, 0x85dfa602
sti
pop edi
leave
pop ebp
cmpsb byte [esi], byte es:[edi]
fild word [ebp + 0x5dc95ffb]
leave
xor ebx, edi
test dword [ebx - 0x37], ecx
fild word [ebp - 0x7a208c7f]
shl dword [esp + edx*8 + 0x74], 0x68
aam 0x74
push 0xdf48542d
test eax, esp
loope 0x40d52e
sub eax, 0x85df4854
loopne 0x40d535
fstpnce st(7), st(0)
fild word [ebp - 0x7a20dfd4]
fild word [ebp + 0x555a5f74]
test dword [eax], ebp
fild word [ebp + 0x5f7485df]
pop edx
push ebp
pop edx
inc dword [ebx - 0x4abd1085]
outsb dx, byte [esi]
iretd