Function at 0x7c6790
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov edi, dword [esp + 0x48]
mov ebx, dword [0xa5ad1c]
test edi, edi
sete cl
mov edx, 0x9df6f4
mov esi, dword [0x9df6f4]
mov eax, esi
sub eax, edx
imul eax, edx
cmp dword [0xa5ad08], 0x917995c4
cmovne eax, esi
mov edx, dword [0x9df6f8]
mov dword [esp + 0xc], edx
mov esi, 0x9df6ec
add esi, dword [0x9df6ec]
cmp dword [esp + 0x44], 0
sete dl
or dl, cl
jne 0x7c6d5a
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ebx
inc dword [edi + 0x6c]
mov ecx, dword [edi]
mov dword [esp + 0x24], ecx
mov byte [edi + ecx + 0x2c], 0x80
mov edx, dword [0xa5ad04]
lea ecx, [edx + 1]
mov dword [0xa5ad04], ecx
xor ebx, ebx
mov edi, 0
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
test ecx, edx
je 0x7c6d62
mov ebp, dword [esp + 0x48]
lea eax, [ebp + 0x2c]
mov ecx, dword [ebp]
lea edx, [ecx + 1]
mov dword [ebp], edx
cmp dword [esp + 0x24], 0x38
jae 0x7c69b5
mov dword [esp + 4], edx
mov dword [esp], ecx
mov ecx, dword [esp + 0x20]
and ecx, dword [esp + 0x1c]
mov edx, edi
mov edi, dword [0x9df704]
mov esi, dword [0x9df700]
sub esi, ebx
sbb edi, edx
xor ebx, ebx
mov ebp, ecx
neg ebp
mov ebp, 0
sbb ebp, ebp
mov edx, esi
xor edx, ebp
xor ebp, edi
cmp ecx, 1
mov ecx, dword [esp]
sbb ebx, ebx
or esi, ebx
and esi, edx
or ebx, edi
and ebx, ebp
mov ebp, dword [esp + 0x48]
or ebx, esi
setne dl
or dl, byte [0xa8c591]
and dl, 1
mov byte [0xa8c591], dl
cmp ecx, 0x37
je 0x7c690e
add eax, dword [esp + 4]
mov edx, 0x37
sub edx, ecx
mov esi, edx
and esi, 7
je 0x7c68d0
mov edx, esi
nop word cs:[eax + eax]
mov byte [eax], 0
inc eax
dec edx
jne 0x7c68c0
add esi, ecx
mov edx, 0x37
sub edx, esi
add ecx, 0xffffffd0
cmp ecx, 7
jb 0x7c690e
xor ecx, ecx
nop word [eax + eax]
mov byte [eax + ecx], 0
mov byte [eax + ecx + 1], 0
mov byte [eax + ecx + 2], 0
mov byte [eax + ecx + 3], 0
mov byte [eax + ecx + 4], 0
mov byte [eax + ecx + 5], 0
mov byte [eax + ecx + 6], 0
mov byte [eax + ecx + 7], 0
add ecx, 8
cmp edx, ecx
jne 0x7c68e0
pxor xmm0, xmm0
movdqu xmm2, xmmword [ebp + 0x2c]
movdqu xmm1, xmmword [ebp + 0x3c]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [ebp + 0x2c], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [ebp + 0x3c], xmm1
movdqu xmm1, xmmword [ebp + 0x4c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [ebp + 0x4c], xmm0
mov eax, dword [ebp + 0x5c]
bswap eax
mov dword [ebp + 0x5c], eax
mov eax, dword [ebp + 0x60]
bswap eax
mov dword [ebp + 0x60], eax
mov esi, dword [esp + 0x10]
jmp 0x7c6be7
cmp ecx, 0x3f
je 0x7c6a2e
add eax, edx
mov edx, 0x3f
sub edx, ecx
mov esi, ecx
and esi, 7
cmp esi, 7
je 0x7c69f2
test byte [0xa8c591], 1
jne 0x7c69f2
xor edi, edi
nop dword [eax + eax]
mov byte [eax + edi], 0
inc edi
mov ebx, edi
xor ebx, esi
cmp ebx, 7
jne 0x7c69e0
add eax, edi
sub edx, edi
add ecx, 0xffffffc8
cmp ecx, 7
jb 0x7c6a2e
xor ecx, ecx
nop dword [eax]
mov byte [eax + ecx], 0
mov byte [eax + ecx + 1], 0
mov byte [eax + ecx + 2], 0
mov byte [eax + ecx + 3], 0
mov byte [eax + ecx + 4], 0
mov byte [eax + ecx + 5], 0
mov byte [eax + ecx + 6], 0
mov byte [eax + ecx + 7], 0
add ecx, 8
cmp edx, ecx
jne 0x7c6a00
pxor xmm0, xmm0
movdqu xmm2, xmmword [ebp + 0x2c]
movdqu xmm1, xmmword [ebp + 0x3c]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [ebp + 0x2c], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [ebp + 0x3c], xmm1
movdqu xmm1, xmmword [ebp + 0x4c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [ebp + 0x4c], xmm1
movdqu xmm1, xmmword [ebp + 0x5c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [ebp + 0x5c], xmm0
mov esi, dword [esp + 0x10]
mov edx, esi
xor edx, 0xa4bdc5c0
mov ecx, ebp
call fcn.007c6570
mov byte [ebp + 0x2c], 0
mov byte [ebp + 0x2d], 0
mov byte [ebp + 0x2e], 0
mov byte [ebp + 0x2f], 0
mov byte [ebp + 0x30], 0
mov byte [ebp + 0x31], 0
mov byte [ebp + 0x32], 0
mov byte [ebp + 0x33], 0
mov byte [ebp + 0x34], 0
mov byte [ebp + 0x35], 0
mov byte [ebp + 0x36], 0
mov byte [ebp + 0x37], 0
mov dword [0xa5ad0c], 0xa42ecfef
mov byte [ebp + 0x38], 0
mov byte [ebp + 0x39], 0
mov byte [ebp + 0x3a], 0
mov byte [ebp + 0x3b], 0
mov byte [ebp + 0x3c], 0
mov byte [ebp + 0x3d], 0
mov byte [ebp + 0x3e], 0
mov byte [ebp + 0x3f], 0
mov byte [ebp + 0x40], 0
mov byte [ebp + 0x41], 0
mov byte [ebp + 0x42], 0
mov byte [ebp + 0x43], 0
mov byte [ebp + 0x44], 0
mov byte [ebp + 0x45], 0
mov byte [ebp + 0x46], 0
mov byte [ebp + 0x47], 0
mov byte [ebp + 0x48], 0
mov byte [ebp + 0x49], 0
mov byte [ebp + 0x4a], 0
mov byte [ebp + 0x4b], 0
mov byte [ebp + 0x4c], 0
mov byte [ebp + 0x4d], 0
mov byte [ebp + 0x4e], 0
mov byte [ebp + 0x4f], 0
mov byte [ebp + 0x50], 0
mov byte [ebp + 0x51], 0
mov byte [ebp + 0x52], 0
mov byte [ebp + 0x53], 0
mov byte [ebp + 0x54], 0
mov byte [ebp + 0x55], 0
mov byte [ebp + 0x56], 0
mov byte [ebp + 0x57], 0
mov byte [ebp + 0x58], 0
mov byte [ebp + 0x59], 0
mov byte [ebp + 0x5a], 0
mov byte [ebp + 0x5b], 0
mov byte [ebp + 0x5c], 0
mov byte [ebp + 0x5d], 0
mov byte [ebp + 0x5e], 0
mov byte [ebp + 0x5f], 0
mov byte [ebp + 0x60], 0
mov byte [ebp + 0x61], 0
mov byte [ebp + 0x62], 0
mov byte [ebp + 0x63], 0
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 8]
shld eax, ecx, 3
mov dword [ebp + 4], eax
shl ecx, 3
mov dword [ebp + 8], ecx
mov dword [ebp + 0x64], eax
mov dword [ebp + 0x68], ecx
xor esi, 0xa4bdc5c0
mov ecx, ebp
mov edx, esi
call fcn.007c6570
movzx eax, byte [ebp + 0xc]
mov ecx, dword [esp + 0x44]
mov byte [ecx], al
movzx eax, byte [ebp + 0xd]
mov byte [ecx + 1], al
movzx eax, byte [ebp + 0xe]
mov byte [ecx + 2], al
movzx eax, byte [ebp + 0xf]
mov byte [ecx + 3], al
movzx eax, byte [ebp + 0x10]
mov byte [ecx + 4], al
movzx eax, byte [ebp + 0x11]
mov byte [ecx + 5], al
movzx eax, byte [ebp + 0x12]
mov byte [ecx + 6], al
movzx eax, byte [ebp + 0x13]
mov byte [ecx + 7], al
movzx eax, byte [ebp + 0x14]
mov byte [ecx + 8], al
movzx eax, byte [ebp + 0x15]
mov byte [ecx + 9], al
movzx eax, byte [ebp + 0x16]
mov byte [ecx + 0xa], al
movzx eax, byte [ebp + 0x17]
mov byte [ecx + 0xb], al
movzx eax, byte [ebp + 0x18]
mov byte [ecx + 0xc], al
movzx eax, byte [ebp + 0x19]
mov byte [ecx + 0xd], al
movzx eax, byte [ebp + 0x1a]
mov byte [ecx + 0xe], al
movzx eax, byte [ebp + 0x1b]
mov byte [ecx + 0xf], al
movzx eax, byte [ebp + 0x1c]
mov byte [ecx + 0x10], al
movzx eax, byte [ebp + 0x1d]
mov byte [ecx + 0x11], al
movzx eax, byte [ebp + 0x1e]
mov byte [ecx + 0x12], al
movzx eax, byte [ebp + 0x1f]
mov byte [ecx + 0x13], al
movzx eax, byte [ebp + 0x20]
mov byte [ecx + 0x14], al
movzx eax, byte [ebp + 0x21]
mov byte [ecx + 0x15], al
movzx eax, byte [ebp + 0x22]
mov byte [ecx + 0x16], al
movzx eax, byte [ebp + 0x23]
mov byte [ecx + 0x17], al
movzx eax, byte [ebp + 0x24]
mov byte [ecx + 0x18], al
movzx eax, byte [ebp + 0x25]
mov byte [ecx + 0x19], al
movzx eax, byte [ebp + 0x26]
mov byte [ecx + 0x1a], al
movzx eax, byte [ebp + 0x27]
mov byte [ecx + 0x1b], al
movzx eax, byte [ebp + 0x28]
mov byte [ecx + 0x1c], al
movzx eax, byte [ebp + 0x29]
mov byte [ecx + 0x1d], al
movzx eax, byte [ebp + 0x2a]
mov byte [ecx + 0x1e], al
movzx eax, byte [ebp + 0x2b]
mov byte [ecx + 0x1f], al
pxor xmm0, xmm0
movdqu xmm2, xmmword [ecx]
movdqu xmm1, xmmword [ecx + 0x10]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [ecx], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
mov dword [0xa5ad0c], 0xc5f6a4e7
movdqu xmmword [ecx + 0x10], xmm0
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
cmp dword [esp + 0xc], 0
jle 0x7c6efb
lea eax, [eax + 0x9df6f4]
mov dword [esp + 0x2c], eax
add edx, ecx
xor esi, esi
xor ebx, ebx
xor edi, edi
mov dword [esp + 0x18], 0
mov dword [esp + 8], 0
jmp 0x7c6db1
add esi, 8
xor ebx, eax
xor edi, ecx
cmp esi, dword [esp + 0xc]
jge 0x7c6826
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + esi]
mov ebp, edx
sub ebp, eax
mov eax, dword [esp + 0x18]
sbb eax, 0
cmp ebp, 8
sbb eax, 0
mov eax, dword [ecx + esi]
mov ecx, dword [ecx + esi + 4]
jge 0x7c6e5a
cmp dword [0xa5ad0c], 0xa7e88eb0
jne 0x7c6e00
mov dword [0xa5ad08], 0xaf71ab11
mov dword [0xa5ad0c], 0x2b26fb92
mov edx, dword [esp + 8]
jmp 0x7c6e3f
mov dword [esp], ecx
lea ecx, [ebp*8]
mov dword [esp + 4], edi
mov edi, 0xffffffff
shl edi, cl
test cl, 0x20
mov ecx, 0xffffffff
cmovne ecx, edi
mov edx, 0
cmovne edi, edx
not ecx
and dword [esp], ecx
not edi
and eax, edi
mov edi, dword [esp + 4]
add esi, ebp
add esi, 0xfffffffc
mov edx, dword [esp + 8]
inc edx
mov ecx, dword [esp + 0x14]
lea ebp, [ecx + edx*4]
mov dword [esp + 8], edx
add ebp, dword [ecx + edx*4]
mov edx, ebp
mov dword [esp + 0x18], 0
mov ecx, dword [esp]
cmp dword [0xa5ad10], 0x3de5af0
jne 0x7c6da0
mov dword [esp + 0x28], edx
mov edx, ebx
mov ecx, eax
shl edx, cl
test al, 0x20
mov eax, 0
cmovne edx, eax
mov dword [esp], ebx
mov ebx, edi
mov ecx, edx
mov eax, dword [esp]
shld ebx, eax, cl
mov ebp, dword [esp]
shl ebp, cl
test dl, 0x20
cmovne ebx, ebp
mov eax, 0
cmovne ebp, eax
mov ecx, dword [esp]
sub ecx, ebp
mov dword [esp + 4], edi
mov edi, dword [esp + 4]
sbb edi, ebx
mov eax, ecx
mul ebp
imul ebx, ecx
add edx, ebx
shl esi, 3
mov ebx, 0x40
sub ebx, esi
mov ecx, 0x48
sub ecx, esi
shl ebx, cl
imul edi, ebp
add edi, edx
mov edx, dword [esp + 0x28]
lea esi, [ebx + ecx*2]
mov ebx, dword [esp]
xor dword [esp + 4], edi
mov edi, dword [esp + 4]
xor ebx, eax
mov dword [0xa5ad10], 0x195217a1
cmp dword [esp + 0xc], esi
jg 0x7c6db1
jmp 0x7c6826
xor ebx, ebx
xor edi, edi
jmp 0x7c6826