Function at 0x678c10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x40]
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov edx, 0x27d4eb2f
mov edi, 0x165667c5
cmp ebx, 0x20
jb 0x679047
mov edi, ebp
lea esi, [ebx + ebp]
add esi, 0xffffffe1
mov dword [esp + 0x10], esi
movd xmm0, eax
mov ebp, dword [esp + 0x40]
movd xmm1, ebp
punpckldq xmm0, xmm1
pshufd xmm0, xmm0, 0x44
paddq xmm0, xmmword [0x8d7770]
mov esi, eax
add esi, 0x7a143579
mov dword [esp + 0xc], esi
adc ebp, 0x61c8864e
movdqa xmm1, xmmword [0x8d7780]
movdqa xmm2, xmmword [0x8d7790]
movdqa xmm3, xmmword [0x8d77a0]
movdqa xmm4, xmmword [0x8d77b0]
mov dword [esp + 8], eax
nop dword [eax]
mov eax, dword [edi + 0x10]
mov dword [esp + 4], edi
mov esi, eax
mov ecx, 0xc2b2ae3d
imul esi, ecx
mov ecx, 0x27d4eb4f
mul ecx
add edx, esi
mov ebx, dword [edi + 0x14]
imul ebx, ecx
add ebx, edx
add eax, dword [esp + 8]
adc ebx, dword [esp]
mov esi, ebx
shld esi, eax, 0x1f
shrd ebx, eax, 1
mov ecx, ebx
mov eax, ebx
mov edx, 0x85ebca87
mul edx
mov edi, 0x9e3779b1
imul ecx, edi
add edx, ecx
mov dword [esp + 0x18], esi
mov ecx, 0x85ebca87
imul esi, ecx
add esi, edx
mov dword [esp], esi
mov esi, dword [esp + 4]
mov edi, dword [esi + 0x18]
mov dword [esp + 8], eax
mov eax, edi
mov ecx, 0x27d4eb4f
mul ecx
mov ecx, 0xc2b2ae3d
imul edi, ecx
add edx, edi
mov ecx, dword [esi + 0x1c]
mov esi, 0x27d4eb4f
imul ecx, esi
add ecx, edx
add eax, dword [esp + 0xc]
adc ecx, ebp
mov edi, ecx
shld edi, eax, 0x1f
shrd ecx, eax, 1
mov ebp, ecx
mov eax, 0x9e3779b1
imul ebp, eax
mov eax, ecx
mov esi, 0x85ebca87
mul esi
add edx, ebp
mov dword [esp + 0x1c], edi
mov ebp, edi
imul ebp, esi
add ebp, edx
mov edx, dword [esp + 4]
movdqu xmm5, xmmword [edx]
movdqa xmm6, xmm5
pmuludq xmm6, xmm1
paddq xmm6, xmm0
movdqa xmm0, xmm5
psrlq xmm0, 0x20
pmuludq xmm0, xmm1
pmuludq xmm5, xmm2
paddq xmm5, xmm0
psllq xmm5, 0x20
paddq xmm5, xmm6
movdqa xmm0, xmm5
psrlq xmm0, 0x21
psllq xmm5, 0x1f
por xmm5, xmm0
movdqa xmm0, xmm5
psrlq xmm0, 0x20
pmuludq xmm0, xmm3
movdqa xmm6, xmm5
pmuludq xmm6, xmm4
paddq xmm6, xmm0
psllq xmm6, 0x20
movdqa xmm0, xmm5
pmuludq xmm0, xmm3
paddq xmm0, xmm6
add edx, 0x20
mov dword [esp + 0xc], eax
mov eax, edx
mov edi, edx
cmp edx, dword [esp + 0x10]
jb 0x678ca0
mov dword [esp + 4], edi
pshufd xmm1, xmm0, 0x55
movd edi, xmm0
movd edx, xmm1
mov eax, edx
shld eax, edi, 1
mov dword [esp + 0x14], eax
shld edi, edx, 1
pshufd xmm1, xmm0, 0xee
pshufd xmm0, xmm0, 0xff
movd edx, xmm1
movd dword [esp + 0x10], xmm0
mov eax, dword [esp + 0x10]
shld eax, edx, 7
mov esi, dword [esp + 0x10]
shld edx, esi, 7
add edx, edi
adc eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov esi, dword [esp]
mov edi, esi
mov eax, dword [esp + 8]
shld edi, eax, 0xc
shld eax, esi, 0xc
add eax, edx
adc edi, dword [esp + 0x10]
mov esi, edi
mov edx, ebp
mov edi, dword [esp + 0xc]
shld edx, edi, 0x12
shld edi, ebp, 0x12
add edi, eax
adc edx, esi
mov dword [esp], edx
movd esi, xmm5
mov edx, 0xf796ca9
mov eax, esi
mul edx
imul esi, esi, 0xdef35b01
add esi, edx
pshufd xmm0, xmm5, 0x55
movd edx, xmm0
imul edx, edx, 0xf796ca9
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mov edx, 0x85ebca87
mul edx
add edx, ebp
mov ebp, 0x85ebca87
imul esi, ebp
add esi, edx
xor esi, dword [esp]
xor eax, edi
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mov edx, 0x85ebca87
mul edx
mov edi, 0x85ebca87
add edx, ebp
imul esi, edi
add esi, edx
mov edx, 0xc2b2ae63
add eax, edx
mov dword [esp], eax
mov eax, 0x85ebca77
adc esi, eax
pshufd xmm0, xmm5, 0xee
movd ebp, xmm0
mov eax, ebp
mov edx, 0xf796ca9
mul edx
imul ebp, ebp, 0xdef35b01
add ebp, edx
pshufd xmm0, xmm5, 0xff
movd edx, xmm0
imul edx, edx, 0xf796ca9
add edx, ebp
mov ebp, edx
shld ebp, eax, 0x1f
shld eax, edx, 0x1f
mov edx, eax
mov edi, 0x9e3779b1
imul edx, edi
mov edi, edx
mov edx, 0x85ebca87
mul edx
add edx, edi
mov edi, 0x85ebca87
imul ebp, edi
mov edi, 0x85ebca87
add ebp, edx
xor ebp, esi
xor eax, dword [esp]
mov esi, eax
mov edx, 0x9e3779b1
imul esi, edx
mov dword [esp], esi
mul edi
mov edi, eax
mov esi, edx
add esi, dword [esp]
mov eax, 0x85ebca87
imul ebp, eax
add esi, ebp
mov eax, 0xc2b2ae63
add edi, eax
mov dword [esp], edi
mov eax, 0x85ebca77
adc esi, eax
mov eax, ebx
mov edx, 0xf796ca9
mul edx
imul ebx, ebx, 0xdef35b01
add ebx, edx
imul edx, dword [esp + 0x18], 0xf796ca9
add edx, ebx
mov ebx, edx
shld ebx, eax, 0x1f
shld eax, edx, 0x1f
mov edi, eax
mov edx, 0x9e3779b1
imul edi, edx
mov ebp, 0x85ebca87
mul ebp
add edx, edi
imul ebx, ebp
mov edi, 0x85ebca87
add ebx, edx
xor ebx, esi
xor eax, dword [esp]
mov ebp, eax
mov edx, 0x9e3779b1
imul ebp, edx
mul edi
mov esi, edx
add esi, ebp
imul ebx, edi
add esi, ebx
mov edx, 0xc2b2ae63
add eax, edx
mov ebp, eax
mov eax, 0x85ebca77
adc esi, eax
mov eax, ecx
mov edx, 0xf796ca9
mul edx
imul edi, ecx, 0xdef35b01
add edi, edx
imul edx, dword [esp + 0x1c], 0xf796ca9
add edx, edi
mov edi, edx
shld edi, eax, 0x1f
shld eax, edx, 0x1f
mov ebx, eax
mov ecx, 0x9e3779b1
imul ebx, ecx
mov ecx, 0x85ebca87
mul ecx
add edx, ebx
imul edi, ecx
mov ebx, 0x85ebca87
add edi, edx
xor edi, esi
xor eax, ebp
mov esi, eax
mov ecx, 0x9e3779b1
imul esi, ecx
mul ebx
add edx, esi
mov esi, 0x85ebca87
imul edi, ebx
add edx, edi
mov ecx, 0xc2b2ae63
add eax, ecx
mov ecx, 0x85ebca77
adc edx, ecx
mov dword [esp], edx
mov edi, 0x165667c5
mov ebx, dword [esp + 0x38]
jmp 0x679055
mov esi, 0x85ebca87
mov dword [esp + 4], ebp
add eax, edi
adc dword [esp], edx
add eax, ebx
mov dword [esp + 8], eax
adc dword [esp], 0
and ebx, 0x1f
cmp ebx, 8
jb 0x67911f
mov edx, 0xc2b2ae3d
lea eax, [ebx - 8]
test al, 8
jne 0x679126
mov ebp, dword [esp + 4]
mov dword [esp + 0xc], eax
mov eax, dword [ebp]
mov esi, eax
imul esi, edx
mov edi, 0x27d4eb4f
mul edi
add esi, edx
mov edx, dword [ebp + 4]
imul edx, edi
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov ebx, eax
mov ecx, 0x9e3779b1
imul ebx, ecx
mov ecx, 0x85ebca87
mul ecx
mov edi, eax
add ebx, edx
imul esi, ecx
add esi, ebx
xor esi, dword [esp]
xor edi, dword [esp + 8]
mov ecx, esi
shld ecx, edi, 0x1b
shld edi, esi, 0x1b
mov eax, edi
mov ebx, 0x85ebca87
mul ebx
mov esi, 0x9e3779b1
imul edi, esi
add edx, edi
mov edi, 0x165667c5
add ebp, 8
mov dword [esp + 4], ebp
mov ebp, 0x85ebca77
mov esi, 0x85ebca87
imul ecx, ebx
add ecx, edx
mov edx, 0xc2b2ae63
add eax, edx
mov dword [esp + 8], eax
adc ecx, ebp
mov dword [esp], ecx
mov edx, dword [esp + 0xc]
mov ebx, edx
cmp edx, 8
jae 0x679131
jmp 0x679277
mov edx, ebx
jmp 0x679277
mov edx, eax
cmp edx, 8
jb 0x679277
mov edx, dword [esp + 4]
mov ebp, dword [esp + 8]
nop dword [eax]
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov eax, dword [edx]
mov esi, eax
mov ecx, 0xc2b2ae3d
imul esi, ecx
mov edi, 0x27d4eb4f
mul edi
add esi, edx
mov edx, dword [esp + 4]
mov edx, dword [edx + 4]
imul edx, edi
add edx, esi
mov esi, edx
shld esi, eax, 0x1f
shld eax, edx, 0x1f
mov edi, eax
mov edx, 0x9e3779b1
imul edi, edx
mov ebx, 0x85ebca87
mul ebx
add edi, edx
imul esi, ebx
add esi, edi
xor esi, dword [esp]
xor eax, ebp
mov edi, esi
shld edi, eax, 0x1b
shld eax, esi, 0x1b
mov ecx, dword [esp + 4]
mov esi, dword [ecx + 8]
mov ebx, eax
mov ecx, 0x9e3779b1
imul ebx, ecx
mov ebp, 0x85ebca87
mul ebp
mov ecx, eax
add ebx, edx
imul edi, ebp
add edi, ebx
mov eax, 0xc2b2ae63
add ecx, eax
mov eax, 0x85ebca77
adc edi, eax
mov ebx, esi
mov eax, esi
mov ebp, 0x27d4eb4f
mul ebp
mov esi, eax
mov eax, 0xc2b2ae3d
imul ebx, eax
add ebx, edx
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
imul eax, ebp
add eax, ebx
mov ebx, eax
shld ebx, esi, 0x1f
shld esi, eax, 0x1f
mov eax, esi
mov edx, 0x85ebca87
mul edx
mov ebp, 0x9e3779b1
imul esi, ebp
mov ebp, 0x9e3779b1
add esi, edx
mov edx, 0x85ebca87
imul ebx, edx
add ebx, esi
xor ebx, edi
xor eax, ecx
mov ecx, ebx
shld ecx, eax, 0x1b
shld eax, ebx, 0x1b
mov ebx, dword [esp + 8]
mov esi, eax
mov edi, 0x85ebca87
mul edi
imul esi, ebp
add edx, esi
imul ecx, edi
add ecx, edx
mov edx, dword [esp + 4]
add edx, 0x10
mov ebp, eax
mov eax, 0xc2b2ae63
add ebp, eax
mov eax, 0x85ebca77
adc ecx, eax
mov dword [esp], ecx
add ebx, 0xfffffff0
cmp ebx, 7
ja 0x679140
mov dword [esp + 8], ebp
mov esi, 0x85ebca87
mov dword [esp + 4], edx
mov edx, ebx
mov edi, 0x165667c5
cmp edx, 4
jb 0x6792eb
mov ebp, dword [esp + 4]
mov ebx, dword [ebp]
mov eax, ebx
mov dword [esp + 0xc], edx
mul esi
mov edi, eax
mov eax, 0x9e3779b1
imul ebx, eax
add ebx, edx
xor ebx, dword [esp]
xor edi, dword [esp + 8]
mov ecx, ebx
shld ecx, edi, 0x17
shld edi, ebx, 0x17
mov eax, edi
mov esi, 0x27d4eb4f
mul esi
mov ebx, 0xc2b2ae3d
imul edi, ebx
add edx, edi
mov edi, 0x165667c5
imul ecx, esi
add ecx, edx
mov edx, 0x9e3779f9
add ebp, 4
mov esi, eax
mov eax, 0x165667b1
add esi, edx
mov edx, dword [esp + 0xc]
adc ecx, eax
mov dword [esp], ecx
add edx, 0xfffffffc
test edx, edx
jne 0x6792fb
jmp 0x679411
mov ebp, dword [esp + 4]
mov esi, dword [esp + 8]
test edx, edx
je 0x679411
test dl, 1
jne 0x679304
mov ebx, edx
jmp 0x679350
movzx eax, byte [ebp]
mov ebx, esi
mov esi, eax
mov dword [esp + 0xc], edx
mov edx, 0x27d4eb2f
imul esi, edx
mul edi
add esi, edx
xor esi, dword [esp]
xor eax, ebx
mov ecx, esi
shld ecx, eax, 0xb
shld eax, esi, 0xb
mov esi, eax
mov ebx, 0x85ebca87
mul ebx
mov edi, 0x9e3779b1
imul esi, edi
add edx, esi
inc ebp
imul ecx, ebx
add ecx, edx
mov dword [esp], ecx
mov edx, dword [esp + 0xc]
lea ebx, [edx - 1]
mov esi, eax
cmp edx, 1
mov edx, 0x27d4eb2f
je 0x679411
xor edi, edi
mov dword [esp + 4], ebx
nop word cs:[eax + eax]
movzx eax, byte [ebp + edi]
mov ebx, eax
imul ebx, edx
mov ecx, 0x165667c5
mul ecx
add ebx, edx
xor ebx, dword [esp]
xor eax, esi
mov esi, ebp
mov ebp, ebx
shld ebp, eax, 0xb
shld eax, ebx, 0xb
mov ebx, eax
mov ecx, 0x9e3779b1
imul ebx, ecx
mov ecx, 0x85ebca87
mul ecx
mov ecx, eax
add ebx, edx
mov eax, 0x85ebca87
imul ebp, eax
add ebp, ebx
movzx eax, byte [esi + edi + 1]
mov ebx, eax
mov edx, 0x27d4eb2f
imul ebx, edx
mov edx, 0x165667c5
mul edx
add ebx, edx
xor ebx, ebp
xor eax, ecx
mov ecx, ebx
shld ecx, eax, 0xb
shld eax, ebx, 0xb
mov ebx, eax
mov edx, 0x85ebca87
mul edx
mov ebp, 0x9e3779b1
imul ebx, ebp
mov ebp, esi
add edx, ebx
mov ebx, dword [esp + 4]
mov esi, 0x85ebca87
imul ecx, esi
add ecx, edx
mov dword [esp], ecx
mov edx, 0x27d4eb2f
add edi, 2
mov esi, eax
cmp ebx, edi
jne 0x679370
mov ecx, dword [esp]
mov eax, ecx
shr eax, 1
xor eax, esi
mov ebp, 0xc2b2ae3d
imul ebp, eax
mov ebx, 0x27d4eb4f
mul ebx
mov edi, eax
mov esi, edx
add esi, ebp
imul ecx, ebx
add esi, ecx
mov eax, esi
shld eax, edi, 3
mov ecx, esi
shr ecx, 0x1d
xor esi, ecx
xor edi, eax
mov ecx, 0x9e3779f9
imul esi, ecx
mov eax, edi
mul ecx
mov ecx, 0x165667b1
imul ecx, edi
add edx, ecx
add edx, esi
xor eax, edx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret