Function at 0x542990
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6a690b
mov eax, dword fs:[0]
push eax
sub esp, 0x4d8
mov eax, dword [0x73a280]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edx, ecx
mov dword [ebp - 0x4d0], edx
mov ecx, dword [ebp + 8]
mov esi, 4
mov dword [ebp - 0x4c8], ecx
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4e4], 0
mov eax, dword [ecx]
mov dword [ebp - 0x4cc], eax
test eax, eax
jle 0x542fd6
mov edi, eax
nop dword [eax]
mov eax, dword [ecx + esi]
sub eax, 4
mov dword [ebp - 0x4d4], eax
mov eax, dword [ecx + esi + 4]
add esi, 8
cmp dword [edx + 0x1420], 0
mov dword [ebp - 0x4d8], eax
mov dword [ebp - 0x4e0], esi
je 0x542a39
mov eax, dword [edx + 0x141c]
mov esi, dword [edx + 0x142c]
mov esi, dword [esi + eax*4]
jmp 0x542a3b
xor esi, esi
test esi, esi
je 0x542fb5
cmp dword [esi + 0x1c], 0xf
lea ecx, [esi + 8]
mov eax, dword [ecx + 0x10]
xorps xmm0, xmm0
mov dword [ebp - 0x4bc], ecx
movups xmmword [ebp - 0x428], xmm0
mov dword [ebp - 0x418], 0
mov dword [ebp - 0x414], 0
mov dword [ebp - 0x4c4], eax
jbe 0x542a81
mov ecx, dword [ecx]
mov dword [ebp - 0x4bc], ecx
cmp eax, 0x7fffffff
ja 0x542ff3
cmp eax, 0xf
ja 0x542abd
movups xmm0, xmmword [ecx]
mov edi, 0xf
mov dword [ebp - 0x418], eax
mov dword [ebp - 0x414], edi
movups xmmword [ebp - 0x428], xmm0
mov edx, dword [ebp - 0x428]
mov dword [ebp - 0x4c0], edx
jmp 0x542b44
mov edi, eax
or edi, 0xf
cmp edi, 0x7fffffff
jbe 0x542adc
mov ecx, bind
mov edi, bind
push ecx
call fcn.0043e900
jmp 0x542b04
cmp edi, 0x16
mov ecx, 0x16
cmovb edi, ecx
lea ecx, [edi + 1]
test ecx, ecx
je 0x542b0f
cmp ecx, 0x1000
jb 0x542afe
push ecx
call fcn.0043e900
jmp 0x542b04
push ecx
call fcn.005c8dfe
mov ecx, eax
add esp, 4
mov eax, dword [ebp - 0x4c4]
mov dword [ebp - 0x418], eax
inc eax
push eax
push dword [ebp - 0x4bc]
mov dword [ebp - 0x4c0], ecx
push ecx
mov dword [ebp - 0x428], ecx
mov dword [ebp - 0x414], edi
call fcn.00643a30
mov edx, dword [ebp - 0x4c0]
add esp, 0xc
mov eax, dword [ebp - 0x4c4]
mov dword [ebp - 4], 0
mov byte [ebp - 0x410], 0
test eax, eax
je 0x542c39
cmp edi, 0xf
lea eax, [ebp - 0x428]
lea ecx, [ebp - 0x410]
cmova eax, edx
mov dword [ebp - 0x4bc], eax
mov eax, ecx
mov edx, dword [ebp - 0x4bc]
sub edx, eax
nop dword [eax]
mov al, byte [ecx + edx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
test al, al
jne 0x542b80
mov ecx, dword [ebp - 0x4c4]
mov edx, dword [ebp - 0x4c0]
add ecx, 0xffffffff
je 0x542c39
cmp edi, 0xf
lea eax, [ebp - 0x428]
cmova eax, edx
cmp byte [eax + ecx], 0x2f
je 0x542bd1
cmp edi, 0xf
lea eax, [ebp - 0x428]
cmova eax, edx
cmp byte [eax + ecx], 0x5c
je 0x542bd1
test ecx, ecx
je 0x542c39
sub ecx, 1
jne 0x542ba2
jmp 0x542c39
inc ecx
xor eax, eax
mov dword [ebp - 0x4bc], ecx
mov ecx, dword [ebp - 0x4c4]
cmp dword [ebp - 0x4bc], ecx
jae 0x542c26
sub ecx, dword [ebp - 0x4bc]
push ecx
cmp edi, 0xf
jbe 0x542bfe
mov eax, dword [ebp - 0x4bc]
add eax, edx
jmp 0x542c0a
lea eax, [ebp - 0x428]
add eax, dword [ebp - 0x4bc]
push eax
lea eax, [ebp - 0x410]
mov dword [ebp - 0x4bc], ecx
push eax
call fcn.00643a30
mov eax, dword [ebp - 0x4bc]
add esp, 0xc
cmp eax, 0x400
jae 0x542ff8
mov byte [ebp + eax - 0x410], 0
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebp - 0x440]
call fcn.0043ef30
or dword [ebp - 0x4dc], 1
mov byte [ebp - 4], 2
cmp edi, 0xf
jbe 0x542c8a
mov ecx, dword [ebp - 0x4c0]
inc edi
mov eax, ecx
cmp edi, 0x1000
jb 0x542c80
mov ecx, dword [eax - 4]
add edi, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x542ffd
push edi
push ecx
call fcn.005c8a85
add esp, 8
cmp dword [ebp - 0x42c], 0xf
lea ecx, [ebp - 0x440]
mov eax, dword [ebp - 0x440]
mov edi, dword [ebp - 0x430]
cmova ecx, eax
add edi, ecx
mov dword [ebp - 0x4bc], eax
xor edx, edx
cmp ecx, edi
jae 0x542cc4
movzx eax, byte [ecx]
inc ecx
imul edx, edx, 0x1000193
xor edx, eax
cmp ecx, edi
jb 0x542cb4
cmp dword [ebp - 0x4d8], edx
je 0x542d1e
mov eax, dword [ebp - 0x42c]
mov dword [ebp - 4], 0xffffffff
cmp eax, 0xf
jbe 0x542d0f
mov edx, dword [ebp - 0x4bc]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x542d05
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x542ffd
push ecx
push edx
call fcn.005c8a85
add esp, 8
mov esi, dword [esi]
test esi, esi
jne 0x542a43
jmp 0x542fa3
mov ecx, dword [esi + 0x20]
call fcn.00547f90
mov ecx, dword [ebp - 0x4e0]
add ecx, dword [ebp - 0x4c8]
push ecx
mov ecx, eax
call fcn.0054d370
mov dword [ebp - 0x4d8], eax
cmp dword [ebp - 0x4d4], eax
je 0x542f66
movaps xmm0, xmmword [0x6cd4f0]
lea eax, [ebp - 0x440]
movups xmmword [ebp - 0x1e4], xmm0
cmp dword [ebp - 0x42c], 0xf
movaps xmm0, xmmword [0x6c7450]
movups xmmword [ebp - 0x1d4], xmm0
cmova eax, dword [ebp - 0x440]
movaps xmm0, xmmword [0x6cd4a0]
movups xmmword [ebp - 0x1c4], xmm0
push 0x75
movaps xmm0, xmmword [0x6cbfd0]
movups xmmword [ebp - 0x1b4], xmm0
mov dword [ebp - 0x4bc], eax
lea eax, [ebp - 0x4b8]
movaps xmm0, xmmword [0x6bd410]
movups xmmword [ebp - 0x1a4], xmm0
push 0
movaps xmm0, xmmword [0x6cd510]
movups xmmword [ebp - 0x194], xmm0
push eax
movaps xmm0, xmmword [0x6cd3a0]
movups xmmword [ebp - 0x184], xmm0
mov dword [ebp - 0x14], 0
movaps xmm0, xmmword [0x6cd400]
movups xmmword [ebp - 0x174], xmm0
movaps xmm0, xmmword [0x6cd440]
movups xmmword [ebp - 0x164], xmm0
movaps xmm0, xmmword [0x6c7440]
movups xmmword [ebp - 0x154], xmm0
movaps xmm0, xmmword [0x6cd3b0]
movups xmmword [ebp - 0x144], xmm0
movaps xmm0, xmmword [0x6cd3f0]
movups xmmword [ebp - 0x134], xmm0
movaps xmm0, xmmword [0x6cd460]
movups xmmword [ebp - 0x124], xmm0
movaps xmm0, xmmword [0x6cd3c0]
movups xmmword [ebp - 0x114], xmm0
movaps xmm0, xmmword [0x6cd420]
movups xmmword [ebp - 0x104], xmm0
movaps xmm0, xmmword [0x6cd450]
movups xmmword [ebp - 0xf4], xmm0
movaps xmm0, xmmword [0x6cd4b0]
movups xmmword [ebp - 0xe4], xmm0
movaps xmm0, xmmword [0x6cd520]
movups xmmword [ebp - 0xd4], xmm0
movaps xmm0, xmmword [0x6cd4c0]
movups xmmword [ebp - 0xc4], xmm0
movaps xmm0, xmmword [0x6c2a00]
movups xmmword [ebp - 0xb4], xmm0
movaps xmm0, xmmword [0x6cd430]
movups xmmword [ebp - 0xa4], xmm0
movaps xmm0, xmmword [0x6cd500]
movups xmmword [ebp - 0x94], xmm0
movaps xmm0, xmmword [0x6cd3e0]
movups xmmword [ebp - 0x84], xmm0
movaps xmm0, xmmword [0x6cd4d0]
movups xmmword [ebp - 0x74], xmm0
movaps xmm0, xmmword [0x6cd530]
movups xmmword [ebp - 0x64], xmm0
movaps xmm0, xmmword [0x6b8d90]
movups xmmword [ebp - 0x54], xmm0
movaps xmm0, xmmword [0x6cd480]
movups xmmword [ebp - 0x44], xmm0
movaps xmm0, xmmword [0x6cd410]
movups xmmword [ebp - 0x34], xmm0
movaps xmm0, xmmword [0x6bb9d0]
movups xmmword [ebp - 0x24], xmm0
call fcn.006430f0
add esp, 0xc
xor edi, edi
mov ecx, 1
mov esi, 0x19b
imul ecx, dword [ebp + edi*4 - 0x1e4]
mov eax, 0x3b7d8157
imul ecx
sub edx, ecx
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x29b
add ecx, eax
sub esi, 1
jne 0x542f10
mov byte [ebp + edi - 0x4b8], cl
inc edi
cmp edi, 0x75
jl 0x542f06
push dword [ebp - 0x4d8]
lea eax, [ebp - 0x4b8]
push dword [ebp - 0x4d4]
push dword [ebp - 0x4bc]
push eax
call fcn.005057e0
add esp, 0x10
mov ecx, dword [ebp - 0x42c]
mov dword [ebp - 4], 0xffffffff
cmp ecx, 0xf
jbe 0x542fa3
mov edx, dword [ebp - 0x440]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x542f99
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x542ffd
push ecx
push edx
call fcn.005c8a85
add esp, 8
mov ecx, dword [ebp - 0x4c8]
mov edx, dword [ebp - 0x4d0]
mov edi, dword [ebp - 0x4cc]
mov eax, dword [ebp - 0x4e4]
mov esi, dword [ebp - 0x4e0]
inc eax
add esi, dword [ebp - 0x4d4]
mov dword [ebp - 0x4e4], eax
cmp eax, edi
jl 0x542a00
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005c8a4d
mov esp, ebp
pop ebp
ret 4
call fcn.00444010
call fcn.005c9429
call fcn.0064e36a
int3