Function at 0x679613
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
push edi
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov ecx, edx
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor eax, ecx
shl ecx, 4
xor edx, ecx
mov ecx, eax
shr ecx, 0x10
xor ecx, edx
and ecx, 0xffff
xor edx, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shr ecx, 2
xor ecx, eax
and ecx, 0x33333333
xor eax, ecx
add ecx, ecx
add ecx, ecx
xor edx, ecx
mov ecx, eax
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov esi, edx
shr esi, 1
xor esi, eax
and esi, 0x55555555
mov ecx, esi
xor ecx, eax
lea eax, [esi + esi]
mov esi, dword [esp + 0x18]
xor eax, edx
ror ecx, 0x1d
ror eax, 0x1d
cmp dword [esp + 0x1c], 0
je 0x6798ac
add esi, 8
mov dword [esp + 0x18], 4
mov edx, dword [esi - 4]
mov edi, dword [esi - 8]
xor edi, ecx
xor edx, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi + 4]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi]
xor eax, ebx
xor edi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi + 0xc]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi + 8]
xor ecx, ebx
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
mov ebp, edx
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi + 0x14]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi + 0x10]
xor eax, ebx
xor edi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
add esi, 0x20
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x6796a6
jmp 0x679ab8
add esi, 0x70
mov dword [esp + 0x18], 4
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
xor edi, ecx
xor edx, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi + 4]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi]
xor eax, ebx
xor edi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi - 4]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi - 8]
xor ecx, ebx
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
mov ebp, edx
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
mov edx, dword [esi - 0xc]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
mov edi, dword [esi - 0x10]
xor eax, ebx
xor edi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + reloc.MSVCRT.dll___dllonexit]
shr edx, 0x1a
xor ebx, dword [edx*4 + reloc.MSVCRT.dll___dllonexit]
shr edi, 0x1a
xor ebx, dword [edi*4 + reloc.MSVCRT.dll___dllonexit]
sub esi, 0x20
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x6798b7
ror eax, 3
ror ecx, 3
mov edx, ecx
shr edx, 1
xor edx, eax
and edx, 0x55555555
xor eax, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 8
xor edx, ecx
and edx, 0xff00ff
xor ecx, edx
shl edx, 8
xor eax, edx
mov edx, ecx
shr edx, 2
xor edx, eax
and edx, 0x33333333
xor eax, edx
add edx, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 0x10
xor edx, ecx
and edx, 0xffff
xor ecx, edx
shl edx, 0x10
xor eax, edx
mov edx, ecx
shr edx, 4
xor edx, eax
and edx, 0xf0f0f0f
mov esi, edx
xor esi, eax
mov eax, dword [esp + 0x14]
pop edi
mov dword [eax], esi
pop esi
shl edx, 4
xor edx, ecx
pop ebp
mov dword [eax + 4], edx
pop ebx
ret