Function at 0x408fb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov esi, 1
mov ebp, 2
xor eax, eax
mov ebx, dword [esp + 0x44]
jmp 0x408fd3
inc esi
inc ebp
inc eax
movzx ecx, byte [ebx + eax]
movzx edx, cl
lea edi, [edx - 9]
cmp edi, 5
jb 0x408fd0
cmp edx, 0x20
je 0x408fd0
mov dword [esp + 0x18], esi
mov byte [esp + 3], cl
mov edx, ecx
add dl, 0xd5
test dl, 0xfd
mov edx, 0
sete dl
add edx, ebx
mov ecx, 0xffffffff
xor edi, edi
mov dword [esp + 0x10], edx
jmp 0x409019
mov edx, ecx
inc edi
mov ecx, edx
mov edx, dword [esp + 0x10]
lea esi, [edx + edi]
movzx ebx, byte [eax + esi]
lea edx, [ebx - 0x30]
cmp edx, 0xa
jb 0x409010
mov dword [esp + 0x1c], esi
cmp bl, 0x2e
jne 0x409037
mov edx, edi
test ecx, ecx
js 0x409012
xor edx, edx
test ecx, ecx
setns dl
mov dword [esp + 0x14], edx
jns 0x409046
mov ecx, edi
mov dword [esp + 0x24], ecx
mov edx, edi
sub edx, dword [esp + 0x14]
mov esi, edx
mov dword [esp + 4], edx
cmp edx, 0xf
mov edx, dword [esp + 0x10]
jl 0x409064
mov esi, 0xf
test esi, esi
movzx ecx, byte [esp + 3]
je 0x409094
cmp esi, 9
mov dword [esp + 0xc], edi
mov dword [esp + 0x20], ebx
jle 0x4090a9
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x18]
lea esi, [edx + ecx]
mov ch, byte [edx + ecx - 1]
cmp ch, 0x2e
jne 0x4090be
mov ch, byte [esi]
add edx, ebp
jmp 0x4090c0
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4090a2
mov edx, dword [esp + 0x44]
mov dword [eax], edx
fldz
jmp 0x4093b2
fldz
cmp dword [esp + 4], 0
jle 0x4090e0
lea ecx, [edx + eax]
mov dword [esp + 4], ecx
jmp 0x4091ed
mov edx, esi
movsx ebx, ch
lea esi, [ebx - 0x30]
cmp dword [esp + 8], 0xb
jl 0x4091dc
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x4090e7
mov ch, byte [edx + 1]
add edx, 2
jmp 0x4090e8
fld st(0)
jmp 0x40924e
inc edx
mov dword [esp + 4], edx
and ebx, 0xa
mov edi, ebx
xor edi, 0xa
mov edx, ebx
mov ebx, esi
and ebx, 0xfffffff5
imul ebx, edi
or esi, 0xa
imul esi, edx
movsx ecx, ch
add esi, ebx
add esi, ecx
add esi, 0xffffffd0
cmp dword [esp + 8], 0xc
jl 0x4091e0
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x40912c
mov ch, byte [edx + 1]
add edx, 2
jmp 0x40912d
inc edx
mov edi, esi
and edi, 0xa
mov ebx, esi
or esi, 0xa
imul esi, edi
xor edi, 0xa
and ebx, 0xfffffff5
imul ebx, edi
movsx ecx, ch
add esi, ebx
add esi, ecx
add esi, 0xffffffd0
cmp dword [esp + 8], 0xd
jl 0x4091dc
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x409167
mov ch, byte [edx + 1]
add edx, 2
jmp 0x409168
inc edx
mov edi, esi
and edi, 0xa
mov ebx, esi
or esi, 0xa
imul esi, edi
xor edi, 0xa
and ebx, 0xfffffff5
imul ebx, edi
movsx ecx, ch
add esi, ebx
add esi, ecx
add esi, 0xffffffd0
cmp dword [esp + 8], 0xe
jl 0x4091dc
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x40919e
mov ch, byte [edx + 1]
add edx, 2
jmp 0x40919f
inc edx
mov edi, esi
and edi, 0xa
mov ebx, esi
or esi, 0xa
imul esi, edi
xor edi, 0xa
and ebx, 0xfffffff5
imul ebx, edi
movsx ecx, ch
add esi, ebx
add esi, ecx
add esi, 0xffffffd0
cmp dword [esp + 8], 0xf
jl 0x4091dc
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x4093cb
mov ch, byte [edx + 1]
add edx, 2
jmp 0x4093cc
mov dword [esp + 4], edx
mov dword [esp + 0x2c], esi
mov esi, 9
fild dword [esp + 0x2c]
inc esi
xor ebx, ebx
jmp 0x409238
mov ch, byte [edx + 1]
add edx, 2
mov dword [esp + 4], edx
mov edi, ebx
and edi, 0xfffffff5
mov edx, ebx
and edx, 0xa
or ebx, 0xa
imul ebx, edx
xor edx, 0xa
imul edx, edi
movsx edi, ch
add ebx, edx
add ebx, edi
add ebx, 0xffffffd0
dec esi
cmp esi, 1
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
jle 0x409246
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
je 0x409200
inc edx
jmp 0x409206
mov dword [esp + 0x28], ebx
fild dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
fxch st(1)
fmul dword [str._knN]
neg ebx
faddp st(1)
mov esi, dword [esp + 0x20]
or esi, 0x20
cmp esi, 0x65
jne 0x409294
movzx edx, byte [eax + ecx + 1]
mov eax, edx
add al, 0xd5
mov ecx, ebx
test al, 0xfd
je 0x40929e
mov edi, dword [esp + 0x10]
add edi, dword [esp + 0x18]
mov eax, edi
mov esi, dword [esp + 0xc]
lea ebp, [edi + esi]
mov edi, dword [esp + 0xc]
jmp 0x4092a9
add eax, edi
add edx, eax
mov ebp, edx
xor eax, eax
jmp 0x4092fd
mov esi, dword [esp + 0x10]
add esi, ebp
mov eax, esi
lea ebp, [esi + edi]
movzx ebx, byte [eax + edi]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x4092f0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xa
mov edi, eax
or eax, 0xa
imul eax, esi
xor esi, 0xa
and edi, 0xfffffff5
imul edi, esi
movsx esi, bl
add esi, eax
lea eax, [edi + esi]
add eax, 0xffffffd0
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x4092c0
cmp dl, 0x2d
jne 0x4092f7
neg eax
mov edi, dword [esp + 0xc]
mov ebx, ecx
lea edx, [edi + ebx]
cmp edx, 0x10
jge 0x40930a
mov edx, 0xf
mov ecx, dword [esp + 0x24]
add ecx, eax
add ecx, edx
mov eax, ecx
sub eax, ebx
sub eax, edi
add eax, 0xfffffff1
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jb 0x40934a
mov edx, 0x1ff
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x409341
mov dword [esi], 0x22
movzx ecx, byte [esp + 3]
fldz
jmp 0x40935d
sub ebx, ecx
lea esi, [ebx + edi]
add esi, 0xf
fld1
test esi, esi
movzx ecx, byte [esp + 3]
je 0x409390
fstp st(0)
fld1
mov esi, 0x43d4e0
jmp 0x40937e
mov edi, edx
shr edi, 1
add esi, 8
cmp edx, 2
mov edx, edi
jb 0x409390
mov edi, edx
xor edi, 0xfffffffe
mov ebx, edx
or ebx, 1
test ebx, edi
je 0x409370
fmul qword [esi]
jmp 0x409370
fld st(1)
fmul st(1)
test eax, eax
jns 0x4093a4
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4093b2
mov dword [eax], ebp
fld st(0)
fchs
cmp cl, 0x2d
je 0x4093c1
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
inc edx
mov dword [esp + 4], edx
mov ebx, esi
and ebx, 0xa
mov edx, esi
or esi, 0xa
imul esi, ebx
xor ebx, 0xa
and edx, 0xfffffff5
imul edx, ebx
movsx ebx, ch
add esi, edx
add esi, ebx
add esi, 0xffffffd0
jmp 0x4091e0