Function at 0x7e7940
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov eax, dword [esp + 0x20]
mov esi, dword [ecx]
mov edi, edx
mov ebp, ecx
test edx, edx
jne 0x7e7959
xor ecx, ecx
jmp 0x7e795b
mov ecx, dword [edi]
mov ebx, dword [esp + 0x24]
test eax, eax
je 0x7e7c13
test ebx, ebx
je 0x7e7c13
cmp byte [ebx], 0x88
mov eax, dword [eax + 4]
mov dword [esp], ecx
je 0x7e7b80
mov ecx, ebx
mov dword [esp + 4], eax
call fcn.007fb610
mov edx, eax
mov eax, dword [esp + 4]
cmp eax, edx
je 0x7e7b80
mov ebx, esi
mov esi, fcn.007bc5f0
movzx ecx, byte [0xbba633]
not esi
and esi, 1
mov eax, esi
add eax, fcn.007bc5f0
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7e7b62
mov al, byte [0xbba633]
mov ecx, esi
mov ah, 1
add ecx, fcn.007bc5f0
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba633], ah
jne 0x7e79c7
mov ecx, fcn.007bc5f0
not ecx
and ecx, 1
mov esi, ecx
add esi, fcn.007bc5f0
movzx esi, al
sete ah
or ah, 2
xor ah, 7
movzx eax, ah
bt esi, eax
jae 0x7e7a2e
mov eax, ecx
movzx esi, byte [0xbba633]
add eax, fcn.007bc5f0
sete al
or al, 2
movzx eax, al
bt esi, eax
jae 0x7e7a0e
jmp 0x7e7b62
add ecx, fcn.007bc5f0
movzx ecx, byte [0xbba633]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7e7b40
mov eax, fcn.007bc5f0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.007bc5f0
mov eax, dword [0xbba610]
sete cl
or ecx, 0x2b3254f2
add ecx, 0x1008
xor eax, ecx
mov dword [esp], ecx
mov dword [0xbba610], eax
not eax
mov esi, dword [0xbba614]
imul eax, ecx
lea ecx, [eax + eax]
xor esi, eax
shr eax, 0x1e
mov dword [0xbba614], esi
or ecx, eax
not esi
mov eax, dword [0xbba618]
imul esi, ecx
lea ecx, [esi*4]
xor eax, esi
shr esi, 0x1d
mov dword [0xbba618], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [0xbba61c]
lea esi, [eax*8]
xor ecx, eax
shr eax, 0x1c
mov dword [0xbba61c], ecx
or esi, eax
not ecx
mov eax, dword [0xbba620]
imul ecx, esi
mov esi, ecx
shl esi, 4
xor eax, ecx
shr ecx, 0x1b
mov dword [0xbba620], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [0xbba624]
mov esi, eax
shl esi, 5
xor ecx, eax
shr eax, 0x1a
mov dword [0xbba624], ecx
or eax, esi
not ecx
imul ecx, eax
mov eax, dword [0xbba628]
mov esi, ecx
shl esi, 6
xor eax, ecx
shr ecx, 0x19
mov dword [0xbba628], eax
or ecx, esi
not eax
imul eax, ecx
mov ecx, dword [esp]
xor dword [0xbba62c], eax
mov al, 1
and cl, 7
shl al, cl
or byte [0xbba633], al
mov eax, fcn.007bc5f0
not eax
and eax, 1
add eax, fcn.007bc5f0
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbba633], al
push edx
push dword [esp + 8]
push 0xbba610
push ebp
call fcn.0078de60
add esp, 0x10
mov esi, ebx
mov ebx, dword [esp + 0x24]
jmp 0x7e7c13
test eax, eax
mov dword [esp + 8], esi
jg 0x7e7b8e
mov ecx, dword [esp + 0x20]
jmp 0x7e7beb
xor esi, esi
mov ecx, ebp
mov edx, ebx
push esi
call fcn.00823bb0
add esp, 4
test eax, eax
jne 0x7e7ba7
mov ecx, dword [esp + 0x20]
jmp 0x7e7be5
mov ebx, dword [esp + 0x20]
mov edx, edi
mov ecx, dword [ebx + 4]
mov dword [eax + 0x1c], ecx
mov ecx, ebp
push eax
call fcn.007e4370
add esp, 4
test eax, eax
jne 0x7e7bc6
xor edi, edi
jmp 0x7e7bdf
mov edi, eax
mov eax, dword [ebx]
mov ecx, dword [edi]
mov eax, dword [eax + esi*8]
lea ecx, [ecx + ecx*4]
mov dword [edi + ecx*4 - 0xc], eax
mov eax, dword [ebx]
mov dword [eax + esi*8], 0
mov ecx, ebx
mov ebx, dword [esp + 0x24]
inc esi
cmp esi, dword [ecx + 4]
jl 0x7e7b90
mov esi, dword [esp + 8]
cmp byte [esi + 0x51], 0
jne 0x7e7c13
test edi, edi
je 0x7e7c13
cmp byte [ebx], 0x88
jne 0x7e7c13
mov eax, dword [esp]
lea eax, [eax + eax*4]
mov eax, dword [edi + eax*4 + 4]
mov dword [eax + 0x10], ebx
xor ebx, ebx
mov ecx, dword [ecx + 4]
mov dword [eax + 0x1c], ecx
mov ecx, ebp
mov edx, ebx
call fcn.007eaa50
mov edx, dword [esp + 0x20]
mov ecx, esi
call fcn.007cbd30
mov eax, edi
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret