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

Disassembly:
push 0xffffffffffffffff
push 0x49b520
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5116ec]
xor eax, esp
push eax
lea eax, [esp + 0x2c]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x3c]
mov eax, dword [ebp + 0x120]
mov ecx, dword [ebp + 0x124]
sub ecx, eax
sar ecx, 2
mov dword [esp + 0x18], 0
test ecx, ecx
je 0x3b4476
lea esi, [ebp + 0xa8]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x20]
push ecx
lea eax, [eax + edx*4]
push esi
call fcn.003c46b0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ecx, eax
cmp eax, edx
je 0x3b4358
mov ecx, dword [ecx]
cmp ecx, edx
jne 0x3b4352
mov ecx, dword [esi + 4]
mov dword [esp + 0x3c], eax
cmp eax, dword [ecx]
jne 0x3b4371
cmp edx, ecx
jne 0x3b4371
call fcn.003c4d10
jmp 0x3b4454
cmp eax, edx
je 0x3b4454
lea esp, [esp]
mov edi, dword [esp + 0x3c]
mov edx, dword [edi]
mov dword [esp + 0x3c], edx
mov edx, dword [edi + 8]
mov eax, edx
lea ebx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x3b4392
sub eax, ebx
add eax, edx
mov ecx, 0x811c9dc5
cmp edx, eax
je 0x3b43b6
movzx ebx, byte [edx]
imul ecx, ecx, 0x1000193
inc edx
xor ecx, ebx
cmp edx, eax
jne 0x3b43a6
and ecx, 0x7fffffff
push 0x1f31d
push ecx
call fcn.004941cf
imul edx, edx, 0x41a7
imul eax, eax, 0xb14
add esp, 8
sub edx, eax
jns 0x3b43e0
add edx, 0x7fffffff
mov ecx, dword [esi + 0x20]
mov eax, ecx
and eax, edx
cmp dword [esi + 0x24], eax
ja 0x3b43f5
shr ecx, 1
or edx, 0xffffffff
sub edx, ecx
add eax, edx
mov ecx, dword [esi + 0x10]
cmp dword [ecx + eax*8 + 4], edi
lea ecx, [ecx + eax*8]
jne 0x3b441e
cmp dword [ecx], edi
jne 0x3b4416
mov edx, dword [esi + 4]
mov dword [ecx], edx
mov ecx, dword [esi + 4]
mov edx, dword [esi + 0x10]
mov dword [edx + eax*8 + 4], ecx
jmp 0x3b4426
mov eax, dword [edi + 4]
mov dword [ecx + 4], eax
jmp 0x3b4426
cmp dword [ecx], edi
jne 0x3b4426
mov edx, dword [edi]
mov dword [ecx], edx
cmp edi, dword [esi + 4]
je 0x3b4446
mov eax, dword [edi + 4]
mov ecx, dword [edi]
mov dword [eax], ecx
mov edx, dword [edi]
mov eax, dword [edi + 4]
push edi
mov dword [edx + 4], eax
call fcn.00438a36
add esp, 4
dec dword [esi + 8]
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x3c], ecx
jne 0x3b4380
mov eax, dword [ebp + 0x120]
mov edx, dword [ebp + 0x124]
mov ecx, dword [esp + 0x18]
sub edx, eax
inc ecx
sar edx, 2
mov dword [esp + 0x18], ecx
cmp ecx, edx
jb 0x3b4332
mov eax, dword [ebp + 0x130]
mov ecx, dword [ebp + 0x134]
sub ecx, eax
sar ecx, 2
mov dword [esp + 0x18], 0
test ecx, ecx
je 0x3b45e4
lea esi, [ebp + 0xd4]
lea ecx, [ecx]
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x20]
push ecx
lea eax, [eax + edx*4]
push esi
call fcn.003c46b0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ecx, eax
cmp eax, edx
je 0x3b44c6
mov ecx, dword [ecx]
cmp ecx, edx
jne 0x3b44c0
mov ecx, dword [esi + 4]
mov dword [esp + 0x3c], eax
cmp eax, dword [ecx]
jne 0x3b44df
cmp edx, ecx
jne 0x3b44df
call fcn.003c4d10
jmp 0x3b45c2
cmp eax, edx
je 0x3b45c2
jmp 0x3b44f0
mov edi, dword [esp + 0x3c]
mov edx, dword [edi]
mov dword [esp + 0x3c], edx
mov edx, dword [edi + 8]
mov eax, edx
lea ebx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x3b4502
sub eax, ebx
add eax, edx
mov ecx, 0x811c9dc5
cmp edx, eax
je 0x3b4526
movzx ebx, byte [edx]
imul ecx, ecx, 0x1000193
inc edx
xor ecx, ebx
cmp edx, eax
jne 0x3b4516
and ecx, 0x7fffffff
push 0x1f31d
push ecx
call fcn.004941cf
imul edx, edx, 0x41a7
imul eax, eax, 0xb14
add esp, 8
sub edx, eax
jns 0x3b4550
add edx, 0x7fffffff
mov eax, dword [esi + 0x20]
and edx, eax
cmp dword [esi + 0x24], edx
ja 0x3b4563
shr eax, 1
or ecx, 0xffffffff
sub ecx, eax
add edx, ecx
mov eax, dword [esi + 0x10]
cmp dword [eax + edx*8 + 4], edi
lea eax, [eax + edx*8]
jne 0x3b458c
cmp dword [eax], edi
jne 0x3b4584
mov ecx, dword [esi + 4]
mov dword [eax], ecx
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
mov dword [ecx + edx*8 + 4], eax
jmp 0x3b4594
mov edx, dword [edi + 4]
mov dword [eax + 4], edx
jmp 0x3b4594
cmp dword [eax], edi
jne 0x3b4594
mov ecx, dword [edi]
mov dword [eax], ecx
cmp edi, dword [esi + 4]
je 0x3b45b4
mov eax, dword [edi + 4]
mov edx, dword [edi]
mov dword [eax], edx
mov eax, dword [edi]
mov ecx, dword [edi + 4]
push edi
mov dword [eax + 4], ecx
call fcn.00438a36
add esp, 4
dec dword [esi + 8]
mov edx, dword [esp + 0x3c]
cmp edx, dword [esp + 0x24]
jne 0x3b44f0
mov eax, dword [ebp + 0x130]
mov edx, dword [ebp + 0x134]
mov ecx, dword [esp + 0x18]
sub edx, eax
inc ecx
sar edx, 2
mov dword [esp + 0x18], ecx
cmp ecx, edx
jb 0x3b44a0
mov eax, dword [ebp + 0x140]
mov ecx, dword [ebp + 0x144]
sub ecx, eax
sar ecx, 3
xor edi, edi
test ecx, ecx
je 0x3b4639
lea ebx, [ebp + 0x100]
lea edx, [esp + 0x20]
lea eax, [eax + edi*8]
push edx
call fcn.003c4da0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
lea esi, [esp + 0x44]
mov eax, ebx
call fcn.00334bd0
mov eax, dword [ebp + 0x140]
mov edx, dword [ebp + 0x144]
sub edx, eax
inc edi
sar edx, 3
cmp edi, edx
jb 0x3b4601
mov ecx, dword [ebp + 0x124]
mov esi, dword [ebp + 0x120]
cmp esi, ecx
je 0x3b466a
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add esi, edi
mov dword [ebp + 0x124], esi
mov ecx, dword [ebp + 0x134]
mov esi, dword [ebp + 0x130]
cmp esi, ecx
je 0x3b469b
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add esi, edi
mov dword [ebp + 0x134], esi
mov edx, dword [ebp + 0x144]
mov eax, dword [ebp + 0x140]
cmp eax, edx
je 0x3b46d0
mov ecx, edx
cmp edx, edx
je 0x3b46ca
mov esi, edx
sub esi, eax
mov edi, dword [ecx]
mov dword [eax], edi
mov edi, dword [eax + esi + 4]
mov dword [eax + 4], edi
add ecx, 8
add eax, 8
cmp ecx, edx
jne 0x3b46b5
mov dword [ebp + 0x144], eax
mov eax, dword [ebp + 0x6c]
mov ecx, dword [ebp + 0x68]
mov edx, dword [ebp + 0x110]
lea ecx, [ecx + edx*4]
push eax
push ecx
call fcn.003c52f0
mov esi, dword [ebp + 0x78]
mov eax, dword [ebp + 0x114]
mov edi, dword [ebp + 0x7c]
lea esi, [esi + eax*4]
add esp, 8
cmp esi, edi
je 0x3b4715
lea esp, [esp]
mov ecx, dword [esi]
add esi, 4
test ecx, ecx
je 0x3b4711
mov eax, dword [ecx]
mov edx, dword [eax]
push 1
call edx
cmp esi, edi
jne 0x3b4700
mov esi, dword [ebp + 0x88]
mov eax, dword [ebp + 0x118]
mov ebx, dword [ebp + 0x8c]
lea esi, [esi + eax*4]
cmp esi, ebx
je 0x3b474c
mov edi, edi
mov edi, dword [esi]
add esi, 4
test edi, edi
je 0x3b4748
push edi
call fcn.003b40a0
push edi
call fcn.00438a36
add esp, 4
cmp esi, ebx
jne 0x3b4730
mov eax, dword [ebp + 0x98]
mov ecx, dword [ebp + 0x9c]
mov esi, dword [ebp + 0x11c]
sub ecx, eax
sar ecx, 2
cmp esi, ecx
jae 0x3b4789
mov edx, dword [eax + esi*4]
push edx
call fcn.00438a36
mov eax, dword [ebp + 0x98]
mov ecx, dword [ebp + 0x9c]
sub ecx, eax
inc esi
sar ecx, 2
add esp, 4
cmp esi, ecx
jb 0x3b4767
mov ecx, dword [ebp + 0x6c]
mov esi, dword [ebp + 0x68]
mov edx, dword [ebp + 0x110]
mov eax, ecx
sub eax, esi
sar eax, 2
mov dword [esp + 0x3c], edx
cmp eax, edx
jbe 0x3b47d2
lea esi, [esi + edx*4]
cmp esi, ecx
je 0x3b48c5
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add edi, esi
mov dword [ebp + 0x6c], edi
jmp 0x3b48c5
jae 0x3b48c5
mov ecx, edx
sub ecx, eax
mov edi, 0x3fffffff
sub edi, ecx
cmp edi, eax
jae 0x3b47f1
push 0x4c88f8
call fcn.004379c1
add eax, ecx
mov ecx, dword [ebp + 0x70]
sub ecx, esi
sar ecx, 2
cmp eax, ecx
jbe 0x3b489d
mov edi, ecx
mov esi, edi
shr esi, 1
mov ebx, 0x3fffffff
sub ebx, esi
cmp ebx, edi
jae 0x3b4818
xor edi, edi
jmp 0x3b481a
add edi, esi
cmp edi, eax
jae 0x3b4820
mov edi, eax
cmp edi, 0x3fffffff
jbe 0x3b4832
push 0x4c88f8
call fcn.004379c1
cmp ecx, edi
jae 0x3b489d
xor esi, esi
xor ebx, ebx
cmp edi, esi
jbe 0x3b4858
lea edx, [edi*4]
push edx
call fcn.00438a50
mov ebx, eax
add esp, 4
cmp ebx, esi
je 0x3b490e
mov ecx, dword [ebp + 0x68]
mov eax, dword [ebp + 0x6c]
sub eax, ecx
sar eax, 2
add eax, eax
add eax, eax
push eax
push ecx
push ebx
call fcn.00438cc0
mov eax, dword [ebp + 0x68]
mov esi, dword [ebp + 0x6c]
sub esi, eax
add esp, 0xc
sar esi, 2
test eax, eax
je 0x3b488a
push eax
call fcn.00438a36
add esp, 4
lea edx, [ebx + esi*4]
lea ecx, [ebx + edi*4]
mov dword [ebp + 0x6c], edx
mov edx, dword [esp + 0x3c]
mov dword [ebp + 0x70], ecx
mov dword [ebp + 0x68], ebx
mov edi, dword [ebp + 0x6c]
mov eax, edi
sub eax, dword [ebp + 0x68]
mov ecx, edx
sar eax, 2
sub ecx, eax
je 0x3b48b2
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x6c]
mov ecx, eax
sub ecx, dword [ebp + 0x68]
sar ecx, 2
sub edx, ecx
lea edx, [eax + edx*4]
mov dword [ebp + 0x6c], edx
mov ecx, dword [ebp + 0x7c]
mov esi, dword [ebp + 0x78]
mov edx, dword [ebp + 0x114]
mov eax, ecx
sub eax, esi
sar eax, 2
mov dword [esp + 0x3c], edx
cmp eax, edx
jbe 0x3b4927
lea esi, [esi + edx*4]
cmp esi, ecx
je 0x3b4a21
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add esi, edi
mov dword [ebp + 0x7c], esi
jmp 0x3b4a21
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], vtable.stdext::bad_alloc.0
lea ecx, [esp + 0x20]
mov dword [esp + 0x34], esi
call fcn.002f4df0
jae 0x3b4a21
mov ecx, edx
sub ecx, eax
mov edi, 0x3fffffff
sub edi, ecx
cmp edi, eax
jae 0x3b4946
push 0x4c88f8
call fcn.004379c1
add eax, ecx
mov ecx, dword [ebp + 0x80]
sub ecx, esi
sar ecx, 2
cmp eax, ecx
jbe 0x3b49f9
mov edi, ecx
mov esi, edi
shr esi, 1
mov ebx, 0x3fffffff
sub ebx, esi
cmp ebx, edi
jae 0x3b4970
xor edi, edi
jmp 0x3b4972
add edi, esi
cmp edi, eax
jae 0x3b4978
mov edi, eax
cmp edi, 0x3fffffff
jbe 0x3b498a
push 0x4c88f8
call fcn.004379c1
cmp ecx, edi
jae 0x3b49f9
xor ebx, ebx
test edi, edi
je 0x3b49ae
lea eax, [edi*4]
push eax
call fcn.00438a50
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x3b4a73
mov ecx, dword [ebp + 0x78]
mov eax, dword [ebp + 0x7c]
sub eax, ecx
sar eax, 2
lea edx, [eax*4]
push edx
push ecx
push ebx
call fcn.00438cc0
mov eax, dword [ebp + 0x78]
mov esi, dword [ebp + 0x7c]
sub esi, eax
add esp, 0xc
sar esi, 2
test eax, eax
je 0x3b49e3
push eax
call fcn.00438a36
add esp, 4
mov edx, dword [esp + 0x3c]
lea eax, [ebx + edi*4]
lea ecx, [ebx + esi*4]
mov dword [ebp + 0x80], eax
mov dword [ebp + 0x7c], ecx
mov dword [ebp + 0x78], ebx
mov edi, dword [ebp + 0x7c]
mov eax, edi
sub eax, dword [ebp + 0x78]
mov ecx, edx
sar eax, 2
sub ecx, eax
je 0x3b4a0e
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x7c]
mov ecx, eax
sub ecx, dword [ebp + 0x78]
sar ecx, 2
sub edx, ecx
lea edx, [eax + edx*4]
mov dword [ebp + 0x7c], edx
mov ecx, dword [ebp + 0x8c]
mov esi, dword [ebp + 0x88]
mov edx, dword [ebp + 0x118]
mov eax, ecx
sub eax, esi
sar eax, 2
mov dword [esp + 0x3c], edx
cmp eax, edx
jbe 0x3b4a94
lea esi, [esi + edx*4]
cmp esi, ecx
je 0x3b4baf
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add esi, edi
mov dword [ebp + 0x8c], esi
jmp 0x3b4baf
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], vtable.stdext::bad_alloc.0
lea ecx, [esp + 0x20]
mov dword [esp + 0x34], 1
call fcn.002f4df0
jae 0x3b4baf
mov ecx, edx
sub ecx, eax
mov edi, 0x3fffffff
sub edi, ecx
cmp edi, eax
jae 0x3b4ab3
push 0x4c88f8
call fcn.004379c1
add eax, ecx
mov ecx, dword [ebp + 0x90]
sub ecx, esi
sar ecx, 2
cmp eax, ecx
jbe 0x3b4b78
mov edi, ecx
mov esi, edi
shr esi, 1
mov ebx, 0x3fffffff
sub ebx, esi
cmp ebx, edi
jae 0x3b4add
xor edi, edi
jmp 0x3b4adf
add edi, esi
cmp edi, eax
jae 0x3b4ae5
mov edi, eax
cmp edi, 0x3fffffff
jbe 0x3b4af7
push 0x4c88f8
call fcn.004379c1
cmp ecx, edi
jae 0x3b4b78
xor ebx, ebx
test edi, edi
je 0x3b4b1b
lea eax, [edi*4]
push eax
call fcn.00438a50
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x3b4c01
mov ecx, dword [ebp + 0x88]
mov eax, dword [ebp + 0x8c]
sub eax, ecx
sar eax, 2
lea edx, [eax*4]
push edx
push ecx
push ebx
call fcn.00438cc0
mov eax, dword [ebp + 0x88]
mov esi, dword [ebp + 0x8c]
sub esi, eax
add esp, 0xc
sar esi, 2
test eax, eax
je 0x3b4b5c
push eax
call fcn.00438a36
add esp, 4
mov edx, dword [esp + 0x3c]
lea eax, [ebx + edi*4]
lea ecx, [ebx + esi*4]
mov dword [ebp + 0x90], eax
mov dword [ebp + 0x8c], ecx
mov dword [ebp + 0x88], ebx
mov edi, dword [ebp + 0x8c]
mov eax, edi
sub eax, dword [ebp + 0x88]
mov ecx, edx
sar eax, 2
sub ecx, eax
je 0x3b4b93
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x8c]
mov ecx, eax
sub ecx, dword [ebp + 0x88]
sar ecx, 2
sub edx, ecx
lea edx, [eax + edx*4]
mov dword [ebp + 0x8c], edx
mov ecx, dword [ebp + 0x9c]
mov esi, dword [ebp + 0x98]
mov edx, dword [ebp + 0x11c]
mov eax, ecx
sub eax, esi
sar eax, 2
mov dword [esp + 0x3c], edx
cmp eax, edx
jbe 0x3b4c22
lea esi, [esi + edx*4]
cmp esi, ecx
je 0x3b4d3a
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
push edi
push ecx
push esi
call fcn.00438cc0
add esp, 0xc
add esi, edi
mov dword [ebp + 0x9c], esi
jmp 0x3b4d3a
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], vtable.stdext::bad_alloc.0
lea ecx, [esp + 0x20]
mov dword [esp + 0x34], 2
call fcn.002f4df0
jae 0x3b4d3a
mov ecx, edx
sub ecx, eax
mov edi, 0x3fffffff
sub edi, ecx
cmp edi, eax
jae 0x3b4c41
push 0x4c88f8
call fcn.004379c1
add eax, ecx
mov ecx, dword [ebp + 0xa0]
sub ecx, esi
sar ecx, 2
cmp eax, ecx
jbe 0x3b4d03
mov esi, ecx
mov edi, esi
shr edi, 1
mov ebx, 0x3fffffff
sub ebx, edi
cmp ebx, esi
jae 0x3b4c6b
xor esi, esi
jmp 0x3b4c6d
add esi, edi
cmp esi, eax
jae 0x3b4c73
mov esi, eax
cmp esi, 0x3fffffff
jbe 0x3b4c85
push 0x4c88f8
call fcn.004379c1
cmp ecx, esi
jae 0x3b4d03
xor ebx, ebx
test esi, esi
je 0x3b4ca9
lea eax, [esi*4]
push eax
call fcn.00438a50
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x3b4d50
mov eax, dword [ebp + 0x98]
mov ecx, dword [ebp + 0x9c]
sub ecx, eax
sar ecx, 2
add ecx, ecx
add ecx, ecx
push ecx
push eax
push ebx
call fcn.00438cc0
mov eax, dword [ebp + 0x98]
mov edi, dword [ebp + 0x9c]
sub edi, eax
add esp, 0xc
sar edi, 2
test eax, eax
je 0x3b4ce7
push eax
call fcn.00438a36
add esp, 4
lea edx, [ebx + esi*4]
lea eax, [ebx + edi*4]
mov dword [ebp + 0xa0], edx
mov edx, dword [esp + 0x3c]
mov dword [ebp + 0x9c], eax
mov dword [ebp + 0x98], ebx
mov edi, dword [ebp + 0x9c]
mov eax, edi
sub eax, dword [ebp + 0x98]
mov ecx, edx
sar eax, 2
sub ecx, eax
je 0x3b4d1e
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x9c]
mov ecx, eax
sub ecx, dword [ebp + 0x98]
sar ecx, 2
sub edx, ecx
lea edx, [eax + edx*4]
mov dword [ebp + 0x9c], edx
mov ecx, dword [esp + 0x2c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 4
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], vtable.stdext::bad_alloc.0
lea ecx, [esp + 0x18]
mov dword [esp + 0x34], 3
call fcn.002f4df0
int3