Function at 0x446458
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x664
mov edi, ecx
mov esi, edx
mov ebx, eax
mov eax, dword [edi]
mov dword [esp + 0x660], eax
cmp eax, 0x640
jne 0x4466ae
mov eax, dword [edi + 4]
mov dword [esp + 0x65c], eax
test ebx, ebx
je 0x44649d
mov eax, ebx
call fcn.00408720
mov eax, ebx
call fcn.0043c33c
mov edx, dword [0x8016b0]
test esi, esi
je 0x4467a8
mov eax, esi
call fcn.0045ff30
mov dword [esp + 0x658], eax
mov ebx, eax
test ebx, ebx
je 0x44679a
movsx ebx, byte [esi]
test ebx, ebx
je 0x446793
xor ebx, ebx
mov eax, esi
movsx ecx, byte [eax]
cmp ecx, 0x2f
je 0x4464ec
movzx ecx, cl
movzx ecx, byte [ecx + 0x5b30a0]
inc ecx
movsx ecx, cl
add ebx, ecx
jmp 0x4464f1
lea esi, [eax + 1]
xor ebx, ebx
lea eax, [ebx + esi]
movsx ecx, byte [eax]
test ecx, ecx
jne 0x4464d5
push 0x38
call fcn.00403564
pop ecx
mov dword [esp + 0x654], eax
test eax, eax
je 0x446776
lea eax, [ebx + 1]
push eax
call fcn.0046776c
pop ecx
mov edx, eax
mov eax, dword [esp + 0x654]
mov dword [eax + 0x14], edx
test edx, edx
je 0x446759
push ebx
push esi
push edx
call dword [0x5d048c]
add esp, 0xc
mov eax, dword [esp + 0x654]
mov eax, dword [eax + 0x14]
xor ecx, ecx
mov byte [eax + ebx], cl
mov eax, ebx
xor ecx, ebx
cmp ebx, 4
jl 0x446588
mov dword [esp + 0x650], edi
imul edx, dword [esi], 0x5bd1e995
mov edi, edx
shr edi, 0x18
xor edx, edi
imul edi, edx, 0x5bd1e995
imul ecx, ecx, 0x5bd1e995
xor ecx, edi
add esi, 4
add eax, 0xfffffffc
cmp eax, 4
jge 0x44655b
mov edi, dword [esp + 0x650]
cmp eax, 3
je 0x446599
cmp eax, 2
je 0x4465a2
cmp eax, 1
je 0x4465ab
jmp 0x4465b6
movzx eax, byte [esi + 2]
shl eax, 0x10
xor ecx, eax
movzx eax, byte [esi + 1]
shl eax, 8
xor ecx, eax
movzx eax, byte [esi]
xor ecx, eax
imul ecx, ecx, 0x5bd1e995
mov esi, ecx
shr esi, 0xd
xor ecx, esi
imul esi, ecx, 0x5bd1e995
mov eax, esi
shr eax, 0xf
xor esi, eax
and esi, 0x7fffffff
xor ecx, ecx
mov edx, dword [esp + 0x654]
mov dword [edx + 0x1c], esi
mov dword [edx + 0x18], ebx
mov byte [edx + 0x30], cl
mov ebx, 1
mov dword [edx + 0x28], ebx
mov dword [edx + 0x2c], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x658]
call fcn.0045ffc8
mov eax, dword [esp + 0x654]
push eax
call fcn.00464294
mov esi, eax
lea eax, [esp + 0x14]
lea ebx, [edi + 8]
mov edx, dword [esp + 0x664]
push edx
push ebx
push eax
call dword [0x5d048c]
add esp, 0x10
mov eax, dword [esp + 0x88]
mov dword [esp + 0x658], eax
mov dword [esi + 0x78], eax
mov ebx, dword [esp + 0x8c]
mov dword [esi + 0x7c], ebx
mov ecx, dword [esi + 0x90]
lea edx, [eax + eax]
add edx, edx
cmp eax, 0x2000
jg 0x446730
test ecx, ecx
je 0x44671b
mov eax, edx
imul eax, ebx
lea edx, [edx + eax + 4]
push edx
push ecx
call fcn.00467c08
add esp, 8
test eax, eax
je 0x4466cf
mov dword [esi + 0x90], eax
test eax, eax
je 0x4466bd
mov edx, dword [esp + 0x660]
lea ebx, [edi + edx + 8]
mov ecx, dword [esp + 0x65c]
push ecx
push ebx
push eax
call dword [0x5d048c]
xor eax, eax
add esp, 0x670
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push 1
push 0x1a64e
call fcn.00464888
add esp, 8
mov eax, 0xffffffff
add esp, 0x664
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push ebx
mov edx, dword [esp + 0x65c]
push edx
push 0
push 0x8083f4
push 0x807270
mov dword [esp + 0x668], eax
call fcn.004293ac
mov eax, dword [esp + 0x668]
push 0
push 1
push 0x1965e
mov dword [esp + 0x674], eax
call fcn.00464858
mov eax, dword [esp + 0x674]
add esp, 0x20
jmp 0x44667a
mov eax, edx
imul eax, ebx
lea edx, [edx + eax + 4]
push edx
call fcn.0046776c
pop ecx
jmp 0x446676
push ebx
mov edx, eax
push edx
push 0x8083cc
push 0x807270
call fcn.0040c5ac
push 1
push 0x186aa
call fcn.004648b4
add esp, 0x18
xor eax, eax
jmp 0x44667a
push 1
push 0x186aa
call fcn.004648b4
add esp, 8
xor eax, eax
mov dword [esp + 0x654], eax
jmp 0x446601
push 1
push 0x186aa
call fcn.004648b4
add esp, 8
xor eax, eax
mov dword [esp + 0x654], eax
jmp 0x446601
xor ebx, ebx
jmp 0x4464fb
xor eax, eax
mov dword [esp + 0x654], eax
jmp 0x446601
push 1
push 0xdbbb4
call fcn.004648b4
add esp, 8
xor eax, eax
mov dword [esp + 0x654], eax
jmp 0x446601