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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
cmp dword [esp + 0x40], 0
mov dword [esp + 0x24], ecx
je 0x41b400
lea eax, [edx + 8]
mov esi, dword [edx + 0x100c]
xor ecx, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x40]
nop dword [eax]
test esi, esi
mov dword [esp + 0x20], eax
jne 0x41b301
mov ebp, dword [edx + 4]
mov edi, dword [edx]
mov dword [esp + 0x14], ecx
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x10], 0
push 4
lea esi, [esp + 0x14]
push esi
push edi
lea ebx, [esp + 0x14]
push ebx
call eax
add esp, 0x10
movzx eax, byte [esp + 8]
cmp al, 4
jne 0x41b40f
mov ecx, esi
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x10], 0
push 4
push ecx
push edi
push ebx
call eax
add esp, 0x10
movzx eax, byte [esp + 8]
cmp al, 4
jne 0x41b40f
mov eax, edi
mov edx, ebx
mov edi, dword [esp + 0x10]
mov ebx, dword [ebp + 0x20]
mov dword [esp + 0x10], 0
push 4
lea ecx, [esp + 0x14]
push ecx
mov ebp, eax
push eax
push edx
call ebx
add esp, 0x10
movzx eax, byte [esp + 8]
lea ecx, [esp + 8]
cmp al, 4
jne 0x41b40f
not edi
cmp esi, edi
jne 0x41b2cd
cmp esi, 0x1000
jbe 0x41b37a
mov ecx, esp
mov edx, 0x15
push 0x1e
push 0x456e5f
jmp 0x41b2db
mov ecx, esp
mov edx, 0x15
push 0x1c
push 0x456e7d
call fcn.004189d0
add esp, 8
movzx eax, byte [esp]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
cmp al, 4
jne 0x41b42a
mov esi, dword [edx + 0x100c]
mov eax, dword [esp + 0x20]
cmp eax, esi
mov ebx, esi
mov dword [esp + 0x14], esi
cmovb ebx, eax
mov ebp, ebx
add ebp, ecx
jb 0x41b458
cmp ebp, dword [esp + 0x40]
ja 0x41b464
mov esi, ecx
mov ecx, dword [edx + 0x1008]
mov edi, ecx
add edi, ebx
jb 0x41b474
cmp edi, 0x1000
ja 0x41b480
add esi, dword [esp + 0x3c]
add ecx, dword [esp + 0x18]
push ebx
push ecx
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov ecx, ebp
sub esi, ebx
sub eax, ebx
mov dword [edx + 0x1008], edi
mov dword [edx + 0x100c], esi
jne 0x41b210
jmp 0x41b400
mov edi, dword [esp + 0x10]
push esi
push dword [esp + 0x1c]
push ebp
push ecx
call ebx
add esp, 0x10
movzx eax, byte [esp + 8]
cmp al, 4
jne 0x41b446
mov ebp, edi
mov eax, 0xffffffff
test esi, esi
je 0x41b3c6
mov ecx, dword [esp + 0x18]
mov edx, esi
nop dword [eax + eax]
movzx ebx, byte [ecx]
inc ecx
xor bl, al
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0x456a40]
dec edx
jne 0x41b3b0
not eax
cmp ebp, eax
jne 0x41b3ed
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
mov dword [edx + 0x1008], 0
mov dword [edx + 0x100c], esi
jmp 0x41b301
mov ecx, esp
mov edx, 0x15
push 0x1f
push 0x456e40
jmp 0x41b2db
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov dword [esi + 4], eax
mov al, 4
jmp 0x41b43c
movzx ecx, byte [esp + 0xb]
movzx esi, word [esp + 9]
mov edx, dword [esp + 0xc]
mov byte [esp + 3], cl
mov word [esp + 1], si
mov dword [esp + 4], edx
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 1]
mov dword [esi + 4], edx
mov dword [esi + 1], ecx
mov byte [esi], al
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 9]
mov dword [esp + 4], edx
mov dword [esp + 1], ecx
jmp 0x41b42a
mov edx, ebp
push 0x456e9c
call fcn.00450b50
mov edx, dword [esp + 0x40]
mov ecx, ebp
push 0x456e9c
call fcn.00450930
mov edx, edi
push 0x456eac
call fcn.00450b50
mov ecx, edi
mov edx, 0x1000
push 0x456eac
call fcn.00450930
int3