Function at 0x417790
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
mov esi, dword [ebp + 8]
jmp 0x4177b1
inc esi
movzx ecx, byte [esi]
movzx eax, cl
lea edx, [eax - 9]
cmp edx, 5
jb 0x4177b0
cmp eax, 0x20
je 0x4177b0
mov eax, ecx
add al, 0xd5
xor edx, edx
test al, 0xfd
sete dl
mov dword [esp + 0x10], edx
mov edx, 0xffffffff
xor edi, edi
jmp 0x4177e5
mov eax, edx
inc edi
mov edx, eax
mov eax, dword [esp + 0x10]
add eax, edi
mov dword [esp + 0x1c], eax
movzx ebx, byte [esi + eax]
mov eax, ebx
add al, 0xd0
cmp al, 0xa
jb 0x4177e0
cmp bl, 0x2e
jne 0x417812
mov eax, edi
test edx, edx
js 0x4177e2
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 4], eax
jmp 0x417826
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 4], eax
mov eax, edi
mov dword [esp + 0x14], edi
test edx, edx
js 0x41782d
lea eax, [edi - 1]
mov dword [esp + 0x14], edx
mov dword [esp + 8], 0xf
cmp eax, 0xf
mov edx, dword [ebp + 0x10]
jg 0x41784e
test eax, eax
je 0x417891
cmp eax, 9
jle 0x4178ea
mov dword [esp + 8], eax
mov edx, dword [esp + 4]
movzx eax, byte [edx]
cmp al, 0x2e
jne 0x417862
movzx eax, byte [edx + 1]
add edx, 2
jmp 0x417863
inc edx
mov dword [esp + 4], edx
movsx eax, al
add eax, 0xffffffd0
cmp dword [esp + 8], 0xb
jl 0x417995
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
movzx edx, byte [eax]
cmp dl, 0x2e
jne 0x4178b7
movzx edx, byte [eax + 1]
add eax, 2
jmp 0x4178b8
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x41789d
mov edx, dword [ebp + 8]
mov dword [eax], edx
xorpd xmm0, xmm0
cmp cl, 0x2d
jne 0x417b18
movsd xmm0, qword [0x1159918]
jmp 0x417b18
inc eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
lea eax, [eax + eax*4]
movsx edx, dl
lea eax, [edx + eax*2]
add eax, 0xffffffd0
cmp dword [esp + 8], 0xc
jl 0x417995
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417903
mov ch, byte [edx + 1]
add edx, 2
jmp 0x417904
xorpd xmm0, xmm0
mov dword [esp + 8], eax
xorpd xmm1, xmm1
test eax, eax
jg 0x41799e
jmp 0x417a04
inc edx
mov dword [esp + 4], edx
lea eax, [eax + eax*4]
movsx edx, ch
lea eax, [edx + eax*2]
add eax, 0xffffffd0
cmp dword [esp + 8], 0xd
jl 0x417995
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x41792e
mov ch, byte [edx + 1]
add edx, 2
jmp 0x41792f
inc edx
mov dword [esp + 4], edx
lea eax, [eax + eax*4]
movsx edx, ch
lea eax, [edx + eax*2]
add eax, 0xffffffd0
cmp dword [esp + 8], 0xe
jl 0x417995
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417959
mov ch, byte [edx + 1]
add edx, 2
jmp 0x41795a
inc edx
mov dword [esp + 4], edx
lea eax, [eax + eax*4]
movsx edx, ch
lea eax, [edx + eax*2]
add eax, 0xffffffd0
cmp dword [esp + 8], 0xf
jl 0x417995
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417984
mov ch, byte [edx + 1]
add edx, 2
jmp 0x417985
inc edx
mov dword [esp + 4], edx
lea eax, [eax + eax*4]
movsx edx, ch
lea eax, [edx + eax*2]
add eax, 0xffffffd0
cvtsi2sd xmm0, eax
mov eax, 9
inc eax
xor edx, edx
mov dword [esp + 0xc], edi
mov dword [esp + 0x18], ebx
jmp 0x4179e8
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp + 4], edi
mov ebx, edx
and ebx, 0xfffffff5
mov edi, edx
and edi, 0xa
or edx, 0xa
imul edx, edi
xor edi, 0xa
imul edi, ebx
add edx, edi
movsx edi, ch
add edx, edi
add edx, 0xffffffd0
dec eax
cmp eax, 1
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
jle 0x4179f6
mov edi, dword [esp + 4]
mov ch, byte [edi]
cmp ch, 0x2e
je 0x4179b0
inc edi
jmp 0x4179b6
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov eax, dword [esp + 8]
mov edx, dword [ebp + 0x10]
or ebx, 0x20
cmp ebx, 0x65
jne 0x417a71
mov edx, dword [esp + 0x1c]
lea edi, [esi + edx]
movzx ebx, byte [esi + edx + 1]
mov byte [esp + 4], bl
add bl, 0xd5
and bl, 0xfd
cmp bl, 1
adc edi, 1
mov edx, edi
mov ch, byte [edi]
mov bh, ch
add bh, 0xd0
xor esi, esi
cmp bh, 9
ja 0x417a7d
xor esi, esi
mov ebx, edx
nop dword [eax]
mov edi, esi
and edi, 0xfffffff5
mov edx, esi
and edx, 0xa
or esi, 0xa
imul esi, edx
xor edx, 0xa
imul edx, edi
movzx edi, ch
add edi, esi
lea esi, [edx + edi]
add esi, 0xffffffd0
mov ch, byte [ebx + 1]
inc ebx
mov dl, ch
add dl, 0xd0
cmp dl, 0xa
jb 0x417a40
jmp 0x417a7f
add esi, dword [esp + 0x10]
add esi, edi
xor edi, edi
mov ebx, esi
jmp 0x417a8e
mov ebx, edx
mov edi, esi
neg edi
cmp byte [esp + 4], 0x2d
cmove edi, esi
mov edx, dword [ebp + 0x10]
mulsd xmm0, qword [0x1159920]
sub eax, dword [esp + 0x14]
add eax, edi
mov esi, eax
neg esi
cmovns eax, esi
cmp eax, 0x200
jl 0x417abb
mov eax, 0x1ff
test edx, edx
je 0x417abf
mov dword [edx], 0x22
jmp 0x417abf
test eax, eax
je 0x417ae8
movsd xmm2, qword [0x1159928]
mov edi, 0x11598d0
jmp 0x417ade
mov edx, eax
sar edx, 1
add edi, 8
cmp eax, 2
mov eax, edx
jb 0x417af0
test al, 1
je 0x417ad0
mulsd xmm2, qword [edi]
jmp 0x417ad0
movsd xmm2, qword [0x1159928]
addsd xmm0, xmm1
test esi, esi
js 0x417afe
mulsd xmm0, xmm2
jmp 0x417b02
divsd xmm0, xmm2
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417b0b
mov dword [eax], ebx
cmp cl, 0x2d
jne 0x417b18
xorpd xmm0, xmmword [0x11585b0]
movsd qword [esp + 0x20], xmm0
fld qword [esp + 0x20]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret