Function at 0x408fd0
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 0x408ff3
inc esi
inc ebp
inc eax
movzx ecx, byte [ebx + eax]
movzx edx, cl
lea edi, [edx - 9]
cmp edi, 5
jb 0x408ff0
cmp edx, 0x20
je 0x408ff0
mov byte [esp + 7], cl
mov edx, ecx
add dl, 0xd5
test dl, 0xfd
mov edx, 0
sete dl
add edx, ebx
xor edi, edi
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], edx
jmp 0x40903d
mov edx, dword [esp + 0xc]
inc edi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
lea ebx, [edx + edi]
movzx ecx, byte [eax + ebx]
lea edx, [ecx - 0x30]
cmp edx, 0xa
jb 0x409030
mov dword [esp + 0x24], ebx
cmp cl, 0x2e
jne 0x40905e
mov edx, edi
cmp dword [esp + 0xc], 0
js 0x409034
mov dword [esp + 0x20], ecx
cmp dword [esp + 0xc], 0
setns ch
jns 0x409070
mov dword [esp + 0xc], edi
xor edx, edx
mov dl, ch
mov ecx, edi
mov dword [esp + 0x18], edx
sub ecx, edx
mov edx, ecx
mov dword [esp], ecx
cmp ecx, 0xf
movzx ecx, byte [esp + 7]
mov ebx, dword [esp + 0x44]
jl 0x409094
mov edx, 0xf
test edx, edx
je 0x4090b7
cmp edx, 9
mov dword [esp + 0x14], edi
jle 0x4090c8
mov edi, dword [esp + 8]
lea ebx, [edi + esi]
mov ch, byte [edi + esi - 1]
cmp ch, 0x2e
jne 0x4090de
mov ch, byte [ebx]
add edi, ebp
jmp 0x4090e0
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4090c1
mov dword [eax], ebx
fldz
jmp 0x409406
fldz
cmp dword [esp], 0
jle 0x409110
mov edi, dword [esp + 8]
add edi, eax
mov dword [esp], edi
jmp 0x409252
mov edi, ebx
movsx ecx, ch
lea ebx, [ecx - 0x30]
cmp edx, 0xb
jl 0x409108
mov dword [esp + 0x1c], edx
movzx edx, byte [edi]
mov byte [esp + 0x10], dl
cmp dl, 0x2e
jne 0x409117
movzx edx, byte [edi + 1]
mov byte [esp + 0x10], dl
add edi, 2
jmp 0x409118
mov dword [esp], edi
jmp 0x409245
fld st(0)
jmp 0x409294
inc edi
mov dword [esp], edi
mov edx, ebx
and edx, 0xfffffff5
and ecx, 0xa
mov edi, ecx
xor edi, 0xa
imul edi, edx
or ebx, 0xa
imul ebx, ecx
movsx ecx, byte [esp + 0x10]
add ebx, edi
add ebx, ecx
add ebx, 0xffffffd0
mov ecx, dword [esp + 0x1c]
cmp ecx, 0xc
jl 0x409245
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40915c
mov ch, byte [edi + 1]
add edi, 2
jmp 0x40915d
inc edi
mov dword [esp], edi
mov edx, ebx
and edx, 0xfffffff5
mov edi, ebx
and edi, 0xa
or ebx, 0xa
imul ebx, edi
xor edi, 0xa
imul edi, edx
movsx ecx, ch
add ebx, edi
add ebx, ecx
add ebx, 0xffffffd0
mov edx, dword [esp + 0x1c]
cmp edx, 0xd
jl 0x409245
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40919f
mov ch, byte [edi + 1]
add edi, 2
jmp 0x4091a0
inc edi
mov dword [esp], edi
mov edi, ebx
and edi, 0xfffffff5
mov dword [esp + 0x10], edi
mov edi, ebx
and edi, 0xa
or ebx, 0xa
imul ebx, edi
xor edi, 0xa
imul edi, dword [esp + 0x10]
movsx ecx, ch
add ebx, edi
add ebx, ecx
add ebx, 0xffffffd0
cmp edx, 0xe
jl 0x409245
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x4091e0
mov ch, byte [edi + 1]
add edi, 2
jmp 0x4091e1
inc edi
mov dword [esp], edi
mov edi, ebx
and edi, 0xfffffff5
mov dword [esp + 0x10], edi
mov edi, ebx
and edi, 0xa
or ebx, 0xa
imul ebx, edi
xor edi, 0xa
imul edi, dword [esp + 0x10]
movsx ecx, ch
add ebx, edi
add ebx, ecx
add ebx, 0xffffffd0
cmp edx, 0xf
jl 0x409245
mov edx, dword [esp]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x409221
mov ch, byte [edx + 1]
add edx, 2
jmp 0x409222
inc edx
mov dword [esp], edx
mov edi, ebx
and ebx, 0xfffffff5
mov edx, edi
and edx, 0xa
or edi, 0xa
imul edi, edx
xor edx, 0xa
imul edx, ebx
movsx ebx, ch
add edi, edx
add ebx, edi
add ebx, 0xffffffd0
mov dword [esp + 0x2c], ebx
mov edx, 9
fild dword [esp + 0x2c]
inc edx
xor ebx, ebx
jmp 0x40927f
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp], edi
lea ebx, [ebx + ebx*4]
movsx edi, ch
lea ebx, [edi + ebx*2]
add ebx, 0xffffffd0
dec edx
cmp edx, 1
mov edi, dword [esp + 0x14]
jle 0x40928c
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
je 0x409260
inc edi
jmp 0x409266
mov dword [esp + 0x28], ebx
fild dword [esp + 0x28]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0xc]
fxch st(1)
fmul dword [str._knN]
neg dword [esp + 0x18]
faddp st(1)
mov ecx, dword [esp + 0x20]
or ecx, 0x20
cmp ecx, 0x65
jne 0x4092de
mov ecx, dword [esp + 0x24]
movzx eax, byte [eax + ecx + 1]
mov edx, eax
add dl, 0xd5
test dl, 0xfd
je 0x4092f3
mov edi, dword [esp + 8]
add edi, esi
mov edx, edi
mov esi, dword [esp + 0x14]
lea ebp, [edi + esi]
mov edi, dword [esp + 0x14]
jmp 0x4092fe
add eax, edi
add edx, eax
mov dword [esp + 8], edx
xor edx, edx
mov ebp, dword [esp + 0x18]
movzx ecx, byte [esp + 7]
jmp 0x40935a
mov esi, dword [esp + 8]
add esi, ebp
mov edx, esi
lea ebp, [esi + edi]
movzx ebx, byte [edx + edi]
lea esi, [ebx - 0x30]
xor edx, edx
cmp esi, 9
movzx ecx, byte [esp + 7]
ja 0x409344
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [edx + edx*4]
movsx esi, bl
mov edi, esi
xor edi, 0xffffffcf
and esi, 0xffffffcf
lea edx, [edi + edx*2]
lea edx, [edx + esi*2]
inc edx
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x409320
mov dword [esp + 8], ebp
cmp al, 0x2d
jne 0x40934e
neg edx
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x18]
lea eax, [edi + ebp]
cmp eax, 0x10
jge 0x409367
mov eax, 0xf
add ebx, edx
add ebx, eax
mov eax, ebx
sub eax, ebp
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 0x40939e
mov edx, 0x1ff
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x40939a
mov dword [esi], 0x22
fldz
jmp 0x4093ac
sub ebp, ebx
lea esi, [edi + ebp]
add esi, 0xf
fld1
test esi, esi
je 0x4093e0
fstp st(0)
fld1
mov esi, 0x43e4e0
jmp 0x4093ce
mov edi, edx
shr edi, 1
add esi, 8
cmp edx, 2
mov edx, edi
jb 0x4093e0
mov edi, edx
xor edi, 0xfffffffe
mov ebx, edx
or ebx, 1
test ebx, edi
je 0x4093c0
fmul qword [esi]
jmp 0x4093c0
fld st(1)
fmul st(1)
test eax, eax
jns 0x4093f4
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
mov ebp, dword [esp + 8]
je 0x409406
mov dword [eax], ebp
fld st(0)
fchs
cmp cl, 0x2d
je 0x409415
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret