Function at 0x43a842
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], 0x83846355
mov dword [esp + 0x2c], 0
mov byte [esp + 0x30], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 8
ja 0x43a557
nop
nop
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 + 0x41]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0x5aa6cd41
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
add cl, 0x39
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
mov ecx, dword [esp]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp], ecx
mov ecx, dword [esp]
cmp ecx, 9
jb 0x43a510
xor ecx, ecx
cmp dword [esp + 0x28], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x446c24]
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + eax]
mov dword [esp + 0x28], 0xf3f2c8bc
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xf
ja 0x43a5e2
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x28]
mov edi, edx
and edi, 0xe25b63fe
xor edx, 0x625b63fe
lea edx, [edx + edi*2]
lea edi, [edx + esi]
and edx, esi
add edx, edx
sub edi, edx
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x20]
add dl, 0xe
mov esi, dword [esp]
mov byte [esp + esi + 0x28], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x10
jb 0x43a5a0
xor edx, edx
cmp ecx, dword [esp + 0x28]
setne dl
xor esi, esi
jmp dword [edx*4 + 0x446c2c]
xor ecx, ecx
cmp dword [ebx + eax + 0x7c], 0
sete cl
xor esi, esi
jmp dword [ecx*4 + 0x446c34]
mov edi, dword [ebx + eax + 0x78]
xor eax, eax
test edi, edi
sete al
xor esi, esi
jmp dword [eax*4 + 0x446c3c]
jmp dword [0x446c4c]
mov eax, dword [ebx + edi + 0x20]
add eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [ebx + edi + 0x24]
add eax, ebx
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + edi + 0x1c]
add eax, ebx
mov dword [esp + 0x18], eax
mov ecx, ebx
mov ebx, dword [0x4489d4]
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 4], edi
jmp dword [eax*4 + 0x446c54]
mov eax, edi
mov edi, dword [0x4489d0]
mov eax, dword [ecx + eax + 0x18]
add eax, edi
add eax, 0xb6163b09
mov ecx, eax
xor ecx, 0x49e9c4f6
and eax, 0xc9e9c4f6
lea esi, [ecx + eax*2]
inc esi
mov edx, 0xffffffff
cmp esi, 0x20000000
jae 0x43a699
lea eax, [ecx + eax*2]
lea edx, [eax*8 + 8]
push edx
call fcn.00409200
add esp, 4
mov esi, eax
lea ecx, [edi*8]
lea edx, [ebx + edi*8]
cmp eax, ebx
jbe 0x43a78e
cmp edx, esi
jbe 0x43a78e
test ecx, ecx
je 0x43a71f
mov eax, ecx
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 0x43a6d0
xor eax, eax
test ebx, ebx
sete al
mov edi, dword [esp + 4]
jmp dword [eax*4 + 0x446c6c]
jmp dword [0x446c60]
mov eax, dword [ebp + 8]
mov eax, dword [eax + edi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43a74f
shl eax, 3
mov ecx, eax
push ecx
call fcn.00409200
add esp, 4
mov dword [0x4489d4], eax
jmp case.0x43a5ed.13
push ecx
call fcn.00409200
add esp, 4
mov dword [0x4489d4], eax
jmp dword [0x446c64]
mov eax, dword [ebp + 8]
mov eax, dword [eax + edi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43a760
shl eax, 3
mov ecx, eax
jmp 0x43a760
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 [0x4489d4]
xor eax, eax
test ebx, ebx
sete al
mov edi, dword [esp + 4]
jmp dword [eax*4 + 0x446c6c]
push ebx
call fcn.00409210
add esp, 4
mov eax, dword [case.0x43a7b9.1]
nop
nop
jmp eax
mov dword [0x4489d4], esi
jmp dword [0x446c90]
mov dword [esp + 0x14], 0
mov eax, dword [case.0x43a7b9.12]
xor edx, edx
mov ebx, dword [ebp + 8]
jmp case.0x43a7b9.10
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
mov dword [0x4489d8], eax
inc edx
mov eax, dword [case.0x43a7b9.12]
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp edx, dword [ebx + edi + 0x18]
setb al
jmp dword [eax*4 + 0x446ca4]
mov eax, dword [case.0x43a7b9.18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], edx
mov eax, dword [eax + edx*4]
add eax, ebx
mov edx, 1
xor ecx, ecx
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
dec edx
cmp byte [esi], 0
mov edi, ecx
lea esi, [esi + 1]
lea ecx, [ecx + 1]
jne 0x43a860
test edx, edx
je 0x43a90d
mov ecx, edx
neg ecx
cmp edx, 0xffffffff
je 0x43a918
mov dword [esp + 0xc], ecx
and edi, 0xfffffffe
mov esi, 0x506dff3e
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [edx]
xor ebx, esi
mov esi, ebx
and esi, 0x1000193
mov ecx, ebx
or ebx, 0x1000193
imul ebx, esi
xor esi, 0x1000193
and ecx, 0xfefffe6c
imul ecx, esi
add ebx, ecx
movsx esi, byte [edx + 1]
xor esi, ebx
mov ecx, esi
and ecx, 0x1000193
mov ebx, esi
or esi, 0x1000193
imul esi, ecx
xor ecx, 0x1000193
and ebx, 0xfefffe6c
imul ebx, ecx
add esi, ebx
add edx, 2
add edi, 0xfffffffe
jne 0x43a8a0
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0xc]
test cl, 1
jne 0x43a928
jmp 0x43a951
mov esi, 0x506dff3e
mov edi, dword [esp + 4]
jmp 0x43a951
mov esi, 0x506dff3e
mov edx, eax
mov edi, dword [esp + 4]
test cl, 1
je 0x43a951
movsx ecx, byte [edx]
xor esi, ecx
mov ecx, esi
and ecx, 0x1000193
mov edx, esi
or esi, 0x1000193
imul esi, ecx
xor ecx, 0x1000193
and edx, 0xfefffe6c
imul edx, ecx
add esi, edx
mov ecx, dword [case.0x43a7b9.22]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
cmp dword [0x4489d8], 0
sete cl
mov edx, dword [esp + 0x10]
jmp dword [ecx*4 + 0x446ccc]
xor ecx, ecx
cmp esi, 0x8b8789dc
sete cl
jmp dword [ecx*4 + 0x446cd4]
xor ecx, ecx
cmp byte [eax], 0x4e
setne cl
jmp dword [ecx*4 + 0x446cdc]
xor ecx, ecx
cmp byte [eax + 1], 0x74
setne cl
jmp dword [ecx*4 + 0x446ce4]
jmp dword [0x446cec]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 8]
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 8], 0xffffffff
jmp dword [0x446cf8]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
add eax, dword [ebp + 8]
mov dword [esp + 0x24], eax
xor ecx, ecx
mov dword [esp + 8], 0xffffffff
jmp dword [0x446cf8]
mov ecx, dword [esp + 0xc]
jmp dword [edi*4 + 0x446d34]
xor eax, eax
cmp ecx, 0x20
setl al
jmp dword [eax*4 + 0x446cfc]
mov eax, dword [esp + 0x24]
mov dword [esp + 0xc], ecx
add eax, ecx
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00401000
add esp, 8
mov ecx, dword [esp + 0x40]
mov edx, ecx
shr edx, 0xa
and edx, 4
mov edi, 1
jmp dword [edx + 0x446d04]
movzx ebx, byte [esp + 0x2e]
xor edx, edx
cmp bl, 0xc2
sete dl
jmp dword [edx*4 + 0x446d0c]
mov edx, ecx
shr edx, 1
and edx, 4
jmp dword [edx + 0x446d14]
xor edx, edx
cmp bl, 0xc3
sete dl
jmp dword [edx*4 + 0x446d1c]
xor edx, edx
cmp bl, 0xb8
sete dl
jmp dword [edx*4 + 0x446d24]
not ecx
or ecx, 0xffffffef
lea edx, [ecx + ecx]
inc edx
xor ebx, ebx
cmp ecx, edx
setne bl
jmp dword [ebx*4 + 0x446d2c]
mov ecx, dword [esp + 0xc]
add ecx, eax
xor eax, eax
jmp dword [eax*4 + 0x446d34]
mov eax, 1
mov ecx, dword [esp + 0x38]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xc]
jmp dword [eax*4 + 0x446d34]
xor eax, eax
cmp dword [esp + 8], 0xffffffff
setne al
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0x14]
jmp dword [eax*4 + 0x446d3c]
xor eax, eax
xor edx, edx
cmp eax, dword [0x4489d0]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x446d44]
mov eax, dword [esp + 8]
mov dword [edx + ecx*8 + 4], eax
xor edx, edx
mov al, 1
jmp dword [edx*4 + 0x446d54]
inc ecx
xor edx, edx
cmp ecx, dword [0x4489d0]
setb dl
jmp dword [edx*4 + 0x446d44]
mov edx, dword [0x4489d4]
xor ebx, ebx
cmp dword [edx + ecx*8], esi
sete bl
jmp dword [ebx*4 + 0x446d4c]
mov edx, 1
jmp dword [edx*4 + 0x446d54]
mov ecx, dword [case.0x43a7b9.62]
nop
nop
nop
jmp ecx
jmp dword [0x446d78]
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x446d7c]
mov eax, dword [0x4489d4]
mov ecx, dword [0x4489d0]
lea edx, [ecx + 1]
mov dword [0x4489d0], edx
mov edx, dword [esp + 8]
mov dword [eax + ecx*8 + 4], edx
mov dword [eax + ecx*8], esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov cl, 1
jmp dword [0x446d8c]
mov dword [esp + 0x14], ecx
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x10]
jmp case.0x43a7b9.29
mov eax, dword [esp + 0x14]
and al, 1
mov esi, eax
mov ecx, dword [case.0x43a7b9.78]
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret