Function at 0x416d60
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 0x416d81
inc ecx
movzx eax, byte [ecx]
lea edx, [eax - 9]
cmp edx, 5
jb 0x416d80
cmp eax, 0x20
je 0x416d80
cmp eax, 0x2b
je 0x416da4
cmp eax, 0x2d
jne 0x416da5
inc ecx
mov al, 1
mov dword [esp + 8], eax
jmp 0x416dad
inc ecx
mov dword [esp + 8], 0
xor edi, edi
mov edx, 0xffffffff
jmp 0x416dc5
mov eax, edx
inc edi
mov edx, eax
movzx ebx, byte [ecx + edi]
mov eax, ebx
add al, 0xd0
cmp al, 0xa
jb 0x416dc0
cmp bl, 0x2e
jne 0x416de2
mov eax, edi
test edx, edx
js 0x416dc2
mov dword [esp + 0x10], ebx
jmp 0x416df0
mov dword [esp + 0x10], ebx
mov esi, ecx
mov eax, edi
mov ebx, edi
test edx, edx
js 0x416df7
lea ebx, [edi - 1]
mov esi, ecx
mov eax, edx
cmp ebx, 0x10
jl 0x416e0a
add eax, 0xfffffff1
mov dword [esp + 0xc], eax
mov ebx, 0xf
jmp 0x416e1d
test ebx, ebx
je 0x416e59
sub eax, ebx
cmp ebx, 9
mov dword [esp + 0xc], eax
jle 0x416ecd
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x416e2d
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x416e2e
inc esi
movsx eax, al
mov dword [esp + 4], eax
lea edx, [eax - 0x30]
cmp ebx, 0xb
jl 0x416ff2
movzx eax, byte [esi]
mov byte [esp + 3], al
cmp al, 0x2e
jne 0x416e81
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x416e82
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x416e65
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
xorpd xmm0, xmm0
cmp byte [esp + 8], 0
je 0x417162
movsd xmm0, qword [0x45c9e0]
jmp 0x417162
inc esi
mov eax, edx
and eax, 0xfffffff5
mov dword [esp + 0x14], eax
and dword [esp + 4], 0xa
mov eax, dword [esp + 4]
xor eax, 0xa
imul eax, dword [esp + 0x14]
or edx, 0xa
imul edx, dword [esp + 4]
add edx, eax
movsx eax, byte [esp + 3]
add edx, eax
add edx, 0xffffffd0
cmp ebx, 0xc
jl 0x416ff2
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x416ee2
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x416ee7
xorpd xmm0, xmm0
xorpd xmm1, xmm1
test ebx, ebx
jg 0x416ffb
jmp 0x41704a
inc esi
mov byte [esp + 3], al
mov eax, edx
and eax, 0xfffffff5
mov dword [esp + 4], eax
mov eax, edx
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
add eax, edx
mov edx, eax
movsx eax, byte [esp + 3]
add edx, eax
add edx, 0xffffffd0
cmp ebx, 0xd
jl 0x416ff2
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x416f2e
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x416f33
inc esi
mov byte [esp + 3], al
mov eax, edx
and eax, 0xfffffff5
mov dword [esp + 4], eax
mov eax, edx
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
add eax, edx
mov edx, eax
movsx eax, byte [esp + 3]
add edx, eax
add edx, 0xffffffd0
cmp ebx, 0xe
jl 0x416ff2
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x416f7a
movzx eax, byte [esi + 1]
mov byte [esp + 3], al
add esi, 2
jmp 0x416f7f
inc esi
mov byte [esp + 3], al
mov eax, edx
and eax, 0xfffffff5
mov dword [esp + 4], eax
mov eax, edx
and edx, 0xa
or eax, 0xa
imul eax, edx
xor edx, 0xa
imul edx, dword [esp + 4]
add eax, edx
mov edx, eax
movsx eax, byte [esp + 3]
add edx, eax
add edx, 0xffffffd0
cmp ebx, 0xf
jl 0x416ff2
mov eax, edx
movzx edx, byte [esi]
cmp dl, 0x2e
jne 0x416fc1
movzx edx, byte [esi + 1]
add esi, 2
jmp 0x416fc2
inc esi
mov byte [esp + 4], dl
mov edx, eax
and edx, 0xfffffff5
mov ebx, eax
and ebx, 0xa
or eax, 0xa
imul eax, ebx
xor ebx, 0xa
imul ebx, edx
movsx edx, byte [esp + 4]
mov dword [esp + 4], edx
mov edx, eax
add edx, ebx
mov eax, dword [esp + 4]
add edx, eax
add edx, 0xffffffd0
cvtsi2sd xmm0, edx
mov ebx, 9
mov dword [esp + 4], edi
inc ebx
xor edx, edx
jmp 0x417035
movzx eax, byte [esi + 1]
add esi, 2
mov edi, esi
add edx, edx
lea edx, [edx + edx*4]
movsx eax, al
add eax, 0xffffffd0
mov esi, eax
and esi, edx
xor eax, edx
lea edx, [eax + esi*2]
dec ebx
cmp ebx, 1
mov esi, edi
jle 0x41703f
movzx eax, byte [esi]
cmp al, 0x2e
je 0x417010
inc esi
jmp 0x417017
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x10]
or eax, 0x20
cmp eax, 0x65
jne 0x41706e
movzx eax, byte [ecx + edi + 1]
cmp eax, 0x2b
je 0x417074
cmp eax, 0x2d
jne 0x41707b
add ecx, edi
add ecx, 2
mov dl, 1
jmp 0x417080
add ecx, edi
xor eax, eax
jmp 0x4170d9
add ecx, edi
add ecx, 2
jmp 0x41707e
add ecx, edi
inc ecx
xor edx, edx
movzx eax, byte [ecx]
mov ah, al
add ah, 0xd0
xor esi, esi
cmp ah, 9
ja 0x4170d0
xor esi, esi
nop word cs:[eax + eax]
mov edi, esi
and edi, 0xfffffff5
mov ebx, esi
and ebx, 0xa
or esi, 0xa
imul esi, ebx
xor ebx, 0xa
imul ebx, edi
movzx eax, al
add eax, esi
lea esi, [ebx + eax]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov ah, al
add ah, 0xd0
cmp ah, 0xa
jb 0x4170a0
mov eax, esi
neg eax
test dl, dl
cmove eax, esi
add eax, dword [esp + 0xc]
mulsd xmm0, qword [0x45c9e8]
mov edx, eax
neg edx
cmovs edx, eax
cmp edx, 0x200
mov edi, dword [ebp + 0xc]
jb 0x41710b
mov edx, 0x1ff
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x41710f
mov dword [esi], 0x22
jmp 0x41710f
test eax, eax
je 0x417139
movsd xmm2, qword [0x45c9f0]
mov esi, 0x45c998
jmp 0x41712e
mov ebx, edx
shr ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x417141
test dl, 1
je 0x417120
mulsd xmm2, qword [esi]
jmp 0x417120
movsd xmm2, qword [0x45c9f0]
addsd xmm0, xmm1
test eax, eax
js 0x417174
mulsd xmm0, xmm2
test edi, edi
je 0x417153
mov dword [edi], ecx
cmp byte [esp + 8], 0
je 0x417162
xorpd xmm0, xmmword [0x45b5a0]
movsd qword [esp + 0x18], xmm0
fld qword [esp + 0x18]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
divsd xmm0, xmm2
test edi, edi
jne 0x417151
jmp 0x417153