Function at 0x4085d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, 1
mov ebx, 2
xor edx, edx
mov eax, dword [esp + 0x38]
jmp 0x4085f3
inc edi
inc ebx
inc edx
mov ch, byte [eax + edx]
movzx esi, ch
lea ebp, [esi - 9]
cmp ebp, 5
jb 0x4085f0
cmp esi, 0x20
je 0x4085f0
mov byte [esp + 3], ch
add ch, 0xd5
test ch, 0xfd
mov ecx, 0
sete cl
add ecx, eax
mov dword [esp + 8], ecx
xor ecx, ecx
mov esi, 0xffffffff
jmp 0x408639
mov ebp, esi
mov ecx, dword [esp + 0xc]
inc ecx
mov esi, ebp
mov ebp, dword [esp + 8]
mov dword [esp + 0xc], ecx
add ecx, ebp
movzx eax, byte [edi + ecx - 1]
lea ebp, [eax - 0x30]
cmp ebp, 0xa
jb 0x408630
mov dword [esp + 0x18], eax
cmp eax, 0x2e
jne 0x408661
mov ebp, dword [esp + 0xc]
test esi, esi
js 0x408632
mov dword [esp + 0x14], ecx
xor eax, eax
test esi, esi
setns ch
mov ebp, dword [esp + 0xc]
jns 0x408674
mov esi, ebp
add edx, dword [esp + 8]
mov al, ch
mov ecx, eax
sub ebp, eax
cmp ebp, 0x10
mov eax, dword [esp + 0x38]
jl 0x40869e
mov eax, esi
xor eax, 0xf
and esi, 0xfffffff0
add esi, esi
sub esi, eax
mov ebp, 0xf
mov dword [esp + 0x10], esi
jmp 0x4086c1
test ebp, ebp
je 0x4086fe
neg ecx
mov eax, dword [esp + 0xc]
not eax
sub eax, ecx
and eax, esi
not esi
and esi, ebp
sub eax, esi
mov dword [esp + 0x10], eax
cmp ebp, 9
jle 0x408755
mov esi, dword [esp + 8]
lea ecx, [esi + edi]
movzx eax, byte [esi + edi - 1]
cmp al, 0x2e
jne 0x4086d8
movzx eax, byte [ecx]
add esi, ebx
jmp 0x4086da
mov esi, ecx
movsx ecx, al
add ecx, 0xffffffd0
cmp ebp, 0xb
jb 0x4086f5
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x408725
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x408726
mov dword [esp + 4], esi
jmp 0x408807
mov edx, dword [esp + 0x3c]
test edx, edx
movzx ecx, byte [esp + 3]
je 0x40870d
mov dword [edx], eax
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x40871e
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x40896f
inc esi
mov dword [esp + 4], esi
lea esi, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
cmp ebp, 0xb
je 0x408807
mov esi, ecx
mov ecx, dword [esp + 4]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x408772
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x408773
fldz
mov dword [esp + 4], edx
fld st(0)
test ebp, ebp
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
jg 0x408816
jmp 0x40885a
inc ecx
mov dword [esp + 4], ecx
lea esi, [esi + esi*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
cmp ebp, 0xd
jb 0x408807
mov esi, ecx
mov ecx, dword [esp + 4]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40879e
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40879f
inc ecx
mov dword [esp + 4], ecx
lea esi, [esi + esi*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
cmp ebp, 0xd
je 0x408807
mov esi, ecx
mov ecx, dword [esp + 4]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x4087ca
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x4087cb
inc ecx
mov dword [esp + 4], ecx
lea esi, [esi + esi*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
cmp ebp, 0xf
jb 0x408807
mov esi, ecx
mov ecx, dword [esp + 4]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x4087f6
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x4087f7
inc ecx
mov dword [esp + 4], ecx
lea esi, [esi + esi*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
mov dword [esp + 0x20], ecx
mov ebp, 9
fild dword [esp + 0x20]
fldz
fstp st(0)
inc ebp
xor eax, eax
jmp 0x408840
mov ch, byte [esi + 1]
add esi, 2
mov dword [esp + 4], esi
lea eax, [eax + eax*4]
movsx esi, ch
lea eax, [esi + eax*2]
add eax, 0xffffffd0
dec ebp
cmp ebp, 1
mov esi, dword [esp + 0x18]
jle 0x40884e
mov esi, dword [esp + 4]
mov ch, byte [esi]
cmp ch, 0x2e
je 0x408820
inc esi
jmp 0x408826
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or esi, 0x20
cmp esi, 0x65
jne 0x408883
mov ch, byte [edi + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
mov esi, dword [esp + 0xc]
je 0x40888b
mov eax, dword [esp + 8]
add eax, edi
jmp 0x408891
add edx, dword [esp + 0xc]
xor ebp, ebp
jmp 0x4088e6
mov eax, dword [esp + 8]
add eax, ebx
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor ebp, ebp
cmp esi, 9
ja 0x4088df
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx esi, bl
mov edi, ebp
or edi, 0xa
mov ebx, ebp
and ebx, 0xa
imul edi, ebx
xor ebx, 0xa
and ebp, 0xfffffff5
imul ebp, ebx
add edi, esi
add ebp, edi
add ebp, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x4088b0
cmp ch, 0x2d
jne 0x4088e6
neg ebp
movzx ecx, byte [esp + 3]
add ebp, dword [esp + 0x10]
mov esi, ebp
sar esi, 0x1f
mov eax, ebp
xor eax, esi
sub eax, esi
cmp eax, 0x200
jb 0x408918
mov eax, 0x1ff
mov esi, dword [esp + 0x40]
test esi, esi
je 0x408914
mov dword [esi], 0x22
fldz
jmp 0x40891e
fld1
test ebp, ebp
je 0x408946
fstp st(0)
fld1
mov esi, 0x43b250
jmp 0x40893e
mov ebx, eax
shr ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x408946
test al, 1
je 0x408930
fmul qword [esi]
jmp 0x408930
fld st(1)
fmul st(1)
test ebp, ebp
jns 0x40895a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x408968
mov dword [eax], edx
cmp cl, 0x2d
jne 0x40896f
fchs
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret