Function at 0x646ec7
Capabilities:
Encode data using xor

Disassembly:
xlatb
ljmp 0x92
loopne 0x646f08
add byte [ecx + 0x45], bl
fxrstor [esi]
jae 0x646f31
jl 0x646ed3
sbb ebx, dword [0x720d86cd]
jno 0x646f3c
add byte [ebx], bh
jae 0x646eb9
fld dword [ebx + ecx*8 + 0x4e]
loop 0x646ee5
xchg dword [edx], ebx
xchg esp, eax
pop ebp
mov edx, 0xa60a43
lahf
inc edx
push cs
shr dword [eax - 0x53], 0x2f
or al, 0
dec edi
mov cs, word [ebp - 0x21]
pop ebp
imul ebx, dword [edx + eax*2], reloc.MSVCRT.dll_strncpy
sahf
dec ebp
fild word [eax]
mov esp, 0xbdc1397c
mov byte [0x5a008510], al
mov edx, dword [ecx]
add byte [esp + edi*2 - 0x5d423ec7], bh
adc byte [ebp + 0x118b5a00], al
and byte [0xbb075a], al
sahf
adc byte [ebp + 0x5e], dh
inc edx
jge 0x646ef0
xchg edi, eax
add byte [ebx - 0x2ebb7544], bl
fmul dword [esi - 2]
add bl, al
mov ebx, 0xfc45128b
inc ebp
cld
in eax, 0xf3
add byte [esi + 0x28], bl
arpl bp, si
sbb al, 0x63
mov ch, 2
add bl, cl
dec ecx
je 0x646f8e
test dword [edx + 3], eax
fild word [eax]
add ecx, dword [edi + reloc.MSVCRT.dll_strncpy]
xor eax, 0x4e6a0005
and dl, byte [eax + 0x1e9fa9]
mov bl, 0x39
push 0x7c
xchg edi, eax
sti
or ah, byte [ebx]
add byte [edi], bl
fbstp tbyte [ebp - 0x535ffb99]
pop dword [eax]
fisttp dword [edi]
stc
pushfd
stc
sbb ebx, dword [ebx + esi*4]
add byte [ecx + 0xd], dh
sar byte [esi - 0x52f138cc], cl
add bl, bl
xor ebp, ebx
jnp 0x646f43
push edx
xchg ebp, eax
mov al, 0
and ecx, dword [edi + 0x66]
mov edi, 0x30763853
add byte [edx - 0x7dcff5fa], al
add al, 0xf2
mov al, byte [0x1020300]
add al, byte [edx]
adc byte [edx], dl
add ch, ah
stosb byte es:[edi], al
xor byte [eax], al
add byte [esi], 0xa
xor byte [edx + 0xa0f204], al
add eax, dword [edx]
add dword [edx], eax
add dl, byte [eax]
push edx
add byte [eax], al
in eax, 0xaa
and eax, 0x861afc56
in eax, dx
inc eax
xchg esi, eax
leave
aam 0x4b
xor eax, edi
mov word [eax + esi + 0x40], cs
or edx, 0x9300b31
add byte [esp + eax], ah
push es
adc eax, dword [edx]
push ebp
push ebx
xor dword [edi], edx
xor byte [edx], al
adc eax, 0x130a0301
push cs
push esi
jb 0x646fd2
imul edx, dword [ebx + 0x69], reloc.MSVCRT.dll_strncpy
dec ecx
and byte [esi + 0x63], ch
xor dword cs:[edi], ebx
sub byte [ebp + 4], 0xb
add al, 0x13
push ss
add eax, 0x72542006
jne 0x647061
add byte [eax + 0x4e], dh
je 0x64706c
outsd dx, dword [esi]
jb 0x647018
imul esi, dword [ecx], 0x3a
xor byte [eax], bh
add ecx, dword [eax]
xor dword [eax], ebp
add byte [ebx + 0x29], ah
and byte [edx], dh
xor byte [eax], dh
and byte ss:[ecx], al
mov edx, dword [eax]
and byte [0x726f4620], ch
and byte [eax], al
popal
jne 0x64708c
push 0x7a69726f
add byte [ebp + 0x64], ah
and byte [ebp + 0x73], dh
and byte gs:[edi - 0x80], ch
outsb dx, byte [esi]
insb byte es:[edi], dx
jns 0x64705c
inc ebp
xor byte [ebx - 0x3f], al
push cs
or byte [ebx], al
adc edi, dword [esi + eax]
ror dword [esi], 8
add edx, dword [ebx]
cmp al, 6
pop ss
inc ebx
insb byte es:[edi], dx
popal
jae 0x64703b
jae 0x64705d
xor esp, dword [eax]
push eax
jne 0x6470a4
insb byte es:[edi], dx
add byte [ecx + 0x63], ch
and byte [eax + 0x72], dl
imul ebp, dword [ebp + 0x61], 0x20797200
inc ebx
jb 0x6470c8
imul eax, dword [eax], reloc.MSVCRT.dll_strncpy
je 0x6470c5
outsd dx, dword [esi]
outsb dx, byte [esi]
and al, 0x20
inc ecx
ret
pop ss
or eax, 0x32303031
mov byte [eax], dh
cmp byte [eax], dh
add al, byte [eax]
pop edx
pop ss
or eax, 0x32002180
xor byte [edi], dh
xor dh, byte [ebx]
xor eax, 0x39603539
pop edx
xor byte [ecx + 0x33b3fb4], al
aas
cmp eax, dword [ebx]
cmp edi, dword [ebx]
add al, 0x30
cmp dword [ebx], eax
or byte [edx], dh
push esp
jb 0x647108
adc byte [ebx + 0x20], dh
outsd dx, dword [esi]
sbb byte [ecx], 0x61
je 0x6470c5
and byte [ecx + 0x65], al
jo 0x647120
inc ecx
jo 0x647120
ja 0x647122
jbe 0x64702e
pop es
jae 0x6470bc
add byte [edi], 5
jno 0x6470d6
and byte [ebx], ah
xor dword [eax], esi
xor dword [esi], ebp
adc al, 0x30
sub al, 0xa3
sbb eax, 0x431dae25
sbb eax, 0x44646f43
outsd dx, dword [esi]
inc esp
and byte gs:[ecx], ah
add ch, byte [ecx + 0x6e]
pushal
sub byte [ecx], dh
add byte [eax], dh
and byte [ebx + 0x41], al
inc ecx
xor byte [edx - 0x36daddff], al
add dword ss:[edx], esp
add dword [edx], esp
pop ebp
verr ax
add cl, byte [edx]
add al, byte [ecx]
inc ecx
pop esi
cmc
and ecx, dword [ebx + 0x5e]
movsd dword es:[edi], dword [esi]
xlatb
mov al, byte [eax]
mov ebx, 0x57d4e932
imul edi
in al, 0
invalid
imul edx, dword ss:[eax], reloc.MSVCRT.dll_strncpy
add byte [ebp - 0x7f], dh
xor byte [edi + 4], bh
push 0x2b00cb7f
jne 0x647137
int 0x1d
or byte [edi + ebx*8 - 0x586b9700], cl
sbb eax, 0xdf8c08
imul edx, dword [edi + reloc.MSVCRT.dll_strncpy], 0x99e00080
xchg esp, eax
cmpsd dword [esi], dword es:[edi]
aaa
mov dword [0x807b9c], eax
loopne 0x6470c3
loope 0x64711a
aaa
dec ebp
pop edi
into
add byte [ebx], bh
adc al, 0xee
xchg ah, dl
sal ch, 1
cmc
daa
add byte [0x380b25bc], dh
cmpsd dword [esi], dword es:[edi]
mov word [ebx], fs
popfd
pop ss
mov dword [reloc.MSVCRT.dll_strncpy], eax
sti
add ch, cl
push 0x62
or byte [ebp + edx*8 + 0x21], 0xda
add byte [ebx], bl
fyl2x
jecxz 0x6470de
cmp ecx, dword [edx - reloc.MSVCRT.dll_strncpy]
pop ebx
nop
add dword [edi - 0x37], ecx
leave
cmpsd dword [esi], dword es:[edi]
add byte [esi + 0x10], dh
jg 0x647192
add edi, dword [esi + edi*4 - 0x52]
add byte [esi + 0x7d], bh
rcr ebp, 0xf9
stc
add eax, 0x48001bbc
pushfd
imul esp, edi, 0x3c3ca4c0
add byte [ecx], al
fist word ds:[esi + 0xe4c5e5]
xchg esp, eax
jno 0x647164
push ebp
add edi, eax
add byte [esi], ah
add byte [edx + 0x40], cl
add byte es:[edx + 0x40], cl
cmp al, 0xb5
mov eax, dword [reloc.MSVCRT.dll_strncpy]
cmpsd dword [esi], dword es:[edi]
insd dword es:[edi], dx
or byte [esi - 0x3084da70], 0
mov edi, 0x2feb1c3f
jnp 0x647174
add byte [edi + 0x2feb1c3f], bh
xchg esi, eax
cli
in eax, 0
xchg dword [edi - 0x3a], esi
mov ch, 0x56
mov dl, 0x7a
cmp eax, dword [eax]
push esp
xor byte [ebx + 0x1b], dl
fbld tbyte [edx + 0x34]
inc dword [eax]
push ds
sal esp, 1
pop edx
xchg ebx, eax
sub byte [ebp + 0x174c00e5], al
dec esp
pop ss
dec esi
jle 0x64722a
std
movsb byte es:[edi], byte [esi]
xchg ebx, eax
add byte [ecx - 0x10322081], bl
movsb byte es:[edi], byte [esi]
jne 0x6471ca
add bh, ch
adc eax, 0xf8e747f6
sbb dword [edx], esi
fsubr dword [esi]
xor al, 0x1a
cmpsb byte [esi], byte es:[edi]
mov ah, 0xa7
dec esp
add byte [esi - 0x43], bh
mov ebx, 0x573d0c4f
int1
add byte [eax], dh
salc
cmpsb byte [esi], byte es:[edi]
mov ss, esi
xor byte [esi], 0xd7
sbb dword [esi], ebp
movsd dword es:[edi], dword [esi]
int 0x7e
xor al, 0x2d
or byte [ecx - 0x7e5ffcfe], cl
mov dword [reloc.MSVCRT.dll_strncpy], eax
and byte [edx], ah
cli
xor byte [edx], dl
mov eax, dword [reloc.MSVCRT.dll_strncpy]
jecxz 0x6471a3
inc eax
inc dword [edx]
add dword [eax], eax
xor byte [eax + 3], dh
lodsd eax, dword [esi]
imul edx, dword [eax], reloc.MSVCRT.dll_strncpy
or ebp, dword [ebp + reloc.MSVCRT.dll_strncpy]
xor byte [edi + 0x30], ah
or ebp, dword gs:[ebp + reloc.MSVCRT.dll_strncpy]
or byte [ebp - 0x5ec849e4], ch
lodsd eax, dword [esi]
sub ch, byte [eax + 0x6b1a1ead]
ja 0x647248
inc ecx
scasb al, byte es:[edi]
push cs
and dword [esi], ecx
pop fs
adc byte [eax], ah
cwde
add dword [eax], ecx
push es
xor byte [ebp - 0x5a], ch
lodsd eax, dword [esi]
or al, 4
popal
xor byte [eax], al
pop edi
mov eax, dword [reloc.MSVCRT.dll_strncpy]
pop ecx
xor byte [eax], ah
push edi
xor byte [ebp + 0x16], dl
or dword [eax], eax
pop ebx
add byte gs:[bx], ch
imul esp, dword [bp + 0x30], 0x1f3021
xor byte [edi], al
push es
add eax, 0x2030e2b
add byte [edx], bl
add al, 0x14
invalid