Function at 0x408f30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov ecx, dword [esp + 0x2c]
mov esi, ecx
jmp 0x408f41
inc esi
movzx eax, byte [esi]
lea edx, [eax - 9]
cmp edx, 5
jb 0x408f40
cmp eax, 0x20
je 0x408f40
cmp eax, 0x2b
je 0x408f63
cmp eax, 0x2d
jne 0x408f64
inc esi
mov al, 1
mov dword [esp], eax
jmp 0x408f6b
inc esi
mov dword [esp], 0
xor edi, edi
mov ebx, 0xffffffff
jmp 0x408f85
mov eax, ebx
inc edi
mov ebx, eax
movzx edx, byte [esi + edi]
lea eax, [edx - 0x30]
cmp eax, 0xa
jb 0x408f80
cmp dl, 0x2e
jne 0x408f9c
mov eax, edi
test ebx, ebx
js 0x408f82
mov dword [esp + 0xc], edx
mov dword [esp + 4], esi
xor eax, eax
test ebx, ebx
setns dl
jns 0x408faf
mov ebx, edi
mov dword [esp + 8], ebx
mov al, dl
mov ebx, edi
sub ebx, eax
cmp ebx, 0x10
jl 0x408fca
add dword [esp + 8], 0xfffffff1
mov ebx, 0xf
jmp 0x408fe9
test ebx, ebx
je 0x4090cb
neg eax
mov ecx, dword [esp + 8]
sub ecx, eax
sub ecx, edi
mov dword [esp + 8], ecx
cmp ebx, 0xa
jl 0x4091d7
inc ebx
xor edx, edx
mov ecx, dword [esp + 4]
jmp 0x409022
movzx eax, byte [ecx + 1]
add ecx, 2
lea edx, [edx + edx*4]
movsx eax, al
mov esi, eax
xor esi, 0xffffffcf
and eax, 0xffffffcf
lea edx, [esi + edx*2]
lea edx, [edx + eax*2]
inc edx
dec ebx
cmp ebx, 0xa
jle 0x40902c
movzx eax, byte [ecx]
cmp al, 0x2e
je 0x409000
inc ecx
jmp 0x409007
mov dword [esp + 0x14], edx
mov ebx, 9
fild dword [esp + 0x14]
fldz
fstp st(0)
inc ebx
xor edx, edx
jmp 0x40907d
movzx eax, byte [ecx + 1]
add ecx, 2
mov esi, edx
and esi, 0xa
mov ebp, edx
or edx, 0xa
imul edx, esi
xor esi, 0xa
and ebp, 0xfffffff5
imul ebp, esi
movsx eax, al
add edx, ebp
add edx, eax
add edx, 0xffffffd0
dec ebx
cmp ebx, 1
jle 0x409087
movzx eax, byte [ecx]
cmp al, 0x2e
je 0x409050
inc ecx
jmp 0x409057
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov eax, dword [esp + 0xc]
or eax, 0x20
cmp eax, 0x65
jne 0x4090c1
mov ebx, dword [esp + 4]
movzx eax, byte [ebx + edi + 1]
cmp eax, 0x2b
je 0x4090ee
cmp eax, 0x2d
jne 0x4090f5
add ebx, edi
add ebx, 2
mov cl, 1
jmp 0x4090fa
mov ebx, dword [esp + 4]
add ebx, edi
xor eax, eax
jmp 0x409146
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4090d5
mov dword [eax], ecx
fldz
fld st(0)
fchs
cmp byte [esp], 0
jne 0x4090e7
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x4091cf
add ebx, edi
add ebx, 2
jmp 0x4090f8
add ebx, edi
inc ebx
xor ecx, ecx
movzx edx, byte [ebx]
lea esi, [edx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x409140
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xfffffff5
mov edi, eax
and edi, 0xa
or eax, 0xa
imul eax, edi
xor edi, 0xa
imul edi, esi
movsx edx, dl
add edx, eax
lea eax, [edi + edx]
add eax, 0xffffffd0
movzx edx, byte [ebx + 1]
inc ebx
mov esi, edx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x409110
test cl, cl
je 0x409146
neg eax
mov esi, dword [esp + 0x30]
add eax, dword [esp + 8]
mov edx, eax
sar edx, 0x1f
mov ecx, eax
xor ecx, edx
sub ecx, edx
cmp ecx, 0x200
jl 0x409178
mov ecx, 0x1ff
mov edx, dword [esp + 0x34]
test edx, edx
je 0x409174
mov dword [edx], 0x22
fldz
jmp 0x40917e
fld1
test eax, eax
je 0x4091a9
fstp st(0)
fld1
mov edx, 0x43e4e0
mov edi, ebx
jmp 0x4091a0
mov ebx, ecx
sar ebx, 1
add edx, 8
cmp ecx, 2
mov ecx, ebx
mov ebx, edi
jb 0x4091a9
test cl, 1
je 0x409190
fmul qword [edx]
jmp 0x409190
fld st(1)
fmul st(1)
test eax, eax
jns 0x4091bd
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
test esi, esi
je 0x4091c7
mov dword [esi], ebx
cmp byte [esp], 0
je 0x4091cf
fchs
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
fldz
mov ecx, dword [esp + 4]
fld st(0)
test ebx, ebx
jg 0x40903b
jmp 0x40908f