Function at 0x68007890
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx + 4]
push esi
push edi
xor edi, edi
sub eax, 0x8005
mov dword [ebp - 4], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], edi
je 0x68007bb1
sub eax, 4
je 0x680078c9
mov esi, 0x80090008
jmp 0x68007e45
test byte [ebx + 0x20], 1
jne 0x68007b91
lea eax, [ebp + 8]
push eax
push 2
push dword [ebp + 8]
push dword [ebx + 0x14]
call fcn.68011309
cmp eax, edi
jne 0x68007bdc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
cmp eax, dword [ebx + 0x38]
jbe 0x68007a91
lea eax, [ebp - 0x14]
push eax
push dword [ebx + 0x1c]
call fcn.68007142
mov esi, dword [ebp - 0x14]
and dword [ebp - 8], 0
test esi, esi
mov edi, 0x6b637453
je 0x68007955
cmp esi, dword [0x68032010]
ja 0x68007955
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x68007955
push eax
call fcn.6802d8d6
test eax, eax
je 0x68007955
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
mov eax, esp
test eax, eax
mov dword [ebp - 8], eax
je 0x68007955
add dword [ebp - 8], 8
mov dword [eax], edi
jne 0x68007982
lea eax, [esi + 8]
cmp eax, esi
jb 0x68007974
push eax
call dword [0x68032018]
test eax, eax
mov dword [ebp - 8], eax
je 0x6800797a
add dword [ebp - 8], 8
mov dword [eax], 0x70616548
cmp dword [ebp - 8], 0
jne 0x68007982
push 8
pop esi
jmp 0x68007e2c
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 8]
push eax
push dword [ebx + 0x1c]
call fcn.68007330
test eax, eax
jne 0x680079ae
mov eax, dword [ebp + 8]
push dword [eax + 0xc]
push dword [eax + 0x10]
push dword [ebp - 8]
push dword [ebx + 0x1c]
call fcn.68007737
test eax, eax
je 0x680079b5
mov esi, eax
jmp 0x68007e2c
mov esi, dword [ebx + 0x38]
and dword [ebp - 4], 0
test esi, esi
mov dword [ebp + 0xc], esi
je 0x68007a07
cmp esi, dword [0x68032010]
ja 0x68007a07
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x68007a07
push eax
call fcn.6802d8d6
test eax, eax
je 0x68007a04
mov esi, dword [ebp + 0xc]
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
test esp, esp
mov dword [ebp - 4], esp
je 0x68007a07
add dword [ebp - 4], 8
mov eax, esp
mov dword [eax], edi
jne 0x68007a39
mov esi, dword [ebp + 0xc]
lea eax, [esi + 8]
cmp eax, esi
jb 0x68007a2b
push eax
call dword [0x68032018]
test eax, eax
mov dword [ebp - 4], eax
je 0x68007a31
mov dword [eax], 0x70616548
mov esi, dword [ebp + 0xc]
add eax, 8
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
jne 0x68007a3c
push 8
pop esi
jmp 0x68007e13
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp - 4]
mov ecx, esi
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
lea eax, [ebp + 0xc]
push eax
push dword [ebp - 4]
push dword [ebp - 8]
push 0
push dword [ebx + 0x1c]
call fcn.6800c6e4
test eax, eax
jne 0x68007baa
cmp dword [ebx + 0x38], eax
jbe 0x68007a86
mov ecx, dword [ebp - 4]
lea esi, [eax + ecx]
mov ecx, dword [ebx + 0x24]
mov cl, byte [ecx + eax]
xor byte [esi], cl
inc eax
cmp eax, dword [ebx + 0x38]
jb 0x68007a72
mov eax, dword [ebx + 0x38]
mov dword [ebp + 0xc], eax
jmp 0x68007b60
mov ecx, dword [ebx + 0x28]
cmp eax, ecx
jb 0x68007a9a
mov ecx, eax
cmp ecx, edi
push 8
mov dword [ebp + 0xc], ecx
mov dword [ebp - 4], edi
pop esi
je 0x68007ae8
cmp ecx, dword [0x68032010]
ja 0x68007ae8
mov eax, dword [0x68032014]
lea eax, [eax + ecx + 8]
cmp eax, ecx
jb 0x68007ae8
push eax
call fcn.6802d8d6
test eax, eax
je 0x68007ae8
mov eax, dword [ebp + 0xc]
add eax, 0xb
and eax, 0xfffffffc
call fcn.68014f30
cmp esp, edi
mov dword [ebp - 4], esp
je 0x68007ae8
add dword [ebp - 4], esi
mov eax, esp
mov dword [eax], 0x6b637453
jne 0x68007b16
mov ecx, dword [ebp + 0xc]
lea eax, [ecx + 8]
cmp eax, ecx
jb 0x68007b0d
push eax
call dword [0x68032018]
cmp eax, edi
mov dword [ebp - 4], eax
je 0x68007e13
add dword [ebp - 4], esi
mov dword [eax], 0x70616548
cmp dword [ebp - 4], edi
je 0x68007e13
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
mov esi, ecx
shr ecx, 2
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebx + 0x28]
mov esi, dword [ebx + 0x24]
mov eax, ecx
shr ecx, 2
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 8]
xor eax, eax
cmp dword [ecx + 0xc], eax
jbe 0x68007b60
mov ecx, dword [ecx + 0x10]
mov cl, byte [ecx + eax]
xor byte [eax + edx], cl
mov ecx, dword [ebp + 8]
inc eax
cmp eax, dword [ecx + 0xc]
jb 0x68007b4e
push dword [ebp + 0xc]
push dword [ebp - 4]
push dword [ebx + 0x10]
push dword [ebx + 0x1c]
call fcn.68007737
test eax, eax
jne 0x68007baa
push dword [ebp + 0xc]
or dword [ebx + 0x20], 1
push dword [ebp - 4]
call fcn.6800fbb0
push dword [ebp - 0x14]
push dword [ebp - 8]
call fcn.6800fbb0
xor edi, edi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebx + 0x10]
push dword [ebx + 0x1c]
call fcn.68007737
cmp eax, edi
je 0x68007e03
mov esi, eax
jmp 0x68007e13
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax + 0x10]
cmp dword [ebx + 0x24], 0
je 0x68007bc7
mov esi, 0x8009000c
jmp 0x68007e45
lea ecx, [ebp + 8]
push ecx
push 2
push dword [ebp + 8]
push dword [eax + 0x14]
call fcn.68011309
test eax, eax
je 0x68007bf1
cmp eax, 0x80090020
jne 0x68007cf0
mov esi, 0x80090003
jmp 0x68007e45
mov edi, dword [ebx]
lea eax, [ebp - 0x14]
push eax
push dword [ebp + 0x14]
push edi
call fcn.68007205
test eax, eax
je 0x68007c0c
push 0x57
pop esi
jmp 0x68007e45
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x78]
cmp dword [ebp - 0x14], ecx