Function at 0x43a7f2
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 ebx, dword [ebp + 8]
movzx eax, word [ebx]
mov dword [esp + 0x28], 0x53508b81
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xb
ja 0x43a5c5
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx esi, byte [esp + ecx + 0x28]
lea ecx, [edx + esi]
add ecx, 0x539d02b3
add edx, 0x539d02b3
mov edi, esi
not edi
or edi, edx
add edi, esi
and edx, esi
add edx, edi
inc edx
mov esi, ecx
not esi
and esi, edx
not edx
and edx, ecx
sub edx, esi
mov dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x1c]
add cl, 0x1b
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xc
jb 0x43a570
xor ecx, ecx
cmp dword [esp + 0x28], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x446a24]
mov eax, dword [ebx + 0x3c]
mov dword [esp], eax
mov ecx, dword [ebx + eax]
mov dword [esp + 0x28], 0x4b440ef6
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov word [esp + 0x34], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xd
ja 0x43a657
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 0x28]
lea edi, [edx - 0x193e168b]
mov ebx, esi
not ebx
or ebx, edi
and edi, esi
add edi, ebx
neg edi
add edx, edi
add edx, 0xe6c1e974
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1c]
add dl, 0xcd
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x28], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xe
jb case.default.0x43a665
xor edx, edx
cmp ecx, dword [esp + 0x28]
setne dl
xor eax, eax
mov ebx, dword [ebp + 8]
jmp dword [edx*4 + 0x446a2c]
xor ecx, ecx
mov eax, dword [esp]
cmp dword [ebx + eax + 0x7c], 0
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x446a34]
mov eax, dword [esp]
mov ecx, dword [ebx + eax + 0x78]
xor edx, edx
test ecx, ecx
sete dl
xor eax, eax
jmp dword [edx*4 + 0x446a3c]
mov eax, dword [ebx + ecx + 0x20]
add eax, ebx
mov dword [esp + 0x48], eax
mov edi, dword [ebx + ecx + 0x24]
add edi, ebx
mov eax, dword [ebx + ecx + 0x1c]
add eax, ebx
mov dword [esp + 8], eax
mov esi, dword [0x44886c]
xor eax, eax
test esi, esi
sete al
mov dword [esp + 0x14], ecx
jmp dword [eax*4 + 0x446a44]
mov dword [esp + 0xc], edi
mov edi, dword [0x448868]
mov eax, dword [ebx + ecx + 0x18]
add eax, edi
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43a6ec
shl eax, 3
mov ecx, eax
push ecx
call fcn.004090e0
add esp, 4
lea ecx, [edi*8]
lea edx, [esi + edi*8]
cmp eax, esi
mov dword [esp], eax
jbe 0x43ab9f
cmp edx, eax
jbe 0x43ab9f
test ecx, ecx
mov edi, dword [esp + 0xc]
je 0x43a784
mov eax, ecx
mov ebx, esi
mov esi, dword [esp]
nop
nop
nop
nop
nop
nop
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 0x43a730
mov esi, ebx
mov ebx, dword [ebp + 8]
xor eax, eax
test esi, esi
sete al
jmp dword [eax*4 + 0x446a4c]
push esi
call fcn.004090f0
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov eax, dword [esp]
jmp 0x43a7ce
mov eax, dword [ebx + ecx + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43a7bd
shl eax, 3
mov ecx, eax
push ecx
call fcn.004090e0
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov dword [0x44886c], eax
xor esi, esi
mov eax, dword [case.0x43abc8.5]
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], edx
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp esi, dword [ebx + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x446a64]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], esi
mov eax, dword [eax + esi*4]
add eax, ebx
mov edi, 1
xor edx, edx
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
dec edi
cmp byte [esi], 0
mov ecx, edx
lea esi, [esi + 1]
lea edx, [edx + 1]
jne 0x43a820
mov ebx, 0x506dff3e
test edi, edi
je 0x43a8dc
mov edx, edi
neg edx
mov esi, eax
cmp edi, 0xffffffff
je 0x43a8ae
mov dword [esp], edx
and ecx, 0xfffffffe
mov esi, eax
nop
nop
movsx edi, byte [esi]
xor edi, ebx
mov ebx, edi
and ebx, 0x1000193
mov edx, edi
or edi, 0x1000193
imul edi, ebx
xor ebx, 0x1000193
and edx, 0xfefffe6c
imul edx, ebx
add edi, edx
movsx ebx, byte [esi + 1]
xor ebx, edi
mov edx, ebx
and edx, 0x1000193
mov edi, ebx
or ebx, 0x1000193
imul ebx, edx
xor edx, 0x1000193
and edi, 0xfefffe6c
imul edi, edx
add ebx, edi
add esi, 2
add ecx, 0xfffffffe
jne 0x43a850
mov edx, dword [esp]
test dl, 1
je 0x43a8dc
movsx ecx, byte [esi]
xor ebx, ecx
mov ecx, ebx
and ecx, 0x1000193
mov edx, ebx
or ebx, 0x1000193
imul ebx, ecx
xor ecx, 0x1000193
and edx, 0xfefffe6c
imul edx, ecx
add ebx, edx
xor ecx, ecx
cmp dword [0x448870], 0
sete cl
jmp dword [ecx*4 + 0x446a7c]
xor ecx, ecx
cmp ebx, 0x8b8789dc
sete cl
jmp dword [ecx*4 + 0x446a84]
jmp dword [0x446aa8]
xor ecx, ecx
cmp byte [eax], 0x4e
setne cl
mov esi, dword [esp + 0x10]
jmp dword [ecx*4 + 0x446aac]
xor ecx, ecx
cmp byte [eax + 1], 0x74
setne cl
jmp dword [ecx*4 + 0x446ab4]
jmp dword [0x446abc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 8]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 8]
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 0x18], 0xffffffff
jmp dword [0x446ac4]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 8]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 8]
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 0x18], 0xffffffff
jmp dword [0x446ac4]
mov ecx, dword [esp]
jmp dword [esi*4 + 0x446b04]
xor eax, eax
cmp ecx, 0x20
setl al
jmp dword [eax*4 + 0x446acc]
mov eax, dword [esp + 0x24]
mov dword [esp], ecx
add eax, ecx
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00401000
add esp, 8
mov edi, dword [esp + 0x40]
mov ecx, edi
shr ecx, 0xa
and ecx, 4
mov esi, 1
jmp dword [ecx + 0x446ad4]
movzx edx, byte [esp + 0x2e]
xor ecx, ecx
cmp dl, 0xc2
sete cl
jmp dword [ecx*4 + 0x446adc]
mov ecx, edi
shr ecx, 1
and ecx, 4
jmp dword [ecx + 0x446ae4]
xor ecx, ecx
cmp dl, 0xc3
sete cl
jmp dword [ecx*4 + 0x446aec]
xor ecx, ecx
cmp dl, 0xb8
sete cl
jmp dword [ecx*4 + 0x446af4]
shr edi, 2
and edi, 4
jmp dword [edi + 0x446afc]
mov ecx, dword [esp]
add ecx, eax
xor eax, eax
jmp dword [eax*4 + 0x446b04]
mov eax, 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp]
jmp dword [eax*4 + 0x446b04]
xor eax, eax
mov esi, dword [esp + 0x18]
cmp esi, 0xffffffff
setne al
jmp dword [eax*4 + 0x446b0c]
xor eax, eax
xor edx, edx
mov dword [esp], 0
cmp eax, dword [0x448868]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x446b14]
mov ecx, dword [case.0x43abc8.54]
nop
nop
nop
jmp ecx
mov dword [edx + ecx*8 + 4], esi
mov al, 1
mov dword [esp], eax
xor edx, edx
jmp dword [edx*4 + 0x446b34]
mov edx, ecx
not edx
or edx, 1
add edx, ecx
xor ecx, 1
lea ecx, [ecx + edx*2]
add ecx, 2
xor edx, edx
cmp ecx, dword [0x448868]
setb dl
jmp dword [edx*4 + 0x446b14]
mov edx, dword [0x44886c]
xor eax, eax
cmp dword [edx + ecx*8], ebx
sete al
jmp dword [eax*4 + 0x446b2c]
mov edx, 1
jmp dword [edx*4 + 0x446b34]
mov eax, dword [esp]
and al, 1
movzx eax, al
mov cl, 1
mov dword [esp + 0x20], ecx
jmp dword [eax*4 + 0x446b3c]
mov eax, dword [0x44886c]
mov ecx, dword [0x448868]
lea edx, [ecx + 1]
mov dword [0x448868], edx
mov dword [eax + ecx*8 + 4], esi
mov dword [eax + ecx*8], ebx
mov esi, dword [esp + 0x10]
jmp case.0x43abc8.19
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x10]
jmp dword [0x446a90]
movzx eax, word [edi + esi*2]
mov eax, dword [edx + eax*4]
mov dword [0x448870], eax
nop
nop
nop
nop
nop
movzx eax, word [edi + esi*2]
mov eax, dword [edx + eax*4]
mov dword [0x448870], eax
jmp dword [0x446a98]
mov eax, dword [case.0x43abc8.65]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
inc esi
mov eax, dword [case.0x43abc8.5]
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
jmp case.0x43abc8.2
mov eax, dword [case.0x43abc8.10]
mov ecx, dword [esp + 0x20]
nop
nop
nop
jmp eax
and cl, 1
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, eax
add eax, ecx
shr ecx, 2
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov esi, dword [0x44886c]
xor eax, eax
test esi, esi
sete al
mov edi, dword [esp + 0xc]
jmp dword [eax*4 + 0x446a4c]