Function at 0x416cd0
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 0x416cf1
inc ecx
movzx eax, byte [ecx]
lea edx, [eax - 9]
cmp edx, 5
jb 0x416cf0
cmp eax, 0x20
je 0x416cf0
cmp eax, 0x2b
je 0x416d14
cmp eax, 0x2d
jne 0x416d15
inc ecx
mov al, 1
mov dword [esp + 0xc], eax
jmp 0x416d1d
inc ecx
mov dword [esp + 0xc], 0
xor esi, esi
mov edx, 0xffffffff
jmp 0x416d35
mov eax, edx
inc esi
mov edx, eax
movzx ebx, byte [ecx + esi]
mov eax, ebx
add al, 0xd0
cmp al, 0xa
jb 0x416d30
cmp bl, 0x2e
jne 0x416d56
mov eax, esi
test edx, edx
js 0x416d32
mov dword [esp + 0x14], ebx
mov dword [esp + 8], esi
jmp 0x416d68
mov dword [esp + 0x14], ebx
mov edi, ecx
mov eax, esi
mov dword [esp + 8], esi
mov ebx, esi
test edx, edx
js 0x416d73
mov eax, dword [esp + 8]
lea ebx, [eax - 1]
mov edi, ecx
mov eax, edx
cmp ebx, 0x10
jl 0x416d86
add eax, 0xfffffff1
mov dword [esp + 0x10], eax
mov ebx, 0xf
jmp 0x416d99
test ebx, ebx
je 0x416dd6
sub eax, ebx
cmp ebx, 9
mov dword [esp + 0x10], eax
jle 0x416e30
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x416da9
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416daa
inc edi
movsx eax, al
mov edx, eax
and edx, 0xffffffcf
or eax, 0xffffffcf
lea esi, [eax + edx]
inc esi
cmp ebx, 0xb
jl 0x416ef8
movzx eax, byte [edi]
cmp al, 0x2e
mov dword [esp + 4], esi
jne 0x416dfe
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416dff
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x416de2
mov ecx, dword [ebp + 8]
mov dword [eax], ecx
xorpd xmm0, xmm0
cmp byte [esp + 0xc], 0
je 0x417084
movsd xmm0, qword [0x45e9e0]
jmp 0x417084
inc edi
movsx eax, al
mov esi, eax
and esi, 0xffffffcf
or eax, 0xffffffcf
mov edx, dword [esp + 4]
lea edx, [edx + edx*4]
lea eax, [eax + edx*2]
add esi, eax
inc esi
cmp ebx, 0xc
jl 0x416ef8
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x416e45
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416e46
xorpd xmm0, xmm0
xorpd xmm1, xmm1
test ebx, ebx
jg 0x416f01
jmp 0x416f56
inc edi
movsx eax, al
mov edx, eax
and edx, 0xffffffcf
mov dword [esp + 4], edx
or eax, 0xffffffcf
lea edx, [esi + esi*4]
lea eax, [eax + edx*2]
mov edx, dword [esp + 4]
lea esi, [edx + eax]
inc esi
cmp ebx, 0xd
jl 0x416ef8
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x416e7c
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416e7d
inc edi
movsx eax, al
mov edx, eax
and edx, 0xffffffcf
mov dword [esp + 4], edx
or eax, 0xffffffcf
lea edx, [esi + esi*4]
lea eax, [eax + edx*2]
mov edx, dword [esp + 4]
lea esi, [edx + eax]
inc esi
cmp ebx, 0xe
jl 0x416ef8
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x416eaf
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416eb0
inc edi
movsx eax, al
mov edx, eax
and edx, 0xffffffcf
mov dword [esp + 4], edx
or eax, 0xffffffcf
lea edx, [esi + esi*4]
lea eax, [eax + edx*2]
mov edx, dword [esp + 4]
lea esi, [edx + eax]
inc esi
cmp ebx, 0xf
jl 0x416ef8
movzx eax, byte [edi]
cmp al, 0x2e
jne 0x416ee2
movzx eax, byte [edi + 1]
add edi, 2
jmp 0x416ee3
inc edi
movsx eax, al
mov edx, eax
and edx, 0xffffffcf
or eax, 0xffffffcf
lea ebx, [esi + esi*4]
lea eax, [eax + ebx*2]
lea esi, [edx + eax]
inc esi
cvtsi2sd xmm0, esi
mov ebx, 9
mov dword [esp + 4], ecx
inc ebx
xor edx, edx
jmp 0x416f41
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 0x416f4b
movzx eax, byte [edi]
cmp al, 0x2e
je 0x416f10
inc edi
jmp 0x416f17
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0x14]
or eax, 0x20
cmp eax, 0x65
jne 0x416f85
mov eax, dword [esp + 8]
movzx eax, byte [ecx + eax + 1]
cmp eax, 0x2b
mov ebx, dword [ebp + 0x10]
je 0x416f90
cmp eax, 0x2d
jne 0x416f9b
mov eax, dword [esp + 8]
add ecx, eax
add ecx, 2
mov dl, 1
jmp 0x416fa4
add ecx, dword [esp + 8]
xor eax, eax
mov ebx, dword [ebp + 0x10]
jmp 0x416fed
mov eax, dword [esp + 8]
add ecx, eax
add ecx, 2
jmp 0x416fa2
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 0x416fe4
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 0x416fc0
mov eax, esi
neg eax
test dl, dl
cmove eax, esi
add eax, dword [esp + 0x10]
mulsd xmm0, qword [0x45e9e8]
mov edx, eax
neg edx
cmovs edx, eax
cmp edx, 0x200
jl 0x417019
mov edx, 0x1ff
test ebx, ebx
je 0x41701d
mov dword [ebx], 0x22
jmp 0x41701d
test eax, eax
je 0x417052
movsd xmm2, qword [0x45e9f0]
mov esi, 0x45e998
jmp 0x41703e
mov edi, edx
sar edi, 1
add esi, 8
cmp edx, 2
mov edx, edi
jb 0x41705a
mov edi, edx
or edi, 1
mov ebx, edx
xor ebx, 0xfffffffe
test edi, ebx
je 0x417030
mulsd xmm2, qword [esi]
jmp 0x417030
movsd xmm2, qword [0x45e9f0]
addsd xmm0, xmm1
test eax, eax
js 0x417068
mulsd xmm0, xmm2
jmp 0x41706c
divsd xmm0, xmm2
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417075
mov dword [eax], ecx
cmp byte [esp + 0xc], 0
je 0x417084
xorpd xmm0, xmmword [0x45d5b0]
movsd qword [esp + 0x18], xmm0
fld qword [esp + 0x18]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret