Function at 0x6fa237f0
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 0x6fa23ab3
test ebx, ebx
je 0x6fa23a97
mov eax, dword [esp + 0x48]
test eax, eax
lea ebp, [eax - 1]
je 0x6fa2399c
mov eax, ebx
or eax, ecx
test al, 3
jne 0x6fa239a4
cmp dword [esp + 0x48], 8
jbe 0x6fa239a4
cmp ebp, 2
jbe 0x6fa23a90
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 0x6fa2393f
test edi, edi
je 0x6fa238e6
cmp edi, 1
je 0x6fa238d3
cmp edi, 2
je 0x6fa238c8
cmp edi, 3
je 0x6fa238bd
cmp edi, 4
je 0x6fa238b2
cmp edi, 5
je 0x6fa238a7
cmp edi, 6
je 0x6fa2389c
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 0x6fa2393f
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 0x6fa238e6
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 0x6fa23985
movzx edx, byte [ebx]
xor dl, byte [ecx]
or eax, edx
test ebp, ebp
je 0x6fa23985
movzx edx, byte [ecx + 1]
xor dl, byte [ebx + 1]
or eax, edx
cmp ebp, 1
je 0x6fa23985
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 0x6fa23a2b
cmp ebp, 1
je 0x6fa23a15
cmp ebp, 2
je 0x6fa23a09
cmp ebp, 3
je 0x6fa239fd
cmp ebp, 4
je 0x6fa239f1
cmp ebp, 5
je 0x6fa239e5
cmp ebp, 6
je 0x6fa239d9
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 0x6fa23985
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 0x6fa23a2b
jmp 0x6fa23985
xor eax, eax
jmp 0x6fa23963
mov dword [esp + 8], 0x2a
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.b___NULL
call fcn.6fa1c350
mov dword [esp + 8], 0x29
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.a___NULL
call fcn.6fa1c350
nop