Function at 0x85e310
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x68
mov dword [ebp - 0x20], ecx
nop
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x85f2d0
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
call fcn.0085ef90
mov dword [ebp - 0x24], eax
movzx eax, byte [0xa6a690]
cmp al, 0xb2
je 0x85e3d4
mov cl, 0xe2
nop dword [eax]
mov al, 0x99
lock cmpxchg byte [0xa6a690], cl
je 0x85e372
cmp al, 0xb2
jne 0x85e360
jmp 0x85e3d4
mov ecx, 0xffffffc0
mov edi, 0x1fb9c628
mov ebx, 0x84210843
nop word cs:[eax + eax]
mov eax, edi
shr eax, 1
mul ebx
shr edx, 4
imul eax, edx, 0xffffffc2
movzx edx, byte [eax + ecx + 0x205864a8]
xor dl, 0x89
add byte [ecx + 0xa6a690], dl
movzx eax, byte [eax + ecx + 0x205864a9]
xor al, 0x89
add byte [ecx + 0xa6a691], al
add edi, 2
add ecx, 2
jne 0x85e390
mov al, 0xb2
xchg byte [0xa6a690], al
mov dword [ebp - 0x10], 0xffffffff
nop
mov dword [ebp - 0x10], 0xffffffff
lea ecx, [ebp - 0x74]
push 0xa6a650
push esi
call fcn.00878c40
mov eax, dword [ebp - 0x20]
lea esi, [eax + 4]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0xf
mov byte [ebp - 0x50], 0
push esi
call fcn.00903f50
add esp, 4
cmp eax, 0xf
jbe 0x85e43a
nop
mov dword [ebp - 0x10], 2
sub esp, 0xc
movzx ecx, byte [ebp - 0x34]
mov byte [esp + 4], cl
mov dword [esp + 8], esi
mov dword [esp], eax
lea ecx, [ebp - 0x50]
call fcn.006704d0
jmp 0x85e46d
nop
mov dword [ebp - 0x40], eax
mov ecx, dword [0xa6aab8]
add ecx, dword [ebp - 0x24]
mov edx, dword [0xa6aaa0]
add ecx, edx
add ecx, 0xb2b
mov edi, eax
call dword [0xa37360]
lea eax, [ebp - 0x50]
push edi
push esi
push eax
call ecx
add esp, 0xc
mov byte [ebp + edi - 0x50], 0
nop
mov dword [ebp - 0x10], 4
lea eax, [ebp - 0x50]
lea ecx, [ebp - 0x74]
push dword [ebp - 0x28]
push eax
call fcn.00878e30
nop
mov eax, dword [ebp - 0x3c]
mov ecx, dword [0xa6ace0]
add ecx, dword [ecx]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [0x9e9e28]
mov dword [ebp - 0x28], ecx
mov ecx, dword [0xa6ace4]
add ecx, dword [ecx]
mov dword [ebp - 0x30], ecx
cmp eax, 0x10
jb 0x85e4df
nop
mov ecx, dword [ebp - 0x50]
lea edx, [eax + 1]
cmp edx, 0x1000
jb 0x85e4d4
nop
mov esi, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, esi
cmp ecx, 0x20
jae 0x85e840
add eax, 0x24
mov edx, eax
mov ecx, esi
nop
push edx
push ecx
call fcn.0091d82d
add esp, 8
nop
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx]
mov dword [ecx + 0x34], eax
mov dword [ebp - 0x10], 2
lea eax, [ebp - 0x50]
push eax
call fcn.0079a7d0
add esp, 4
nop
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x20]
lea edx, [ecx + 0x2c]
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x30], 0xb371a8b
lea ecx, [ebp - 0x74]
push edx
call fcn.00879100
lea ecx, [ebp - 0x74]
mov eax, dword [ebp - 0x20]
push dword [eax + 0x430]
push dword [eax + 0x42c]
call fcn.00879200
nop
cmp byte [0xa8c601], 0
jne 0x85e543
nop
cmp dword [0xa8d65c], 0
jne 0x85e573
nop
push 0x20
call fcn.0091d7fd
add esp, 4
nop
mov dword [eax + 0x1c], 0xf
mov dword [eax + 4], 0x954b60
mov dword [eax], 0
mov dword [eax + 0x18], 0
mov byte [eax + 8], 0
mov dword [0xa8d65c], eax
nop
mov eax, dword [0xa8d65c]
mov dword [ebp - 0x38], 0xf
mov dword [ebp - 0x3c], 0
mov byte [ebp - 0x4c], 0
mov dword [ebp - 0x50], 0x954b60
mov ecx, dword [eax]
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x85e5ae
add eax, 4
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x50]
push eax
call fcn.00799850
nop
mov dword [ebp - 0x10], 3
lea ecx, [ebp - 0x74]
lea eax, [ebp - 0x50]
push eax
push dword [ebp - 0x20]
push 0xb371a8b
call fcn.00879180
nop
mov eax, dword [ebp - 0x38]
cmp eax, 0x10
jb 0x85e77e
nop
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x60], eax
inc eax
cmp eax, 0xfff
jbe 0x85e62c
nop
cmp dword [0xa6ace8], 0xb4471615
mov edi, dword [0xa6acdc]
jne 0x85e634
lea eax, [edi + 1]
mov dword [0xa6acdc], eax
mov ecx, edi
not ecx
mov edx, 0xfffffffe
sub edx, edi
and edx, ecx
xor eax, edi
or eax, edx
mov dword [ebp - 0x2c], 0
cmp eax, 0xffffffff
mov edx, 0
jne 0x85e751
jmp 0x85e6a8
mov ecx, dword [ebp - 0x54]
jmp 0x85e76c
nop
mov dword [0xa6acf8], 0x46783638
mov eax, 1
sub eax, edi
sub eax, edi
mov dword [0xa6acdc], eax
lea ecx, [edi*2 - 2]
mov esi, eax
sub esi, ecx
imul esi, ecx
mov edx, eax
sub edx, esi
imul edx, esi
xor edx, eax
sub edi, eax
imul edi, eax
mov ecx, eax
shl edi, cl
mov ebx, edx
not ebx
imul ebx, edx
mov esi, ebx
mov ecx, edx
shl esi, cl
xor edi, eax
imul ebx, esi
neg ebx
and ebx, esi
mov ecx, ebx
shl edi, cl
or edi, ebx
mov eax, edi
not eax
mov ecx, edi
sub ecx, eax
imul ecx, eax
mov dword [ebp - 0x2c], 0
cmp edi, ecx
mov edx, 0
jne 0x85e751
nop
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
mov cl, 1
mov dword [ebp - 0x2c], ecx
cmp dword [ebp - 0x28], 0
jle 0x85e74f
add ebx, eax
cmp dword [0xa6acec], 0xe7a53034
jne 0x85e7af
xor ecx, ecx
xor esi, esi
xor edx, edx
mov dword [ebp - 0x58], 0
jmp 0x85e70c
nop
mov edi, dword [ebp - 0x58]
lea esi, [edi + 1]
add ecx, ebx
add ecx, 0xd416dc7
mov eax, dword [ebp - 0x30]
lea ebx, [eax + edi*4]
add ebx, 4
add ebx, dword [eax + edi*4 + 4]
xor eax, eax
nop
mov dword [ebp - 0x58], esi
xor esi, esi
xor dl, al
inc ecx
cmp ecx, dword [ebp - 0x28]
jge 0x85e751
nop
mov edi, dword [ebp - 0x5c]
lea eax, [edi + ecx]
mov dword [ebp - 0x20], ebx
sub ebx, eax
mov dword [ebp - 0x24], esi
mov eax, esi
sbb eax, 0
add ebx, 0xf2be923c
adc eax, 0x3348cda3
mov esi, 0xf2be923c
cmp esi, ebx
mov esi, 0x3348cda3
sbb esi, eax
movzx eax, byte [edi + ecx]
jge 0x85e6e0
mov ebx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x24]
xor dl, al
inc ecx
cmp ecx, dword [ebp - 0x28]
jl 0x85e70c
jmp 0x85e751
xor edx, edx
nop
mov eax, dword [ebp - 0x54]
mov ecx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, ecx
cmp eax, 0x20
jae 0x85e84d
mov eax, dword [ebp - 0x60]
add eax, 0x24
nop
push eax
push ecx
call fcn.0091d82d
add esp, 8
mov dword [ebp - 0x10], 2
nop
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x74]
push dword [ebp + 8]
call fcn.00879440
lea ecx, [ebp - 0x74]
call fcn.00878cf0
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
add esp, 0x68
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov dword [ebp - 0x20], ebx
xor edi, edi
mov dword [ebp - 0x24], 0
xor edx, edx
xor eax, eax
jmp 0x85e7e8
mov esi, 2
mov ebx, edx
shl bl, cl
sub esi, edi
xor dl, bl
mov edi, esi
cmp dword [ebp - 0x28], esi
jle 0x85e751
nop
mov ebx, dword [ebp - 0x5c]
lea ecx, [ebx + edi]
mov esi, dword [ebp - 0x20]
sub esi, ecx
mov ecx, dword [ebp - 0x24]
sbb ecx, 0
add esi, 0xf2be923c
adc ecx, 0x3348cda3
cmp esi, 0xf2be923d
sbb ecx, 0x3348cda3
movzx ecx, byte [ebx + edi]
jge 0x85e7d0
lea ebx, [eax + 1]
add edi, esi
add edi, 0xd416dc7
mov ecx, dword [ebp - 0x30]
lea esi, [ecx + eax*4]
add esi, 4
add esi, dword [ecx + eax*4 + 4]
mov dword [ebp - 0x20], esi
xor ecx, ecx
mov eax, ebx
mov dword [ebp - 0x24], 0
jmp 0x85e7d0
nop
mov dword [ebp - 0x10], 0
call fcn.00900ce1
nop
movzx eax, byte [0x9e9e20]
cmp al, dl
setne al
mov ecx, dword [ebp - 0x2c]
and cl, al
or cl, byte [0xa8c614]
or cl, byte [0xa8c601]
and cl, 1
mov byte [0xa8c601], cl
mov dword [ebp - 0x10], 1
call fcn.00900ce1
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.009350a0
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
call fcn.009350a0
nop dword [eax]
push ebp
sub esp, 0xc
add ebp, 0xc
nop
mov ecx, dword [ebp - 0x24]
add ecx, dword [0xa6aab4]
mov eax, dword [0xa6aaa8]
lea esi, [eax + ecx]
add esi, 0xb2b
mov ecx, esi
call dword [0xa37360]
lea ecx, [ebp - 0x50]
call esi
add esp, 0xc
pop ebp
ret