Function at 0x851edf
Capabilities:
Encode data using xor

Disassembly:
mov dword [esp + 4], 0x947a1806
pushal
pushal
mov word [esp + 8], 0x7adb
mov dword [esp + 0x40], 0xa2cef9e7
push dword [esp]
push dword [esp]
push dword [esp + 0x18]
lea esp, [esp + 0x4c]
jmp 0x9d1dbe
call fcn.00717ed2
push eax
aas
jnp 0x851f34
add al, 0x70
adc bh, byte [edx]
stc
mov dh, 0x15
jb 0x851f41
dec edi
imul eax, dword [eax - 0x216996e1], 0xffffff99
adc ebx, dword [edx + edx*2 + 0x3d]
dec edi
popfd
pop eax
pop ss
pushal
xor cl, byte [ebx]
cld
inc ebp
inc esi
add eax, 0x82ab2132
dec ebp
or byte [edi], dh
or eax, 0x4c1b093e
sti
jae 0x851ee6
push esi
xor dword [ecx + 0x57af606e], eax
ror al, 0x77
pop es
sub dword [esi + 0x60], 0xc8c057af
ja 0x851f2c
invalid
inc edx
push esi
fsub st(1)
dec esi
rcr byte [edi + 0x78fd42e3], 1
cmpsd dword [esi], dword es:[edi]
inc edx
std
js int.00851edf
mov bh, 0xa0
les eax, [ebx + 0x56c96c1c]
or esi, edx
salc
pop esp
pushfd
dec esp
pop eax
outsb dx, byte [esi]
pop ss
xor al, 0x31
aas
enter 0x2c1e, 0x61
xchg edx, eax
or eax, 0xcfbf693d
enter 0x2f50, 0x38
xor byte [ebp - 0x34f37296], ch
aas
push 0xa186792e
fld dword [esi]
sar bh, 1
sub dl, byte [ebp - 0x4c705f91]
mov esi, 0x296abefb
call 0x80303c20
jns 0x851ff2
sub al, 0x6a
mov dl, 0xc2
insd dword es:[edi], dx
pop ss
salc
sar ecx, 1
mov dh, 0xcc
dec ebx
mov bh, 0xe0
jbe 0x851f1c
push ecx
pop esp
stosd dword es:[edi], eax
ror esp, cl
salc
popal
sahf
cmp dword [edx], edi
in eax, 0xea
cmc
mov cl, 0x7e
sub ecx, edi
loop 0x852008
imul esi, dword [ebx + 0x2c], 0xffffff82
mov eax, dword [0x9353c41e]
sub al, 0xa
jmp 0x715b2f
int1
and ecx, edx
invalid
fadd dword [edi + 0x28]
push edi
enter 0xffffffffffffaab7, 0x38
add ebp, esp
cmp al, byte [ebx - 0x1e]
aad 6
mov cl, 0x4d
jp 0x852073
loopne 0x851faa
mov ebp, 0xea2cae8a
js 0x85205c
sbb byte [eax + 0x2da250b7], 0xf0
lea esp, [ebp - 0x7c]
cli
lodsd eax, dword [esi]
xor dh, dl
mov byte [eax + 0x5cd4593c], 0x8b
jno 0x852049
mov byte [0xe2d68db2], al
inc esi
add eax, 0xd623292
sub ecx, dword [edx - 0xb]
cmc
jo 0x85202c
iretd
inc ecx
dec ebx
int 0xcd
stosb byte es:[edi], al
inc ecx
push ecx
push ds
sbb esp, 0xc4d93f5e
sar edi, cl
sahf
sbb dword [0x5097b9de], ecx
fidivr word [ecx + 0x1d825097]
jne 0x8520a9
sbb byte [0xa7883275], 0xa3
dec esp
push 0x25
mov byte [edi + 0x256a4ca3], ah
insd dword es:[edi], dx
mov edx, 0x90f70344
xor ebx, esp
stosb byte es:[edi], al
cmc
sar dword [esi + 0x58], 0x4a
les eax, [edx + 0x398bf35]
xchg esp, eax
sbb dword [ebx - 0x2d7b54fc], 0xffffffc8
pop es
je 0x85206f
add eax, 0x93741270
lodsb al, byte [esi]
mov dh, 0xe1
movsd dword es:[edi], dword [esi]
push edx
mov word [ebx], gs
xchg edi, eax
jo 0x85206d
lodsd eax, dword [esi]
xor edi, dword [ebx + 0x4bd1a6bc]
mov ah, 0x22
int 0x31
out dx, al
sbb al, 0xdb
inc ebx
and edx, dword [eax + 0x6f]
inc esi
dec eax
push edi
xor dword [ecx - 0x62], esp
pushfd
wait
call 0xd1d19b92
push cs
inc esi
and eax, 0x895aa62
dec esp
or esi, dword [esi + 0x4076d9b3]
std
fimul dword [edi]
bound ecx, qword [ecx]
fsub dword es:[esi - 0x16f980e9]
cmp eax, 0xd99c8314
rol ah, 0x71
invalid
call fcn.009d0e8a
add ebp, 6
pushal
pushal
push ebp
mov word [eax], dx
pushfd
pushfd
mov byte [esp], dl
lea esp, [esp + 0x50]
jmp fcn.009d17ad
pushfd
mov byte [esp], bl
mov dword [esp + 0x20], edi
mov di, word [esp + 4]
mov dword [esp + 0x1c], ebp
movzx di, cl
mov dword [esp + 0x18], eax
pop ebp
mov dword [esp + 0x10], ebx
bswap di
xchg bp, di
mov dword [esp + 0xc], ebx
lea edi, [ebx + 0x6aed37e1]
mov dword [esp + 8], edx
call fcn.009d2273
pushal
xchg dword [esp + 0x1c], edi
jmp 0x9d2304
pushal
jmp 0x9d0396
xchg dword [esp + 0x18], ebp
jmp 0x9cfbc5