Function at 0x40caa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov esi, 1
mov ebp, 2
xor eax, eax
mov edx, dword [esp + 0x48]
jmp 0x40cac3
inc esi
inc ebp
inc eax
mov ch, byte [edx + eax]
movzx edi, ch
lea ebx, [edi - 9]
cmp ebx, 5
jb 0x40cac0
cmp edi, 0x20
je 0x40cac0
mov dword [esp + 0x1c], ebp
mov byte [esp + 3], ch
add ch, 0xd5
xor ebx, ebx
test ch, 0xfd
sete bl
add ebx, edx
xor edi, edi
mov ebp, 0xffffffff
mov dword [esp + 0x14], ebx
jmp 0x40cb09
mov ebx, ebp
inc edi
mov ebp, ebx
mov ebx, dword [esp + 0x14]
add ebx, edi
mov dword [esp + 0x28], ebx
movzx ecx, byte [esi + ebx - 1]
lea ebx, [ecx - 0x30]
cmp ebx, 0xa
jb 0x40cb00
mov dword [esp + 0x24], ecx
cmp ecx, 0x2e
jne 0x40cb2b
mov ebx, edi
test ebp, ebp
js 0x40cb02
xor ebx, ebx
test ebp, ebp
setns ch
jns 0x40cb36
mov ebp, edi
mov bl, ch
mov dword [esp + 4], edi
mov ecx, edi
sub ecx, ebx
mov edi, dword [esp + 0x14]
je 0x40cba9
neg ebx
cmp ecx, 9
mov dword [esp + 0x20], ebp
mov dword [esp + 8], ebx
jle 0x40cbd0
lea edx, [ecx - 0xa]
mov dword [esp + 0xc], edx
lea ebp, [edi + esi]
movzx edx, byte [edi + esi - 1]
cmp dl, 0x2e
jne 0x40cb7c
movzx edx, byte [ebp]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
lea ebp, [edi + ebx]
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
movsx edx, dl
mov dword [esp + 0x18], edx
add edx, 0xffffffd0
cmp dword [esp + 0xc], 0
je 0x40cd25
mov dword [esp + 0x10], ecx
mov ch, byte [ebp]
cmp ch, 0x2e
jne 0x40cbe9
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x40cbea
mov eax, dword [esp + 0x4c]
test eax, eax
movzx ecx, byte [esp + 3]
je 0x40cbb8
mov dword [eax], edx
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x40cbc9
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x40cf09
fldz
test ecx, ecx
jle 0x40cbe2
lea ebp, [edi + eax]
mov edi, dword [esp + 4]
jmp 0x40cd2d
fld st(0)
jmp 0x40cda2
inc ebp
mov dword [esp + 0xc], ebp
mov ebx, edx
and ebx, 0xfffffff5
mov ebp, dword [esp + 0x18]
and ebp, 0xa
mov edi, ebp
xor edi, 0xa
imul edi, ebx
or edx, 0xa
imul edx, ebp
movsx ebx, ch
add edx, edi
add edx, ebx
add edx, 0xffffffd0
mov ecx, dword [esp + 0x10]
cmp ecx, 0xc
jl 0x40cc36
lea edi, [ecx - 0xc]
mov ebp, dword [esp + 0xc]
mov ch, byte [ebp]
cmp ch, 0x2e
mov dword [esp + 0x18], edi
jne 0x40cc47
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x40cc48
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
mov ebp, dword [esp + 0xc]
jmp 0x40cd25
inc ebp
mov ebx, edx
and ebx, 0xfffffff5
mov edi, edx
and edi, 0xa
or edx, 0xa
imul edx, edi
xor edi, 0xa
imul edi, ebx
movsx ebx, ch
add edx, edi
add edx, ebx
add edx, 0xffffffd0
cmp dword [esp + 0x18], 0
je 0x40cd1d
mov ch, byte [ebp]
cmp ch, 0x2e
jne 0x40cc83
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x40cc84
inc ebp
mov ebx, edx
and ebx, 0xfffffff5
mov edi, edx
and edi, 0xa
or edx, 0xa
imul edx, edi
xor edi, 0xa
imul edi, ebx
movsx ebx, ch
add edx, edi
add edx, ebx
add edx, 0xffffffd0
mov ecx, dword [esp + 0x10]
cmp ecx, 0xe
jl 0x40cd1d
add ecx, 0xfffffff2
mov dword [esp + 0x10], ecx
mov ch, byte [ebp]
cmp ch, 0x2e
jne 0x40ccc4
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x40ccc5
inc ebp
mov ebx, edx
and ebx, 0xfffffff5
mov edi, edx
and edi, 0xa
or edx, 0xa
imul edx, edi
xor edi, 0xa
imul edi, ebx
movsx ebx, ch
add edx, edi
add edx, ebx
add edx, 0xffffffd0
cmp dword [esp + 0x10], 0
je 0x40cd1d
mov ch, byte [ebp]
cmp ch, 0x2e
jne 0x40ccfc
mov ch, byte [ebp + 1]
add ebp, 2
jmp 0x40ccfd
inc ebp
mov ebx, edx
and ebx, 0xfffffff5
mov edi, edx
and edi, 0xa
or edx, 0xa
imul edx, edi
xor edi, 0xa
imul edi, ebx
movsx ebx, ch
add edx, edi
add edx, ebx
add edx, 0xffffffd0
mov ebx, dword [esp + 8]
mov edi, dword [esp + 4]
mov dword [esp + 0x30], edx
fild dword [esp + 0x30]
mov dword [esp + 0xc], ebp
lea edx, [ebx + edi]
cmp edx, 9
jl 0x40cd3e
mov edx, 9
inc edx
xor ebx, ebx
jmp 0x40cd84
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp + 0xc], edi
mov edi, ebx
or edi, 0xa
mov ebp, ebx
and ebp, 0xa
imul edi, ebp
xor ebp, 0xa
and ebx, 0xfffffff5
imul ebx, ebp
movsx ebp, ch
add ebx, edi
add ebx, ebp
add ebx, 0xffffffd0
dec edx
cmp edx, 1
mov ebp, dword [esp + 0x20]
jle 0x40cd92
mov edi, dword [esp + 0xc]
mov ch, byte [edi]
cmp ch, 0x2e
je 0x40cd50
inc edi
jmp 0x40cd56
mov dword [esp + 0x2c], ebx
fild dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 8]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov ecx, dword [esp + 0x24]
or ecx, 0x20
cmp ecx, 0x65
jne 0x40cdcc
mov eax, dword [esp + 0x28]
movzx edx, byte [esi + eax]
mov eax, edx
add al, 0xd5
test al, 0xfd
je 0x40cdd6
add edi, esi
jmp 0x40cdda
add eax, dword [esp + 4]
add edi, eax
xor eax, eax
jmp 0x40ce41
add edi, dword [esp + 0x1c]
mov eax, edi
mov ebx, dword [esp + 4]
lea ebp, [edi + ebx]
mov edi, ebx
movzx ebx, byte [eax + ebx]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40ce30
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 0xa
mov esi, eax
or eax, 0xa
imul eax, edi
xor edi, 0xa
and esi, 0xfffffff5
imul esi, edi
movsx edi, bl
add edi, eax
lea eax, [esi + edi]
add eax, 0xffffffd0
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40ce00
cmp dl, 0x2d
jne 0x40ce37
neg eax
mov edi, ebp
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 4]
add edx, ebx
cmp edx, 0x10
jge 0x40ce51
mov edx, 0xf
add ebp, eax
add ebp, edx
mov eax, ebp
sub eax, ebx
mov ecx, ebx
mov ebx, dword [esp + 4]
sub eax, ebx
add eax, 0xfffffff1
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jl 0x40ce95
mov ebp, edi
mov edx, 0x1ff
mov esi, dword [esp + 0x50]
test esi, esi
je 0x40ce8c
mov dword [esi], 0x22
movzx ecx, byte [esp + 3]
fldz
jmp 0x40ceac
mov esi, ebp
mov ebp, edi
sub ecx, esi
lea esi, [ecx + ebx]
add esi, 0xf
fld1
test esi, esi
movzx ecx, byte [esp + 3]
je 0x40cee0
fstp st(0)
fld1
mov esi, 0x445718
jmp 0x40cece
mov edi, edx
sar edi, 1
add esi, 8
cmp edx, 2
mov edx, edi
jb 0x40cee0
mov edi, edx
xor edi, 0xfffffffe
mov ebx, edx
or ebx, 1
test ebx, edi
je 0x40cec0
fmul qword [esi]
jmp 0x40cec0
fld st(1)
fmul st(1)
test eax, eax
jns 0x40cef4
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 0x40cf02
mov dword [eax], ebp
cmp cl, 0x2d
jne 0x40cf09
fchs
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret