Function at 0x6e8940
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ecx
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
push edi
mov edi, dword [esp + 0x2c]
cmp word [edi + 0x10], 5
jg 0x6e8962
invalid
je 0x6e8962
push 0x280ab650
push esi
call fcn.00755272
pop ecx
pop ecx
mov eax, dword [esp + 0x28]
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x1c], ebp
mov ebx, 0x8d
mov edx, 0x3000000
je 0x6e8a93
cmp dword [esp + 0x30], ebp
mov ecx, dword [eax + 0x18]
jne 0x6e8995
test dword [ecx + 8], edx
jne 0x6e8995
mov dword [esp + 0x30], eax
jmp 0x6e8a93
cmp word [eax + 0x10], 5
jne 0x6e89a1
test dword [ecx + 8], edx
jne 0x6e89ae
push 0x280ab628
push esi
call fcn.00755272
pop ecx
pop ecx
push dword [edi + 0x18]
push esi
call fcn.007373f3
push eax
push ebp
push 5
push esi
call fcn.006e86bf
push 7
push 0x280ab620
push esi
mov dword [esp + 0x38], eax
call fcn.007370a7
mov edi, eax
push 5
push edi
push esi
call fcn.0072ff9a
add esp, 0x30
test byte [edi + 0xa], 0x20
je 0x6e89ef
push edi
push esi
call fcn.00730a6b
pop ecx
pop ecx
mov ecx, dword [edi]
or word [edi + 0xa], 0x101
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x10], eax
xor eax, eax
mov ebp, edx
dec edx
test ebp, ebp
je 0x6e8a2b
inc edx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
movzx ebp, byte [edx]
add eax, ebp
inc edx
imul eax, eax, 0x401
mov ebp, eax
shr ebp, 6
xor eax, ebp
dec dword [esp + 0x1c]
jne 0x6e8a12
lea eax, [eax + eax*8]
xor ebp, ebp
mov edx, eax
push edi
shr edx, 0xb
xor edx, eax
push ebp
imul edx, edx, 0x8001
push 0x15e
push esi
mov dword [ecx + 0xc], edx
call fcn.006e86bf
add esp, 0x10
push eax
push dword [esp + 0x2c]
push esi
call fcn.006e55d5
push eax
push dword [esp + 0x24]
push ebx
push esi
call fcn.006e7468
add esp, 0x18
push eax
push ebx
push esi
call fcn.006e739e
push eax
push 0xc0
push 0xa6
push esi
call fcn.006e72ea
mov edi, dword [esp + 0x4c]
add esp, 0x20
mov dword [esp + 0x1c], eax
mov edx, 0x3000000
mov eax, dword [esp + 0x30]
cmp eax, ebp
je 0x6e8aa6
cmp word [eax + 0x10], 1
je 0x6e8bb1
mov eax, dword [edi + 0x18]
test dword [eax + 8], edx
je 0x6e8ab5
xor eax, eax
jmp 0x6e8bb1
push eax
push esi
call fcn.007373f3
push eax
push ebp
push 5
push esi
call fcn.006e86bf
add esp, 0x18
cmp dword [esp + 0x20], ebp
mov dword [esp + 0x14], eax
je 0x6e8adc
push 6
push 0x280aa6d8
jmp 0x6e8ae3
push 8
push 0x280aa6cc
push esi
call fcn.007370a7
mov edi, eax
add esp, 0xc
mov eax, dword [edi + 8]
and eax, 0xff
cmp eax, 5
jae 0x6e8b07
push 5
push edi
push esi
call fcn.0072ff9a
add esp, 0xc
test byte [edi + 0xa], 0x20
je 0x6e8b16
push edi
push esi
call fcn.00730a6b
pop ecx
pop ecx
mov ecx, dword [edi]
or word [edi + 0xa], 0x101
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov dword [esp + 0x20], eax
xor eax, eax
mov ebp, edx
dec edx
test ebp, ebp
je 0x6e8b52
inc edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x20]
movzx ebp, byte [edx]
add eax, ebp
inc edx
imul eax, eax, 0x401
mov ebp, eax
shr ebp, 6
xor eax, ebp
dec dword [esp + 0x28]
jne 0x6e8b39
lea eax, [eax + eax*8]
xor ebp, ebp
mov edx, eax
push edi
shr edx, 0xb
xor edx, eax
push ebp
imul edx, edx, 0x8001
push 0x15e
push esi
mov dword [ecx + 0xc], edx
call fcn.006e86bf
add esp, 0x10
push eax
push dword [esp + 0x34]
push esi
call fcn.006e55d5
push eax
push dword [esp + 0x24]
push ebx
push esi
call fcn.006e7468
add esp, 0x18
push eax
push ebx
push esi
call fcn.006e739e
push eax
push 0xc0
push 0xa6
push esi
call fcn.006e72ea
mov edi, dword [esp + 0x4c]
add esp, 0x20
push eax
push ebp
push ebp
push esi
call fcn.006e9324
add esp, 0x10
push eax
push dword [esp + 0x20]
push ebp
push ebp
push esi
call fcn.006e9324
add esp, 0x10
push eax
push edi
push ebp
push 0x135
push esi
call fcn.006e76af
push eax
push ebp
push ebp
push esi
call fcn.006e9324
add esp, 0x20
mov edi, 0xad
push eax
push edi
push esi
call fcn.006e739e
add esp, 0x10
push eax
push edi
push esi
call fcn.006e739e
add esp, 0x10
push eax
push ebp
push ebp
push 5
push 0x280ab618
push esi
call fcn.007370a7
push eax
push ebp
push 5
push esi
call fcn.006e86bf
add esp, 0x1c
push eax
push dword [esp + 0x34]
push esi
call fcn.006ea8ef
or byte [esi + 0xa59], 1
or dword [esi + 0x3d8], 0xffffffff
add esp, 0x18
inc dword [esi + 0x804]
mov dword [esi + 0xa10], 3
xchg byte [eax], dl
or al, byte [eax]
add byte [ebx], al
add byte [eax], al
add byte [edi + 0x5e], bl