Function at 0x7caa70
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x7b9a60]
sub esp, 0x20
test eax, eax
mov eax, dword [0x7b9aa8]
je 0x7caa93
mov edx, dword [0x7b9a94]
mov ecx, dword [0x7b9a68]
xor eax, edx
xor eax, ecx
jmp 0x7caa98
xor eax, 0xed8375b6
mov ecx, dword [0x7b9ac0]
push ebx
push esi
push edi
mov edi, eax
mov dword [0x7bede8], ecx
not edi
mov dword [0x7bede0], edi
call fcn.007d49fc
test eax, eax
je 0x7caad9
mov ecx, dword [0x7bf0c4]
mov eax, 1
test ecx, ecx
jne 0x7cad7f
pop edi
pop esi
mov dword [0x7bf0c4], eax
pop ebx
add esp, 0x20
ret
mov eax, dword [0x7b9a64]
cmp eax, 4
je 0x7cad7d
test eax, eax
je 0x7cad7d
lea edx, [esp + 0x1c]
push edx
call dword [0x9c6010]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x1e]
mov ecx, dword [esp + 0x22]
mov edx, dword [0x7b9a90]
and esi, 0xffff
and eax, 0xffff
shl esi, 8
or esi, eax
and ecx, 0xffff
shl esi, 8
lea eax, [esp + 0x10]
or esi, ecx
mov dword [0x7bede0], edi
mov dword [0x7bedd8], edx
mov dword [0x7beddc], 0xa
mov dword [0x7c02c4], eax
call fcn.007d4d7c
test eax, eax
je 0x7cab6e
mov eax, dword [0x7bf0c4]
test eax, eax
jne 0x7cab62
mov dword [0x7bf0c4], 6
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x20
ret
mov cl, byte [esp + 0x18]
xor eax, eax
mov bl, byte [esp + eax + 0x10]
xor bl, cl
mov byte [esp + eax + 0x10], bl
inc eax
cmp eax, 4
jb 0x7cab74
mov cl, byte [esp + 0x19]
mov eax, 4
mov bl, byte [esp + eax + 0x10]
xor bl, cl
mov byte [esp + eax + 0x10], bl
inc eax
cmp eax, 8
jb 0x7cab8d
mov al, byte [esp + 0x10]
mov cl, byte [esp + 0x15]
mov dl, byte [esp + 0x12]
mov edi, dword [0x9c6014]
mov byte [esp + 0x15], al
mov al, byte [esp + 0x16]
mov byte [esp + 0x10], cl
mov cl, byte [esp + 0x14]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x11]
push ebp
mov byte [esp + 0x1a], dl
mov byte [esp + 0x15], cl
mov byte [esp + 0x18], al
call edi
and eax, 0xff
mov ecx, 0xff
cdq
idiv ecx
mov ebp, dword [esp + 0x18]
mov bl, dl
mov byte [esp + 0x1c], bl
call edi
add al, 0x3c
mov ecx, 0xff
and eax, 0xff
cdq
idiv ecx
cmp esi, ebp
pop ebp
mov byte [esp + 0xf], dl
mov byte [esp + 0x19], dl
jae 0x7cac2a
mov eax, dword [0x7bf0c4]
test eax, eax
jne 0x7cac1e
mov dword [0x7bf0c4], 2
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x20
ret
mov eax, dword [0x7b9a64]
mov dword [esp + 0x14], esi
test eax, eax
jbe 0x7cacea
cmp eax, 2
jbe 0x7cac9d
cmp eax, 3
jne 0x7cacea
mov esi, dword [esp + 0x10]
call edi
mov edx, dword [0x7bedf0]
cmp eax, edx
jae 0x7cac60
mov ecx, 0xea60
jmp 0x7cac64
mov ecx, eax
sub ecx, edx
mov dword [0x7bedf0], eax
mov eax, 0xef9db22d
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
add esi, edx
test esi, esi
jg 0x7cac97
mov eax, dword [0x7bf0c4]
mov dword [esp + 0x10], esi
test eax, eax
jne 0x7cac97
mov dword [0x7bf0c4], 5
mov dword [esp + 0x10], esi
jmp 0x7cacea
mov esi, dword [esp + 0x10]
lea ecx, [esp + 0x1c]
push ecx
call dword [0x9c6010]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1e]
mov ecx, dword [esp + 0x22]
and edx, 0xffff
shl edx, 8
and eax, 0xffff
and ecx, 0xffff
or edx, eax
shl edx, 8
or edx, ecx
cmp edx, esi
jb 0x7cacea
mov eax, dword [0x7bf0c4]
test eax, eax
jne 0x7cacea
mov dword [0x7bf0c4], 3
mov al, byte [esp + 0x10]
mov dl, byte [esp + 0x15]
mov cl, byte [esp + 0x12]
mov byte [esp + 0x15], al
mov al, byte [esp + 0x16]
mov byte [esp + 0x10], dl
mov dl, byte [esp + 0x14]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x16], cl
mov byte [esp + 0x14], al
mov byte [esp + 0x11], dl
xor eax, eax
mov cl, byte [esp + eax + 0x10]
xor cl, bl
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 4
jb 0x7cad1c
mov cl, byte [esp + 0xf]
mov eax, 4
mov bl, byte [esp + eax + 0x10]
xor bl, cl
mov byte [esp + eax + 0x10], bl
inc eax
cmp eax, 8
jb 0x7cad35
call fcn.007d462f
test eax, eax
mov eax, dword [0x7bf0c4]
je 0x7cad6d
test eax, eax
jne 0x7cad71
pop edi
pop esi
mov dword [0x7bf0c4], 7
mov eax, 1
pop ebx
add esp, 0x20
ret
test eax, eax
je 0x7cad7d
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x20
ret
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x20
ret