Function at 0x40cb10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebx, 1
mov edi, 2
xor edx, edx
mov eax, dword [esp + 0x3c]
jmp 0x40cb33
inc ebx
inc edi
inc edx
mov ch, byte [eax + edx]
movzx esi, ch
lea ebp, [esi - 9]
cmp ebp, 5
jb 0x40cb30
cmp esi, 0x20
je 0x40cb30
mov byte [esp + 3], ch
add ch, 0xd5
test ch, 0xfd
mov ecx, 0
sete cl
add ecx, eax
xor esi, esi
mov eax, 0xffffffff
jmp 0x40cb79
mov ebp, eax
mov esi, dword [esp + 4]
inc esi
mov eax, ebp
mov dword [esp + 4], esi
add esi, ecx
mov dword [esp + 0x1c], esi
movzx ebp, byte [ebx + esi - 1]
lea esi, [ebp - 0x30]
cmp esi, 0xa
jb 0x40cb70
mov dword [esp + 0x18], ebp
cmp ebp, 0x2e
jne 0x40cba1
mov ebp, dword [esp + 4]
test eax, eax
js 0x40cb72
mov dword [esp + 0x14], ebx
mov dword [esp + 8], ecx
test eax, eax
setns byte [esp + 0xc]
mov esi, dword [esp + 4]
jns 0x40cbb8
mov eax, esi
add edx, dword [esp + 8]
xor ecx, ecx
movzx ebx, byte [esp + 0xc]
mov cl, bl
sub esi, ecx
cmp esi, 0x10
jl 0x40cbe3
mov ecx, eax
xor ecx, 0xf
and eax, 0xfffffff0
add eax, eax
sub eax, ecx
mov esi, 0xf
mov dword [esp + 0xc], eax
jmp 0x40cc0a
test esi, esi
je 0x40cc47
neg ecx
mov ebp, eax
not ebp
and ebp, esi
mov ebx, ecx
mov ecx, dword [esp + 4]
not ecx
sub ecx, ebx
and ecx, eax
sub ecx, ebp
mov dword [esp + 0xc], ecx
cmp esi, 9
jle 0x40cc98
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x14]
lea ebx, [ecx + eax]
movzx eax, byte [ecx + eax - 1]
cmp al, 0x2e
jne 0x40cc24
movzx eax, byte [ebx]
lea ebx, [ecx + edi]
movsx eax, al
add eax, 0xffffffd0
cmp esi, 0xb
jb 0x40cd2b
mov dword [esp + 0x10], eax
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40cc6b
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40cc6c
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x40cc55
mov eax, dword [esp + 0x3c]
mov dword [ecx], eax
fldz
fld st(0)
fchs
cmp byte [esp + 3], 0x2d
jne 0x40ceb7
jmp 0x40cebd
inc ebx
mov ebp, dword [esp + 0x10]
lea ebp, [ebp + ebp*4]
movsx eax, al
lea eax, [eax + ebp*2]
add eax, 0xffffffd0
cmp esi, 0xb
je 0x40cd2b
mov ebp, eax
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40ccaf
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40ccb0
fldz
mov ebx, edx
fld st(0)
test esi, esi
mov ecx, dword [esp + 0x18]
jg 0x40cd3a
jmp 0x40cd94
inc ebx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea eax, [eax + ebp*2]
add eax, 0xffffffd0
cmp esi, 0xd
jb 0x40cd2b
mov ebp, eax
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40ccd4
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40ccd5
inc ebx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea eax, [eax + ebp*2]
add eax, 0xffffffd0
cmp esi, 0xd
je 0x40cd2b
mov ebp, eax
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40ccf9
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40ccfa
inc ebx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea eax, [eax + ebp*2]
add eax, 0xffffffd0
cmp esi, 0xf
jb 0x40cd2b
mov esi, eax
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40cd1e
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40cd1f
inc ebx
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
mov dword [esp + 0x24], eax
mov esi, 9
fild dword [esp + 0x24]
fldz
fstp st(0)
mov dword [esp + 0x10], edi
inc esi
xor eax, eax
jmp 0x40cd7e
mov ch, byte [ebx + 1]
add ebx, 2
add eax, eax
lea eax, [eax + eax*4]
movsx ebp, ch
add ebp, 0xffffffd0
mov ecx, ebp
and ecx, eax
xor ebp, eax
lea eax, [ecx*2]
add eax, ebp
mov ecx, esi
dec ecx
mov esi, ecx
cmp ecx, 1
mov ecx, dword [esp + 0x18]
jle 0x40cd88
mov ch, byte [ebx]
cmp ch, 0x2e
je 0x40cd50
inc ebx
jmp 0x40cd56
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
mov edi, dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or ecx, 0x20
cmp ecx, 0x65
jne 0x40cdc5
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ch, byte [edx + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
mov esi, dword [esp + 4]
je 0x40cdcd
mov eax, dword [esp + 8]
add eax, edx
jmp 0x40cdd3
add edx, dword [esp + 4]
xor eax, eax
jmp 0x40ce26
mov eax, dword [esp + 8]
add eax, edi
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40ce1f
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
or esi, 0xa
mov edi, eax
and edi, 0xa
imul esi, edi
xor edi, 0xa
and eax, 0xfffffff5
imul eax, edi
movsx edi, bl
add edi, esi
add eax, edi
add eax, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40cdf0
cmp ch, 0x2d
jne 0x40ce26
neg eax
add eax, dword [esp + 0xc]
mov ecx, eax
sar ecx, 0x1f
mov ebx, eax
xor ebx, ecx
sub ebx, ecx
cmp ebx, 0x200
jb 0x40ce54
mov ebx, 0x1ff
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x40ce50
mov dword [ecx], 0x22
fldz
jmp 0x40ce5f
fld1
test eax, eax
movzx ecx, byte [esp + 3]
je 0x40ce8c
fstp st(0)
fld1
mov esi, 0x44d718
jmp 0x40ce83
mov ecx, ebx
shr ecx, 1
add esi, 8
cmp ebx, 2
mov ebx, ecx
movzx ecx, byte [esp + 3]
jb 0x40ce8c
test bl, 1
je 0x40ce70
fmul qword [esi]
jmp 0x40ce70
fld st(1)
fmul st(1)
test eax, eax
jns 0x40cea0
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40ceae
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x40cebd
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret