Function at 0x40c790
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 0x40c7b3
inc edi
inc ebx
inc edx
mov ch, byte [eax + edx]
movzx esi, ch
lea ebp, [esi - 9]
cmp ebp, 5
jb 0x40c7b0
cmp esi, 0x20
je 0x40c7b0
mov byte [esp + 3], ch
add ch, 0xd5
test ch, 0xfd
mov ecx, 0
sete cl
add ecx, eax
xor ebp, ebp
mov eax, 0xffffffff
jmp 0x40c7f9
mov esi, eax
mov ebp, dword [esp + 8]
inc ebp
mov eax, esi
mov dword [esp + 8], ebp
lea esi, [ecx + ebp]
mov dword [esp + 0x18], esi
movzx esi, byte [edi + esi - 1]
lea ebp, [esi - 0x30]
cmp ebp, 0xa
jb 0x40c7f0
mov dword [esp + 0x14], esi
cmp esi, 0x2e
jne 0x40c822
mov esi, dword [esp + 8]
test eax, eax
js 0x40c7f2
mov esi, ebx
mov dword [esp + 0xc], ecx
test eax, eax
setns byte [esp + 4]
mov ebp, dword [esp + 8]
jns 0x40c837
mov eax, ebp
add edx, dword [esp + 0xc]
xor ecx, ecx
movzx ebx, byte [esp + 4]
mov cl, bl
sub ebp, ecx
cmp ebp, 0x10
jl 0x40c85f
add eax, 0xfffffff1
mov ebp, 0xf
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xc]
mov ebx, esi
jmp 0x40c890
test ebp, ebp
je 0x40c8c5
mov ebx, esi
neg ecx
mov dword [esp + 4], ecx
mov esi, eax
not esi
and esi, ebp
mov ecx, dword [esp + 8]
not ecx
sub ecx, dword [esp + 4]
and ecx, eax
sub ecx, esi
mov dword [esp + 4], ecx
cmp ebp, 9
jle 0x40c917
mov ecx, dword [esp + 0xc]
lea esi, [ecx + edi]
movzx eax, byte [ecx + edi - 1]
cmp al, 0x2e
jne 0x40c8a2
movzx eax, byte [esi]
lea esi, [ecx + ebx]
movsx eax, al
add eax, 0xffffffd0
cmp ebp, 0xb
jb 0x40c9a9
mov dword [esp + 0x10], eax
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x40c8e9
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x40c8ea
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x40c8d3
mov eax, dword [esp + 0x38]
mov dword [ecx], eax
fldz
fld st(0)
fchs
cmp byte [esp + 3], 0x2d
jne 0x40cb37
jmp 0x40cb3d
inc esi
mov ecx, esi
mov esi, dword [esp + 0x10]
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
cmp ebp, 0xb
je 0x40c9a7
mov esi, eax
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40c92e
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40c92f
fldz
mov esi, edx
fld st(0)
test ebp, ebp
mov ecx, dword [esp + 0x14]
jg 0x40c9b8
jmp 0x40ca13
inc ecx
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
cmp ebp, 0xd
jb 0x40c9a7
mov esi, eax
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40c952
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40c953
inc ecx
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
cmp ebp, 0xd
je 0x40c9a7
mov esi, eax
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40c976
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40c977
inc ecx
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
cmp ebp, 0xf
jb 0x40c9a7
mov esi, eax
movzx eax, byte [ecx]
cmp al, 0x2e
jne 0x40c99a
movzx eax, byte [ecx + 1]
add ecx, 2
jmp 0x40c99b
inc ecx
lea esi, [esi + esi*4]
movsx eax, al
lea eax, [eax + esi*2]
add eax, 0xffffffd0
mov esi, ecx
mov dword [esp + 0x20], eax
mov ebp, 9
fild dword [esp + 0x20]
fldz
fstp st(0)
mov dword [esp + 0x10], ebx
inc ebp
xor eax, eax
jmp 0x40c9fd
mov ch, byte [esi + 1]
add esi, 2
mov ebx, esi
lea eax, [eax + eax*4]
movsx ecx, ch
mov esi, ecx
xor esi, 0xffffffcf
lea eax, [esi + eax*2]
and ecx, 0xffffffcf
lea eax, [eax + ecx*2]
inc eax
mov ecx, ebp
dec ecx
mov ebp, ecx
cmp ecx, 1
mov ecx, dword [esp + 0x14]
mov esi, ebx
jle 0x40ca07
mov ch, byte [esi]
cmp ch, 0x2e
je 0x40c9d0
inc esi
jmp 0x40c9d6
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or ecx, 0x20
cmp ecx, 0x65
jne 0x40ca40
mov eax, dword [esp + 0x18]
mov ch, byte [edi + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
mov esi, dword [esp + 8]
je 0x40ca48
mov eax, dword [esp + 0xc]
add eax, edi
jmp 0x40ca4e
add edx, dword [esp + 8]
xor eax, eax
jmp 0x40caa7
mov eax, dword [esp + 0xc]
add eax, ebx
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40caa0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xfffffff5
mov edi, eax
and edi, 0xa
or eax, 0xa
imul eax, edi
xor edi, 0xa
imul edi, esi
movsx esi, bl
add esi, eax
lea eax, [edi + esi]
add eax, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40ca70
cmp ch, 0x2d
jne 0x40caa7
neg eax
add eax, dword [esp + 4]
mov ecx, eax
sar ecx, 0x1f
mov ebx, eax
xor ebx, ecx
sub ebx, ecx
cmp ebx, 0x200
jb 0x40cad5
mov ebx, 0x1ff
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x40cad1
mov dword [ecx], 0x22
fldz
jmp 0x40cae0
fld1
test eax, eax
movzx ecx, byte [esp + 3]
je 0x40cb0c
fstp st(0)
fld1
mov esi, 0x447718
jmp 0x40cb03
mov ecx, ebx
shr ecx, 1
add esi, 8
cmp ebx, 2
mov ebx, ecx
movzx ecx, byte [esp + 3]
jb 0x40cb0c
test bl, 1
je 0x40caf0
fmul qword [esi]
jmp 0x40caf0
fld st(1)
fmul st(1)
test eax, eax
jns 0x40cb20
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 0x40cb2e
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x40cb3d
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret