Function at 0x417610
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 0x417631
inc ecx
movzx eax, byte [ecx]
lea esi, [eax - 9]
cmp esi, 5
jb 0x417630
cmp eax, 0x20
je 0x417630
cmp eax, 0x2b
je 0x417654
cmp eax, 0x2d
jne 0x417655
inc ecx
mov al, 1
mov dword [esp + 0xc], eax
jmp 0x41765d
inc ecx
mov dword [esp + 0xc], 0
xor edi, edi
mov ebx, 0xffffffff
jmp 0x417680
mov eax, ebx
inc ecx
mov esi, edi
and esi, 1
xor edi, 1
lea edi, [edi + esi*2]
mov ebx, eax
movzx edx, byte [ecx]
mov eax, edx
add al, 0xd0
cmp al, 0xa
jb 0x417670
mov dword [esp + 0x14], edx
cmp dl, 0x2e
jne 0x4176a0
mov eax, edi
test ebx, ebx
js 0x417672
mov esi, ecx
sub esi, edi
jmp 0x4176a8
mov esi, ecx
sub esi, edi
test ebx, ebx
js 0x4176b8
dec edi
cmp edi, 0x10
jl 0x4176bf
add ebx, 0xfffffff1
mov edi, 0xf
jmp 0x4176ce
mov ebx, edi
cmp edi, 0x10
jge 0x4176ae
test edi, edi
je 0x417712
sub ebx, edi
cmp edi, 9
jle 0x4177a8
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x4176de
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x4176df
inc esi
movsx edx, al
mov eax, edx
or eax, 0xffffffcf
mov dword [esp + 4], edx
and edx, 0xffffffcf
add edx, eax
inc edx
cmp edi, 0xb
jl 0x417914
movzx eax, byte [esi]
mov byte [esp + 3], al
cmp al, 0x2e
jne 0x41773a
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x41773b
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x41771e
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
xorpd xmm0, xmm0
cmp byte [esp + 0xc], 0
je 0x417aa7
movsd xmm0, qword [0x45ca00]
jmp 0x417aa7
inc esi
mov eax, dword [esp + 4]
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
and edx, 0xfffffff5
mov dword [esp + 0x10], edx
and eax, 0xa
mov dword [esp + 4], eax
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
xor edx, 0xa
imul edx, dword [esp + 0x10]
or eax, 0xa
imul eax, dword [esp + 4]
add eax, edx
movsx edx, byte [esp + 3]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
or edx, 0xffffffcf
add edx, eax
mov eax, dword [esp + 4]
and eax, 0xffffffcf
add edx, eax
inc edx
cmp edi, 0xc
jl 0x417914
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x4177bd
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x4177c2
xorpd xmm0, xmm0
xorpd xmm1, xmm1
test edi, edi
jg 0x41791d
jmp 0x417983
inc esi
mov byte [esp + 3], al
mov eax, edx
and edx, 0xfffffff5
mov dword [esp + 4], edx
mov edx, eax
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
mov dword [esp + 8], edx
movsx edx, byte [esp + 3]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
or edx, 0xffffffcf
add edx, eax
add edx, dword [esp + 8]
mov eax, dword [esp + 4]
and eax, 0xffffffcf
add edx, eax
inc edx
cmp edi, 0xd
jl 0x417914
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x41781f
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x417824
inc esi
mov byte [esp + 3], al
mov eax, edx
and edx, 0xfffffff5
mov dword [esp + 4], edx
mov edx, eax
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
mov dword [esp + 8], edx
movsx edx, byte [esp + 3]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
or edx, 0xffffffcf
add edx, eax
add edx, dword [esp + 8]
mov eax, dword [esp + 4]
and eax, 0xffffffcf
add edx, eax
inc edx
cmp edi, 0xe
jl 0x417914
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x417881
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x417886
inc esi
mov byte [esp + 3], al
mov eax, edx
and edx, 0xfffffff5
mov dword [esp + 4], edx
mov edx, eax
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
mov dword [esp + 8], edx
movsx edx, byte [esp + 3]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
or edx, 0xffffffcf
add edx, eax
add edx, dword [esp + 8]
mov eax, dword [esp + 4]
and eax, 0xffffffcf
add edx, eax
inc edx
cmp edi, 0xf
jl 0x417914
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x4178db
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x4178dc
inc esi
mov byte [esp + 4], al
mov edi, edx
and edx, 0xfffffff5
mov eax, edi
and eax, 0xa
or edi, 0xa
imul edi, eax
xor eax, 0xa
imul eax, edx
movsx edx, byte [esp + 4]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
or edx, 0xffffffcf
add edx, edi
mov edi, dword [esp + 4]
and edi, 0xffffffcf
add edx, eax
add edx, edi
inc edx
cvtsi2sd xmm0, edx
mov edi, 9
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
inc edi
xor edx, edx
jmp 0x41796e
movzx eax, byte [esi + 1]
add esi, 2
mov ecx, esi
mov ebx, edx
and ebx, 0xa
mov esi, edx
or edx, 0xa
imul edx, ebx
xor ebx, 0xa
and esi, 0xfffffff5
imul esi, ebx
add edx, esi
movsx eax, al
mov esi, eax
xor esi, 0xffffffcf
add esi, edx
and eax, 0xffffffcf
lea edx, [esi + eax*2]
inc edx
dec edi
cmp edi, 1
mov ebx, dword [esp + 4]
mov esi, ecx
jle 0x417978
movzx eax, byte [esi]
cmp al, 0x2e
je 0x417930
inc esi
jmp 0x417937
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x14]
or eax, 0x20
cmp eax, 0x65
jne 0x4179a8
movzx eax, byte [ecx + 1]
cmp eax, 0x2b
mov dword [esp + 4], ebx
je 0x4179af
cmp eax, 0x2d
jne 0x4179b4
add ecx, 2
mov bl, 1
jmp 0x4179b7
xor edx, edx
mov esi, dword [ebp + 0x10]
jmp 0x417a0e
add ecx, 2
jmp 0x4179b5
inc ecx
xor ebx, ebx
movzx edx, byte [ecx]
mov eax, edx
add al, 0xd0
xor esi, esi
cmp al, 9
ja 0x4179fe
xor esi, esi
nop word cs:[eax + eax]
mov eax, esi
and eax, 0xa
mov edi, esi
or esi, 0xa
imul esi, eax
xor eax, 0xa
and edi, 0xfffffff5
imul edi, eax
movzx eax, dl
add eax, esi
lea esi, [edi + eax]
add esi, 0xffffffd0
movzx edx, byte [ecx + 1]
inc ecx
mov eax, edx
add al, 0xd0
cmp al, 0xa
jb 0x4179d0
mov edx, esi
neg edx
test bl, bl
cmove edx, esi
mov esi, dword [ebp + 0x10]
mov ebx, dword [esp + 4]
add edx, ebx
mulsd xmm0, qword [0x45ca08]
mov eax, edx
neg eax
cmovs eax, edx
cmp eax, 0x200
jb 0x417a37
mov eax, 0x1ff
test esi, esi
je 0x417a3b
mov dword [esi], 0x22
jmp 0x417a3b
test edx, edx
je 0x417a75
movsd xmm2, qword [0x45ca10]
xor esi, esi
jmp 0x417a66
mov ebx, eax
shr ebx, 1
mov edi, esi
and edi, 1
xor esi, 1
lea esi, [esi + edi*2]
cmp eax, 2
mov eax, ebx
jb 0x417a7d
test al, 1
je 0x417a50
mulsd xmm2, qword [esi*8 + 0x45c9b8]
jmp 0x417a50
movsd xmm2, qword [0x45ca10]
addsd xmm0, xmm1
test edx, edx
js 0x417a8b
mulsd xmm0, xmm2
jmp 0x417a8f
divsd xmm0, xmm2
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417a98
mov dword [eax], ecx
cmp byte [esp + 0xc], 0
je 0x417aa7
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