Function at 0x437630
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 [0x49403c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 0x10]
cmp dword [ecx + 0x14], 7
jbe 0x437654
mov ecx, dword [ecx]
mov dword [ebp - 0x20], edx
test eax, 0x7fffffff
mov edx, eax
je 0x43767d
lea esi, [eax + eax]
mov eax, 0x811c9dc5
xor edi, edi
movzx ebx, byte [ecx + edi]
xor ebx, eax
imul eax, ebx, 0x1000193
inc edi
cmp esi, edi
jne 0x43766a
jmp 0x437682
mov eax, 0x811c9dc5
mov esi, dword [ebp - 0x1c]
and eax, dword [esi + 0x18]
mov edi, dword [esi + 4]
mov esi, dword [esi + 0xc]
mov dword [ebp - 0x2c], esi
mov ebx, dword [esi + eax*8]
add eax, eax
mov esi, edi
mov dword [ebp - 0x28], edi
cmp ebx, edi
je 0x4376b1
lea esi, [eax*4]
or esi, 4
mov edi, dword [ebp - 0x2c]
mov esi, dword [edi + esi]
mov edi, dword [esi]
cmp edi, ebx
je 0x4376fd
mov esi, edx
mov dword [ebp - 0x30], ebx
mov edi, dword [edi + 4]
mov dword [ebp - 0x24], edi
cmp esi, dword [edi + 0x18]
jne 0x4376f3
test esi, esi
je 0x43776d
mov esi, dword [ebp - 0x24]
cmp dword [esi + 0x1c], 7
jbe 0x4376db
mov edi, dword [esi + 8]
jmp 0x4376de
lea edi, [esi + 8]
xor ebx, ebx
movzx esi, word [ecx + ebx*2]
cmp si, word [edi + ebx*2]
mov esi, edx
jne 0x4376f3
inc ebx
cmp esi, ebx
jne 0x4376e0
jmp 0x43776d
mov edi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x30]
cmp edi, ebx
jne 0x4376ba
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi]
cmp ebx, ecx
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x2c]
je 0x437739
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 - 0x28], ecx
mov esi, dword [edx + 0xc]
mov ecx, dword [esi + eax*4]
cmp ecx, dword [ebp - 0x28]
je 0x4377c6
cmp ecx, ebx
je 0x4377d7
or eax, 1
mov ecx, dword [esi + eax*4]
mov ecx, dword [ecx]
mov dword [esi + eax*4], ecx
cmp ecx, edi
je 0x4377da
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 0x4377da
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 - 0x20]
jb 0x4377af
mov eax, dword [edi + 8]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jae 0x4378e8
push edx
push eax
call fcn.00450453
add esp, 8
push 0x24
push edi
call fcn.00450453
add esp, 8
mov eax, dword [ebp - 0x24]
mov dword [esi], eax
xor eax, eax
jmp 0x4378cc
mov dword [esi + eax*4], edi
shl eax, 2
mov ecx, dword [edx + 0xc]
or eax, 4
mov dword [ecx + eax], edi
jmp 0x4377da
mov dword [esi + eax*4], edi
movss xmm0, dword [edx + 8]
movsd xmm1, qword [0x461010]
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 0x4378c2
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 0x43785f
cmp esi, 0x40000000
jae 0x4378e3
mov edi, ecx
mov edx, esi
call fcn.00437570
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.004373e0
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 0x4378c2
mov ebx, dword [eax + 4]
lea eax, [esi + 8]
lea edx, [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
push esi
push eax
call fcn.00437630
mov ecx, dword [ebp - 0x1c]
add esp, 8
cmp esi, ebx
je 0x4378c2
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.00437630
mov ecx, dword [ebp - 0x1c]
add esp, 8
cmp edi, ebx
jne 0x4378a7
mov esi, dword [ebp - 0x20]
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.00450c50
mov eax, esi
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.00427c50
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x437909
add ecx, ecx
add ecx, 0x25
mov edx, ecx
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp + 0xc]
jmp 0x4377a5
call dword [0x491600]
int3