Function at 0x40c8a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov ebx, 1
mov ebp, 2
xor edx, edx
mov esi, dword [esp + 0x38]
jmp 0x40c8c3
inc ebx
inc ebp
inc edx
mov ch, byte [esi + edx]
movzx eax, ch
lea edi, [eax - 9]
cmp edi, 5
jb 0x40c8c0
cmp eax, 0x20
je 0x40c8c0
mov byte [esp + 0xb], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, esi
mov dword [esp + 0x10], eax
xor eax, eax
mov ecx, 0xffffffff
jmp 0x40c909
mov edi, ecx
mov eax, dword [esp + 0xc]
inc eax
mov ecx, edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], eax
add eax, edi
movzx esi, byte [ebx + eax - 1]
lea edi, [esi - 0x30]
cmp edi, 0xa
jb 0x40c900
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
cmp esi, 0x2e
jne 0x40c935
mov edi, dword [esp + 0xc]
test ecx, ecx
js 0x40c902
test ecx, ecx
setns byte [esp]
jns 0x40c941
mov ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
add edx, dword [esp + 0x10]
xor ecx, ecx
movzx eax, byte [esp]
mov cl, al
mov edi, dword [esp + 0xc]
sub edi, ecx
cmp edi, 0x10
mov esi, dword [esp + 0x38]
jl 0x40c979
mov eax, dword [esp + 4]
mov esi, eax
and esi, 0xfffffff0
not eax
and eax, 0xf
sub esi, eax
mov edi, 0xf
mov eax, esi
jmp 0x40c992
test edi, edi
mov eax, dword [esp + 4]
je 0x40c9d4
neg ecx
sub eax, ecx
sub eax, dword [esp + 0xc]
cmp edi, 9
jle 0x40ca36
mov esi, dword [esp + 0x10]
lea ecx, [esi + ebx]
mov dword [esp], ecx
mov ch, byte [esi + ebx - 1]
cmp ch, 0x2e
jne 0x40c9af
mov ecx, dword [esp]
mov ch, byte [ecx]
add esi, ebp
mov dword [esp], esi
movsx ecx, ch
add ecx, 0xffffffd0
cmp edi, 0xb
jb 0x40cb01
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40c9fb
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40c9fc
mov eax, dword [esp + 0x3c]
test eax, eax
movzx ecx, byte [esp + 0xb]
je 0x40c9e3
mov dword [eax], esi
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x40c9f4
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x40cc6f
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xb
je 0x40cb01
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40ca4a
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40ca4b
fldz
mov dword [esp], edx
fld st(0)
test edi, edi
jg 0x40cb10
jmp 0x40cb54
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xd
jb 0x40cb01
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40ca85
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40ca86
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xd
je 0x40cb01
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40cabc
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40cabd
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xf
jb 0x40cb01
mov edi, ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40caf1
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40caf2
inc esi
mov dword [esp], esi
lea esi, [edi + edi*4]
movsx edi, ch
lea ecx, [edi + esi*2]
add ecx, 0xffffffd0
mov dword [esp + 0x20], ecx
mov edi, 9
fild dword [esp + 0x20]
fldz
fstp st(0)
mov dword [esp + 4], eax
inc edi
xor esi, esi
jmp 0x40cb3f
mov ch, byte [eax + 1]
add eax, 2
mov dword [esp], eax
lea esi, [esi + esi*4]
movsx eax, ch
lea esi, [eax + esi*2]
add esi, 0xffffffd0
dec edi
cmp edi, 1
mov eax, dword [esp + 4]
jle 0x40cb4c
mov eax, dword [esp]
mov ch, byte [eax]
cmp ch, 0x2e
je 0x40cb20
inc eax
jmp 0x40cb26
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov ecx, dword [esp + 0x18]
or ecx, 0x20
cmp ecx, 0x65
jne 0x40cb83
mov edi, eax
mov eax, dword [esp + 0x14]
mov ch, byte [ebx + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
je 0x40cb8b
mov eax, dword [esp + 0x10]
add eax, ebx
jmp 0x40cb91
add edx, dword [esp + 0xc]
xor ebp, ebp
jmp 0x40cbe7
mov eax, dword [esp + 0x10]
add eax, ebp
mov esi, dword [esp + 0xc]
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor ebp, ebp
cmp esi, 9
mov eax, edi
ja 0x40cbe0
xor ebp, ebp
nop
nop
nop
nop
nop
nop
mov edi, ebp
and edi, 0xa
mov esi, ebp
or ebp, 0xa
imul ebp, edi
xor edi, 0xa
and esi, 0xfffffff5
imul esi, edi
movsx edi, bl
add edi, ebp
lea ebp, [esi + edi]
add ebp, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40cbb0
cmp ch, 0x2d
jne 0x40cbe7
neg ebp
movzx ecx, byte [esp + 0xb]
add ebp, eax
mov esi, ebp
sar esi, 0x1f
mov eax, ebp
xor eax, esi
sub eax, esi
cmp eax, 0x200
jl 0x40cc17
mov eax, 0x1ff
mov esi, dword [esp + 0x40]
test esi, esi
je 0x40cc13
mov dword [esi], 0x22
fldz
jmp 0x40cc1d
fld1
test ebp, ebp
je 0x40cc46
fstp st(0)
fld1
mov esi, 0x448718
jmp 0x40cc3e
mov ebx, eax
sar ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x40cc46
test al, 1
je 0x40cc30
fmul qword [esi]
jmp 0x40cc30
fld st(1)
fmul st(1)
test ebp, ebp
jns 0x40cc5a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x40cc68
mov dword [eax], edx
cmp cl, 0x2d
jne 0x40cc6f
fchs
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret