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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x24
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 8]
mov eax, dword [0x49503c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x24], eax
cmp dword [ecx + 0x14], 7
mov dword [ebp - 0x30], edx
jbe 0x43806a
mov ecx, dword [ecx]
mov esi, dword [ebp - 0x24]
add esi, esi
mov edx, dword [ebp - 0x1c]
mov eax, 0x811c9dc5
je 0x43808c
xor edi, edi
movzx ebx, byte [ecx + edi]
xor ebx, eax
imul eax, ebx, 0x1000193
inc edi
cmp esi, edi
jne 0x43807b
and eax, dword [edx + 0x18]
mov esi, dword [edx + 4]
mov edx, dword [edx + 0xc]
mov ebx, dword [edx + eax*8]
add eax, eax
mov edi, esi
mov dword [ebp - 0x2c], esi
cmp ebx, esi
je 0x4380b2
lea esi, [eax*4]
or esi, 4
mov esi, dword [edx + esi]
mov edi, dword [esi]
mov dword [ebp - 0x20], edx
cmp edi, ebx
je 0x438104
mov edx, ebx
mov edi, dword [edi + 4]
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x28], edi
cmp esi, dword [edi + 0x18]
jne 0x4380fb
cmp dword [ebp - 0x24], 0
je 0x43817e
mov esi, dword [ebp - 0x28]
cmp dword [esi + 0x1c], 7
jbe 0x4380e1
mov edi, dword [esi + 8]
jmp 0x4380e4
lea edi, [esi + 8]
xor ebx, ebx
movzx esi, word [ecx + ebx*2]
cmp si, word [edi + ebx*2]
jne 0x4380fb
inc ebx
cmp dword [ebp - 0x24], ebx
jne 0x4380e6
jmp 0x43817e
mov edi, dword [ebp - 0x28]
mov ebx, edx
cmp edi, edx
jne 0x4380b9
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi]
cmp ebx, ecx
mov edx, dword [ebp - 0x1c]
je 0x438140
mov edx, dword [edi + 4]
mov dword [edx], ecx
mov edx, dword [ecx + 4]
mov dword [edx], ebx
mov edx, dword [ebx + 4]
mov dword [edx], edi
mov edx, dword [ebx + 4]
mov esi, dword [ecx + 4]
mov dword [ebx + 4], esi
mov esi, dword [edi + 4]
mov dword [ecx + 4], esi
mov dword [edi + 4], edx
mov edx, dword [ebp - 0x1c]
mov ecx, dword [edx + 4]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [edx + 0xc]
mov dword [ebp - 0x20], ecx
mov esi, dword [ebp - 0x20]
mov ecx, dword [esi + eax*4]
cmp ecx, dword [ebp - 0x2c]
je 0x4381d7
cmp ecx, ebx
je 0x4381e8
or eax, 1
mov esi, dword [ebp - 0x20]
mov ecx, dword [esi + eax*4]
mov ecx, dword [ecx]
mov dword [esi + eax*4], ecx
cmp ecx, edi
je 0x4381ee
mov ecx, dword [edx + 0xc]
mov edx, dword [ecx + eax*4]
mov edx, dword [edx + 4]
mov dword [ecx + eax*4], edx
mov edx, dword [ebp - 0x1c]
jmp 0x4381ee
mov edi, dword [ebp + 0xc]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [ecx], eax
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov eax, dword [ebp - 0x1c]
dec dword [eax + 8]
mov ecx, dword [edi + 0x1c]
cmp ecx, 8
mov esi, dword [ebp - 0x30]
jb 0x4381c0
mov eax, dword [edi + 8]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jae 0x4382fc
push edx
push eax
call fcn.0044fbc2
add esp, 8
push 0x24
push edi
call fcn.0044fbc2
add esp, 8
mov eax, dword [ebp - 0x28]
mov dword [esi], eax
xor eax, eax
jmp 0x4382e0
mov dword [esi + eax*4], edi
shl eax, 2
mov ecx, dword [edx + 0xc]
or eax, 4
mov dword [ecx + eax], edi
jmp 0x4381ee
mov ecx, dword [ebp - 0x20]
mov dword [ecx + eax*4], edi
movss xmm0, dword [edx + 8]
movsd xmm1, qword [0x4613c0]
orpd xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss xmm2, dword [edx + 0x1c]
orpd xmm2, xmm1
subsd xmm2, xmm1
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm2
divss xmm0, xmm1
ucomiss xmm0, dword [edx]
jbe 0x4382d6
mov ebx, dword [edx + 0x1c]
xor eax, eax
cmp ebx, 0x1fffffff
setb al
cmp ebx, 0x200
mov ecx, 3
cmovae ecx, eax
shl ebx, cl
lea ecx, [edx + 0xc]
lea esi, [ebx + ebx]
mov eax, dword [edx + 0x14]
sub eax, dword [edx + 0xc]
sar eax, 2
cmp eax, esi
jae 0x438273
cmp esi, 0x40000000
jae 0x4382f7
mov edi, ecx
mov edx, esi
call fcn.00437f80
mov ecx, edi
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 4]
lea edi, [ebp - 0x18]
mov dword [edi], eax
mov edx, esi
push edi
call fcn.00437df0
mov ecx, dword [ebp - 0x1c]
add esp, 4
lea eax, [ebx - 1]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], ebx
mov eax, dword [ecx + 4]
mov esi, dword [eax]
cmp esi, eax
je 0x4382d6
mov ebx, dword [eax + 4]
lea eax, [esi + 8]
lea edx, [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
push esi
push eax
call fcn.00438040
mov ecx, dword [ebp - 0x1c]
add esp, 8
cmp esi, ebx
je 0x4382d6
lea esi, [ebp - 0x18]
mov eax, dword [ecx + 4]
mov edi, dword [eax]
lea eax, [edi + 8]
mov edx, esi
push edi
push eax
call fcn.00438040
mov ecx, dword [ebp - 0x1c]
add esp, 8
cmp edi, ebx
jne 0x4382bb
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp + 0xc]
mov dword [esi], eax
mov al, 1
mov byte [esi + 4], al
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004503b0
mov eax, esi
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.00427cd0
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x43831a
add ecx, ecx
add ecx, 0x25
mov edx, ecx
mov edi, dword [ebp + 0xc]
jmp 0x4381b6
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]