Function at 0x4285a0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x452480
mov dword [ebp - 0x2c], ecx
cmp dword [ebp + 0xc], 0
lea eax, [ebp - 0x18]
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
je 0x428792
lea eax, [edx + 8]
mov edi, dword [edx + 0x100c]
xor ecx, ecx
lea ebx, [ebp - 0x28]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0xc]
nop word cs:[eax + eax]
nop dword [eax + eax]
test edi, edi
mov dword [ebp - 0x40], eax
jne 0x42871c
mov edi, dword [edx + 4]
mov esi, dword [edx]
mov dword [ebp - 0x38], ecx
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x28], 0
push 4
push ebx
push esi
lea ecx, [ebp - 0x24]
push ecx
call eax
add esp, 0x10
movzx ecx, byte [ebp - 0x24]
cmp cl, 4
jne 0x42879f
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x30], eax
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x28], 0
push 4
push ebx
push esi
lea ecx, [ebp - 0x24]
push ecx
call eax
add esp, 0x10
movzx ecx, byte [ebp - 0x24]
cmp cl, 4
jne 0x42879f
mov eax, ebx
mov ebx, dword [ebp - 0x28]
mov edi, dword [edi + 0x20]
mov dword [ebp - 0x28], 0
push 4
push eax
push esi
lea eax, [ebp - 0x24]
push eax
call edi
add esp, 0x10
movzx ecx, byte [ebp - 0x24]
cmp cl, 4
jne 0x42879f
mov ecx, dword [ebp - 0x30]
not ebx
cmp ecx, ebx
jne 0x4287b7
cmp ecx, 0x1000
ja 0x428863
mov ebx, dword [ebp - 0x28]
push ecx
push dword [ebp - 0x34]
push esi
lea eax, [ebp - 0x24]
push eax
mov esi, ecx
call edi
add esp, 0x10
movzx ecx, byte [ebp - 0x24]
cmp cl, 4
jne 0x42879f
mov edi, ebx
mov eax, 0xffffffff
test esi, esi
je 0x4286f6
mov ecx, dword [ebp - 0x34]
mov edx, esi
nop word cs:[eax + eax]
nop dword [eax]
movzx ebx, byte [ecx]
inc ecx
xor bl, al
shr eax, 8
movzx esi, bl
xor eax, dword [esi*4 + 0x45a98c]
dec edx
jne 0x4286e0
not eax
cmp edi, eax
jne 0x428915
mov edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x38]
mov dword [edx + 0x1008], 0
mov dword [edx + 0x100c], edi
cmp eax, edi
mov esi, edi
mov dword [ebp - 0x30], edi
cmovb esi, eax
mov edi, esi
add edi, ecx
jb 0x428a44
cmp edi, dword [ebp + 0xc]
ja 0x428a38
mov ebx, edx
mov edx, ecx
mov ecx, dword [ebx + 0x1008]
mov ebx, ecx
add ebx, esi
jb 0x428a2f
cmp ebx, 0x1000
mov dword [ebp - 0x38], edi
ja 0x428a55
add edx, dword [ebp + 8]
add ecx, dword [ebp - 0x34]
push esi
push ecx
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edi, dword [ebp - 0x30]
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x38]
mov dword [edx + 0x1008], ebx
sub edi, esi
sub eax, esi
lea ebx, [ebp - 0x28]
mov dword [edx + 0x100c], edi
jne 0x428600
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp + 0xc]
mov cl, 4
jmp 0x428a19
movzx eax, byte [ebp - 0x21]
movzx edx, word [ebp - 0x23]
mov esi, dword [ebp - 0x2c]
shl eax, 0x10
or edx, eax
mov eax, dword [ebp - 0x20]
jmp 0x428a0f
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x4287da
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428a97
mov dword [0x4634c8], eax
push 0x1c
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428a97
mov dword [eax + 0x18], 0x74707572
mov dword [eax + 0x14], 0x726f6320
mov dword [eax + 0x10], 0x73692065
mov dword [eax + 0xc], 0x7a697320
mov dword [eax + 8], 0x72656461
mov dword [eax + 4], 0x6568206b
mov dword [eax], 0x636f6c42
mov esi, eax
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x428842
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428a6b
mov dword [0x4634c8], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428a6b
mov edi, eax
mov dword [eax], esi
mov eax, 0x1c
jmp 0x4289c3
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x428886
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428aa8
mov dword [0x4634c8], eax
push 0x1e
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428aa8
mov word [eax + 0x1c], 0x6567
mov dword [eax + 0x18], 0x72616c20
mov dword [eax + 0x14], 0x6f6f7420
mov dword [eax + 0x10], 0x73692065
mov dword [eax + 0xc], 0x7a697320
mov dword [eax + 8], 0x72656461
mov dword [eax + 4], 0x6568206b
mov dword [eax], 0x636f6c42
mov esi, eax
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x4288f4
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428a6b
mov dword [0x4634c8], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428a6b
mov edi, eax
mov dword [eax], esi
mov eax, 0x1e
jmp 0x4289c3
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x428938
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428ab9
mov dword [0x4634c8], eax
push 0x1f
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428ab9
mov dword [eax + 0x1b], 0x64656c69
mov dword [eax + 0x18], 0x69616620
mov dword [eax + 0x14], 0x6b636568
mov dword [eax + 0x10], 0x63203233
mov dword [eax + 0xc], 0x63726320
mov dword [eax + 8], 0x72656461
mov dword [eax + 4], 0x6568206b
mov dword [eax], 0x636f6c42
mov esi, eax
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
test eax, eax
jne 0x4289a7
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428a6b
mov dword [0x4634c8], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428a6b
mov edi, eax
mov dword [eax], esi
mov eax, 0x1f
mov dword [edi + 4], eax
mov dword [edi + 8], eax
movzx eax, byte [0x463514]
mov eax, dword [0x4634c8]
mov esi, dword [ebp - 0x2c]
test eax, eax
jne 0x4289ef
call dword [sym.imp.kernel32.dll_GetProcessHeap]
test eax, eax
je 0x428a7c
mov dword [0x4634c8], eax
push 0xc
push 0
push eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
test eax, eax
je 0x428a7c
mov dword [eax], edi
mov dword [eax + 4], 0x45a5c4
mov byte [eax + 8], 0x15
mov cl, 3
xor edx, edx
mov word [esi + 1], dx
shr edx, 0x10
mov byte [esi + 3], dl
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x18]
mov byte [esi], cl
mov dword fs:[0], eax
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, ebx
push 0x45ad9c
jmp 0x428a4b
mov edx, dword [ebp + 0xc]
mov ecx, edi
push 0x45ad8c
jmp 0x428a61
mov edx, edi
push 0x45ad8c
call fcn.00453c40
add esp, 4
ud2
mov ecx, ebx
mov edx, 0x1000
push 0x45ad9c
call fcn.004539d0
add esp, 4
ud2
mov ecx, 4
mov edx, 0xc
call fcn.004537a0
ud2
mov ecx, 4
mov edx, 0xc
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x10], 0
call fcn.004537a0
ud2
mov ecx, 1
mov edx, 0x1c
call fcn.004537a0
ud2
mov ecx, 1
mov edx, 0x1e
call fcn.004537a0
ud2
mov ecx, 1
mov edx, 0x1f
call fcn.004537a0
ud2