Function at 0x408b40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebx, 1
mov ebp, 2
xor edx, edx
mov esi, dword [esp + 0x48]
jmp 0x408b63
inc ebx
inc ebp
inc edx
mov ch, byte [esi + edx]
movzx eax, ch
lea edi, [eax - 9]
cmp edi, 5
jb 0x408b60
cmp eax, 0x20
je 0x408b60
mov dword [esp + 0x1c], ebp
mov byte [esp + 3], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, esi
mov dword [esp + 0x10], eax
xor ecx, ecx
mov eax, 0xffffffff
jmp 0x408ba9
mov edi, eax
mov ecx, dword [esp + 0xc]
inc ecx
mov eax, edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
add ecx, edi
movzx ebp, byte [ebx + ecx - 1]
lea edi, [ebp - 0x30]
cmp edi, 0xa
jb 0x408ba0
mov dword [esp + 0x20], ebp
cmp ebp, 0x2e
jne 0x408bd1
mov edi, dword [esp + 0xc]
test eax, eax
js 0x408ba2
mov dword [esp + 0x28], ecx
test eax, eax
setns ch
jns 0x408be0
mov eax, dword [esp + 0xc]
mov edi, eax
add edx, dword [esp + 0x10]
xor eax, eax
mov al, ch
mov ecx, eax
mov eax, dword [esp + 0xc]
sub eax, ecx
cmp eax, 0x10
jl 0x408c10
mov eax, edi
mov esi, edi
and esi, 0xfffffff0
add esi, esi
xor eax, 0xf
sub esi, eax
mov eax, 0xf
mov dword [esp + 0x18], esi
jmp 0x408c29
test eax, eax
je 0x408c81
neg ecx
sub edi, ecx
sub edi, dword [esp + 0xc]
mov dword [esp + 0x18], edi
cmp eax, 9
jle 0x408cf6
mov esi, dword [esp + 0x10]
lea edi, [esi + ebx]
mov ch, byte [esi + ebx - 1]
cmp ch, 0x2e
jne 0x408c43
mov ch, byte [edi]
mov edi, dword [esp + 0x1c]
add esi, edi
jmp 0x408c45
mov esi, edi
movsx ecx, ch
mov dword [esp + 0x24], ecx
lea ebp, [ecx - 0x30]
mov edi, eax
not edi
lea ecx, [edi + eax*2]
cmp ecx, 0xa
jl 0x408c7a
mov dword [esp + 0x14], ecx
mov edi, ebp
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x408c97
movzx ecx, byte [esi + 1]
mov byte [esp + 0xb], cl
add esi, 2
mov dword [esp + 4], esi
jmp 0x408ca0
mov edi, esi
jmp 0x408e02
mov eax, dword [esp + 0x4c]
test eax, eax
movzx ecx, byte [esp + 3]
je 0x408c90
mov dword [eax], esi
fldz
jmp 0x408f58
inc esi
mov dword [esp + 4], esi
mov byte [esp + 0xb], cl
mov ebp, edi
and ebp, 0xfffffff5
mov ecx, dword [esp + 0x24]
and ecx, 0xa
mov esi, ecx
xor esi, 0xa
imul esi, ebp
or edi, 0xa
imul edi, ecx
movsx ecx, byte [esp + 0xb]
add edi, esi
lea esi, [ecx + edi]
add esi, 0xffffffd0
mov ecx, dword [esp + 0x14]
add ecx, ecx
sub ecx, eax
cmp ecx, 0xa
jl 0x408ceb
mov dword [esp + 0x14], ecx
mov edi, dword [esp + 4]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x408d0d
mov ch, byte [edi + 1]
add edi, 2
jmp 0x408d0e
mov edi, dword [esp + 4]
mov ebp, esi
jmp 0x408e02
fldz
mov edi, edx
fld st(0)
test eax, eax
mov ecx, dword [esp + 0x20]
jg 0x408e11
jmp 0x408e52
inc edi
mov ebp, esi
mov eax, esi
and eax, 0xfffffff5
and esi, 0xa
or ebp, 0xa
imul ebp, esi
xor esi, 0xa
imul esi, eax
movsx eax, ch
add ebp, esi
add ebp, eax
add ebp, 0xffffffd0
mov ecx, dword [esp + 0x14]
mov eax, ecx
not eax
lea esi, [eax + ecx*2]
cmp esi, 0xa
jl 0x408e02
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x408d51
mov ch, byte [edi + 1]
add edi, 2
jmp 0x408d52
inc edi
mov dword [esp + 4], edi
mov eax, ebp
and eax, 0xfffffff5
mov edi, ebp
and edi, 0xa
or ebp, 0xa
imul ebp, edi
xor edi, 0xa
imul edi, eax
movsx eax, ch
add ebp, edi
add ebp, eax
add ebp, 0xffffffd0
add esi, esi
sub esi, dword [esp + 0x14]
cmp esi, 0xa
jl 0x408d96
mov eax, ebp
mov edi, dword [esp + 4]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x408d9c
mov ch, byte [edi + 1]
add edi, 2
jmp 0x408d9d
mov edi, dword [esp + 4]
jmp 0x408e02
inc edi
mov dword [esp + 4], edi
mov ebp, eax
and ebp, 0xfffffff5
mov edi, eax
and edi, 0xa
or eax, 0xa
imul eax, edi
xor edi, 0xa
imul edi, ebp
movsx ecx, ch
add eax, edi
add eax, ecx
add eax, 0xffffffd0
cmp esi, 0xa
jne 0x408dce
mov edi, dword [esp + 4]
mov ebp, eax
jmp 0x408e02
mov edi, dword [esp + 4]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x408de1
mov ch, byte [edi + 1]
add edi, 2
jmp 0x408de2
inc edi
mov ebp, eax
and eax, 0xfffffff5
mov esi, ebp
and esi, 0xa
or ebp, 0xa
imul ebp, esi
xor esi, 0xa
imul esi, eax
movsx eax, ch
add ebp, esi
add ebp, eax
add ebp, 0xffffffd0
mov dword [esp + 0x30], ebp
mov eax, 9
fild dword [esp + 0x30]
fldz
fstp st(0)
inc eax
xor esi, esi
jmp 0x408e40
mov ch, byte [edi + 1]
add edi, 2
mov ebp, edi
lea esi, [esi + esi*4]
movsx edi, ch
lea esi, [edi + esi*2]
add esi, 0xffffffd0
dec eax
cmp eax, 1
mov ecx, dword [esp + 0x20]
mov edi, ebp
jle 0x408e4a
mov ch, byte [edi]
cmp ch, 0x2e
je 0x408e20
inc edi
jmp 0x408e26
mov dword [esp + 0x2c], esi
fild dword [esp + 0x2c]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or ecx, 0x20
cmp ecx, 0x65
jne 0x408e7b
mov eax, dword [esp + 0x28]
mov ch, byte [ebx + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
je 0x408e83
mov eax, dword [esp + 0x10]
add eax, ebx
jmp 0x408e8b
add edx, dword [esp + 0xc]
xor edi, edi
jmp 0x408edb
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor edi, edi
cmp esi, 9
ja 0x408ed4
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [edi + edi*4]
movsx esi, bl
mov edi, esi
and edi, 0xffffffcf
xor esi, 0xffffffcf
lea eax, [esi + eax*2]
lea edi, [eax + edi*2]
inc edi
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x408eb0
cmp ch, 0x2d
jne 0x408edb
neg edi
mov eax, dword [esp + 0x18]
movzx ecx, byte [esp + 3]
add edi, eax
mov esi, edi
sar esi, 0x1f
mov eax, edi
xor eax, esi
sub eax, esi
cmp eax, 0x200
jb 0x408f0f
mov eax, 0x1ff
mov esi, dword [esp + 0x50]
test esi, esi
je 0x408f0b
mov dword [esi], 0x22
fldz
jmp 0x408f15
fld1
test edi, edi
je 0x408f36
fstp st(0)
fld1
mov esi, 0x440250
jmp 0x408f2e
mov ebx, eax
shr ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x408f36
test al, 1
je 0x408f20
fmul qword [esi]
jmp 0x408f20
fld st(1)
fmul st(1)
test edi, edi
jns 0x408f4a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x408f58
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x408f67
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret