Function at 0x6800c891
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x8c
mov eax, dword [0x68031884]
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x18]
push edi
xor edi, edi
cmp dword [ebp + 0x1c], edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x80], edi
je 0x6800c8d0
mov ebx, 0x80090009
jmp 0x6800d012
push edi
push dword [ebp + 8]
call fcn.680112e5
test eax, eax
jne 0x6800c8e7
mov ebx, 0x80090001
jmp 0x6800d012
cmp esi, edi
jne 0x6800c8f2
push 0x57
jmp 0x6800cd87
lea eax, [ebp - 0x6c]
push eax
push 1
push dword [ebp + 8]
push dword [ebp + 0xc]
call fcn.68011309
cmp eax, edi
je 0x6800c91c
cmp eax, 0x80090020
jne 0x6800ca0e
mov ebx, 0x80090002
jmp 0x6800d012
mov eax, dword [ebp + 0x10]
dec eax
je 0x6800cfed
dec eax
je 0x6800c9d5
dec eax
dec eax
je 0x6800c93b
mov ebx, 0x8009000a
jmp 0x6800d012
test ebx, ebx
push 4
pop edi
je 0x6800d006
cmp dword [esi], edi
jb 0x6800d006
mov eax, dword [ebp - 0x6c]
mov ecx, dword [eax + 4]
cmp ecx, 0x8001
jb 0x6800c98c
cmp ecx, 0x8004
jbe 0x6800c9ca
cmp ecx, 0x8005
je 0x6800c9a6
cmp ecx, 0x8008
je 0x6800c99b
cmp ecx, 0x8009
je 0x6800c996
cmp ecx, 0x800b
jbe 0x6800c98c
cmp ecx, 0x800e
jbe 0x6800c9ca
mov ebx, 0x80090008
jmp 0x6800d012
push dword [eax + 0x1c]
jmp 0x6800c9cb
mov dword [ebx], 0x24
jmp 0x6800d000
lea ecx, [ebp - 0x7c]
push ecx
push 2
push dword [ebp + 8]
push dword [eax + 0x14]
call fcn.68011309
test eax, eax
jne 0x6800ceab
mov eax, dword [ebp - 0x7c]
mov eax, dword [eax + 0x78]
jmp 0x6800cffe
push ecx
call fcn.6800a92c
jmp 0x6800cffe
mov eax, dword [ebp - 0x6c]
mov ecx, dword [eax + 4]
mov edx, ecx
sub edx, 0x8005
je 0x6800ce90
sub edx, 3
je 0x6800ce57
dec edx
je 0x6800ca1c
dec edx
push esi
push ebx
push dword [eax + 0x10]
je 0x6800ca15
push dword [eax + 0x18]
push ecx
call fcn.6800c6e4
cmp eax, edi
je 0x6800d002
mov ebx, eax
jmp 0x6800d012
call fcn.68014467
jmp 0x6800ca06
test byte [eax + 0x20], 2
jne 0x6800ce40
lea ecx, [ebp - 0x8c]
push ecx
lea ecx, [ebp - 0x64]
push ecx
push dword [eax + 0x10]
mov dword [ebp - 0x8c], 0x40
push dword [eax + 0x18]
push dword [eax + 0x1c]
call fcn.6800c6e4
cmp eax, edi
jne 0x6800ca0e
lea eax, [ebp - 0x7c]
push eax
mov eax, dword [ebp - 0x6c]
push 2
push dword [ebp + 8]
push dword [eax + 0x14]
call fcn.68011309
cmp eax, edi
jne 0x6800ceab
mov eax, dword [ebp - 0x7c]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0x6c]
cmp eax, dword [ecx + 0x38]
jbe 0x6800cc20
lea eax, [ebp - 0x80]
push eax
mov eax, ecx
push dword [eax + 0x1c]
call fcn.68007142
mov esi, dword [ebp - 0x80]
and dword [ebp - 0x74], 0
test esi, esi
mov edi, 0x6b637453
je 0x6800cae2
cmp esi, dword [0x68032010]
ja 0x6800cae2
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x6800cae2
push eax
call fcn.6802d8d6
test eax, eax
mov esi, dword [ebp - 0x80]
je 0x6800cace
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
mov eax, esp
mov dword [ebp - 0x74], eax
cmp dword [ebp - 0x74], 0
je 0x6800cae2
mov eax, dword [ebp - 0x74]
mov dword [eax], edi
add dword [ebp - 0x74], 8
jne 0x6800cb0f
mov esi, dword [ebp - 0x80]
lea eax, [esi + 8]
cmp eax, esi
jb 0x6800cb05
push eax
call dword [0x68032018]
test eax, eax
mov dword [ebp - 0x74], eax
je 0x6800cd85
mov dword [eax], 0x70616548
add dword [ebp - 0x74], 8
cmp dword [ebp - 0x74], 0
je 0x6800cd85
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x6c]
push dword [eax + 0x1c]
call fcn.68007330
test eax, eax
jne 0x6800ca0e
mov eax, dword [ebp - 0x7c]
push dword [eax + 0xc]
push dword [eax + 0x10]
mov eax, dword [ebp - 0x6c]
push dword [ebp - 0x74]
push dword [eax + 0x1c]
call fcn.68007737
test eax, eax
jne 0x6800ca0e
mov eax, dword [ebp - 0x6c]
mov esi, dword [eax + 0x38]
and dword [ebp - 0x68], 0
test esi, esi
mov dword [ebp - 0x78], esi
je 0x6800cb98
cmp esi, dword [0x68032010]
ja 0x6800cb98
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x6800cb98
push eax
call fcn.6802d8d6
test eax, eax
je 0x6800cb98
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
test esp, esp
mov dword [ebp - 0x68], esp
je 0x6800cb98
add dword [ebp - 0x68], 8
mov eax, esp
mov dword [eax], edi
jne 0x6800cbc7
lea eax, [esi + 8]
cmp eax, esi
jb 0x6800cbbd
push eax
call dword [0x68032018]
test eax, eax
mov dword [ebp - 0x68], eax
je 0x6800cd85
mov dword [eax], 0x70616548
add eax, 8
mov dword [ebp - 0x68], eax
cmp dword [ebp - 0x68], 0
je 0x6800cd85
mov ecx, esi
mov esi, dword [ebp - 0x68]
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
lea eax, [ebp - 0x78]
push eax
mov eax, dword [ebp - 0x6c]
push esi
push dword [ebp - 0x74]
push 0
push dword [eax + 0x1c]
call fcn.6800c6e4
test eax, eax
jne 0x6800ca0e
mov ecx, dword [ebp - 0x6c]
cmp dword [ecx + 0x38], eax
jbe 0x6800cc15
mov ecx, dword [ecx + 0x2c]
mov cl, byte [ecx + eax]
xor byte [eax + esi], cl
mov ecx, dword [ebp - 0x6c]
inc eax
cmp eax, dword [ecx + 0x38]
jb 0x6800cc03
mov eax, dword [ecx + 0x38]
mov dword [ebp - 0x78], eax
jmp 0x6800ccee
mov esi, dword [ecx + 0x30]
cmp eax, esi
jb 0x6800cc29
mov esi, eax
cmp esi, edi
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x68], edi
je 0x6800cc75
cmp esi, dword [0x68032010]
ja 0x6800cc75
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x6800cc75
push eax
call fcn.6802d8d6
test eax, eax
je 0x6800cc75
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
cmp esp, edi
mov dword [ebp - 0x68], esp
je 0x6800cc75
add dword [ebp - 0x68], 8
mov eax, esp
mov dword [eax], 0x6b637453
jne 0x6800cca1
lea eax, [esi + 8]
cmp eax, esi
jb 0x6800cc98
push eax
call dword [0x68032018]
cmp eax, edi
mov dword [ebp - 0x68], eax
je 0x6800cd85
add dword [ebp - 0x68], 8
mov dword [eax], 0x70616548
cmp dword [ebp - 0x68], edi
je 0x6800cd85
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x68]
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 eax, dword [ebp - 0x6c]
mov ecx, dword [eax + 0x30]
mov esi, dword [eax + 0x2c]
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 - 0x7c]
xor eax, eax
cmp dword [ecx + 0xc], eax
jbe 0x6800ccee
mov ecx, dword [ecx + 0x10]
mov cl, byte [ecx + eax]
xor byte [eax + edx], cl
mov ecx, dword [ebp - 0x7c]
inc eax
cmp eax, dword [ecx + 0xc]
jb 0x6800ccdc
lea eax, [ebp - 0x84]
push eax
mov eax, dword [ebp - 0x6c]
push dword [eax + 0x1c]
call fcn.68007142
mov esi, dword [ebp - 0x84]
xor edi, edi
cmp esi, edi
mov dword [ebp - 0x70], edi
je 0x6800cd61
cmp esi, dword [0x68032010]
ja 0x6800cd61
mov eax, dword [0x68032014]
lea eax, [eax + esi + 8]
cmp eax, esi
jb 0x6800cd61
push eax
call fcn.6802d8d6
test eax, eax
mov esi, dword [ebp - 0x84]
je 0x6800cd47
lea eax, [esi + 8]
add eax, 3
and eax, 0xfffffffc
call fcn.68014f30
mov eax, esp
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0x70], edi
je 0x6800cd61
mov eax, dword [ebp - 0x70]
mov dword [eax], 0x6b637453
add dword [ebp - 0x70], 8
jne 0x6800cd8d
mov esi, dword [ebp - 0x84]
lea eax, [esi + 8]
cmp eax, esi
jb 0x6800cd80
push eax
call dword [0x68032018]
cmp eax, edi
mov dword [ebp - 0x70], eax
je 0x6800cd85
mov dword [eax], 0x70616548
add dword [ebp - 0x70], 8
cmp dword [ebp - 0x70], edi
jne 0x6800cd8d
push 8
pop ebx
jmp 0x6800d012
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x70]
push eax
mov eax, dword [ebp - 0x6c]
push dword [eax + 0x1c]
call fcn.68007330
cmp eax, edi
jne 0x6800ca0e
push dword [ebp - 0x78]
mov eax, dword [ebp - 0x6c]
push dword [ebp - 0x68]
push dword [ebp - 0x70]
push dword [eax + 0x1c]
call fcn.68007737
cmp eax, edi
jne 0x6800ca0e
push dword [ebp - 0x8c]
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x70]
mov eax, dword [ebp - 0x6c]
push dword [eax + 0x1c]
call fcn.68007737
cmp eax, edi
jne 0x6800ca0e
mov eax, dword [ebp - 0x6c]
mov edi, dword [eax + 0x10]
mov ecx, dword [ebp - 0x84]
mov esi, dword [ebp - 0x70]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x6c]
or dword [eax + 0x20], 2
mov ecx, dword [ebp - 0x80]
mov edi, dword [ebp - 0x74]
mov edx, ecx
shr ecx, 2
mov esi, dword [ebp - 0x88]
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp - 0x78]
mov edi, dword [ebp - 0x68]
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
mov eax, dword [ebp - 0x6c]
push esi
push ebx
push dword [eax + 0x10]
push dword [eax + 0x18]
push dword [eax + 0x1c]
call fcn.6800c6e4
test eax, eax
jmp 0x6800ca08
cmp ebx, edi
push 0x24
pop ecx
je 0x6800ce89
cmp dword [esi], ecx
jb 0x6800ce89
test byte [eax + 0x18], 1
jne 0x6800ce72
mov ebx, 0x8009000c
jmp 0x6800d012
mov edx, dword [ebp - 0x88]
mov dword [edx], ecx
mov esi, dword [eax + 0x10]
push 9
pop ecx
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
jmp 0x6800d002
mov dword [esi], ecx
jmp 0x6800d008
mov edi, dword [eax + 0x10]
lea ecx, [ebp - 0x7c]
push ecx
push 2
push dword [ebp + 8]
mov dword [ebp - 0x78], edi
push dword [eax + 0x14]
call fcn.68011309
test eax, eax
je 0x6800cec0
cmp eax, 0x80090020
jne 0x6800ca0e
mov ebx, 0x80090003
jmp 0x6800d012
test ebx, ebx
mov eax, dword [ebp - 0x7c]
je 0x6800cfe6
mov ecx, dword [esi]
cmp ecx, dword [eax + 0x78]
jb 0x6800cfe6
xor ecx, ecx
inc ecx
cmp dword [edi + 0x24], ecx
jne 0x6800cf04
mov ecx, dword [eax + 0x78]
mov edx, dword [ebp - 0x88]
mov dword [edx], ecx
mov ecx, dword [eax + 0x78]
lea esi, [eax + 0x2c]
mov eax, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x6800d002
cmp dword [edi], 0
mov dword [edi + 0x24], ecx
je 0x6800cfca
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x24]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x78]
mov ecx, dword [eax]
push 0x20
pop edx
cmp ecx, edx
ja 0x6800c912
mov esi, eax
mov eax, ecx
shr ecx, 2
add esi, 0x14
lea edi, [ebp - 0x24]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [ebp - 0x7c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
cmp ecx, 0x6601
je 0x6800cfd2
cmp ecx, 0x6602
je 0x6800cfab
cmp ecx, 0x6603
je 0x6800cf97
cmp ecx, 0x6609
je 0x6800cf97
cmp ecx, 0x660d
jbe 0x6800cede
cmp ecx, 0x6610
ja 0x6800cede
push edx
push dword [ebp - 0x78]
lea ecx, [ebp - 0x24]
push ecx
push 1
push dword [eax + 0x78]
push eax
push fcn.68019890
jmp 0x6800cfbd
push edx
push dword [ebp - 0x78]
lea ecx, [ebp - 0x24]
push ecx
push 1
push 8
push eax
push fcn.680174a0
jmp 0x6800cfbd
push edx
push dword [ebp - 0x78]
lea ecx, [ebp - 0x24]
push ecx
push 1
push 8
push eax
push fcn.680166d0
call fcn.68006595
test eax, eax
jne 0x6800ca0e
mov eax, dword [ebp - 0x7c]
jmp 0x6800cede
push edx
push dword [ebp - 0x78]
lea ecx, [ebp - 0x24]
push ecx
push 1
push 8
push eax
push fcn.68015620
jmp 0x6800cfbd
mov eax, dword [eax + 0x78]
mov dword [esi], eax
jmp 0x6800d008
test ebx, ebx
push 4
pop edi
je 0x6800d006
cmp dword [esi], edi
jb 0x6800d006
mov eax, dword [ebp - 0x6c]
mov eax, dword [eax + 4]
mov dword [ebx], eax
mov dword [esi], edi
xor ebx, ebx
jmp 0x6800d012
mov dword [esi], edi
neg ebx
sbb ebx, ebx
and ebx, 0xea
xor eax, eax
test ebx, ebx
sete al
mov edi, 0x70616548
mov esi, eax
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x6800d035
add eax, 0xfffffff8
cmp dword [eax], edi
jne 0x6800d035
push eax
call dword [0x6803201c]
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x6800d04a
add eax, 0xfffffff8
cmp dword [eax], edi
jne 0x6800d04a
push eax
call dword [0x6803201c]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x6800d05f
add eax, 0xfffffff8
cmp dword [eax], edi
jne 0x6800d05f
push eax
call dword [0x6803201c]
test esi, esi
jne 0x6800d06a
push ebx
call dword [sym.imp._CKERNEL.DLL_SetLastError]
mov eax, esi
lea esp, [ebp - 0x98]
mov ecx, dword [ebp - 4]
call fcn.68014cb9
pop edi
pop esi
pop ebx
leave
ret 0x18