Function at 0x409450
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov ebp, dword [esp + 0x24]
mov esi, ebp
jmp 0x409461
inc esi
movzx eax, byte [esi]
lea ecx, [eax - 9]
cmp ecx, 5
jb 0x409460
cmp eax, 0x20
je 0x409460
cmp eax, 0x2b
je 0x409484
cmp eax, 0x2d
jne 0x409485
inc esi
mov al, 1
mov dword [esp + 4], eax
jmp 0x40948d
inc esi
mov dword [esp + 4], 0
xor edi, edi
mov ebx, 0xffffffff
jmp 0x4094a5
mov ecx, ebx
inc edi
mov ebx, ecx
movzx eax, byte [esi + edi]
lea ecx, [eax - 0x30]
cmp ecx, 0xa
jb 0x4094a0
cmp al, 0x2e
jne 0x4094bb
mov ecx, edi
test ebx, ebx
js 0x4094a2
xor edx, edx
test ebx, ebx
setns cl
jns 0x4094c6
mov ebx, edi
mov dword [esp], ebx
mov dl, cl
mov ebx, edi
sub ebx, edx
cmp ebx, 0x10
jl 0x4094df
add dword [esp], 0xfffffff1
mov ebx, 0xf
jmp 0x4094fc
test ebx, ebx
je 0x4095b1
neg edx
mov ecx, dword [esp]
sub ecx, edx
sub ecx, edi
mov dword [esp], ecx
cmp ebx, 0xa
jl 0x4096b6
inc ebx
xor edx, edx
mov ebp, esi
jmp 0x409529
movzx ecx, byte [ebp + 1]
add ebp, 2
lea edx, [edx + edx*4]
movsx ecx, cl
lea edx, [ecx + edx*2]
add edx, 0xffffffd0
dec ebx
cmp ebx, 0xa
jle 0x409535
movzx ecx, byte [ebp]
cmp cl, 0x2e
je 0x409510
inc ebp
jmp 0x409517
mov dword [esp + 0xc], edx
mov ebx, 9
fild dword [esp + 0xc]
fldz
fstp st(0)
inc ebx
xor edx, edx
jmp 0x409569
movzx ecx, byte [ebp + 1]
add ebp, 2
lea edx, [edx + edx*4]
movsx ecx, cl
lea edx, [ecx + edx*2]
add edx, 0xffffffd0
dec ebx
cmp ebx, 1
jle 0x409575
movzx ecx, byte [ebp]
cmp cl, 0x2e
je 0x409550
inc ebp
jmp 0x409557
mov dword [esp + 8], edx
fild dword [esp + 8]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or eax, 0x20
cmp eax, 0x65
jne 0x4095a7
movzx eax, byte [esi + edi + 1]
cmp eax, 0x2b
je 0x4095d5
cmp eax, 0x2d
jne 0x4095dc
add esi, edi
add esi, 2
mov bl, 1
jmp 0x4095e1
add esi, edi
xor eax, eax
mov edi, dword [esp + 0x28]
jmp 0x40962a
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4095bb
mov dword [eax], ebp
fldz
fld st(0)
fchs
cmp byte [esp + 4], 0
jne 0x4095ce
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x4096ae
add esi, edi
add esi, 2
jmp 0x4095df
add esi, edi
inc esi
xor ebx, ebx
mov edi, dword [esp + 0x28]
movzx edx, byte [esi]
lea ecx, [edx - 0x30]
xor eax, eax
cmp ecx, 9
ja 0x409624
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [eax + eax*4]
movsx ecx, dl
mov edx, ecx
xor edx, 0xffffffcf
and ecx, 0xffffffcf
lea eax, [edx + eax*2]
lea eax, [eax + ecx*2]
inc eax
movzx edx, byte [esi + 1]
inc esi
mov ecx, edx
add ecx, 0xffffffd0
cmp ecx, 0xa
jb 0x409600
test bl, bl
je 0x40962a
neg eax
mov ecx, dword [esp]
add eax, ecx
mov ecx, eax
sar ecx, 0x1f
mov ebx, eax
xor ebx, ecx
sub ebx, ecx
cmp ebx, 0x200
jb 0x409659
mov ebx, 0x1ff
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x409655
mov dword [ecx], 0x22
fldz
jmp 0x40965f
fld1
test eax, eax
je 0x409687
fstp st(0)
fld1
mov edx, 0x43d4e0
jmp 0x40967e
mov ecx, ebx
shr ecx, 1
add edx, 8
cmp ebx, 2
mov ebx, ecx
jb 0x409687
test bl, 1
je 0x409670
fmul qword [edx]
jmp 0x409670
fld st(1)
fmul st(1)
test eax, eax
jns 0x40969b
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
test edi, edi
je 0x4096a5
mov dword [edi], esi
cmp byte [esp + 4], 0
je 0x4096ae
fchs
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
fldz
mov ebp, esi
fld st(0)
test ebx, ebx
jg 0x409544
jmp 0x40957d