Function at 0x439c02
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, 0x50
mov eax, dword [ebp + 8]
movzx eax, word [eax]
mov dword [esp + 0x28], 0xbbb8e3f9
mov dword [esp + 0x2c], 0
mov word [esp + 0x30], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 9
ja 0x4396d9
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea esi, [ecx + 0x37]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0xd797d237
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x18]
add cl, 0x7f
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xa
jb 0x4396a0
xor ecx, ecx
cmp dword [esp + 0x28], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x4455f0]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x3c]
mov ecx, dword [ecx + eax]
mov dword [esp + 0x28], 0x3332f4e0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x33], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xe
ja 0x43976d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x28]
lea edi, [edx + esi]
add edi, 0xf2c317f8
add edx, 0xf2c317f8
and edx, esi
add edx, edx
sub edi, edx
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x18]
add dl, 0x38
mov esi, dword [esp]
mov byte [esp + esi + 0x28], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0xf
jb 0x439730
xor edx, edx
cmp ecx, dword [esp + 0x28]
setne dl
xor edi, edi
mov esi, dword [ebp + 8]
jmp dword [edx*4 + 0x4455f8]
xor ecx, ecx
cmp dword [esi + eax + 0x7c], 0
sete cl
xor edi, edi
jmp dword [ecx*4 + 0x445600]
mov ecx, dword [esi + eax + 0x78]
xor eax, eax
test ecx, ecx
sete al
xor edi, edi
jmp dword [eax*4 + 0x445608]
mov eax, dword [esi + ecx + 0x20]
add eax, esi
mov dword [esp + 0x44], eax
mov eax, dword [esi + ecx + 0x24]
add eax, esi
mov dword [esp + 0x20], eax
mov eax, dword [esi + ecx + 0x1c]
add eax, esi
mov dword [esp + 0x1c], eax
mov ebx, dword [0x447464]
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 4], ecx
jmp dword [eax*4 + 0x445610]
mov edi, dword [0x447460]
mov eax, dword [esi + ecx + 0x18]
add eax, edi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x4397fc
shl eax, 3
mov ecx, eax
push ecx
call fcn.00409080
add esp, 4
mov esi, eax
lea ecx, [edi*8]
lea edx, [ebx + edi*8]
cmp eax, ebx
jbe 0x4398c9
cmp edx, esi
jbe 0x4398c9
test ecx, ecx
je 0x43987f
mov eax, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx + ecx - 1]
mov byte [esi + ecx - 1], dl
movzx edx, byte [ebx + ecx - 2]
mov byte [esi + ecx - 2], dl
movzx edx, byte [ebx + ecx - 3]
mov byte [esi + ecx - 3], dl
movzx edx, byte [ebx + ecx - 4]
mov byte [esi + ecx - 4], dl
movzx edx, byte [ebx + ecx - 5]
mov byte [esi + ecx - 5], dl
movzx edx, byte [ebx + ecx - 6]
mov byte [esi + ecx - 6], dl
movzx edx, byte [ebx + ecx - 7]
mov byte [esi + ecx - 7], dl
movzx edx, byte [ebx + ecx - 8]
mov byte [esi + ecx - 8], dl
add eax, 0xfffffff8
mov ecx, eax
jne 0x439830
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x445618]
push ebx
call fcn.00409090
add esp, 4
jmp 0x4398b8
mov eax, dword [esi + ecx + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x4398ad
shl eax, 3
mov ecx, eax
push ecx
call fcn.00409080
add esp, 4
mov esi, eax
mov ecx, dword [esp + 4]
mov dword [0x447464], esi
mov eax, dword [case.0x4398f0.5]
jmp case.0x4398f0.2
mov eax, esi
add eax, ecx
shr ecx, 2
mov edi, esi
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
mov edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ebx, dword [0x447464]
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x445618]
mov dword [0x447464], esi
mov eax, dword [case.0x4398f0.5]
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor edx, edx
xor eax, eax
mov ebx, dword [ebp + 8]
mov dword [esp + 0xc], 0
cmp edx, dword [ebx + ecx + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x445630]
inc edx
xor eax, eax
mov ecx, dword [esp + 4]
cmp edx, dword [ebx + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x445630]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov esi, dword [eax + edx*4]
mov eax, ebx
add esi, ebx
mov edx, 0xffffffff
xor ebx, ebx
nop
nop
nop
nop
nop
mov ecx, ebx
cmp byte [esi + edx + 1], 0
lea edx, [edx + 1]
lea ebx, [ebx + 1]
jne 0x439970
mov dword [esp + 8], esi
mov esi, 0x506dff3e
test edx, edx
mov ebx, eax
je 0x439a11
mov edi, dword [esp + 8]
cmp edx, 4
jb 0x4399ec
mov ebx, ecx
and ebx, 0xfffffffc
mov eax, 0x506dff3e
mov edi, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
movsx esi, byte [edi]
xor esi, eax
imul esi, esi, 0x1000193
movsx eax, byte [edi + 1]
xor eax, esi
imul eax, eax, 0x1000193
movsx esi, byte [edi + 2]
xor esi, eax
imul eax, esi, 0x1000193
movsx esi, byte [edi + 3]
add edi, 4
xor esi, eax
imul eax, esi, 0x1000193
add ebx, 0xfffffffc
jne 0x4399b0
mov ebx, dword [ebp + 8]
mov esi, eax
test dl, 3
je 0x439a11
and ecx, 3
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [edi + edx]
xor eax, esi
imul esi, eax, 0x1000193
inc edx
cmp ecx, edx
jne 0x439a00
xor eax, eax
cmp dword [0x447468], 0
sete al
jmp dword [eax*4 + 0x445638]
xor ecx, ecx
cmp esi, 0x8b8789dc
sete cl
jmp dword [ecx*4 + 0x445640]
xor ecx, ecx
mov eax, dword [esp + 8]
cmp byte [eax], 0x4e
setne cl
mov edx, dword [esp + 0x14]
jmp dword [ecx*4 + 0x445648]
xor ecx, ecx
cmp byte [eax + 1], 0x74
setne cl
jmp dword [ecx*4 + 0x445650]
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x20]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
add eax, ebx
mov dword [esp + 0x48], eax
xor ecx, ecx
mov dword [esp + 0x10], 0xffffffff
xor eax, eax
cmp ecx, 0x20
setl al
jmp dword [eax*4 + 0x445658]
mov esi, ecx
mov eax, dword [esp + 0x48]
add eax, ecx
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00401000
add esp, 8
mov ecx, dword [esp + 0x40]
lea edi, [ecx + ecx]
mov edx, edi
and edx, 0xffffdffe
neg edx
add edx, ecx
add edx, 0xffffefff
xor ebx, ebx
test edx, ecx
setne bl
mov dword [esp + 8], 1
jmp dword [ebx*4 + 0x445660]
movzx ebx, byte [esp + 0x2e]
xor edx, edx
cmp bl, 0xc2
sete dl
jmp dword [edx*4 + 0x445668]
mov edx, ecx
shr edx, 1
and edx, 4
jmp dword [edx + 0x445670]
xor edx, edx
cmp bl, 0xc3
sete dl
jmp dword [edx*4 + 0x445678]
xor edx, edx
cmp bl, 0xb8
sete dl
jmp dword [edx*4 + 0x445680]
not edi
add ecx, edi
or ecx, 0xffffffef
lea edx, [ecx + ecx]
inc edx
xor ebx, ebx
cmp ecx, edx
setne bl
jmp dword [ebx*4 + 0x445688]
jmp dword [0x445698]
add esi, eax
mov dword [esp + 8], 0
jmp case.0x4398f0.19
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], eax
nop
nop
nop
nop
nop
nop
mov eax, dword [case.0x4398f0.36]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [esp + 8]
jmp dword [eax*4 + 0x4456b0]
mov ecx, esi
xor eax, eax
cmp esi, 0x20
setl al
jmp dword [eax*4 + 0x445658]
mov eax, dword [case.0x4398f0.43]
mov ecx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp dword [esp + 0x10], 0xffffffff
setne al
jmp dword [eax*4 + 0x4456c8]
xor eax, eax
xor edx, edx
cmp eax, dword [0x447460]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x4456d0]
mov edx, dword [0x447464]
xor ebx, ebx
mov esi, dword [esp + 0x24]
cmp dword [edx + ecx*8], esi
sete bl
jmp dword [ebx*4 + 0x4456d8]
mov edx, 1
jmp 0x439bec
mov eax, dword [esp + 0x10]
mov dword [edx + ecx*8 + 4], eax
xor edx, edx
mov al, 1
mov edi, dword [case.0x4398f0.52]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp edi
jmp dword [edx*4 + 0x4456f0]
inc ecx
xor edx, edx
cmp ecx, dword [0x447460]
setb dl
jmp dword [edx*4 + 0x4456d0]
and al, 1
movzx eax, al
mov cl, 1
jmp dword [eax*4 + 0x4456f8]
mov eax, dword [0x447460]
lea ecx, [eax + 1]
mov dword [0x447460], ecx
mov ecx, dword [0x447464]
mov edx, dword [esp + 0x10]
mov dword [ecx + eax*8 + 4], edx
mov edx, dword [esp + 0x24]
mov dword [ecx + eax*8], edx
mov al, 1
mov dword [esp + 0xc], eax
mov edx, dword [esp + 0x14]
inc edx
xor eax, eax
mov ecx, dword [esp + 4]
mov ebx, dword [ebp + 8]
cmp edx, dword [ebx + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x445630]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4]
mov dword [0x447468], eax
inc edx
xor eax, eax
mov ecx, dword [esp + 4]
cmp edx, dword [ebx + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x445630]
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x14]
inc edx
xor eax, eax
mov ecx, dword [esp + 4]
mov ebx, dword [ebp + 8]
cmp edx, dword [ebx + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x445630]
mov eax, dword [esp + 0xc]
and al, 1
mov edi, eax
mov ecx, dword [case.0x4398f0.62]
mov eax, edi
nop
nop
nop
jmp ecx
mov ecx, dword [case.0x4398f0.67]
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
jmp dword [0x445734]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret