Function at 0x438590
Capabilities:
Encode data using xor
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov eax, dword [ebp + 8]
movzx eax, word [eax]
mov dword [esp + 0x10], 0x3b38e3f9
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xf
ja 0x438623
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x10]
mov esi, 0x88
sub esi, ecx
add ecx, edx
not edx
or esi, edx
lea ecx, [ecx + esi*2]
add ecx, 0xb3de3879
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0xbf
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x10
jb 0x4385e0
xor ecx, ecx
cmp dword [esp + 0x10], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x445a54]
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0x3c]
mov edx, dword [edx + ecx]
mov dword [esp + 0x10], 0x5b5a8488
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
mov esi, dword [esp + 4]
cmp esi, 7
ja 0x4386af
nop
mov esi, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0x10]
lea ebx, [esi + edi]
add ebx, 0xc68c0534
add esi, 0xc68c0534
and esi, edi
add esi, esi
sub ebx, esi
mov dword [esp + 0xc], ebx
mov esi, dword [esp + 0xc]
mov edi, esi
xor edi, 0x93
and esi, 0x13
lea ebx, [edi + esi*2]
inc bl
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x10], bl
inc dword [esp + 4]
mov esi, dword [esp + 4]
cmp esi, 8
jb 0x438660
xor ebx, ebx
cmp edx, dword [esp + 0x10]
setne bl
jmp dword [ebx*4 + 0x445a5c]
mov eax, dword [ebp + 8]
mov edx, dword [eax + ecx + 0x7c]
mov esi, dword [eax + ecx + 0x78]
xor ecx, ecx
mov dword [esp + 0x34], edx
test edx, edx
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x445a64]
xor ecx, ecx
test esi, esi
sete cl
jmp dword [ecx*4 + 0x445a6c]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + esi + 0x20]
add ecx, eax
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + esi + 0x24]
add ecx, eax
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + esi + 0x1c]
add ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [eax + esi + 0x18]
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x38], eax
cmp edx, eax
setb cl
mov edi, dword [0x445aac]
mov dword [esp + 8], 2
mov dword [esp + 0x24], esi
jmp dword [ecx*4 + 0x445a74]
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], edx
mov edi, dword [eax + edx*4]
add edi, dword [ebp + 8]
mov esi, 1
xor edx, edx
mov ebx, edi
nop
nop
nop
nop
nop
dec esi
cmp byte [ebx], 0
mov ecx, edx
lea ebx, [ebx + 1]
lea edx, [edx + 1]
jne 0x438760
test esi, esi
je 0x438800
mov edx, esi
neg edx
cmp esi, 0xffffffff
je 0x438810
and ecx, 0xfffffffe
mov eax, 0x506dff3e
nop
nop
nop
nop
nop
movsx esi, byte [edi]
mov ebx, eax
and ebx, esi
add ebx, ebx
sub esi, ebx
add esi, eax
mov eax, esi
and eax, 0x1000193
mov ebx, esi
or esi, 0x1000193
imul esi, eax
xor eax, 0x1000193
and ebx, 0xfefffe6c
imul ebx, eax
add esi, ebx
movsx eax, byte [edi + 1]
mov ebx, esi
and ebx, eax
add ebx, ebx
sub eax, ebx
add eax, esi
mov esi, eax
and esi, 0x1000193
mov ebx, eax
or eax, 0x1000193
imul eax, esi
xor esi, 0x1000193
and ebx, 0xfefffe6c
imul ebx, esi
add eax, ebx
add edi, 2
add ecx, 0xfffffffe
jne 0x438790
jmp 0x438815
mov eax, 0x506dff3e
mov esi, dword [esp + 0x24]
jmp 0x43884f
mov eax, 0x506dff3e
test dl, 1
mov esi, dword [esp + 0x24]
je 0x43884f
movsx ecx, byte [edi]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov eax, ecx
and eax, 0x1000193
mov edx, ecx
or ecx, 0x1000193
imul ecx, eax
xor eax, 0x1000193
and edx, 0xfefffe6c
imul edx, eax
add ecx, edx
mov eax, ecx
xor ecx, ecx
cmp eax, dword [ebp + 0xc]
setne cl
jmp dword [ecx*4 + 0x445a7c]
mov edx, dword [esp + 0x28]
inc edx
mov edi, dword [esp + 0x40]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp edi
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
movzx eax, word [eax + ecx*2]
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + eax*4]
xor ecx, ecx
cmp eax, esi
setae cl
jmp dword [ecx*4 + 0x445a84]
mov ecx, eax
xor ecx, esi
not esi
and esi, eax
add esi, esi
sub esi, ecx
xor ecx, ecx
cmp esi, dword [esp + 0x34]
setb cl
jmp dword [ecx*4 + 0x445a8c]
mov edx, dword [ebp + 8]
add edx, eax
mov dword [esp + 8], 1
mov ecx, dword [case.0x4386b8.6]
mov eax, edx
jmp 0x4388f0
mov dword [esp + 8], 2
mov ecx, dword [case.0x4386b8.6]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
xor ecx, ecx
cmp dword [esp + 8], 2
sete cl
jmp dword [ecx*4 + 0x445ab4]
mov ecx, dword [case.0x4386b8.1]
nop
nop
nop
nop
nop
jmp ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret