Function at 0x8285f4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 8
push 0
push 0
dec ecx
jne 0x8285fd
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov dword [ebp - 0x34], eax
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp - 4]
call fcn.0040ab44
mov eax, dword [ebp - 8]
call fcn.0040ab44
xor eax, eax
push ebp
push 0x8289fe
push dword fs:[eax]
mov dword fs:[eax], esp
cmp ebx, 0x80
je 0x82865a
cmp ebx, 0xc0
je 0x82865a
cmp ebx, 0x100
je 0x82865a
mov eax, dword [ebp + 8]
call fcn.0040aa50
jmp 0x82897b
lea eax, [ebp - 0x3c]
mov edx, dword [ebp - 4]
call fcn.0040b9fc
mov eax, dword [ebp - 0x3c]
lea edx, [ebp - 0x38]
call fcn.00827a90
mov edx, dword [ebp - 0x38]
lea eax, [ebp - 4]
mov ecx, 0
call fcn.0040b644
test ebx, ebx
jns 0x828687
add ebx, 7
sar ebx, 3
push ebx
lea eax, [ebp - 0x14]
mov ecx, 1
mov edx, dword [0x404b48]
call fcn.0040d568
add esp, 4
lea eax, [ebp - 8]
call fcn.0040b010
mov esi, eax
mov eax, dword [ebp - 8]
test eax, eax
je 0x8286b7
sub eax, 4
mov eax, dword [eax]
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x8286c3
sub edx, 4
mov edx, dword [edx]
mov edi, edx
cmp eax, edi
jl 0x8286cb
mov eax, edi
mov ecx, eax
mov edx, dword [ebp - 0x14]
mov eax, esi
call fcn.0040717c
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x40]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
call fcn.008283c4
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
call fcn.008280c4
mov esi, dword [ebp - 0x18]
test esi, esi
je 0x828703
sub esi, 4
mov esi, dword [esi]
lea eax, [ebx + esi]
sub eax, 0x10
push eax
lea eax, [ebp - 0x18]
mov ecx, 1
mov edx, dword [0x404b48]
call fcn.0040d568
add esp, 4
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x82872c
sub eax, 4
mov eax, dword [eax]
mov edx, ebx
sub edx, 0x10
sub eax, edx
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + eax]
mov ecx, edx
mov edx, dword [ebp - 0x18]
xchg edx, eax
call fcn.0040717c
lea eax, [ebp - 0xc]
push eax
mov ecx, 8
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.0040b4b0
push 0x10
lea eax, [ebp - 0x1c]
mov ecx, 1
mov edx, dword [0x404b48]
call fcn.0040d568
add esp, 4
xor ebx, ebx
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + ebx]
mov edx, dword [ebp - 0x1c]
mov byte [edx + ebx], al
inc ebx
cmp ebx, 8
jne 0x828774
lea ecx, [ebp - 0x24]
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x34]
call fcn.008283c4
mov ebx, dword [ebp - 4]
test ebx, ebx
je 0x8287a1
sub ebx, 4
mov ebx, dword [ebx]
sub ebx, 8
mov dword [ebp - 0x44], ebx
fild dword [ebp - 0x44]
fdiv dword [0x828a10]
call fcn.004078e4
inc eax
mov ebx, eax
push ebx
lea eax, [ebp - 0x28]
mov ecx, 1
mov edx, dword [0x827b14]
call fcn.0040d568
add esp, 4
mov edi, ebx
sub edi, 2
test edi, edi
jb 0x828807
inc edi
xor esi, esi
lea eax, [ebp - 4]
call fcn.0040b010
mov edx, esi
shl edx, 4
add edx, 9
lea eax, [eax + edx - 1]
mov edx, esi
add edx, edx
mov ecx, dword [ebp - 0x28]
lea edx, [ecx + edx*8]
mov ecx, 0x10
call fcn.0040717c
inc esi
dec edi
jne 0x8287db
lea eax, [ebp - 4]
call fcn.0040b010
mov edx, eax
mov eax, dword [ebp - 4]
test eax, eax
je 0x82881d
sub eax, 4
mov eax, dword [eax]
mov esi, ebx
dec esi
mov ecx, esi
shl ecx, 4
add ecx, 9
lea edx, [edx + ecx - 1]
mov ecx, ebx
add ecx, ecx
mov edi, dword [ebp - 0x28]
lea ecx, [edi + ecx*8 - 0x10]
sub eax, 8
and eax, 0x8000000f
jns 0x828846
dec eax
or eax, 0xfffffff0
inc eax
xchg edx, eax
xchg edx, ecx
call fcn.0040717c
push ebx
lea eax, [ebp - 0x2c]
mov ecx, 1
mov edx, dword [0x8285c8]
call fcn.0040d568
add esp, 4
lea eax, [ebp - 0x10]
xor ecx, ecx
mov edx, 0x10
call fcn.0040b5cc
mov edi, esi
test edi, edi
jb 0x828931
inc edi
xor esi, esi
xor ebx, ebx
mov ecx, ebx
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov eax, esi
shr eax, cl
and al, 0xff
mov edx, 0xf
sub edx, ebx
mov ecx, dword [ebp - 0x1c]
mov byte [ecx + edx], al
inc ebx
cmp ebx, 4
jne 0x828883
xor ebx, ebx
push 0
push 0xffffffffffffffff
lea eax, [esi + 1]
xor edx, edx
call fcn.0040cb14
mov ecx, ebx
add ecx, ecx
add ecx, ecx
add ecx, ecx
call fcn.0040ccd8
and al, 0xff
mov edx, 0xf
sub edx, ebx
mov ecx, dword [ebp - 0x1c]
mov byte [ecx + edx - 4], al
inc ebx
cmp ebx, 4
jne 0x8288a6
lea eax, [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x34]
call fcn.008280c4
xor ebx, ebx
lea eax, [ebp - 0x10]
call fcn.0040b010
mov edx, esi
add edx, edx
mov ecx, dword [ebp - 0x28]
lea edx, [ecx + edx*8]
movzx edx, byte [edx + ebx]
mov ecx, dword [ebp - 0x20]
xor dl, byte [ecx + ebx]
mov byte [eax + ebx], dl
inc ebx
cmp ebx, 0x10
jne 0x8288eb
lea eax, [ebp - 0x48]
mov edx, dword [ebp - 0x10]
call fcn.0040b9fc
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x2c]
lea eax, [eax + esi*4]
call fcn.0040bb38
inc esi
dec edi
jne 0x828881
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x82893d
sub eax, 4
mov eax, dword [eax]
mov edi, eax
dec edi
test edi, edi
jb 0x828959
inc edi
xor ebx, ebx
lea eax, [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov edx, dword [edx + ebx*4]
call fcn.0040bb38
inc ebx
dec edi
jne 0x828947
mov ebx, dword [ebp - 4]
test ebx, ebx
je 0x828965
sub ebx, 4
mov ebx, dword [ebx]
mov eax, dword [ebp + 8]
push eax
mov ecx, ebx
sub ecx, 8
mov edx, 1
mov eax, dword [ebp - 0x30]
call fcn.0040bd00
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x828a05
lea eax, [ebp - 0x48]
call fcn.0040aa50
lea eax, [ebp - 0x40]
mov edx, dword [0x827ac8]
call fcn.0040d68c
lea eax, [ebp - 0x3c]
mov edx, 2
call fcn.0040aab0
lea eax, [ebp - 0x30]
call fcn.0040aa50
lea eax, [ebp - 0x2c]
mov edx, dword [0x8285c8]
call fcn.0040d68c
lea eax, [ebp - 0x28]
mov edx, dword [0x827b14]
call fcn.0040d68c
lea eax, [ebp - 0x24]
mov edx, dword [0x827ac8]
call fcn.0040d68c
lea eax, [ebp - 0x20]
mov edx, dword [0x404b48]
mov ecx, 4
call fcn.0040c184
lea eax, [ebp - 0x10]
mov edx, 4
call fcn.0040aae0
ret