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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov ebx, ecx
mov dword [ebp - 4], 0x21
mov esi, edx
mov dword [ebp - 8], 0
mov ecx, eax
shrd esi, ecx, 9
push edi
shr ecx, 9
push eax
mov dword [ebp - 0x10], ecx
mov ecx, ebx
push edx
mov dword [ebp - 0xc], esi
call fcn.00410750
add esp, 8
cmp dword [0x43f3bc], 0
je 0x410878
cmp dword [0x43d8bc], 0
mov eax, dword [0x43d8c0]
je 0x41087a
shl eax, 0xa
jmp 0x41087a
xor eax, eax
cdq
test edx, edx
jl 0x41089f
jg 0x410885
test eax, eax
je 0x41089f
mov esi, eax
mov ecx, edx
shld ecx, esi, 0xb
shl esi, 0xb
add esi, 0x21
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0xc]
adc ecx, 0
mov dword [ebp - 8], ecx
sub esi, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
sbb ecx, dword [ebp - 8]
add esi, 0xfffef800
mov edx, esi
mov dword [ebp - 4], esi
adc ecx, 0xffffffff
and edx, 7
mov eax, edx
mov dword [ebp + 0xc], ecx
or eax, 0
mov dword [ebp - 8], edx
je 0x4108db
push 0
push edx
push ecx
push esi
push str.Part1SectorCount:_llu_is_not_aligned_by_4KB___llu_
call fcn.0040f530
mov edx, dword [ebp - 8]
add esp, 0x14
cmp dword [0x43d8c4], 0
je 0x410912
mov eax, edx
or eax, 0
je 0x410905
push edx
push str.Disk_need_to_align_with_4KB__u
call fcn.0040f530
add esp, 8
sub esi, dword [ebp - 8]
mov dword [ebp - 4], esi
sbb dword [ebp + 0xc], 0
jmp 0x410912
push str.no_need_to_align_with_4KB
call fcn.0040f530
add esp, 4
mov esi, dword [ebp - 0xc]
mov ecx, esi
mov edx, dword [ebp - 0x10]
add ecx, 0xffffffff
mov eax, edx
mov dword [ebx + 0x200], 0x20494645
adc eax, 0xffffffff
mov dword [ebx + 0x204], 0x54524150
add esi, 0xffffffde
mov dword [ebx + 0x224], eax
lea eax, [ebx + 0x238]
mov byte [ebx + 0x20a], 1
adc edx, 0xffffffff
mov dword [ebx + 0x230], esi
mov esi, dword [sym.imp.ole32.dll_CoCreateGuid]
push eax
mov dword [ebx + 0x20c], 0x5c
mov dword [ebx + 0x210], 0
mov dword [ebx + 0x218], 1
mov dword [ebx + 0x21c], 0
mov dword [ebx + 0x220], ecx
mov dword [ebx + 0x228], 0x22
mov dword [ebx + 0x22c], 0
mov dword [ebx + 0x234], edx
call esi
mov dword [ebx + 0x248], 2
lea eax, [ebx + 0x410]
mov dword [ebx + 0x24c], 0
mov dword [ebx + 0x250], 0x80
mov dword [ebx + 0x254], 0x80
movups xmm0, xmmword [0x43d8f4]
push eax
movups xmmword [ebx + 0x400], xmm0
call esi
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
add eax, 0x7ff
mov dword [ebx + 0x428], eax
mov dword [ebx + 0x420], 0x800
adc ecx, 0
mov dword [ebx + 0x424], 0
mov dword [ebx + 0x42c], ecx
mov dword [ebx + 0x430], 0
mov dword [ebx + 0x434], 0
movq xmm0, qword [0x436b38]
movq qword [ebx + 0x438], xmm0
mov eax, dword [0x436b40]
mov dword [ebx + 0x440], eax
lea eax, [ebx + 0x490]
movups xmm0, xmmword [0x43d8f4]
push eax
movups xmmword [ebx + 0x480], xmm0
call esi
mov ecx, dword [ebx + 0x428]
lea esi, [ebx + 0x402]
mov eax, dword [ebx + 0x42c]
add ecx, 1
mov dword [ebx + 0x4a0], ecx
mov edi, 0x1000
adc eax, 0
mov dword [ebx + 0x4b0], 1
mov dword [ebx + 0x4a4], eax
add ecx, 0xffff
mov dword [ebx + 0x4a8], ecx
adc eax, 0
mov dword [ebx + 0x4b4], 0xc0000000
mov dword [ebx + 0x4ac], eax
movq xmm0, qword [str.VTOYEFI]
movq qword [ebx + 0x4b8], xmm0
mov eax, dword [0x436844]
mov dword [ebx + 0x4c0], eax
mov ax, word [0x436848]
mov word [ebx + 0x4c4], ax
mov eax, 0xffffffff
nop dword [eax + eax]
movzx edx, byte [esi - 2]
lea esi, [esi + 4]
movzx ecx, al
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x432ec0]
movzx edx, byte [esi - 5]
movzx ecx, al
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x432ec0]
movzx edx, byte [esi - 4]
movzx ecx, al
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x432ec0]
movzx edx, byte [esi - 3]
movzx ecx, al
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x432ec0]
sub edi, 1
jne 0x410ae0
mov esi, dword [ebx + 0x20c]
lea edi, [ebx + 0x200]
not eax
or edx, 0xffffffff
mov dword [ebx + 0x258], eax
test esi, esi
je 0x410b6a
nop
movzx ecx, byte [edi]
lea edi, [edi + 1]
movzx eax, dl
xor ecx, eax
shr edx, 8
xor edx, dword [ecx*4 + 0x432ec0]
sub esi, 1
jne 0x410b50
pop edi
not edx
xor eax, eax
pop esi
mov dword [ebx + 0x210], edx
pop ebx
mov esp, ebp
pop ebp
ret