Function at 0x40ca00
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edi, 1
mov ebp, 2
xor eax, eax
mov edx, dword [esp + 0x40]
jmp 0x40ca23
inc edi
inc ebp
inc eax
movzx ebx, byte [edx + eax]
movzx ecx, bl
lea esi, [ecx - 9]
cmp esi, 5
jb 0x40ca20
cmp ecx, 0x20
je 0x40ca20
mov dword [esp + 0x14], eax
mov ecx, ebx
add cl, 0xd5
test cl, 0xfd
mov ecx, 0
sete cl
add ecx, edx
xor eax, eax
mov esi, 0xffffffff
mov dword [esp + 0xc], ecx
jmp 0x40ca6f
mov ecx, esi
mov eax, dword [esp + 4]
inc eax
mov esi, ecx
mov ecx, dword [esp + 0xc]
mov edi, edx
mov dword [esp + 4], eax
add eax, ecx
mov edx, edi
movzx edi, byte [edi + eax - 1]
lea ecx, [edi - 0x30]
cmp ecx, 0xa
jb 0x40ca60
mov dword [esp + 0x20], edi
cmp edi, 0x2e
jne 0x40ca95
mov ecx, dword [esp + 4]
test esi, esi
js 0x40ca62
test esi, esi
setns bh
jns 0x40caa0
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x14]
add edi, dword [esp + 0xc]
mov dword [esp + 0x14], edi
xor ecx, ecx
mov cl, bh
mov edi, dword [esp + 4]
mov dword [esp], ecx
sub edi, ecx
cmp edi, 0x10
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], edx
mov byte [esp + 0xb], bl
jl 0x40cada
add esi, 0xfffffff1
mov dword [esp], 0xf
mov dword [esp + 0x18], esi
jmp 0x40cb08
test edi, edi
je 0x40cb42
mov edx, dword [esp]
neg edx
mov eax, edi
xor eax, esi
mov dword [esp], edi
mov ecx, dword [esp + 4]
not ecx
sub ecx, edx
and ecx, esi
add ecx, ecx
sub ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [esp]
cmp edx, 9
jle 0x40cb8b
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
lea esi, [ecx + edi]
movzx eax, byte [ecx + edi - 1]
cmp al, 0x2e
jne 0x40cb22
movzx eax, byte [esi]
lea esi, [ecx + ebp]
movsx ecx, al
add ecx, 0xffffffd0
cmp dword [esp], 0xb
jb 0x40cc22
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40cb64
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40cb65
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x40cb50
mov eax, dword [esp + 0x40]
mov dword [ecx], eax
fldz
fld st(0)
fchs
cmp bl, 0x2d
jne 0x40cdc7
jmp 0x40cdcd
inc esi
lea ecx, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ecx*2]
add ecx, 0xffffffd0
cmp dword [esp], 0xb
je 0x40cc22
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40cbac
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40cbad
fldz
mov esi, dword [esp + 0x14]
fld st(0)
test edx, edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
jg 0x40cc31
jmp 0x40cca5
inc esi
lea ecx, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ecx*2]
add ecx, 0xffffffd0
cmp dword [esp], 0xd
jb 0x40cc22
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40cbcf
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40cbd0
inc esi
lea ecx, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ecx*2]
add ecx, 0xffffffd0
cmp dword [esp], 0xd
je 0x40cc22
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40cbf2
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40cbf3
inc esi
lea ecx, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ecx*2]
add ecx, 0xffffffd0
cmp dword [esp], 0xf
jb 0x40cc22
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40cc15
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40cc16
inc esi
lea ecx, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ecx*2]
add ecx, 0xffffffd0
mov dword [esp + 0x28], ecx
mov edx, 9
fild dword [esp + 0x28]
fldz
fstp st(0)
inc edx
xor ebx, ebx
mov dword [esp], ebp
jmp 0x40cc8e
movzx ecx, byte [esi + 1]
add esi, 2
mov edi, esi
movsx esi, cl
mov ecx, esi
and ecx, 0xffffffcf
xor esi, 0xffffffcf
mov eax, ebx
or eax, 0xa
mov ebp, ebx
and ebp, 0xa
imul eax, ebp
and ebx, 0xfffffff5
xor ebp, 0xa
imul ebp, ebx
add ebp, eax
add ebp, esi
lea ebx, [ecx*2 + 1]
add ebx, ebp
mov eax, edx
dec eax
mov edx, eax
cmp eax, 1
mov ebp, dword [esp]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov esi, edi
jle 0x40cc99
movzx ecx, byte [esi]
cmp cl, 0x2e
je 0x40cc40
inc esi
jmp 0x40cc47
mov dword [esp + 0x24], ebx
fild dword [esp + 0x24]
mov edi, dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or ecx, 0x20
cmp ecx, 0x65
jne 0x40cccd
movzx eax, byte [edi + eax]
mov ecx, eax
add cl, 0xd5
test cl, 0xfd
je 0x40ccd9
mov ecx, dword [esp + 0xc]
add ecx, edi
jmp 0x40ccdf
mov edx, dword [esp + 0x14]
add edx, dword [esp + 4]
xor esi, esi
jmp 0x40cd36
mov ecx, dword [esp + 0xc]
add ecx, ebp
mov esi, dword [esp + 4]
lea edx, [ecx + esi]
movzx ebx, byte [ecx + esi]
lea ecx, [ebx - 0x30]
xor esi, esi
cmp ecx, 9
ja 0x40cd30
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, esi
and ecx, 0xfffffff5
mov edi, esi
and edi, 0xa
or esi, 0xa
imul esi, edi
xor edi, 0xa
imul edi, ecx
movsx ecx, bl
add ecx, esi
lea esi, [edi + ecx]
add esi, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov ecx, ebx
add ecx, 0xffffffd0
cmp ecx, 0xa
jb 0x40cd00
cmp al, 0x2d
jne 0x40cd36
neg esi
mov eax, esi
mov ecx, dword [esp + 0x18]
and eax, ecx
xor esi, ecx
lea eax, [esi + eax*2]
mov ecx, eax
sar ecx, 0x1f
mov ebx, eax
xor ebx, ecx
sub ebx, ecx
cmp ebx, 0x200
jb 0x40cd6d
mov ebx, 0x1ff
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x40cd69
mov dword [ecx], 0x22
fldz
jmp 0x40cd73
fld1
test eax, eax
je 0x40cd97
fstp st(0)
fld1
mov esi, 0x446690
jmp 0x40cd8e
mov ecx, ebx
shr ecx, 1
add esi, 8
cmp ebx, 2
mov ebx, ecx
jb 0x40cd97
test bl, 1
je 0x40cd80
fmul qword [esi]
jmp 0x40cd80
fld st(1)
fmul st(1)
test eax, eax
jns 0x40cdab
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x44]
test eax, eax
movzx ecx, byte [esp + 0xb]
je 0x40cdbe
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x40cdcd
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret