Function at 0x1002bf00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x44
mov eax, dword [0x1007a00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp + 0x1f]
mov dword [ebp - 0x18], eax
mov al, byte [ebp + 0x1c]
mov byte [ebp - 0x20], al
mov al, byte [ebp + 0x23]
mov byte [ebp - 0x14], al
mov al, byte [ebp + 0x1d]
mov byte [ebp - 0x1f], al
mov al, byte [ebp + 0x1e]
mov byte [ebp - 0x1e], al
mov eax, dword [0x1007b660]
mov dword [ebp - 0x28], eax
mov edi, dword [ebp + 8]
mov ecx, dword [0x1007b66c]
mov ebx, dword [0x1007b668]
mov eax, ebx
mov edx, ecx
lock cmpxchg8b qword [0x1007b668]
mov dword [ebp - 0x3c], ecx
xor edx, ecx
mov dword [ebp - 0x38], ebx
xor eax, ebx
or eax, edx
jne 0x1002bf54
mov esi, dword [0x1007b674]
mov ebx, dword [0x1007b670]
mov eax, ebx
mov edx, esi
mov ecx, esi
lock cmpxchg8b qword [0x1007b670]
xor edx, esi
xor eax, ebx
or eax, edx
jne 0x1002bf7a
cmp dword [ebp - 0x28], 0
setne byte [ebp - 0x22]
mov dword [ebp - 0x50], ebx
or ebx, dword [ebp - 0x38]
mov ecx, esi
or ecx, dword [ebp - 0x3c]
mov edx, ebx
or edx, ecx
sete byte [ebp - 0x21]
cmp byte [0x1007b628], 0
jne 0x1002c097
cmp byte [ebp - 0x1f], 0
je 0x1002bfce
or ebx, ecx
je 0x1002c048
mov eax, dword [ebp - 0x50]
sub eax, dword [ebp - 0x4c]
mov ebx, esi
sbb ebx, dword [ebp - 0x48]
cmp byte [ebp - 0x1e], 0
je 0x1002c093
cmp dword [ebp - 0x28], 0
je 0x1002c093
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x3c]
sbb ecx, dword [ebp - 0x40]
cmp byte [0x1007b680], 0
jne 0x1002c03a
mov edx, eax
sub edx, dword [ebp - 0x30]
mov esi, ecx
sbb esi, ebx
mov edi, esi
sar edi, 0x1f
add edx, edi
adc esi, edi
xor esi, edi
xor edx, edi
mov edi, dword [0x1007b68c]
mov dword [ebp - 0x34], ebx
mov ebx, dword [0x1007b688]
cmp ebx, edx
mov dword [ebp - 0x2c], edi
sbb edi, esi
jl 0x1002c0c5
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
xor edx, edx
neg eax
sbb edx, ecx
jl 0x1002c09b
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 0x4c]
mov dword [edi], ecx
mov ecx, dword [ebp - 0x48]
mov dword [edi + 4], ecx
mov ecx, dword [ebp - 0x44]
mov dword [edi + 8], ecx
mov ecx, dword [ebp - 0x40]
mov dword [edi + 0xc], ecx
mov cl, byte [ebp - 0x20]
mov byte [edi + 0x10], cl
mov cl, byte [ebp - 0x1f]
mov byte [edi + 0x11], cl
mov cl, byte [ebp - 0x1e]
mov byte [edi + 0x12], cl
mov ecx, dword [eax]
mov dword [edi + 0x13], ecx
mov al, byte [eax + 4]
mov byte [edi + 0x17], al
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1002cad0
mov eax, edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, ebx
jmp 0x1002c040
or ebx, ecx
je 0x1002c048
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], esi
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x40], eax
mov al, byte [ebp - 0x21]
mov byte [ebp - 0x1f], al
mov al, byte [ebp - 0x22]
mov byte [ebp - 0x1e], al
mov byte [ebp - 0x20], 1
lea eax, [ebp - 0x1d]
jmp 0x1002c04b
sub edx, ebx
sbb esi, dword [ebp - 0x2c]
mov edi, dword [0x1007b694]
cmp dword [0x1007b690], edx
sbb edi, esi
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
jge 0x1002c040
mov ecx, dword [ebp - 0x34]
mov eax, ecx
sar eax, 0x1f
mov edx, dword [ebp - 0x30]
add edx, eax
adc ecx, eax
mov bl, byte [0x1007a230]
test bl, 1
je 0x1002c1af
xor edx, eax
xor ecx, eax
cmp edx, dword [0x1007b698]
sbb ecx, dword [0x1007b69c]
jge 0x1002c1af
call dword [sym.imp.kernel32.dll_GetTickCount64]
mov edi, eax
mov ecx, edx
mov eax, dword [0x1007a228]
imul ecx, eax
mul edi
mov esi, eax
add edx, ecx
imul edi, dword [0x1007a22c]
add edi, edx
push 0x1007b6a0
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov ecx, dword [0x1007b6bc]
mov eax, dword [0x1007b6b8]
mov dword [ebp - 0x2c], esi
cmp esi, eax
mov edx, edi
sbb edx, ecx
mov esi, dword [0x1007b6c4]
mov ebx, dword [0x1007b6c0]
jae 0x1002c193
mov edx, dword [ebp - 0x2c]
not edx
add eax, edx
mov edx, edi
not edx
adc ecx, edx
add eax, ebx
adc ecx, esi
push esi
push ebx
push ecx
push eax
call fcn.1002d8e0
mov ecx, edx
cmp eax, 5
sbb edx, 0
jb 0x1002c1ba
mov byte [0x1007a230], 0
jmp 0x1002c1a4
add ebx, dword [ebp - 0x2c]
adc esi, edi
mov dword [0x1007b6b8], ebx
mov dword [0x1007b6bc], esi
push 0x1007b6a0
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
jmp 0x1002c03a
add eax, 1
adc ecx, 0
imul esi, eax
mul ebx
add edx, esi
imul ecx, ebx
add ecx, edx
add eax, dword [ebp - 0x2c]
adc ecx, edi
mov dword [0x1007b6b8], eax
mov dword [0x1007b6bc], ecx
jmp 0x1002c1a4