Function at 0x417c20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x28
mov ecx, dword [ebp + 8]
jmp 0x417c41
inc ecx
movzx eax, byte [ecx]
lea edx, [eax - 9]
cmp edx, 5
jb 0x417c40
cmp eax, 0x20
je 0x417c40
cmp eax, 0x2b
je 0x417c64
cmp eax, 0x2d
jne 0x417c65
inc ecx
mov al, 1
mov dword [esp + 0xc], eax
jmp 0x417c6d
inc ecx
mov dword [esp + 0xc], 0
xor esi, esi
mov edx, 0xffffffff
jmp 0x417c85
mov eax, edx
inc esi
mov edx, eax
movzx ebx, byte [ecx + esi]
mov eax, ebx
add al, 0xd0
cmp al, 0xa
jb 0x417c80
cmp bl, 0x2e
jne 0x417ca6
mov eax, esi
test edx, edx
js 0x417c82
mov dword [esp + 0x14], ebx
mov dword [esp + 8], esi
jmp 0x417cb8
mov dword [esp + 0x14], ebx
mov edi, ecx
mov eax, esi
mov dword [esp + 8], esi
mov ebx, esi
test edx, edx
js 0x417cc3
mov eax, dword [esp + 8]
lea ebx, [eax - 1]
mov edi, ecx
mov eax, edx
cmp ebx, 0x10
jl 0x417cd6
add eax, 0xfffffff1
mov dword [esp + 0x10], eax
mov ebx, 0xf
jmp 0x417ce9
test ebx, ebx
je 0x417d1d
sub eax, ebx
cmp ebx, 9
mov dword [esp + 0x10], eax
jle 0x417d93
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417cf9
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x417cfa
inc edi
movsx edx, al
lea esi, [edx - 0x30]
cmp ebx, 0xb
jl 0x417e9d
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417d45
movzx eax, byte [edi + 1]
mov byte [esp + 7], al
add edi, 2
jmp 0x417d4a
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417d29
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
xorpd xmm0, xmm0
cmp byte [esp + 0xc], 0
je 0x41801b
movsd xmm0, qword [0x45c7e0]
jmp 0x41801b
inc edi
mov byte [esp + 7], al
and edx, 0xa
mov eax, edx
xor eax, 0xa
mov dword [esp], eax
mov eax, esi
and eax, 0xfffffff5
imul eax, dword [esp]
or esi, 0xa
imul esi, edx
add esi, eax
movsx eax, byte [esp + 7]
add eax, 0xffffffd0
mov edx, eax
and edx, esi
xor eax, esi
lea esi, [eax + edx*2]
cmp ebx, 0xc
jl 0x417e9d
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417da8
movzx eax, byte [edi + 1]
mov byte [esp], al
add edi, 2
jmp 0x417dac
xorpd xmm0, xmm0
xorpd xmm1, xmm1
test ebx, ebx
jg 0x417ea6
jmp 0x417ef5
inc edi
mov byte [esp], al
mov edx, esi
and edx, 0xa
mov eax, esi
or esi, 0xa
imul esi, edx
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add esi, eax
movsx eax, byte [esp]
add eax, 0xffffffd0
mov edx, eax
and edx, esi
xor eax, esi
lea esi, [eax + edx*2]
cmp ebx, 0xd
jl 0x417e9d
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417df0
movzx eax, byte [edi + 1]
mov byte [esp], al
add edi, 2
jmp 0x417df4
inc edi
mov byte [esp], al
mov edx, esi
and edx, 0xa
mov eax, esi
or esi, 0xa
imul esi, edx
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add esi, eax
movsx eax, byte [esp]
add eax, 0xffffffd0
mov edx, eax
and edx, esi
xor eax, esi
lea esi, [eax + edx*2]
cmp ebx, 0xe
jl 0x417e9d
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417e34
movzx eax, byte [edi + 1]
mov byte [esp], al
add edi, 2
jmp 0x417e38
inc edi
mov byte [esp], al
mov edx, esi
and edx, 0xa
mov eax, esi
or esi, 0xa
imul esi, edx
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add esi, eax
movsx eax, byte [esp]
add eax, 0xffffffd0
mov edx, eax
and edx, esi
xor eax, esi
lea esi, [eax + edx*2]
cmp ebx, 0xf
jl 0x417e9d
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x417e75
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x417e76
inc edi
mov edx, esi
and edx, 0xa
mov ebx, esi
or esi, 0xa
imul esi, edx
xor edx, 0xa
and ebx, 0xfffffff5
imul ebx, edx
add esi, ebx
movsx eax, al
add eax, 0xffffffd0
mov edx, eax
and edx, esi
xor eax, esi
lea esi, [eax + edx*2]
cvtsi2sd xmm0, esi
mov ebx, 9
mov dword [esp], ecx
inc ebx
xor edx, edx
jmp 0x417ee1
movzx eax, byte [edi + 1]
add edi, 2
mov ecx, edi
mov esi, edx
and esi, 0xa
mov edi, edx
or edx, 0xa
imul edx, esi
xor esi, 0xa
and edi, 0xfffffff5
imul edi, esi
add edx, edi
movsx eax, al
add edx, eax
add edx, 0xffffffd0
dec ebx
cmp ebx, 1
mov edi, ecx
jle 0x417eeb
movzx eax, byte [edi]
cmp al, 0x2e
je 0x417eb0
inc edi
jmp 0x417eb7
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov ecx, dword [esp]
mov eax, dword [esp + 0x14]
or eax, 0x20
cmp eax, 0x65
jne 0x417f24
mov eax, dword [esp + 8]
movzx eax, byte [ecx + eax + 1]
cmp eax, 0x2b
mov ebx, dword [ebp + 0x10]
je 0x417f2f
cmp eax, 0x2d
jne 0x417f3a
mov eax, dword [esp + 8]
add ecx, eax
add ecx, 2
mov dl, 1
jmp 0x417f43
add ecx, dword [esp + 8]
xor eax, eax
mov ebx, dword [ebp + 0x10]
jmp 0x417f8d
mov eax, dword [esp + 8]
add ecx, eax
add ecx, 2
jmp 0x417f41
mov eax, dword [esp + 8]
add ecx, eax
inc ecx
xor edx, edx
movzx eax, byte [ecx]
mov ah, al
add ah, 0xd0
xor esi, esi
cmp ah, 9
ja 0x417f84
xor esi, esi
nop word cs:[eax + eax]
lea esi, [esi + esi*4]
movzx eax, al
mov edi, eax
xor edi, 0xffffffcf
and eax, 0xffffffcf
lea esi, [edi + esi*2]
lea esi, [esi + eax*2]
inc esi
movzx eax, byte [ecx + 1]
inc ecx
mov ah, al
add ah, 0xd0
cmp ah, 0xa
jb 0x417f60
mov eax, esi
neg eax
test dl, dl
cmove eax, esi
add eax, dword [esp + 0x10]
mulsd xmm0, qword [0x45c7e8]
mov edx, eax
neg edx
cmovs edx, eax
cmp edx, 0x200
jb 0x417fb9
mov edx, 0x1ff
test ebx, ebx
je 0x417fbd
mov dword [ebx], 0x22
jmp 0x417fbd
test eax, eax
je 0x417fe9
movsd xmm2, qword [0x45c7f0]
mov esi, 0x45c798
jmp 0x417fde
mov ebx, edx
shr ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x417ff1
test dl, 1
je 0x417fd0
mulsd xmm2, qword [esi]
jmp 0x417fd0
movsd xmm2, qword [0x45c7f0]
addsd xmm0, xmm1
test eax, eax
js 0x417fff
mulsd xmm0, xmm2
jmp 0x418003
divsd xmm0, xmm2
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x41800c
mov dword [eax], ecx
cmp byte [esp + 0xc], 0
je 0x41801b
xorpd xmm0, xmmword [0x45b5b0]
movsd qword [esp + 0x18], xmm0
fld qword [esp + 0x18]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret