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

Disassembly:
sub esp, 8
push ebx
mov ebx, dword [esp + 0x14]
push ebp
mov ebp, dword [ebx + 0x10]
push esi
push edi
mov edi, dword [ebx + 0x14]
cmp edi, 0x10
jb 0x40611a
mov esi, dword [ebx]
jmp 0x40611c
mov esi, ebx
xor ecx, ecx
mov edx, 0x811c9dc5
test ebp, ebp
je 0x406138
movzx eax, byte [esi + ecx]
xor edx, eax
inc ecx
imul edx, edx, 0x1000193
cmp ecx, ebp
jb 0x406127
mov esi, dword [0x47c534]
mov ecx, esi
and ecx, edx
cmp dword [0x47c538], ecx
ja 0x406153
shr esi, 1
or eax, 0xffffffff
sub eax, esi
add ecx, eax
mov eax, dword [0x47c528]
lea esi, [eax + ecx*8]
mov dword [esp + 0x14], esi
mov eax, dword [esi]
mov dword [esp + 0x10], eax
mov ecx, eax
jmp 0x406170
mov edx, dword [0x47c520]
cmp eax, edx
jne 0x40617e
mov eax, edx
jmp 0x406183
mov eax, dword [esi + 4]
mov eax, dword [eax]
cmp ecx, eax
je 0x4062ed
lea edx, [ecx + 8]
cmp edi, 0x10
jb 0x406197
mov edi, dword [ebx]
jmp 0x406199
mov edi, ebx
cmp dword [edx + 0x14], 0x10
mov eax, dword [edx + 0x10]
mov dword [esp + 0x20], eax
jb 0x4061a8
mov edx, dword [edx]
cmp eax, ebp
mov esi, ebp
cmovb esi, eax
test esi, esi
je 0x40620c
sub esi, 4
jb 0x4061c9
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x4061ce
add edx, 4
add edi, 4
sub esi, 4
jae 0x4061b8
cmp esi, 0xfffffffc
je 0x406202
mov al, byte [edx]
cmp al, byte [edi]
jne 0x4061fb
cmp esi, 0xfffffffd
je 0x406202
mov al, byte [edx + 1]
cmp al, byte [edi + 1]
jne 0x4061fb
cmp esi, 0xfffffffe
je 0x406202
mov al, byte [edx + 2]
cmp al, byte [edi + 2]
jne 0x4061fb
cmp esi, 0xffffffff
je 0x406202
mov al, byte [edx + 3]
cmp al, byte [edi + 3]
je 0x406202
sbb eax, eax
or eax, 1
jmp 0x406204
xor eax, eax
test eax, eax
jne 0x40621d
mov eax, dword [esp + 0x20]
cmp eax, ebp
jb 0x40621d
xor eax, eax
cmp dword [esp + 0x20], ebp
setne al
test eax, eax
je 0x40622f
mov ecx, dword [ecx]
mov eax, dword [esp + 0x10]
mov edi, dword [ebx + 0x14]
mov esi, dword [esp + 0x14]
jmp 0x406170
cmp dword [ecx + 0x1c], 0x10
mov edi, dword [ecx + 0x18]
lea edx, [ecx + 8]
jb 0x40623d
mov edx, dword [edx]
cmp dword [ebx + 0x14], 0x10
jb 0x406245
mov ebx, dword [ebx]
cmp ebp, edi
mov esi, edi
cmovb esi, ebp
test esi, esi
je 0x4062a5
sub esi, 4
jb 0x406266
mov eax, dword [ebx]
cmp eax, dword [edx]
jne 0x40626b
add ebx, 4
add edx, 4
sub esi, 4
jae 0x406255
cmp esi, 0xfffffffc
je 0x40629f
mov al, byte [ebx]
cmp al, byte [edx]
jne 0x406298
cmp esi, 0xfffffffd
je 0x40629f
mov al, byte [ebx + 1]
cmp al, byte [edx + 1]
jne 0x406298
cmp esi, 0xfffffffe
je 0x40629f
mov al, byte [ebx + 2]
cmp al, byte [edx + 2]
jne 0x406298
cmp esi, 0xffffffff
je 0x40629f
mov al, byte [ebx + 3]
cmp al, byte [edx + 3]
je 0x40629f
sbb eax, eax
or eax, 1
jmp 0x4062a1
xor eax, eax
test eax, eax
jne 0x4062ce
cmp ebp, edi
jb 0x4062ce
xor eax, eax
cmp ebp, edi
setne al
test eax, eax
jne 0x4062ce
mov eax, dword [esp + 0x1c]
pop edi
mov dword [esp + 0x1c], ecx
lea ecx, [esp + 0x1c]
pop esi
mov ecx, dword [ecx]
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 8
ret 8
mov eax, dword [0x47c520]
pop edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
pop esi
mov ecx, dword [ecx]
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 8
ret 8
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
mov dword [eax], edx
pop ebx
add esp, 8
ret 8