Function at 0x40ce90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov ebp, 1
mov ebx, 2
xor edx, edx
mov esi, dword [esp + 0x48]
jmp 0x40ceb3
inc ebp
inc ebx
inc edx
mov ch, byte [esi + edx]
movzx eax, ch
lea edi, [eax - 9]
cmp edi, 5
jb 0x40ceb0
cmp eax, 0x20
je 0x40ceb0
mov byte [esp + 0x13], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, esi
mov dword [esp + 0x1c], eax
xor eax, eax
mov esi, 0xffffffff
jmp 0x40cef9
mov edi, esi
mov eax, dword [esp + 0x18]
inc eax
mov esi, edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
add eax, edi
mov ecx, eax
movzx eax, byte [ebp + eax - 1]
lea edi, [eax - 0x30]
cmp edi, 0xa
jb 0x40cef0
mov dword [esp + 0x28], eax
cmp eax, 0x2e
mov eax, esi
jne 0x40cf25
mov edi, dword [esp + 0x18]
test eax, eax
js 0x40cef2
mov dword [esp + 4], ebx
test eax, eax
setns byte [esp + 8]
mov edi, dword [esp + 0x18]
jns 0x40cf38
mov esi, edi
add edx, dword [esp + 0x1c]
movzx eax, byte [esp + 8]
xor ebx, ebx
mov bl, al
mov dword [esp + 8], ebx
sub edi, ebx
cmp edi, 0x10
mov eax, ecx
jl 0x40cf6d
mov ecx, esi
and esi, 0xfffffff0
add esi, esi
xor ecx, 0xf
sub esi, ecx
mov edi, 0xf
mov dword [esp + 0x20], esi
mov ebx, dword [esp + 4]
jmp 0x40cf8e
test edi, edi
je 0x40cfe2
mov ecx, dword [esp + 8]
neg ecx
sub esi, ecx
sub esi, dword [esp + 0x18]
mov dword [esp + 0x20], esi
cmp edi, 9
mov ebx, dword [esp + 4]
jle 0x40d08c
mov esi, dword [esp + 0x1c]
lea ecx, [esi + ebp]
mov dword [esp + 8], ecx
mov ch, byte [esi + ebp - 1]
cmp ch, 0x2e
jne 0x40cfae
mov ecx, dword [esp + 8]
mov ch, byte [ecx]
add esi, ebx
mov dword [esp + 8], esi
movsx ecx, ch
mov dword [esp + 4], ecx
add ecx, 0xffffffd0
cmp edi, 0xb
jb 0x40d23b
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 8]
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x40d00d
movzx ecx, byte [esi + 1]
mov byte [esp + 3], cl
add esi, 2
mov dword [esp + 8], esi
jmp 0x40d016
mov eax, dword [esp + 0x4c]
test eax, eax
movzx ecx, byte [esp + 0x13]
je 0x40cff5
mov edx, dword [esp + 0x48]
mov dword [eax], edx
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x40d006
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x40d3b9
inc esi
mov dword [esp + 8], esi
mov byte [esp + 3], cl
mov ecx, dword [esp + 4]
and ecx, 0xa
mov dword [esp + 4], ecx
xor ecx, 0xa
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x14]
mov dword [esp + 0xc], esi
and dword [esp + 0xc], 0xfffffff5
mov ecx, dword [esp + 0xc]
imul ecx, dword [esp + 0x24]
mov dword [esp + 0xc], ecx
or esi, 0xa
imul esi, dword [esp + 4]
movsx ecx, byte [esp + 3]
mov dword [esp + 4], ecx
mov ecx, esi
add ecx, dword [esp + 0xc]
mov esi, dword [esp + 4]
add ecx, esi
add ecx, 0xffffffd0
cmp edi, 0xb
je 0x40d23b
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 8]
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x40d0a1
movzx ecx, byte [esi + 1]
mov byte [esp + 3], cl
add esi, 2
mov dword [esp + 8], esi
jmp 0x40d0aa
fldz
mov dword [esp + 8], edx
fld st(0)
test edi, edi
jg 0x40d24a
jmp 0x40d29e
inc esi
mov dword [esp + 8], esi
mov byte [esp + 3], cl
mov esi, dword [esp + 0x14]
mov ecx, esi
and ecx, 0xa
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
or esi, 0xa
imul esi, dword [esp + 0xc]
xor dword [esp + 0xc], 0xa
mov ecx, dword [esp + 4]
and ecx, 0xfffffff5
imul ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
movsx ecx, byte [esp + 3]
mov dword [esp + 0xc], ecx
mov ecx, esi
add ecx, dword [esp + 4]
mov esi, dword [esp + 0xc]
add ecx, esi
add ecx, 0xffffffd0
cmp edi, 0xd
jb 0x40d23b
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 8]
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x40d11a
movzx ecx, byte [esi + 1]
mov byte [esp + 3], cl
add esi, 2
mov dword [esp + 8], esi
jmp 0x40d123
inc esi
mov dword [esp + 8], esi
mov byte [esp + 3], cl
mov esi, dword [esp + 0x14]
mov ecx, esi
and ecx, 0xa
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
or esi, 0xa
imul esi, dword [esp + 0xc]
xor dword [esp + 0xc], 0xa
mov ecx, dword [esp + 4]
and ecx, 0xfffffff5
imul ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
movsx ecx, byte [esp + 3]
mov dword [esp + 0xc], ecx
mov ecx, esi
add ecx, dword [esp + 4]
mov esi, dword [esp + 0xc]
add ecx, esi
add ecx, 0xffffffd0
cmp edi, 0xd
je 0x40d23b
mov dword [esp + 0x14], ecx
mov esi, dword [esp + 8]
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x40d193
movzx ecx, byte [esi + 1]
mov byte [esp + 3], cl
add esi, 2
mov dword [esp + 8], esi
jmp 0x40d19c
inc esi
mov dword [esp + 8], esi
mov byte [esp + 3], cl
mov esi, dword [esp + 0x14]
mov ecx, esi
and ecx, 0xa
mov dword [esp + 0xc], ecx
mov dword [esp + 4], esi
or esi, 0xa
imul esi, dword [esp + 0xc]
xor dword [esp + 0xc], 0xa
mov ecx, dword [esp + 4]
and ecx, 0xfffffff5
imul ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
movsx ecx, byte [esp + 3]
mov dword [esp + 0xc], ecx
mov ecx, esi
add ecx, dword [esp + 4]
mov esi, dword [esp + 0xc]
add ecx, esi
add ecx, 0xffffffd0
cmp edi, 0xf
jb 0x40d23b
mov edi, ecx
mov esi, dword [esp + 8]
movzx ecx, byte [esi]
cmp cl, 0x2e
jne 0x40d206
movzx ecx, byte [esi + 1]
mov byte [esp + 4], cl
add esi, 2
mov dword [esp + 8], esi
jmp 0x40d20f
inc esi
mov dword [esp + 8], esi
mov byte [esp + 4], cl
mov esi, edi
mov ecx, edi
and ecx, 0xa
or esi, 0xa
imul esi, ecx
xor ecx, 0xa
and edi, 0xfffffff5
imul edi, ecx
movsx ecx, byte [esp + 4]
mov dword [esp + 4], ecx
mov ecx, esi
add ecx, edi
mov esi, dword [esp + 4]
add ecx, esi
add ecx, 0xffffffd0
mov dword [esp + 0x30], ecx
mov edi, 9
fild dword [esp + 0x30]
fldz
fstp st(0)
inc edi
xor esi, esi
mov dword [esp + 4], eax
jmp 0x40d284
mov ch, byte [eax + 1]
add eax, 2
mov dword [esp + 8], eax
lea esi, [esi + esi*4]
movsx eax, ch
lea esi, [eax + esi*2]
add esi, 0xffffffd0
dec edi
cmp edi, 1
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 4]
jle 0x40d292
mov eax, dword [esp + 8]
mov ch, byte [eax]
cmp ch, 0x2e
je 0x40d260
inc eax
jmp 0x40d266
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], esi
fild dword [esp + 0x2c]
mov ecx, eax
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov eax, dword [esp + 0x28]
or eax, 0x20
cmp eax, 0x65
jne 0x40d2ce
mov ch, byte [ebp + ecx]
mov al, ch
add al, 0xd5
test al, 0xfd
mov esi, dword [esp + 0x18]
je 0x40d2d6
mov eax, dword [esp + 0x1c]
add eax, ebp
jmp 0x40d2dc
add edx, dword [esp + 0x18]
xor eax, eax
jmp 0x40d31a
mov eax, dword [esp + 0x1c]
add eax, ebx
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40d313
xor eax, eax
nop
add eax, eax
lea eax, [eax + eax*4]
movsx esi, bl
add esi, 0xffffffd0
mov edi, esi
and edi, eax
xor esi, eax
lea eax, [esi + edi*2]
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40d2f0
cmp ch, 0x2d
jne 0x40d31a
neg eax
movzx ecx, byte [esp + 0x13]
mov esi, eax
mov edi, dword [esp + 0x20]
and esi, edi
xor eax, edi
lea eax, [eax + esi*2]
mov edi, eax
sar edi, 0x1f
mov esi, eax
xor esi, edi
sub esi, edi
cmp esi, 0x200
jb 0x40d356
mov esi, 0x1ff
mov edi, dword [esp + 0x50]
test edi, edi
je 0x40d352
mov dword [edi], 0x22
fldz
jmp 0x40d35c
fld1
test eax, eax
je 0x40d390
fstp st(0)
fld1
mov edi, 0x44d718
jmp 0x40d37e
mov ebx, esi
shr ebx, 1
add edi, 8
cmp esi, 2
mov esi, ebx
jb 0x40d390
mov ebx, esi
xor ebx, 0xfffffffe
mov ebp, esi
or ebp, 1
test ebp, ebx
je 0x40d370
fmul qword [edi]
jmp 0x40d370
fld st(1)
fmul st(1)
test eax, eax
jns 0x40d3a4
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 0x40d3b2
mov dword [eax], edx
cmp cl, 0x2d
jne 0x40d3b9
fchs
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret