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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1003beb3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x174
mov ax, word [0x1004b144]
push ebx
mov ebx, ecx
mov dword [ebp - 0x10], ebx
push esi
push edi
test ax, ax
jne 0x100314c1
mov ecx, 0x876b2934
call fcn.10031000
mov word [0x1004b144], ax
mov ecx, dword [0x10047a54]
lea esi, [ebp - 0x180]
movzx eax, ax
push esi
mov edx, dword [eax + ebx + 4]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x20]
call eax
test al, al
je 0x100319a4
mov ax, word [0x1004b138]
test ax, ax
jne 0x10031500
mov ecx, 0x55621c49
call fcn.10031000
mov word [0x1004b138], ax
mov ecx, dword [0x1004b0a8]
movzx edi, ax
mov eax, dword [0x1004b0a4]
add edi, ebx
mov dword [ebp - 0x1c], edi
cmp eax, ecx
je 0x1003152f
cmp byte [eax + 0x20], 0
je 0x10031526
cmp dword [eax + 0x28], 0x13a4
je 0x1003152f
add eax, 0xd4
cmp eax, ecx
jne 0x10031517
mov edx, dword [edi]
xor ebx, ebx
cmp eax, ecx
cmovne ebx, eax
mov dword [ebp - 0x14], ebx
cmp edx, 0xffffffff
jne 0x10031544
xor esi, esi
jmp 0x10031556
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov esi, eax
test esi, esi
jne 0x1003157b
mov edx, dword [0x1004b148]
cmp edx, 0xffffffff
je 0x1003157b
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
je 0x1003157b
mov ecx, dword [0x1004b148]
mov esi, eax
mov dword [edi], ecx
mov ax, word [0x1004b154]
test ax, ax
jne 0x10031596
mov ecx, 0x19222c70
call fcn.10031000
mov word [0x1004b154], ax
movzx eax, ax
add eax, dword [ebp - 0x10]
cmp dword [eax], 0
je 0x100315d6
test esi, esi
je 0x100319a4
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x34]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x10]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x10031767
cmp dword [ebx + 0x40], 0
je 0x10031767
test esi, esi
jne 0x1003172f
mov ecx, dword [0x10047a5c]
mov eax, dword [ecx]
call dword [eax + 0x18]
lea esi, [eax + 1]
mov dword [ebp - 0x18], esi
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
mov ebx, eax
and ebx, 0x80000fff
jns 0x10031619
dec ebx
or ebx, 0xfffff000
inc ebx
mov ecx, dword [0x1004b214]
test cl, 1
jne 0x10031687
or ecx, 1
mov dword [0x1004b214], ecx
mov dword [ebp - 4], 0
mov ecx, dword [0x10047a60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x20]
call eax
mov edi, eax
mov edx, dword [edi + 8]
mov esi, 0x811c9dc5
nop dword [eax + eax]
mov cl, byte [edx]
lea edx, [edx + 1]
movsx eax, cl
xor eax, esi
imul esi, eax, 0x1000193
test cl, cl
jne 0x10031650
cmp esi, 0xb1a391c
je 0x10031671
mov edi, dword [edi + 0x10]
jmp 0x10031643
mov eax, dword [edi]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov dword [0x1004b210], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x1003168c
mov eax, dword [0x1004b210]
push ebx
push esi
call eax
mov ecx, dword [0x10047a5c]
add esp, 8
mov eax, dword [ecx]
push esi
call dword [eax + 0xc]
mov esi, eax
mov eax, dword [0x1004b214]
test al, 2
jne 0x10031710
or eax, 2
mov dword [0x1004b214], eax
mov ecx, dword [0x1004b160]
test ecx, ecx
jne 0x100316f7
push str.client_panorama.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
je 0x100316e2
push 0xc
lea ecx, [ebp - 0x28]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_K32GetModuleInformation]
mov eax, dword [ebp - 0x28]
test eax, eax
mov ecx, str.client_panorama.dll
mov edx, str.client.dll
cmove ecx, edx
mov dword [0x1004b160], ecx
push str.xxxxxxxxxxxx
mov edx, 0x10041d78
call fcn.10031a30
add esp, 4
mov dword [0x1004b218], eax
jmp 0x10031715
mov eax, dword [0x1004b218]
push 0x10041dd8
mov ecx, esi
call eax
shl ebx, 0x10
or ebx, dword [ebp - 0x18]
mov dword [edi], ebx
mov dword [0x1004b148], ebx
mov ebx, dword [ebp - 0x14]
mov ax, word [0x1004b144]
test ax, ax
jne 0x1003174a
mov ecx, 0x876b2934
call fcn.10031000
mov word [0x1004b144], ax
movzx eax, ax
mov edx, ebx
mov ecx, esi
mov dword [eax + esi + 4], 0xffffffff
push dword [ebp - 0x178]
call fcn.10031120
add esp, 4
mov ax, word [0x1004b11c]
test ax, ax
jne 0x10031782
mov ecx, 0x3ff78262
call fcn.10031000
mov word [0x1004b11c], ax
mov ebx, dword [ebp - 0x10]
movzx esi, ax
add esi, ebx
lea eax, [esi + 0xc0]
mov dword [ebp - 0x14], eax
cmp esi, eax
je 0x10031869
nop dword [eax + eax]
mov edx, dword [esi]
cmp edx, 0xffffffff
je 0x10031866
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov edi, eax
test edi, edi
je 0x1003185a
mov ax, word [0x1004b124]
test ax, ax
jne 0x100317dc
mov ecx, 0xfbedb167
call fcn.10031000
mov word [0x1004b124], ax
movzx ebx, ax
mov ecx, 0x1f4
movzx eax, word [ebx + edi]
cmp ax, cx
jl 0x100317f7
mov ecx, 0x13a3
cmp ax, cx
jl 0x10031806
cmp ax, 0x3b
je 0x10031806
movsx edx, ax
cmp ax, 0x2a
jne 0x1003180b
mov edx, 0x2a
mov ecx, dword [0x1004b0a8]
mov eax, dword [0x1004b0a4]
cmp eax, ecx
je 0x10031834
nop word [eax + eax]
cmp byte [eax + 0x20], 0
je 0x1003182b
cmp dword [eax + 0x28], edx
je 0x10031834
add eax, 0xd4
cmp eax, ecx
jne 0x10031820
xor edx, edx
cmp eax, ecx
cmovne edx, eax
test edx, edx
je 0x10031851
push dword [ebp - 0x178]
mov ecx, edi
call fcn.10031120
add esp, 4
jmp 0x1003185a
movsx ecx, word [ebx + edi]
call fcn.10031060
add esi, 4
cmp esi, dword [ebp - 0x14]
jne 0x100317a0
mov ebx, dword [ebp - 0x10]
mov ax, word [0x1004b12c]
test ax, ax
jne 0x10031884
mov ecx, 0xa15ff0a1
call fcn.10031000
mov word [0x1004b12c], ax
movzx eax, ax
mov edx, dword [eax + ebx]
cmp edx, 0xffffffff
je 0x100319a4
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov esi, eax
test esi, esi
je 0x100319a4
mov ax, word [0x1004b114]
test ax, ax
jne 0x100318c4
mov ecx, 0xc011001c
call fcn.10031000
mov word [0x1004b114], ax
movzx eax, ax
mov edx, dword [eax + esi]
cmp edx, 0xffffffff
je 0x100319a4
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov edi, eax
test edi, edi
je 0x100319a4
mov ax, word [0x1004b124]
test ax, ax
jne 0x10031904
mov ecx, 0xfbedb167
call fcn.10031000
mov word [0x1004b124], ax
movzx eax, ax
movsx ecx, word [eax + edi]
call fcn.10037670
test eax, eax
je 0x100319a4
mov ecx, dword [0x10047a58]
push dword [eax]
mov edx, dword [ecx]
call dword [edx + 8]
mov ebx, eax
mov ax, word [0x1004b128]
test ax, ax
jne 0x10031942
mov ecx, 0xe6d17304
call fcn.10031000
mov word [0x1004b128], ax
movzx eax, ax
mov dword [eax + esi], ebx
mov ax, word [0x1004b150]
test ax, ax
jne 0x10031963
mov ecx, 0xf697e127
call fcn.10031000
mov word [0x1004b150], ax
movzx eax, ax
mov edx, dword [eax + edi]
cmp edx, 0xffffffff
je 0x100319a4
mov ecx, dword [0x10047a5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x10]
mov esi, eax
test esi, esi
je 0x100319a4
mov ax, word [0x1004b128]
test ax, ax
jne 0x1003199b
mov ecx, 0xe6d17304
call fcn.10031000
mov word [0x1004b128], ax
movzx eax, ax
lea ecx, [ebx + 1]
mov dword [eax + esi], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret