Function at 0x6d6e4120
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
test ecx, ecx
je 0x6d6e43e3
test ebx, ebx
je 0x6d6e43c7
mov eax, dword [esp + 0x48]
test eax, eax
lea ebp, [eax - 1]
je 0x6d6e42cc
mov eax, ebx
or eax, ecx
test al, 3
jne 0x6d6e42d4
cmp dword [esp + 0x48], 8
jbe 0x6d6e42d4
cmp ebp, 2
jbe 0x6d6e43c0
mov edx, dword [esp + 0x48]
mov eax, dword [ecx]
mov esi, dword [ebx]
shr edx, 2
lea edi, [edx - 1]
xor esi, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
mov eax, esi
mov edx, 1
and edi, 7
cmp dword [esp + 0x18], 1
jbe 0x6d6e426f
test edi, edi
je 0x6d6e4216
cmp edi, 1
je 0x6d6e4203
cmp edi, 2
je 0x6d6e41f8
cmp edi, 3
je 0x6d6e41ed
cmp edi, 4
je 0x6d6e41e2
cmp edi, 5
je 0x6d6e41d7
cmp edi, 6
je 0x6d6e41cc
mov esi, dword [ecx + 4]
xor esi, dword [ebx + 4]
mov edx, 2
or esi, dword [esp + 0x1c]
mov edi, dword [ecx + edx*4]
xor edi, dword [ebx + edx*4]
add edx, 1
or esi, edi
mov eax, dword [ecx + edx*4]
xor eax, dword [ebx + edx*4]
add edx, 1
or esi, eax
mov edi, dword [ecx + edx*4]
xor edi, dword [ebx + edx*4]
add edx, 1
or esi, edi
mov eax, dword [ecx + edx*4]
xor eax, dword [ebx + edx*4]
add edx, 1
or esi, eax
mov edi, dword [ecx + edx*4]
xor edi, dword [ebx + edx*4]
add edx, 1
or esi, edi
mov eax, dword [ecx + edx*4]
xor eax, dword [ebx + edx*4]
add edx, 1
or eax, esi
cmp dword [esp + 0x18], edx
mov esi, eax
jbe 0x6d6e426f
mov edi, dword [ecx + edx*4]
xor edi, dword [ebx + edx*4]
mov eax, dword [ecx + edx*4 + 8]
xor eax, dword [ebx + edx*4 + 8]
or edi, esi
mov esi, dword [ecx + edx*4 + 4]
xor esi, dword [ebx + edx*4 + 4]
or esi, edi
mov edi, dword [ecx + edx*4 + 0xc]
xor edi, dword [ebx + edx*4 + 0xc]
or esi, eax
mov eax, dword [ecx + edx*4 + 0x18]
xor eax, dword [ebx + edx*4 + 0x18]
or edi, esi
mov esi, dword [ecx + edx*4 + 0x10]
xor esi, dword [ebx + edx*4 + 0x10]
or edi, esi
mov esi, dword [ecx + edx*4 + 0x14]
xor esi, dword [ebx + edx*4 + 0x14]
or esi, edi
or esi, eax
mov eax, dword [ecx + edx*4 + 0x1c]
xor eax, dword [ebx + edx*4 + 0x1c]
add edx, 8
or eax, esi
cmp dword [esp + 0x18], edx
mov esi, eax
ja 0x6d6e4216
mov esi, dword [esp + 0x48]
movzx edx, ah
mov edi, eax
or edx, eax
shr edi, 0x10
shr eax, 0x18
or edx, edi
and esi, 0xfffffffc
or eax, edx
add ecx, esi
add ebx, esi
sub ebp, esi
cmp dword [esp + 0x48], esi
je 0x6d6e42b5
movzx edx, byte [ebx]
xor dl, byte [ecx]
or eax, edx
test ebp, ebp
je 0x6d6e42b5
movzx edx, byte [ecx + 1]
xor dl, byte [ebx + 1]
or eax, edx
cmp ebp, 1
je 0x6d6e42b5
movzx ebx, byte [ebx + 2]
xor bl, byte [ecx + 2]
or eax, ebx
mov ecx, eax
shr cl, 4
or ecx, eax
mov eax, ecx
shr al, 2
or ecx, eax
mov eax, ecx
shr al, 1
or eax, ecx
and eax, 1
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebp, dword [esp + 0x48]
xor edi, edi
xor eax, eax
and ebp, 7
je 0x6d6e435b
cmp ebp, 1
je 0x6d6e4345
cmp ebp, 2
je 0x6d6e4339
cmp ebp, 3
je 0x6d6e432d
cmp ebp, 4
je 0x6d6e4321
cmp ebp, 5
je 0x6d6e4315
cmp ebp, 6
je 0x6d6e4309
movzx eax, byte [ebx]
mov edi, 1
xor al, byte [ecx]
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
add edi, 1
or eax, edx
cmp dword [esp + 0x48], edi
je 0x6d6e42b5
movzx edx, byte [ebx + edi]
xor dl, byte [ecx + edi]
or eax, edx
movzx edx, byte [ebx + edi + 1]
xor dl, byte [ecx + edi + 1]
or eax, edx
movzx edx, byte [ebx + edi + 2]
xor dl, byte [ecx + edi + 2]
or eax, edx
movzx edx, byte [ebx + edi + 3]
xor dl, byte [ecx + edi + 3]
or eax, edx
movzx edx, byte [ebx + edi + 4]
xor dl, byte [ecx + edi + 4]
or eax, edx
movzx edx, byte [ebx + edi + 5]
xor dl, byte [ecx + edi + 5]
or eax, edx
movzx edx, byte [ebx + edi + 6]
xor dl, byte [ecx + edi + 6]
or eax, edx
movzx edx, byte [ebx + edi + 7]
xor dl, byte [ecx + edi + 7]
add edi, 8
or eax, edx
cmp dword [esp + 0x48], edi
jne 0x6d6e435b
jmp 0x6d6e42b5
xor eax, eax
jmp 0x6d6e4293
mov dword [esp + 8], 0x2a
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.b___NULL
call fcn.6d6dcc80
mov dword [esp + 8], 0x29
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.a___NULL
call fcn.6d6dcc80
nop