Function at 0x6fb660
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
call fcn.006fa9b4
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x6fbac9
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
test eax, eax
jle 0x6fb733
mov dword [ebp - 0x24], 0
nop
mov edx, dword [ebp + 0xc]
add edx, dword [edx + 8]
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebp - 0x24]
mov ecx, dword [edx + ecx*4]
add edx, ecx
mov dword [ebp - 0x1c], edx
xor eax, eax
xor ebx, ebx
ror ebx, 0x1f
xor ebx, dword [edx + eax*4]
inc eax
cmp eax, 8
jne 0x6fb6a8
mov eax, ebx
mov ecx, 0x101
xor edx, edx
div ecx
mov dword [ebp - 0x28], edx
mov edi, dword [ebp + 8]
mov eax, dword [edi + edx*4]
test eax, eax
jne 0x6fb6de
jmp 0x6fb8d8
mov eax, dword [eax]
test eax, eax
je 0x6fb8d8
cmp dword [eax + 4], ebx
jne 0x6fb6d4
lea edx, [eax + 8]
mov esi, edx
mov edi, dword [ebp - 0x1c]
mov ecx, 0x20
repe cmpsb byte [esi], byte es:[edi]
seta byte [ebp - 0x20]
setb cl
cmp byte [ebp - 0x20], cl
jne 0x6fb6d4
mov ecx, dword [ebp - 0x24]
mov ebx, dword [ebp + 0xc]
lea eax, [ebx + ecx*2]
add eax, dword [ebx + 0xc]
movzx eax, word [eax]
shl eax, 8
mov ecx, edx
mov edx, eax
mov eax, dword [ebp - 0x2c]
call fcn.006fa89c
test eax, eax
je 0x6fb9a6
inc dword [ebp - 0x24]
mov edi, dword [ebp - 0x24]
cmp dword [ebx + 4], edi
jg 0x6fb690
mov eax, dword [ebp - 0x2c]
mov eax, dword [eax + 4]
mov dword [ebp - 0x1c], eax
test eax, eax
jle 0x6fbae1
mov esi, dword [ebp - 0x2c]
add esi, dword [esi + 8]
xor edx, edx
xor ebx, ebx
nop
ror ebx, 0x1f
mov edi, dword [esi + edx*4]
add edi, esi
xor ecx, ecx
xor eax, eax
ror eax, 0x1f
xor eax, dword [edi + ecx*4]
inc ecx
cmp ecx, 8
jne 0x6fb75c
xor ebx, eax
inc edx
cmp edx, dword [ebp - 0x1c]
jne 0x6fb750
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0xc]
movzx edx, word [edx + eax]
xor eax, eax
mov ecx, dword [ebp - 0x1c]
nop
ror ebx, 0x1f
xor ebx, edx
inc eax
cmp eax, ecx
jne 0x6fb780
mov esi, 0x43
mov eax, ebx
xor edx, edx
div esi
mov ecx, edx
add ecx, 0x100
mov dword [ebp - 0x28], ecx
mov edi, dword [ebp + 8]
mov eax, dword [edi + ecx*4 + 0xc]
test eax, eax
je 0x6fb9e5
mov edx, dword [ebp - 0x1c]
shl edx, 1
mov dword [ebp - 0x24], edx
jmp 0x6fb7c6
mov eax, dword [eax]
test eax, eax
je 0x6fb9e5
cmp ebx, dword [eax + 4]
jne 0x6fb7bc
mov ecx, dword [ebp - 0x1c]
cmp dword [eax + 0xc], ecx
jne 0x6fb7bc
lea edi, [eax + 8]
mov dword [ebp - 0x20], edi
mov esi, dword [eax + 0x14]
add esi, edi
mov edi, dword [ebp - 0x2c]
add edi, dword [edi + 0xc]
mov edx, dword [ebp - 0x24]
cmp edx, edx
mov ecx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x6fb7bc
mov edi, dword [ebp - 0x1c]
test edi, edi
jle 0x6fb830
mov esi, dword [ebp - 0x20]
add esi, dword [eax + 0x10]
mov edi, 1
xor edx, edx
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ecx + 8]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], ebx
nop
mov ebx, dword [esi + edx*4]
add ebx, esi
mov eax, dword [ecx + edx*4]
add eax, ecx
cmp ebx, eax
je 0x6fb820
xor edi, edi
inc edx
cmp edx, dword [ebp - 0x1c]
jne 0x6fb810
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x34]
test edi, edi
je 0x6fb7bc
mov dword [esp], 0xc
call sub.msvcrt.dll_malloc
test eax, eax
je 0x6fb9a6
mov edx, dword [ebp + 0xc]
and edx, 0x43
mov edi, dword [ebp + 0xc]
mov dword [eax + 4], edi
mov ecx, dword [ebp - 0x20]
mov dword [eax + 8], ecx
add edx, 0x144
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + edx*4 + 8]
mov dword [eax], ecx
mov dword [ebx + edx*4 + 8], eax
inc dword [ebx + 0x630]
mov eax, dword [edi + 4]
add dword [ebx + 0x62c], eax
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 4]
test eax, eax
je 0x6fb9bb
shl eax, 2
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.006f2828
mov eax, dword [edi + 8]
add eax, edi
mov dword [esp], eax
call fcn.008f2ba8
mov eax, dword [edi + 4]
test eax, eax
je 0x6fb9bb
shl eax, 1
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.006f2828
mov eax, dword [edi + 0xc]
add eax, edi
mov dword [esp], eax
call fcn.008f2ba8
jmp 0x6fb9bb
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x628]
test eax, eax
je 0x6fb934
dec eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x628], eax
inc dword [edx + 0x634]
mov ecx, edx
mov edx, dword [edx + 0x624]
lea eax, [edx + 0x28]
mov dword [ecx + 0x624], eax
test edx, edx
je 0x6fb9a6
lea edi, [edx + 8]
mov ecx, 8
mov esi, dword [ebp - 0x1c]
rep movsd dword es:[edi], dword [esi]
mov dword [edx + 4], ebx
mov ebx, dword [ebp - 0x28]
mov edi, dword [ebp + 8]
mov eax, dword [edi + ebx*4]
mov dword [edx], eax
mov dword [edi + ebx*4], edx
add edx, 8
jmp 0x6fb6fe
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x408]
inc eax
mov dword [ecx + 0x408], eax
shl eax, 2
mov dword [esp + 4], eax
mov eax, dword [ecx + 0x404]
mov dword [esp], eax
call sub.msvcrt.dll_realloc
test eax, eax
je 0x6fb9a6
mov edi, dword [ebp + 8]
mov dword [edi + 0x404], eax
mov edx, dword [edi + 0x408]
lea esi, [eax + edx*4 - 4]
mov dword [esp], 0xff0
call sub.msvcrt.dll_malloc
mov dword [esi], eax
mov dword [edi + 0x624], eax
test eax, eax
je 0x6fb9a6
mov dword [esp + 4], 0xff0
mov dword [esp], 1
call fcn.006f27d8
mov eax, 0x65
jmp 0x6fb8e6
mov dword [ebp - 0x20], 0
mov edi, dword [ebp - 0x2c]
mov eax, dword [edi + 4]
test eax, eax
jne 0x6fb886
mov dword [esp + 4], 0x10
mov dword [esp], 0
call fcn.006f2828
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.008f2ba8
mov eax, dword [ebp - 0x20]
add esp, 0x3c
pop ebx
pop esi
pop edi
leave
ret
mov ecx, dword [ebp - 0x1c]
lea esi, [ecx + ecx*2 + 0xc]
shl esi, 1
mov dword [esp], esi
call sub.msvcrt.dll_malloc
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x6fbad5
mov dword [esp + 4], esi
mov dword [esp], 0
call fcn.006f27d8
mov edi, dword [ebp + 8]
inc dword [edi + 0x638]
mov eax, dword [ebp - 0x1c]
mov dword [eax + 8], 0xffffffff
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx + 0xc], eax
mov esi, dword [edx + 4]
test esi, esi
je 0x6fba97
mov dword [ecx + 0x10], 0x10
mov eax, dword [edx + 4]
lea eax, [eax*4 + 0x10]
mov dword [ecx + 0x14], eax
add ecx, 8
mov dword [ebp - 0x20], ecx
mov esi, dword [ebp - 0x1c]
add esi, 0x18
mov edi, edx
mov edx, dword [edx + 4]
test edx, edx
jle 0x6fba7f
xor eax, eax
mov ecx, edi
mov edi, dword [ecx + 8]
add edi, ecx
mov edx, edi
sub edx, esi
add edx, dword [edi + eax*4]
mov edi, dword [ebp - 0x20]
mov dword [edi + eax*4 + 0x10], edx
inc eax
mov edx, dword [ecx + 4]
cmp eax, edx
jl 0x6fba64
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x1c]
add eax, dword [ecx + 0x14]
lea ecx, [edx + edx]
mov esi, dword [ebp - 0x2c]
add esi, dword [esi + 0xc]
mov edi, eax
rep movsb byte es:[edi], byte [esi]
jmp 0x6fbaae
mov edi, dword [ebp - 0x1c]
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0
lea eax, [edi + 8]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x1c]
mov dword [edx + 4], ebx
mov ecx, dword [ebp - 0x28]
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + ecx*4 + 0xc]
mov dword [edx], eax
mov dword [ebx + ecx*4 + 0xc], edx
jmp 0x6fb830
mov dword [ebp - 0x20], 0
jmp 0x6fb9da
mov dword [ebp - 0x20], 0
jmp 0x6fb830
xor ebx, ebx
jmp 0x6fb78a