Function at 0x408580
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebx, 1
mov ebp, 2
xor esi, esi
mov edx, dword [esp + 0x48]
jmp 0x4085a3
inc ebx
inc ebp
inc esi
mov ch, byte [edx + esi]
movzx eax, ch
lea edi, [eax - 9]
cmp edi, 5
jb 0x4085a0
cmp eax, 0x20
je 0x4085a0
mov dword [esp + 0x18], ebp
mov byte [esp + 3], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, edx
mov dword [esp + 0xc], eax
xor ecx, ecx
mov eax, 0xffffffff
jmp 0x4085e7
mov edi, eax
mov ecx, ebp
inc ecx
mov eax, edi
mov edi, dword [esp + 0xc]
mov ebp, ecx
add ecx, edi
movzx edx, byte [ebx + ecx - 1]
lea edi, [edx - 0x30]
cmp edi, 0xa
jb 0x4085e0
mov dword [esp + 0x20], edx
cmp edx, 0x2e
jne 0x40860b
mov edi, ebp
test eax, eax
js 0x4085e2
mov dword [esp + 0x28], ecx
xor edx, edx
test eax, eax
setns cl
jns 0x40861a
mov eax, ebp
mov dl, cl
mov ecx, ebp
sub ecx, edx
mov edi, ecx
cmp ecx, 0x10
jge 0x40862c
mov edi, 0xf
test ecx, ecx
je 0x408669
add edi, edx
add eax, edi
sub eax, ebp
mov dword [esp + 0x1c], eax
cmp ecx, 9
mov dword [esp + 0x14], ebp
jle 0x40867e
mov dword [esp + 8], edx
mov dword [esp + 0x10], ecx
lea edx, [ecx - 0xa]
mov edi, dword [esp + 0xc]
lea ecx, [edi + ebx]
movzx eax, byte [edi + ebx - 1]
cmp al, 0x2e
jne 0x408696
movzx eax, byte [ecx]
mov ecx, dword [esp + 0x18]
add edi, ecx
jmp 0x408698
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x408677
mov ecx, dword [esp + 0x48]
mov dword [eax], ecx
fldz
jmp 0x408945
fldz
test ecx, ecx
jle 0x4086b7
mov eax, edx
mov edx, dword [esp + 0xc]
lea edi, [edx + esi]
mov edx, eax
mov eax, ebp
jmp 0x4087d0
mov edi, ecx
movsx ecx, al
add ecx, 0xffffffd0
test edx, edx
je 0x4086be
mov dword [esp + 4], ecx
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x4086c9
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x4086ca
fld st(0)
jmp 0x408822
mov edx, dword [esp + 8]
mov eax, ebp
jmp 0x4087c8
inc edi
mov ecx, edi
mov eax, ebp
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
mov dword [esp + 4], edx
mov edx, dword [esp + 0x10]
cmp edx, 0xc
jl 0x408703
add edx, 0xfffffff4
mov ebp, ecx
mov ch, byte [ecx]
cmp ch, 0x2e
mov dword [esp + 0x24], edx
jne 0x408712
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x408713
mov edx, dword [esp + 8]
mov edi, ecx
mov ecx, dword [esp + 4]
jmp 0x4087c8
inc ebp
mov edx, dword [esp + 4]
lea edi, [edx + edx*4]
movsx edx, ch
lea ecx, [edx + edi*2]
add ecx, 0xffffffd0
cmp dword [esp + 0x24], 0
je 0x40873c
movzx edx, byte [ebp]
cmp dl, 0x2e
jne 0x408747
movzx edx, byte [ebp + 1]
add ebp, 2
jmp 0x408748
mov edx, dword [esp + 8]
mov edi, ebp
jmp 0x4087c8
inc ebp
lea edi, [ecx + ecx*4]
movsx edx, dl
lea ecx, [edx + edi*2]
add ecx, 0xffffffd0
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x10]
cmp ecx, 0xe
jl 0x4087a1
add ecx, 0xfffffff2
movzx edx, byte [ebp]
cmp dl, 0x2e
jne 0x408776
movzx edx, byte [ebp + 1]
add ebp, 2
jmp 0x408777
inc ebp
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
mov dword [esp + 4], edx
test ecx, ecx
je 0x4087a1
movzx edx, byte [ebp]
cmp dl, 0x2e
jne 0x4087ad
movzx edx, byte [ebp + 1]
add ebp, 2
jmp 0x4087ae
mov edx, dword [esp + 8]
mov edi, ebp
mov ecx, dword [esp + 4]
jmp 0x4087c8
inc ebp
mov ecx, ebp
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea ebp, [edx + edi*2]
add ebp, 0xffffffd0
mov edx, dword [esp + 8]
mov edi, ecx
mov ecx, ebp
mov dword [esp + 0x30], ecx
fild dword [esp + 0x30]
neg edx
add edx, eax
cmp edx, 9
jl 0x4087de
mov edx, 9
inc edx
mov eax, edx
xor edx, edx
jmp 0x408810
mov ch, byte [edi + 1]
add edi, 2
mov ebp, edi
lea edx, [edx + edx*4]
movsx edi, ch
lea edx, [edi + edx*2]
add edx, 0xffffffd0
mov edi, eax
dec edi
mov eax, edi
cmp edi, 1
mov edi, ebp
jle 0x40881a
mov ch, byte [edi]
cmp ch, 0x2e
je 0x4087f0
inc edi
jmp 0x4087f6
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
fxch st(1)
fmul dword [str._knN]
add dword [esp + 0x1c], 0xfffffff1
faddp st(1)
or eax, 0x20
cmp eax, 0x65
jne 0x40885a
mov edx, dword [esp + 0x28]
mov ch, byte [ebx + edx]
mov dl, ch
add dl, 0xd5
test dl, 0xfd
mov eax, dword [esp + 0x14]
je 0x40886c
mov esi, dword [esp + 0xc]
add esi, ebx
jmp 0x408874
add esi, dword [esp + 0x14]
mov ebp, dword [esp + 0xc]
add ebp, esi
xor edx, edx
mov edi, dword [esp + 0x4c]
jmp 0x4088ba
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x18]
mov edx, esi
lea ebp, [esi + eax]
movzx ebx, byte [esi + eax]
lea eax, [ebx - 0x30]
xor edx, edx
cmp eax, 9
mov edi, dword [esp + 0x4c]
ja 0x4088b3
xor edx, edx
nop
nop
nop
add edx, edx
lea eax, [edx + edx*4]
movsx edx, bl
add edx, 0xffffffd0
mov esi, edx
and esi, eax
xor edx, eax
lea edx, [edx + esi*2]
movzx ebx, byte [ebp + 1]
inc ebp
mov eax, ebx
add eax, 0xffffffd0
cmp eax, 0xa
jb 0x408890
cmp ch, 0x2d
jne 0x4088ba
neg edx
mov eax, edx
mov esi, dword [esp + 0x1c]
and eax, esi
xor edx, esi
lea eax, [edx + eax*2]
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jb 0x4088f1
mov edx, 0x1ff
mov esi, dword [esp + 0x50]
test esi, esi
je 0x4088ed
mov dword [esi], 0x22
fldz
jmp 0x4088f7
fld1
test eax, eax
je 0x408927
fstp st(0)
fld1
mov esi, 0x443250
jmp 0x40891e
mov ebx, edx
shr ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x408927
test dl, 1
je 0x408910
fmul qword [esi]
jmp 0x408910
fld st(1)
fmul st(1)
test eax, eax
jns 0x40893b
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
test edi, edi
je 0x408945
mov dword [edi], ebp
fld st(0)
fchs
cmp byte [esp + 3], 0x2d
je 0x408956
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret