Function at 0x417110
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x30
mov edi, dword [ebp + 8]
jmp 0x417131
inc edi
movzx ecx, byte [edi]
movzx eax, cl
lea edx, [eax - 9]
cmp edx, 5
jb 0x417130
cmp eax, 0x20
je 0x417130
mov eax, ecx
add al, 0xd5
xor edx, edx
test al, 0xfd
sete dl
mov dword [esp + 0x10], edx
xor eax, eax
mov edx, 0xffffffff
jmp 0x417165
mov esi, edx
inc eax
mov edx, esi
mov esi, dword [esp + 0x10]
add esi, eax
movzx ebx, byte [edi + esi]
mov ch, bl
add ch, 0xd0
cmp ch, 0xa
jb 0x417160
cmp bl, 0x2e
mov dword [esp + 0x1c], esi
jne 0x417194
mov esi, eax
test edx, edx
js 0x417162
mov esi, dword [esp + 0x10]
add esi, edi
mov dword [esp + 4], esi
jmp 0x4171a8
mov esi, dword [esp + 0x10]
add esi, edi
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov esi, eax
test edx, edx
js 0x4171af
lea esi, [eax - 1]
mov dword [esp + 0xc], edx
cmp esi, 0x10
mov dword [esp + 0x18], eax
jl 0x4171c4
add dword [esp + 0xc], 0xfffffff1
mov esi, 0xf
jmp 0x4171d5
test esi, esi
je 0x41721a
sub dword [esp + 0xc], esi
cmp esi, 9
jle 0x4172a1
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x4171e8
mov ch, byte [edx + 1]
add edx, 2
jmp 0x4171e9
inc edx
mov dword [esp + 4], edx
movsx edx, ch
mov dword [esp + 8], edx
add edx, 0xffffffd0
mov dword [esp], edx
cmp esi, 0xb
jl 0x417212
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417240
mov ch, byte [edx + 1]
add edx, 2
jmp 0x417241
mov edx, dword [esp]
jmp 0x4173f7
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417226
mov edx, dword [ebp + 8]
mov dword [eax], edx
xorpd xmm0, xmm0
cmp cl, 0x2d
jne 0x417559
movsd xmm0, qword [0x4559c0]
jmp 0x417559
inc edx
mov dword [esp + 4], edx
mov eax, dword [esp + 8]
and eax, 0xa
mov dword [esp + 8], eax
xor eax, 0xa
mov dword [esp + 0x14], eax
mov eax, dword [esp]
and eax, 0xfffffff5
imul eax, dword [esp + 0x14]
or dword [esp], 0xa
mov edx, dword [esp]
imul edx, dword [esp + 8]
mov dword [esp], edx
add dword [esp], eax
movsx edx, ch
mov eax, dword [esp]
add eax, edx
add eax, 0xffffffd0
mov dword [esp], eax
mov edx, dword [esp]
cmp esi, 0xc
jl 0x4173f7
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x4172b6
mov ch, byte [edx + 1]
add edx, 2
jmp 0x4172b7
xorpd xmm0, xmm0
xorpd xmm1, xmm1
test esi, esi
jg 0x417400
jmp 0x417447
inc edx
mov dword [esp + 4], edx
mov edx, dword [esp]
and edx, 0xa
mov dword [esp + 8], edx
mov eax, dword [esp]
or dword [esp], 0xa
mov edx, dword [esp]
imul edx, dword [esp + 8]
mov dword [esp], edx
mov edx, dword [esp + 8]
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add dword [esp], eax
movsx edx, ch
mov eax, dword [esp]
add eax, edx
add eax, 0xffffffd0
mov dword [esp], eax
mov edx, dword [esp]
cmp esi, 0xd
jl 0x4173f7
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417314
mov ch, byte [edx + 1]
add edx, 2
jmp 0x417315
inc edx
mov dword [esp + 4], edx
mov edx, dword [esp]
and edx, 0xa
mov dword [esp + 8], edx
mov eax, dword [esp]
or dword [esp], 0xa
mov edx, dword [esp]
imul edx, dword [esp + 8]
mov dword [esp], edx
mov edx, dword [esp + 8]
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add dword [esp], eax
movsx edx, ch
mov eax, dword [esp]
add eax, edx
add eax, 0xffffffd0
mov dword [esp], eax
mov edx, dword [esp]
cmp esi, 0xe
jl 0x4173f7
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x417372
mov ch, byte [edx + 1]
add edx, 2
jmp 0x417373
inc edx
mov dword [esp + 4], edx
mov edx, dword [esp]
and edx, 0xa
mov dword [esp + 8], edx
mov eax, dword [esp]
or dword [esp], 0xa
mov edx, dword [esp]
imul edx, dword [esp + 8]
mov dword [esp], edx
mov edx, dword [esp + 8]
xor edx, 0xa
and eax, 0xfffffff5
imul eax, edx
add dword [esp], eax
movsx edx, ch
mov eax, dword [esp]
add eax, edx
add eax, 0xffffffd0
mov dword [esp], eax
mov edx, dword [esp]
cmp esi, 0xf
jl 0x4173f7
mov edx, dword [esp + 4]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x4173cc
mov ch, byte [edx + 1]
add edx, 2
jmp 0x4173cd
inc edx
mov dword [esp + 4], edx
mov esi, dword [esp]
mov eax, esi
and eax, 0xa
mov edx, esi
or esi, 0xa
imul esi, eax
xor eax, 0xa
and edx, 0xfffffff5
imul edx, eax
movsx eax, ch
add esi, edx
mov edx, esi
lea edx, [eax + esi]
add edx, 0xffffffd0
cvtsi2sd xmm0, edx
mov esi, 9
inc esi
xor edx, edx
mov eax, ebx
jmp 0x41742c
mov ch, byte [ebx + 1]
add ebx, 2
mov dword [esp + 4], ebx
lea edx, [edx + edx*4]
movsx ebx, ch
lea edx, [ebx + edx*2]
add edx, 0xffffffd0
dec esi
cmp esi, 1
jle 0x41743a
mov ebx, dword [esp + 4]
mov ch, byte [ebx]
cmp ch, 0x2e
je 0x417410
inc ebx
jmp 0x417416
mov ebx, eax
xorps xmm1, xmm1
cvtsi2sd xmm1, edx
mov eax, dword [esp + 0x18]
or ebx, 0x20
cmp ebx, 0x65
jne 0x4174c4
mov edx, dword [esp + 0x1c]
lea eax, [edi + edx]
mov ch, byte [edi + edx + 1]
mov dl, ch
add dl, 0xd5
and dl, 0xfd
cmp dl, 1
adc eax, 1
movzx edx, byte [eax]
mov dh, dl
add dh, 0xd0
xor esi, esi
cmp dh, 9
ja 0x4174b8
xor esi, esi
nop dword [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 edx, dl
mov edi, edx
or edx, 0xffffffcf
add edx, esi
add edx, ebx
and edi, 0xffffffcf
lea esi, [edi + edx]
inc esi
movzx edx, byte [eax + 1]
inc eax
mov dh, dl
add dh, 0xd0
cmp dh, 0xa
jb 0x417480
mov edi, esi
neg edi
cmp ch, 0x2d
cmovne edi, esi
jmp 0x4174ce
add edi, dword [esp + 0x10]
add edi, eax
mov eax, edi
xor edi, edi
add edi, dword [esp + 0xc]
mulsd xmm0, qword [0x4559c8]
mov edx, edi
neg edx
cmovs edx, edi
cmp edx, 0x200
mov esi, dword [ebp + 0x10]
jl 0x4174fd
mov edx, 0x1ff
test esi, esi
je 0x417501
mov dword [esi], 0x22
jmp 0x417501
test edi, edi
je 0x417529
movsd xmm2, qword [0x4559d0]
mov esi, 0x455978
jmp 0x41751e
mov ebx, edx
sar ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x417531
test dl, 1
je 0x417510
mulsd xmm2, qword [esi]
jmp 0x417510
movsd xmm2, qword [0x4559d0]
addsd xmm0, xmm1
test edi, edi
js 0x41753f
mulsd xmm0, xmm2
jmp 0x417543
divsd xmm0, xmm2
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x41754c
mov dword [edx], eax
cmp cl, 0x2d
jne 0x417559
xorpd xmm0, xmmword [0x4545b0]
movsd qword [esp + 0x20], xmm0
fld qword [esp + 0x20]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret