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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [ebp + 0x10]
mov edx, eax
imul ecx, eax, 0x2193
push ebx
push esi
push edi
mov dword [ebp - 4], edx
cmp eax, ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp + 0x10]
ja 0x10012fa9
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp + 8]
mov dword [ebp - 0xc], eax
cmp edx, 0x823287
ja 0x10012f2f
je 0x10012efd
cmp edx, 0x4121fc
ja 0x10012e8f
je 0x10012c29
mov ecx, edx
sub ecx, 0x1171
je 0x10012bd2
sub ecx, 0x2d
jne 0x10012c0d
push 0x10
call fcn.100e6ff5
mov dword [ebp - 0x10], eax
mov eax, dword [esi]
shl eax, 4
push eax
call fcn.100e6ff5
mov ecx, dword [ebp - 0x10]
add esp, 8
mov dword [ecx], eax
mov eax, dword [esi]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0xc]
mov dword [ecx + 0xc], 0
jmp 0x10012c0a
cmp dword [edi], 0
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx]
not ebx
mov dword [ebp - 8], ebx
je 0x10012c0d
mov edx, dword [ebp + 8]
test dl, 3
je 0x10012c07
movzx ecx, byte [edx]
inc edx
xor ecx, ebx
mov dword [ebp + 8], edx
movzx ecx, cl
shr ebx, 8
xor ebx, dword [ecx*4 + 0x10109780]
add dword [edi], 0xffffffff
mov dword [ebp - 8], ebx
jne 0x10012be4
mov esi, dword [ebp + 8]
mov edx, dword [ebp - 4]
imul ecx, dword [ebp + 0x10], 0x3bb
add edx, ecx
mov dword [ebp - 4], edx
cmp edx, dword [ebp - 0x18]
jbe 0x10012b71
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi]
mov dword [ebp + 8], esi
cmp ecx, 0x20
jb 0x10012e38
mov eax, esi
nop dword [eax]
xor ebx, dword [eax]
mov ecx, ebx
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 4]
mov ecx, edx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 8]
mov ecx, edx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 0xc]
mov ecx, edx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 0x10]
mov ecx, edx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 0x14]
mov dword [ebp - 0x14], edx
mov ecx, edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 0x18]
mov ecx, edx
mov dword [ebp - 0x14], edx
mov ebx, dword [ebp - 0x14]
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
xor edx, dword [eax + 0x1c]
add eax, 0x20
add dword [edi], 0xffffffe0
mov ecx, edx
shr ecx, 0x10
movzx ebx, cl
mov ecx, edx
shr ecx, 8
movzx ecx, cl
mov ebx, dword [ebx*4 + 0x10109b80]
xor ebx, dword [ecx*4 + 0x10109f80]
mov ecx, edx
shr ecx, 0x18
xor ebx, dword [ecx*4 + 0x10109780]
movzx ecx, dl
xor ebx, dword [ecx*4 + 0x1010a380]
mov ecx, dword [edi]
cmp ecx, 0x20
jae 0x10012c40
mov dword [ebp + 8], eax
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp + 8]
mov dword [ebp - 8], ebx
cmp ecx, 4
jb 0x10012c0a
xor ebx, dword [esi]
add esi, 4
add dword [edi], 0xfffffffc
mov ecx, ebx
shr ecx, 0x10
movzx edx, cl
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
mov edx, dword [edx*4 + 0x10109b80]
xor edx, dword [ecx*4 + 0x10109f80]
mov ecx, ebx
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x10109780]
movzx ecx, bl
xor edx, dword [ecx*4 + 0x1010a380]
cmp dword [edi], 4
mov ebx, edx
jae 0x10012e41
mov dword [ebp + 8], esi
mov dword [ebp - 8], ebx
jmp 0x10012c0a
cmp edx, 0x41ca08
jne 0x10012c0d
xor edx, edx
mov dword [ebp - 0x14], edx
cmp dword [esi], edx
jbe 0x10012c0a
mov ebx, dword [ebp - 0x10]
xor edi, edi
nop dword [eax]
mov ecx, dword [ebx]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + edx*4]
mov dword [ecx + edi + 0xc], eax
mov eax, dword [ebx]
mov byte [eax + edi + 8], 0
mov eax, dword [ebp + 0xc]
push dword [eax + edx*4]
call fcn.1001b460
mov edx, dword [ebp - 0x14]
lea edi, [edi + 0x10]
mov ecx, eax
inc edx
mov eax, dword [ebx]
add esp, 4
mov dword [ebp - 0x14], edx
mov dword [edi + eax - 0x10], ecx
mov dword [edi + eax - 0xc], 0
cmp edx, dword [esi]
jb 0x10012eb0
mov ebx, dword [ebp - 8]
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp - 0xc]
jmp 0x10012c0a
cmp dword [edi], 0
je 0x10012f25
mov edx, dword [ebp + 8]
movzx ecx, byte [edx]
inc edx
xor ecx, ebx
shr ebx, 8
movzx ecx, cl
xor ebx, dword [ecx*4 + 0x10109780]
add dword [edi], 0xffffffff
jne 0x10012f05
mov dword [ebp + 8], edx
mov esi, edx
mov edx, dword [ebp - 4]
not ebx
mov dword [ebp - 8], ebx
jmp 0x10012c0d
cmp edx, 0xc53adc
ja 0x10012f95
je 0x10012f8a
cmp edx, 0x838272
je 0x10012f56
cmp edx, 0xc34312
jne 0x10012c0d
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [esi]
mov edi, dword [ebp - 0x10]
shr ebx, 1
nop dword [eax]
push 0
push edi
lea eax, [ebp - 0x14]
mov dword [ebp - 0x14], ebx
push eax
push 0x195
call fcn.1001a370
add esp, 0x10
sub ebx, 1
jns 0x10012f60
mov ebx, dword [ebp - 8]
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp - 0xc]
jmp 0x10012c0a
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0xc], eax
jmp 0x10012c0d
cmp edx, 0x106f346
jne 0x10012c0d
imul esp, ebp, 0x8b4da145
inc ebp
hlt
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret