Function at 0x7b7cd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov eax, dword [ebp + 0x24]
mov esi, dword [ebp + 0x1c]
mov dword [eax], 0
mov dword [esp], esi
call fcn.007b7ca0
mov edi, eax
test edi, edi
jne 0x7b80be
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x18]
mov eax, ebx
shr eax, 3
mov ecx, ebx
and ecx, 7
cmp ecx, 1
sbb eax, 0xffffffff
mov edi, 0x20012
cmp eax, edx
jb 0x7b80be
cmp eax, dword [ebp + 0x14]
jne 0x7b80be
imul ecx, esi, 0x64
mov dword [esp + 0x24], ecx
mov ecx, dword [ecx + 0x818d34]
mov dword [esp + 0x28], ecx
lea ecx, [edx + ecx + 2]
cmp eax, ecx
jb 0x7b80be
mov edi, dword [ebp + 0x14]
mov dword [esp], edi
call fcn.00492770
mov dword [esp + 0x30], eax
mov dword [esp], edi
call fcn.00492770
mov dword [esp + 0x2c], eax
mov dword [esp], edi
call fcn.00492770
mov dword [esp + 0x34], eax
mov dword [esp], edi
call fcn.00492770
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
test ecx, ecx
je 0x7b7e28
test edx, edx
je 0x7b7e28
cmp dword [esp + 0x34], 0
je 0x7b7e28
test eax, eax
je 0x7b7e28
mov dword [esp + 0x20], eax
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
movzx eax, byte [ecx + edx - 1]
cmp eax, 0xbc
jne 0x7b7e6b
mov edi, ecx
sub edi, dword [esp + 0x28]
mov eax, edx
lea edx, [edi - 1]
mov dword [esp + 0x1c], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
mov dword [esp + 8], edx
call fcn.007c51d0
mov eax, dword [ebp + 0x10]
lea eax, [eax + edi - 1]
mov ecx, dword [esp + 0x28]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov edi, dword [esp + 0x20]
mov dword [esp], edi
call fcn.007c51d0
mov eax, dword [ebp + 0x10]
movzx eax, byte [eax]
mov ecx, 1
sub ecx, ebx
mov edx, dword [ebp + 0x14]
lea ecx, [ecx + edx*8]
mov ebx, 0xff
shr ebx, cl
mov ecx, ebx
not ecx
test eax, ecx
je 0x7b7e75
mov edi, 0x20005
jmp 0x7b808e
mov ebx, eax
test ecx, ecx
je 0x7b7e3a
mov dword [esp], ecx
mov edi, edx
call fcn.004936c0
mov edx, edi
test edx, edx
mov esi, dword [esp + 0x34]
je 0x7b7e4a
mov dword [esp], edx
call fcn.004936c0
test esi, esi
je 0x7b7e56
mov dword [esp], esi
call fcn.004936c0
mov edi, 0xc
test ebx, ebx
je 0x7b80be
mov dword [esp], ebx
jmp 0x7b80b9
mov edi, 0x20005
jmp 0x7b808e
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], esi
call fcn.007bb100
mov edi, eax
test edi, edi
jne 0x7b808e
mov dword [esp + 0x18], ebx
cmp dword [esp + 0x1c], 0
je 0x7b7f46
mov eax, dword [ebp + 0x14]
dec eax
mov ecx, eax
mov ebx, dword [esp + 0x28]
sub ecx, ebx
xor esi, esi
cmp ecx, 0x20
jb 0x7b7f2a
mov edx, ecx
and edx, 0xffffffe0
je 0x7b7f2a
mov edi, dword [ebp + 0x14]
lea edi, [edi - 2]
sub edi, ebx
mov ebx, dword [esp + 0x2c]
lea ebx, [ebx + edi]
cmp dword [esp + 0x30], ebx
ja 0x7b7eeb
add edi, dword [esp + 0x30]
cmp dword [esp + 0x2c], edi
jbe 0x7b7f2a
mov esi, dword [esp + 0x2c]
lea esi, [esi + 0x10]
mov edi, dword [esp + 0x30]
lea edi, [edi + 0x10]
mov ebx, ecx
and ebx, 0xffffffe0
movups xmm0, xmmword [esi - 0x10]
movups xmm1, xmmword [esi]
movups xmm2, xmmword [edi - 0x10]
movups xmm3, xmmword [edi]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [edi - 0x10], xmm2
movups xmmword [edi], xmm3
add esi, 0x20
add edi, 0x20
add ebx, 0xffffffe0
jne 0x7b7efe
cmp ecx, edx
mov esi, edx
je 0x7b7f46
mov ecx, dword [esp + 0x2c]
add ecx, esi
sub eax, esi
mov edx, dword [esp + 0x30]
lea edx, [edx + esi]
sub eax, dword [esp + 0x28]
mov bl, byte [ecx]
xor byte [edx], bl
inc ecx
inc edx
dec eax
jne 0x7b7f3d
mov edx, dword [esp + 0x30]
movzx eax, byte [edx]
and eax, dword [esp + 0x18]
mov byte [edx], al
mov ecx, 0xfffffffe
sub ecx, dword [ebp + 0x18]
add ecx, dword [ebp + 0x14]
mov ebx, dword [esp + 0x28]
sub ecx, ebx
mov esi, 1
je 0x7b7f98
test al, al
je 0x7b7f79
mov edi, 0x20005
jmp 0x7b808e
mov esi, 1
mov al, byte [edx + esi]
cmp esi, ecx
jae 0x7b7f94
inc esi
test al, al
je 0x7b7f7e
mov edi, 0x20005
jmp 0x7b808e
dec esi
add esi, 2
movzx eax, al
cmp eax, 1
mov edi, 0x20005
jne 0x7b808e
lea eax, [esp + 0x38]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call dword [eax + 0x818d80]
mov edi, eax
test edi, edi
jne 0x7b808e
mov edi, dword [esp + 0x2c]
mov dword [esp], edi
mov dword [esp + 4], 8
call fcn.007cbac0
mov dword [esp + 4], edi
lea eax, [esp + 0x38]
mov dword [esp], eax
mov dword [esp + 8], 8
mov eax, dword [esp + 0x24]
call dword [eax + 0x818d84]
mov edi, eax
test edi, edi
jne 0x7b808e
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x24]
lea edi, [edx + 0x818d84]
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
lea eax, [esp + 0x38]
mov dword [esp], eax
call dword [edi]
mov edx, edi
mov edi, eax
test edi, edi
jne 0x7b808e
mov eax, dword [esp + 0x30]
add eax, esi
mov ecx, dword [ebp + 0x18]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
lea eax, [esp + 0x38]
mov dword [esp], eax
call dword [edx]
mov edi, eax
test edi, edi
jne 0x7b808e
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
lea eax, [esp + 0x38]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call dword [eax + 0x818d88]
mov edi, eax
test edi, edi
jne 0x7b808e
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x20]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.007c7b90
xor edi, edi
test eax, eax
jne 0x7b808e
mov eax, dword [ebp + 0x24]
mov dword [eax], 1
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.004936c0
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret