Function at 0x6fa239e0
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 0x6fa23ca3
test ebx, ebx
je 0x6fa23c87
mov eax, dword [esp + 0x48]
test eax, eax
lea ebp, [eax - 1]
je 0x6fa23b8c
mov eax, ebx
or eax, ecx
test al, 3
jne 0x6fa23b94
cmp dword [esp + 0x48], 8
jbe 0x6fa23b94
cmp ebp, 2
jbe 0x6fa23c80
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 0x6fa23b2f
test edi, edi
je 0x6fa23ad6
cmp edi, 1
je 0x6fa23ac3
cmp edi, 2
je 0x6fa23ab8
cmp edi, 3
je 0x6fa23aad
cmp edi, 4
je 0x6fa23aa2
cmp edi, 5
je 0x6fa23a97
cmp edi, 6
je 0x6fa23a8c
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 0x6fa23b2f
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 0x6fa23ad6
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 0x6fa23b75
movzx edx, byte [ebx]
xor dl, byte [ecx]
or eax, edx
test ebp, ebp
je 0x6fa23b75
movzx edx, byte [ecx + 1]
xor dl, byte [ebx + 1]
or eax, edx
cmp ebp, 1
je 0x6fa23b75
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 0x6fa23c1b
cmp ebp, 1
je 0x6fa23c05
cmp ebp, 2
je 0x6fa23bf9
cmp ebp, 3
je 0x6fa23bed
cmp ebp, 4
je 0x6fa23be1
cmp ebp, 5
je 0x6fa23bd5
cmp ebp, 6
je 0x6fa23bc9
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 0x6fa23b75
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 0x6fa23c1b
jmp 0x6fa23b75
xor eax, eax
jmp 0x6fa23b53
mov dword [esp + 8], 0x2a
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.b___NULL
call fcn.6fa1c540
mov dword [esp + 8], 0x29
mov dword [esp + 4], str.src_misc_mem_neq.c
mov dword [esp], str.a___NULL
call fcn.6fa1c540
nop