Function at 0x40ce70
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
xor ebx, ebx
mov ebp, dword [esp + 0x30]
jmp 0x40ce81
inc ebx
movzx ecx, byte [ebp + ebx]
movzx eax, cl
lea edx, [eax - 9]
cmp edx, 5
jb 0x40ce80
cmp eax, 0x20
je 0x40ce80
mov eax, ecx
add al, 0xd5
and al, 0xfd
cmp al, 1
adc ebx, 0
xor edi, edi
mov esi, 0xffffffff
jmp 0x40cec0
mov eax, esi
mov edx, edi
and edx, 1
xor edi, 1
lea edi, [edi + edx*2]
inc ebx
mov esi, eax
movzx edx, byte [ebp + ebx]
lea eax, [edx - 0x30]
cmp eax, 0xa
jb 0x40ceb0
cmp edx, 0x2e
jne 0x40ced8
mov eax, edi
test esi, esi
js 0x40ceb2
mov dword [esp + 0x10], edx
xor edx, edx
test esi, esi
setns al
jns 0x40cee7
mov esi, edi
mov dl, al
mov eax, edi
sub eax, edx
mov dword [esp + 8], 0xfffffff1
cmp eax, 0x10
jge 0x40cf02
mov edx, eax
neg edx
mov dword [esp + 8], edx
test eax, eax
je 0x40cf35
mov edx, ebp
sub edx, edi
add edx, ebx
cmp eax, 9
mov dword [esp + 0xc], esi
jle 0x40cf46
neg edi
add edi, ebp
lea esi, [ebx + edi]
inc esi
mov dword [esp], esi
movzx edx, byte [edx]
cmp dl, 0x2e
jne 0x40cf57
mov edx, dword [esp]
movzx edx, byte [edx]
add edi, ebx
add edi, 2
jmp 0x40cf5a
mov eax, dword [esp + 0x34]
test eax, eax
je 0x40cf3f
mov dword [eax], ebp
fldz
jmp 0x40d188
fldz
fld st(0)
test eax, eax
jg 0x40d046
jmp 0x40d07a
mov edi, dword [esp]
movsx edx, dl
add edx, 0xffffffd0
cmp eax, 0xa
je 0x40d035
mov dword [esp + 4], edx
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x40cf7e
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x40cf7f
inc edi
mov dword [esp], edi
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
cmp eax, 0xc
jl 0x40d032
mov dword [esp + 4], edx
mov edi, dword [esp]
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x40cfb3
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x40cfb4
inc edi
mov dword [esp], edi
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
cmp eax, 0xc
je 0x40d032
mov dword [esp + 4], edx
mov edi, dword [esp]
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x40cfe4
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x40cfe5
inc edi
mov dword [esp], edi
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
cmp eax, 0xe
jl 0x40d032
mov dword [esp + 4], edx
mov edi, dword [esp]
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x40d015
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x40d016
inc edi
mov dword [esp], edi
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
movsx edx, dl
lea edx, [edx + edi*2]
add edx, 0xffffffd0
cmp eax, 0xe
jne 0x40d1a1
mov edi, dword [esp]
mov dword [esp + 0x18], edx
mov eax, 9
fild dword [esp + 0x18]
mov edx, edi
fldz
fstp st(0)
inc eax
xor edi, edi
jmp 0x40d068
mov ch, byte [edx + 1]
add edx, 2
lea edi, [edi + edi*4]
movsx esi, ch
lea edi, [esi + edi*2]
add edi, 0xffffffd0
dec eax
cmp eax, 1
jle 0x40d072
mov ch, byte [edx]
cmp ch, 0x2e
je 0x40d050
inc edx
jmp 0x40d056
mov dword [esp + 0x14], edi
fild dword [esp + 0x14]
fxch st(1)
fmul dword [str._knN]
mov esi, dword [esp + 8]
add esi, dword [esp + 0xc]
faddp st(1)
mov eax, dword [esp + 0x10]
or eax, 0x20
cmp eax, 0x65
jne 0x40d0a9
mov ch, byte [ebp + ebx + 1]
mov al, ch
add al, 0xd5
test al, 0xfd
je 0x40d0af
add ebp, ebx
inc ebp
jmp 0x40d0b4
add ebp, ebx
xor eax, eax
jmp 0x40d109
add ebp, ebx
add ebp, 2
mov ebx, esi
movzx edx, byte [ebp]
lea esi, [edx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40d100
xor eax, eax
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 edx, dl
add edx, eax
lea eax, [esi + edx]
add eax, 0xffffffd0
movzx edx, byte [ebp + 1]
inc ebp
mov esi, edx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40d0d0
cmp ch, 0x2d
jne 0x40d107
neg eax
mov esi, ebx
add esi, eax
mov edx, esi
sar edx, 0x1f
mov eax, esi
xor eax, edx
sub eax, edx
cmp eax, 0x200
jb 0x40d134
mov eax, 0x1ff
mov edx, dword [esp + 0x38]
test edx, edx
je 0x40d130
mov dword [edx], 0x22
fldz
jmp 0x40d13a
fld1
test esi, esi
je 0x40d166
fstp st(0)
fld1
mov edx, 0x44d718
jmp 0x40d15e
mov ebx, eax
shr ebx, 1
add edx, 8
cmp eax, 2
mov eax, ebx
jb 0x40d166
test al, 1
je 0x40d150
fmul qword [edx]
jmp 0x40d150
fld st(1)
fmul st(1)
test esi, esi
jns 0x40d17a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x34]
test eax, eax
je 0x40d188
mov dword [eax], ebp
fld st(0)
fchs
cmp cl, 0x2d
je 0x40d197
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esp]
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x40d1b4
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x40d1b5
inc edi
lea edx, [edx + edx*4]
movsx eax, al
lea edx, [eax + edx*2]
add edx, 0xffffffd0
jmp 0x40d035