Function at 0x10050140
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ecx, dword [eax]
xor ecx, 2
or ecx, dword [eax + 4]
jne 0x100501d7
movdqu xmm0, xmmword [eax + 8]
movzx ebx, byte [edi + 8]
xor eax, eax
lea ecx, [esp + 0x20]
lea edx, [esp + 0x14]
pshufd xmm1, xmm0, 0x44
pshufd xmm2, xmm0, 0xee
cmp bl, 2
pxor xmm1, xmmword [str.uespemosarenegylmodnarodsetybdet]
pxor xmm2, xmmword [0x101cdc00]
setne al
mov dword [esp + 0x14], eax
movdqu xmmword [esp + 0x20], xmm1
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x40], xmm0
pxor xmm0, xmm0
movq qword [esp + 0x50], xmm0
movq qword [esp + 0x58], xmm0
push 4
call fcn.1000c980
add esp, 4
cmp bl, 2
jne 0x1005020b
movzx eax, byte [edi]
lea ecx, [esp + 0x20]
lea edx, [esp + 0x14]
mov dword [esp + 0x14], eax
push 4
jmp 0x10050220
movzx ebx, byte [edi + 8]
xor ecx, ecx
mov edx, 0x5635bc91
cmp bl, 2
setne cl
xor ecx, 0x84222325
mov eax, ecx
mul edx
cmp bl, 2
jne 0x10050424
movzx ecx, byte [edi]
xor eax, ecx
imul eax, eax, 0xffffbc91
jmp 0x10050417
mov esi, dword [edi]
mov edi, dword [edi + 4]
test bl, 1
je 0x1005047e
lea ecx, [esp + 0x20]
mov edx, esi
push edi
call fcn.1000c980
add esp, 4
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x28]
shl edx, 0x18
mov dword [esp + 0x1c], eax
or edx, dword [esp + 0x54]
mov dword [esp + 0x18], edx
xor edi, edx
mov edx, dword [esp + 0x38]
xor edx, eax
mov eax, dword [esp + 0x20]
add eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
adc eax, esi
add ebx, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
adc eax, edi
mov dword [esp + 0xc], eax
mov eax, ecx
shld eax, esi, 0xd
shld esi, ecx, 0xd
mov ecx, edx
shrd edx, edi, 0x10
shld ecx, edi, 0x10
mov edi, dword [esp + 4]
xor eax, dword [esp + 8]
xor edx, dword [esp + 0xc]
xor ecx, ebx
xor esi, edi
add ebx, eax
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 8]
adc dword [esp + 0xc], esi
add edi, ecx
mov dword [esp + 4], edi
mov edi, eax
adc ebx, edx
shld edi, esi, 0x11
shrd eax, esi, 0xf
mov esi, ecx
shrd ecx, edx, 0xb
shld esi, edx, 0x15
mov edx, dword [esp + 4]
xor edi, dword [esp + 0x10]
xor ecx, ebx
xor ebx, dword [esp + 0x18]
xor esi, edx
xor edx, dword [esp + 0x1c]
mov dword [esp + 4], edx
mov edx, dword [esp + 0xc]
xor eax, edx
xor edx, 0xff
add dword [esp + 4], edi
adc ebx, eax
add edx, esi
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0xc], edx
mov edx, edi
adc ebx, ecx
shld edx, eax, 0xd
shrd edi, eax, 0x13
mov eax, esi
shrd esi, ecx, 0x10
shld eax, ecx, 0x10
xor edx, dword [esp + 4]
mov ecx, ebx
xor esi, ebx
mov ebx, dword [esp + 0xc]
xor edi, dword [esp + 8]
xor eax, ebx
add ebx, edx
adc ecx, edi
mov dword [esp + 0xc], ebx
add dword [esp + 8], eax
mov ebx, dword [esp + 4]
mov dword [esp + 0x10], ecx
mov ecx, edx
adc ebx, esi
shld ecx, edi, 0x11
shrd edx, edi, 0xf
mov edi, eax
shrd eax, esi, 0xb
shld edi, esi, 0x15
mov esi, dword [esp + 8]
xor ecx, dword [esp + 0xc]
xor edx, dword [esp + 0x10]
xor eax, ebx
xor edi, esi
add esi, ecx
adc ebx, edx
mov dword [esp + 8], esi
add dword [esp + 0x10], edi
mov esi, dword [esp + 0xc]
mov dword [esp + 4], ebx
mov ebx, ecx
adc esi, eax
shld ebx, edx, 0xd
shrd ecx, edx, 0x13
mov edx, edi
shrd edi, eax, 0x10
shld edx, eax, 0x10
mov eax, dword [esp + 0x10]
xor ebx, dword [esp + 8]
xor ecx, dword [esp + 4]
xor edi, esi
xor edx, eax
add eax, ebx
adc esi, ecx
add dword [esp + 4], edx
mov dword [esp + 0x10], eax
mov eax, edx
mov dword [esp + 0xc], esi
mov esi, ebx
adc dword [esp + 8], edi
shld esi, ecx, 0x11
shrd ebx, ecx, 0xf
shld eax, edi, 0x15
shrd edx, edi, 0xb
mov ecx, dword [esp + 4]
mov edi, dword [esp + 8]
xor esi, dword [esp + 0x10]
xor ebx, dword [esp + 0xc]
xor eax, ecx
xor edx, edi
add ecx, esi
adc edi, ebx
mov dword [esp + 4], ecx
mov ecx, esi
mov dword [esp + 8], edi
mov edi, dword [esp + 0xc]
add edi, eax
adc dword [esp + 0x10], edx
shld ecx, ebx, 0xd
shrd esi, ebx, 0x13
shrd eax, edx, 0x10
mov edx, dword [esp + 0x10]
xor ecx, dword [esp + 4]
xor esi, dword [esp + 8]
xor eax, edx
add ecx, edi
adc edx, esi
shr esi, 0xf
shr eax, 0xb
xor esi, edx
xor eax, esi
xor eax, ecx
and eax, 0x7fff
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
imul ecx, ecx, 0x9ffaac08
test bl, 1
lea esi, [edx + ecx - 0x3d29b2dc]
mov ecx, edi
mov edi, dword [edi]
mov ecx, dword [ecx + 4]
je 0x100504b7
test ecx, ecx
je 0x10050417
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, ecx
movzx ecx, byte [edi]
inc edi
xor ecx, eax
mov eax, pe_nt_image_headers32
mov ebx, ecx
imul ebx, eax
mov eax, ecx
mov ecx, edx
mov edx, 0x1b3
mul edx
add edx, ebx
mov ebx, 0x1b3
imul esi, ebx
add esi, edx
dec ecx
jne 0x10050450
jmp 0x10050417
test edi, edi
je 0x10050228
lea ebx, [esp + 0x14]
nop word [eax + eax]
movzx eax, byte [esi]
inc esi
lea ecx, [esp + 0x20]
mov edx, ebx
movzx eax, byte [eax + 0x101d7964]
mov byte [esp + 0x14], al
push 1
call fcn.1000c980
add esp, 4
dec edi
jne 0x10050490
jmp 0x10050228
test ecx, ecx
je 0x10050417
nop
mov edx, ecx
movzx ecx, byte [edi]
inc edi
movzx ecx, byte [ecx + 0x101d7964]
xor ecx, eax
mov eax, pe_nt_image_headers32
mov ebx, ecx
imul ebx, eax
mov eax, ecx
mov ecx, edx
mov edx, 0x1b3
mul edx
add edx, ebx
mov ebx, 0x1b3
imul esi, ebx
add esi, edx
dec ecx
jne 0x100504c0
jmp 0x10050417