Function at 0x6b6ac0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
push eax
mov edi, dword [esp + 0x18]
xor ebp, ebp
cmp dword [edi + 0x84], 0xffffffff
je 0x6b6d8e
push dword [edi]
call fcn.005c45e0
add esp, 4
test eax, eax
je 0x6b6d8e
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
test ecx, ecx
je 0x6b6af8
mov dword [ecx], eax
mov ebp, 1
test ebx, ebx
je 0x6b6d8e
mov edx, dword [edi + 0x84]
mov ecx, eax
sub ecx, edx
jne 0x6b6c2f
test eax, eax
jle 0x6b6d6a
xor esi, esi
cmp eax, 8
jb 0x6b6bc2
lea ebp, [edi + 4]
lea esi, [edi + eax]
add esi, 0x64
cmp esi, ebx
seta dl
lea esi, [ebx + eax]
cmp ebp, esi
mov esi, 0
setb dh
test dl, dh
jne 0x6b6bc2
xor esi, esi
cmp eax, 0x20
jb 0x6b6b96
mov esi, eax
and esi, 0x7fffffe0
xor edx, edx
nop dword [eax + eax]
movups xmm0, xmmword [edi + edx + 0x64]
movups xmm1, xmmword [edi + edx + 0x74]
movups xmm2, xmmword [edi + edx + 4]
xorps xmm2, xmm0
movups xmm0, xmmword [edi + edx + 0x14]
xorps xmm0, xmm1
movups xmmword [ebx + edx], xmm2
movups xmmword [ebx + edx + 0x10], xmm0
add edx, 0x20
cmp esi, edx
jne 0x6b6b60
cmp eax, esi
je 0x6b6d6a
test al, 0x18
je 0x6b6bc2
mov edx, esi
mov esi, eax
and esi, 0x7ffffff8
movsd xmm0, qword [edi + edx + 4]
movsd xmm1, qword [edi + edx + 0x64]
xorps xmm1, xmm0
movlps qword [ebx + edx], xmm1
add edx, 8
cmp esi, edx
jne 0x6b6ba0
cmp eax, esi
je 0x6b6d6a
mov ebp, eax
mov edx, esi
and ebp, 3
je 0x6b6be0
mov edx, esi
nop dword [eax]
movzx ecx, byte [edi + edx + 4]
xor cl, byte [edi + edx + 0x64]
mov byte [ebx + edx], cl
inc edx
dec ebp
jne 0x6b6bd0
sub esi, eax
cmp esi, 0xfffffffc
ja 0x6b6d6a
nop dword [eax + eax]
movzx ecx, byte [edi + edx + 4]
xor cl, byte [edi + edx + 0x64]
mov byte [ebx + edx], cl
movzx ecx, byte [edi + edx + 5]
xor cl, byte [edi + edx + 0x65]
mov byte [ebx + edx + 1], cl
movzx ecx, byte [edi + edx + 6]
xor cl, byte [edi + edx + 0x66]
mov byte [ebx + edx + 2], cl
movzx ecx, byte [edi + edx + 7]
xor cl, byte [edi + edx + 0x67]
mov byte [ebx + edx + 3], cl
add edx, 4
cmp eax, edx
jne 0x6b6bf0
jmp 0x6b6d6a
mov byte [edi + edx + 0x64], pe_nt_image_headers32
cmp ecx, 2
jl 0x6b6c50
add edx, edi
add edx, 0x64
inc edx
dec ecx
push ecx
push 0
push edx
mov esi, eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov eax, esi
add esp, 0xc
test eax, eax
jle 0x6b6d6a
lea ecx, [edi + 0x64]
xor ebp, ebp
cmp eax, 8
jb 0x6b6cfd
lea esi, [edi + 0x24]
lea ebp, [edi + eax]
add ebp, 0x64
cmp ebp, ebx
seta dh
lea ebp, [ebx + eax]
cmp esi, ebp
mov ebp, 0
setb dl
test dh, dl
jne 0x6b6cfd
xor ebp, ebp
cmp eax, 0x20
jb 0x6b6cd6
mov ebp, eax
and ebp, 0x7fffffe0
xor esi, esi
nop word cs:[eax + eax]
movups xmm0, xmmword [edi + esi + 0x64]
movups xmm1, xmmword [edi + esi + 0x74]
movups xmm2, xmmword [edi + esi + 0x24]
xorps xmm2, xmm0
movups xmm0, xmmword [edi + esi + 0x34]
xorps xmm0, xmm1
movups xmmword [ebx + esi], xmm2
movups xmmword [ebx + esi + 0x10], xmm0
add esi, 0x20
cmp ebp, esi
jne 0x6b6ca0
cmp eax, ebp
je 0x6b6d6a
test al, 0x18
je 0x6b6cfd
mov esi, ebp
mov ebp, eax
and ebp, 0x7ffffff8
movsd xmm0, qword [ecx + esi - 0x40]
movsd xmm1, qword [ecx + esi]
xorps xmm1, xmm0
movlps qword [ebx + esi], xmm1
add esi, 8
cmp ebp, esi
jne 0x6b6ce0
cmp eax, ebp
je 0x6b6d6a
mov esi, eax
mov dword [esp], ebp
and esi, 3
je 0x6b6d1f
mov ebp, dword [esp]
nop word [eax + eax]
movzx edx, byte [ecx + ebp - 0x40]
xor dl, byte [ecx + ebp]
mov byte [ebx + ebp], dl
inc ebp
dec esi
jne 0x6b6d10
mov ecx, dword [esp]
sub ecx, eax
cmp ecx, 0xfffffffc
ja 0x6b6d6a
nop dword [eax]
movzx ecx, byte [edi + ebp + 0x24]
xor cl, byte [edi + ebp + 0x64]
mov byte [ebx + ebp], cl
movzx ecx, byte [edi + ebp + 0x25]
xor cl, byte [edi + ebp + 0x65]
mov byte [ebx + ebp + 1], cl
movzx ecx, byte [edi + ebp + 0x26]
xor cl, byte [edi + ebp + 0x66]
mov byte [ebx + ebp + 2], cl
movzx ecx, byte [edi + ebp + 0x27]
xor cl, byte [edi + ebp + 0x67]
mov byte [ebx + ebp + 3], cl
add ebp, 4
cmp eax, ebp
jne 0x6b6d30
mov esi, eax
push eax
push ebx
push ebx
push dword [edi]
call fcn.005c4610
add esp, 0x10
test eax, eax
mov ebp, 1
jg 0x6b6d8e
push esi
push ebx
call fcn.005e9a90
add esp, 8
xor ebp, ebp
mov eax, ebp
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
ret