Function at 0x40c900
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, 1
mov ebx, 2
xor edx, edx
mov eax, dword [esp + 0x38]
jmp 0x40c923
inc edi
inc ebx
inc edx
mov ch, byte [eax + edx]
movzx esi, ch
lea ebp, [esi - 9]
cmp ebp, 5
jb 0x40c920
cmp esi, 0x20
je 0x40c920
mov byte [esp + 7], ch
add ch, 0xd5
test ch, 0xfd
mov ecx, 0
sete cl
add ecx, eax
mov dword [esp + 8], ecx
xor ecx, ecx
mov ebp, 0xffffffff
jmp 0x40c969
mov esi, ebp
mov ecx, dword [esp + 0xc]
inc ecx
mov ebp, esi
mov esi, dword [esp + 8]
mov dword [esp + 0xc], ecx
add ecx, esi
movzx eax, byte [edi + ecx - 1]
lea esi, [eax - 0x30]
cmp esi, 0xa
jb 0x40c960
mov dword [esp + 0x18], eax
cmp eax, 0x2e
jne 0x40c991
mov esi, dword [esp + 0xc]
test ebp, ebp
js 0x40c962
mov dword [esp + 0x14], ecx
xor eax, eax
test ebp, ebp
setns ch
mov esi, dword [esp + 0xc]
jns 0x40c9a4
mov ebp, esi
add edx, dword [esp + 8]
mov al, ch
mov ecx, eax
sub esi, eax
cmp esi, 0x10
mov eax, dword [esp + 0x38]
jl 0x40c9c5
add ebp, 0xfffffff1
mov esi, 0xf
mov dword [esp + 0x10], ebp
jmp 0x40c9ee
test esi, esi
je 0x40ca2b
neg ecx
mov eax, ebp
not eax
and eax, esi
mov dword [esp], eax
mov eax, dword [esp + 0xc]
not eax
sub eax, ecx
and eax, ebp
sub eax, dword [esp]
mov dword [esp + 0x10], eax
cmp esi, 9
jle 0x40ca6f
mov ebp, dword [esp + 8]
lea ecx, [edi + ebp]
movzx eax, byte [ebp + edi - 1]
cmp al, 0x2e
jne 0x40ca05
movzx eax, byte [ecx]
add ebp, ebx
jmp 0x40ca07
mov ebp, ecx
movsx ecx, al
add ecx, 0xffffffd0
cmp esi, 0xb
jb 0x40ca23
movzx eax, byte [ebp]
cmp al, 0x2e
jne 0x40ca41
movzx eax, byte [ebp + 1]
add ebp, 2
jmp 0x40ca42
mov dword [esp], ebp
jmp 0x40cb1c
mov edx, dword [esp + 0x3c]
test edx, edx
movzx ecx, byte [esp + 7]
je 0x40ca3a
mov dword [edx], eax
fldz
jmp 0x40cc78
inc ebp
mov dword [esp], ebp
lea ebp, [ecx + ecx*4]
movsx eax, al
lea ecx, [eax + ebp*2]
add ecx, 0xffffffd0
cmp esi, 0xb
je 0x40cb1c
mov ebp, ecx
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40ca8b
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40ca8c
fldz
mov dword [esp], edx
fld st(0)
test esi, esi
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
jg 0x40cb2b
jmp 0x40cb7c
inc ecx
mov dword [esp], ecx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea ecx, [eax + ebp*2]
add ecx, 0xffffffd0
cmp esi, 0xd
jb 0x40cb1c
mov ebp, ecx
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40cab6
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40cab7
inc ecx
mov dword [esp], ecx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea ecx, [eax + ebp*2]
add ecx, 0xffffffd0
cmp esi, 0xd
je 0x40cb1c
mov ebp, ecx
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40cae1
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40cae2
inc ecx
mov dword [esp], ecx
lea ebp, [ebp + ebp*4]
movsx eax, al
lea ecx, [eax + ebp*2]
add ecx, 0xffffffd0
cmp esi, 0xf
jb 0x40cb1c
mov esi, ecx
mov ecx, dword [esp]
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40cb0c
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40cb0d
inc ecx
mov dword [esp], ecx
lea esi, [esi + esi*4]
movsx eax, al
lea ecx, [eax + esi*2]
add ecx, 0xffffffd0
mov dword [esp + 0x20], ecx
mov esi, 9
fild dword [esp + 0x20]
fldz
fstp st(0)
inc esi
xor eax, eax
jmp 0x40cb62
mov ch, byte [ebp + 1]
add ebp, 2
mov dword [esp], ebp
lea eax, [eax + eax*4]
movsx ebp, ch
lea eax, [eax*2 - 0x30]
add eax, ebp
dec esi
cmp esi, 1
mov ebp, dword [esp + 0x18]
jle 0x40cb70
mov ebp, dword [esp]
mov ch, byte [ebp]
cmp ch, 0x2e
je 0x40cb40
inc ebp
jmp 0x40cb46
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or ebp, 0x20
cmp ebp, 0x65
jne 0x40cba5
mov ch, byte [edi + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
mov esi, dword [esp + 0xc]
je 0x40cbad
mov eax, dword [esp + 8]
add eax, edi
jmp 0x40cbb3
add edx, dword [esp + 0xc]
xor edi, edi
jmp 0x40cbfb
mov eax, dword [esp + 8]
add eax, ebx
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor edi, edi
cmp esi, 9
ja 0x40cbf4
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [edi + edi*4]
movsx esi, bl
mov edi, esi
xor edi, 0xffffffcf
lea eax, [edi + eax*2]
and esi, 0xffffffcf
lea edi, [eax + esi*2]
inc edi
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40cbd0
cmp ch, 0x2d
jne 0x40cbfb
neg edi
movzx ecx, byte [esp + 7]
add edi, dword [esp + 0x10]
mov esi, edi
sar esi, 0x1f
mov eax, edi
xor eax, esi
sub eax, esi
cmp eax, 0x200
jb 0x40cc2d
mov eax, 0x1ff
mov esi, dword [esp + 0x40]
test esi, esi
je 0x40cc29
mov dword [esi], 0x22
fldz
jmp 0x40cc33
fld1
test edi, edi
je 0x40cc56
fstp st(0)
fld1
mov esi, 0x448718
jmp 0x40cc4e
mov ebx, eax
shr ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x40cc56
test al, 1
je 0x40cc40
fmul qword [esi]
jmp 0x40cc40
fld st(1)
fmul st(1)
test edi, edi
jns 0x40cc6a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x40cc78
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x40cc87
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret