Function at 0x438530
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, 0x50
mov eax, dword [ebp + 8]
movzx eax, word [eax]
mov dword [esp + 0x20], 0xb3b25b4d
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov byte [esp + 0x2c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xc
ja 0x4385af
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
lea esi, [ecx + 0xe8]
and esi, edx
mov edi, 0xce9c4f17
sub edi, ecx
or edi, edx
not edi
add edi, edx
sub edi, esi
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 0x14]
add cl, 0xa8
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xd
jb 0x438570
xor ecx, ecx
cmp dword [esp + 0x20], eax
setne cl
xor eax, eax
jmp dword [ecx*4 + 0x444e1c]
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + 0x3c]
mov ecx, dword [ecx + ebx]
mov dword [esp + 0x20], 0xeb94cec6
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2b], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xe
ja 0x43863a
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 0x20]
lea edi, [edx + esi]
add edx, 0x3d
and edx, esi
add edx, edx
sub edi, edx
add edi, 0xc0f1d03d
mov dword [esp + 0x14], edi
mov edx, dword [esp + 0x14]
add dl, 0x55
mov esi, dword [esp]
mov byte [esp + esi + 0x20], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0xf
jb 0x438600
xor edx, edx
cmp ecx, dword [esp + 0x20]
setne dl
xor eax, eax
jmp dword [edx*4 + 0x444e24]
mov edx, dword [ebp + 8]
mov esi, dword [edx + ebx + 0x78]
xor ecx, ecx
cmp dword [edx + ebx + 0x7c], 0
sete cl
xor eax, eax
mov dword [esp + 0xc], esi
jmp dword [ecx*4 + 0x444e2c]
jmp dword [0x444e3c]
xor ecx, ecx
test esi, esi
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x444e44]
mov edi, dword [ebp + 8]
mov eax, dword [edi + esi + 0x20]
add eax, edi
mov dword [esp + 0x48], eax
mov eax, dword [edi + esi + 0x24]
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [edi + esi + 0x1c]
add eax, edi
mov dword [esp + 0x18], eax
mov ecx, dword [0x446ce0]
xor eax, eax
test ecx, ecx
sete al
jmp dword [eax*4 + 0x444e4c]
mov dword [esp + 8], ecx
mov ebx, dword [0x446cdc]
mov eax, dword [edi + esi + 0x18]
add eax, ebx
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x4386dc
shl eax, 3
mov ecx, eax
push ecx
call fcn.00408e10
add esp, 4
mov dword [esp + 4], eax
mov eax, ebx
xor eax, 8
mov edx, eax
and edx, ebx
mov edi, ebx
and edi, 8
add eax, ebx
and ebx, 0xfffffff7
sub eax, ebx
mov esi, eax
or esi, edi
mov ecx, eax
and ecx, edi
mov ebx, edi
not ebx
and ebx, eax
not eax
and eax, edi
xor edi, 8
imul edi, edx
imul ecx, esi
add ecx, edi
imul eax, ebx
lea edi, [eax + ecx]
mov esi, dword [esp + 8]
lea edx, [esi + edi]
mov ebx, dword [esp + 4]
cmp ebx, esi
jbe 0x438834
cmp edx, ebx
jbe 0x438834
test edi, edi
je 0x4387ad
mov edx, dword [esp + 4]
add edx, eax
dec edx
mov esi, dword [esp + 8]
lea edi, [esi + eax]
dec edi
neg eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + ecx]
mov byte [edx + ecx], bl
movzx ebx, byte [edi + ecx - 1]
mov byte [edx + ecx - 1], bl
movzx ebx, byte [edi + ecx - 2]
mov byte [edx + ecx - 2], bl
movzx ebx, byte [edi + ecx - 3]
mov byte [edx + ecx - 3], bl
movzx ebx, byte [edi + ecx - 4]
mov byte [edx + ecx - 4], bl
movzx ebx, byte [edi + ecx - 5]
mov byte [edx + ecx - 5], bl
movzx ebx, byte [edi + ecx - 6]
mov byte [edx + ecx - 6], bl
movzx ebx, byte [edi + ecx - 7]
mov byte [edx + ecx - 7], bl
add ecx, 0xfffffff8
cmp eax, ecx
jne 0x438760
xor eax, eax
mov ecx, dword [esp + 8]
test ecx, ecx
sete al
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
jmp dword [eax*4 + 0x444e54]
push ecx
call fcn.00408e20
add esp, 4
mov dword [0x446ce0], ebx
xor ecx, ecx
xor eax, eax
mov edi, dword [ebp + 8]
mov dword [esp + 0x10], 0
cmp ecx, dword [edi + esi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x444e5c]
mov eax, dword [edi + esi + 0x18]
mov ecx, 0xffffffff
cmp eax, 0x20000000
jae 0x43880a
shl eax, 3
mov ecx, eax
push ecx
call fcn.00408e10
add esp, 4
mov dword [0x446ce0], eax
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x10], 0
cmp ecx, dword [edi + esi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x444e5c]
mov ecx, edi
and edi, 0xfffffffc
mov eax, ebx
add eax, edi
shr ecx, 2
mov edi, ebx
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 ecx, dword [0x446ce0]
xor eax, eax
test ecx, ecx
sete al
mov esi, dword [esp + 0xc]
jmp dword [eax*4 + 0x444e54]
mov dword [0x446ce0], ebx
xor ecx, ecx
xor eax, eax
mov edi, dword [ebp + 8]
mov dword [esp + 0x10], 0
cmp ecx, dword [edi + esi + 0x18]
setb al
xor edx, edx
jmp dword [eax*4 + 0x444e5c]
mov edx, dword [esp + 8]
jmp dword [0x444e70]
mov eax, dword [esp + 0x48]
mov dword [esp + 8], edx
mov esi, dword [eax + edx*4]
add esi, edi
mov ebx, 1
xor edx, edx
mov dword [esp + 4], esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
dec ebx
cmp byte [esi], 0
mov ecx, edx
lea esi, [esi + 1]
lea edx, [edx + 1]
jne 0x4388c0
mov esi, 0x506dff3e
test ebx, ebx
je 0x438890
mov edx, ebx
neg edx
mov eax, dword [esp + 4]
cmp ebx, 0xffffffff
je 0x43895e
and ecx, 0xfffffffe
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
movsx ebx, byte [eax]
mov edi, esi
and edi, ebx
add edi, edi
sub ebx, edi
add ebx, esi
mov esi, ebx
and esi, 0x1000193
mov edi, ebx
or ebx, 0x1000193
imul ebx, esi
xor esi, 0x1000193
and edi, 0xfefffe6c
imul edi, esi
add ebx, edi
movsx esi, byte [eax + 1]
mov edi, ebx
and edi, esi
add edi, edi
sub esi, edi
add esi, ebx
mov edi, esi
and edi, 0x1000193
mov ebx, esi
or esi, 0x1000193
imul esi, edi
xor edi, 0x1000193
and ebx, 0xfefffe6c
imul ebx, edi
add esi, ebx
add eax, 2
add ecx, 0xfffffffe
jne 0x4388f0
mov edi, dword [ebp + 8]
test dl, 1
je 0x438890
movsx ecx, byte [eax]
mov eax, esi
and eax, ecx
add eax, eax
sub ecx, eax
add ecx, esi
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 esi, ecx
jmp 0x438890
xor eax, eax
cmp dword [0x446ce4], 0
sete al
jmp dword [eax*4 + 0x444e74]
xor ecx, ecx
cmp esi, 0x8b8789dc
sete cl
jmp dword [ecx*4 + 0x444e7c]
xor eax, eax
mov ecx, dword [esp + 4]
cmp byte [ecx], 0x4e
setne al
jmp dword [eax*4 + 0x444e84]
xor eax, eax
cmp byte [ecx + 1], 0x74
setne al
jmp dword [eax*4 + 0x444e8c]
jmp dword [0x444e94]
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x18]
mov edi, dword [ecx + eax*4]
add edi, dword [ebp + 8]
xor ebx, ebx
mov dword [esp + 4], 0xffffffff
jmp dword [0x444e9c]
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x44]
jmp dword [eax*4 + 0x444eec]
jmp dword [0x444f00]
mov eax, 1
mov ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov edx, dword [esp + 8]
jmp dword [eax*4 + 0x444eec]
xor eax, eax
cmp ebx, 0x20
setl al
jmp dword [eax*4 + 0x444ea4]
lea eax, [edi + ebx]
lea ecx, [esp + 0x20]
push ecx
push eax
call fcn.00401000
add esp, 8
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
mov ecx, eax
shr ecx, 0xa
and ecx, 4
mov dword [esp + 0x44], 1
jmp dword [ecx + 0x444eac]
movzx edx, byte [esp + 0x26]
xor ecx, ecx
cmp dl, 0xc2
sete cl
jmp dword [ecx*4 + 0x444eb4]
jmp dword [0x444ec4]
mov ecx, eax
and ecx, 8
shr ecx, 1
jmp dword [ecx + 0x444ecc]
xor ecx, ecx
cmp dl, 0xc3
sete cl
jmp dword [ecx*4 + 0x444ed4]
xor ecx, ecx
cmp dl, 0xb8
sete cl
jmp dword [ecx*4 + 0x444edc]
shr eax, 2
and eax, 4
jmp dword [eax + 0x444ee4]
add ebx, dword [esp + 0x40]
xor eax, eax
mov edx, dword [esp + 8]
jmp dword [eax*4 + 0x444eec]
xor eax, eax
cmp dword [esp + 4], 0xffffffff
setne al
mov edi, dword [ebp + 8]
jmp dword [eax*4 + 0x444f04]
jmp dword [0x444f18]
xor eax, eax
xor edx, edx
cmp eax, dword [0x446cdc]
setb dl
xor ecx, ecx
jmp dword [edx*4 + 0x444f1c]
mov edx, dword [0x446ce0]
xor ebx, ebx
cmp dword [edx + ecx*8], esi
sete bl
jmp dword [ebx*4 + 0x444f24]
mov edx, 1
jmp dword [edx*4 + 0x444f2c]
mov eax, dword [esp + 4]
mov dword [edx + ecx*8 + 4], eax
xor edx, edx
mov al, 1
jmp dword [edx*4 + 0x444f2c]
mov edx, dword [case.0x438864.58]
nop
nop
nop
nop
nop
nop
nop
jmp edx
inc ecx
xor edx, edx
cmp ecx, dword [0x446cdc]
setb dl
jmp dword [edx*4 + 0x444f1c]
mov ecx, dword [case.0x438864.62]
nop
nop
nop
nop
nop
jmp ecx
mov ecx, dword [case.0x438864.66]
mov edx, dword [esp + 8]
nop
nop
nop
nop
jmp ecx
and al, 1
movzx eax, al
mov cl, 1
mov dword [esp + 0x10], ecx
jmp dword [eax*4 + 0x444f64]
jmp dword [0x444f74]
mov eax, dword [0x446ce0]
mov ecx, dword [case.0x438864.77]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
mov ecx, dword [0x446cdc]
lea edx, [ecx + 1]
mov dword [0x446cdc], edx
mov edx, dword [esp + 4]
mov dword [eax + ecx*8 + 4], edx
mov dword [eax + ecx*8], esi
mov al, 1
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 8]
jmp dword [0x444f94]
mov ecx, dword [esp + 0xc]
jmp dword [0x444f94]
mov eax, dword [esp + 0x1c]
movzx eax, word [eax + edx*2]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
mov dword [0x446ce4], eax
mov ecx, dword [esp + 0xc]
jmp dword [0x444f94]
mov ecx, dword [esp + 0xc]
jmp dword [0x444f94]
inc edx
jmp dword [0x444fa0]
inc edx
inc edx
jmp dword [0x444fa0]
xor eax, eax
cmp edx, dword [edi + ecx + 0x18]
setb al
jmp dword [eax*4 + 0x444e5c]
mov eax, dword [esp + 0x10]
and al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret