Function at 0x408160
Capabilities:
Encrypt data using chaskey
Hash data using murmur3

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x148
mov eax, dword [esp + 0x160]
mov ecx, dword [esp + 0x15c]
mov edx, 0x3d1b125a
mov dword [esp + 0x144], eax
mov dword [esp + 0x140], ecx
mov dword [0x4a1878], 0xe033748d
mov eax, dword [0x49c188]
add eax, 0x508b324c
mov ecx, dword [0x4a6c00]
and ecx, eax
mov dword [0x4a6c00], ecx
mov si, word [0x4b38fa]
movsx eax, si
cmp edx, eax
jg 0x4081fa
mov eax, dword [0x4a2754]
shl eax, 2
mov ecx, dword [0x4aba34]
sar ecx, 8
and ecx, 0x515415c8
or eax, ecx
cmp eax, 0x1f2a834
jne 0x4081f5
mov eax, dword [0x4a7fa8]
shl eax, 9
mov cx, ax
mov word [0x4b68b8], cx
jmp 0x4081fa
mov eax, 0x64eb8072
mov cx, word [0x4ae5e8]
mov dx, cx
inc edx
mov cx, dx
mov word [0x4ae5e8], cx
movsx edx, cx
or edx, 0x1d1b0afb
cmp eax, edx
jg 0x40823d
mov eax, dword [0x4a0378]
mov ecx, dword [0x49d528]
or ecx, eax
mov dword [0x49d528], ecx
jmp 0x408257
mov ax, word [0x4b4a4e]
movsx ecx, ax
sar ecx, 3
mov edx, dword [0x4aa460]
xor edx, ecx
mov dword [0x4aa460], edx
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0x10
je 0x40833d
mov eax, 0x8a68e392
mov ecx, dword [0x4a6bb4]
and ecx, 0x431dade8
mov dword [0x4a6bb4], ecx
mov dx, word [0x4b7270]
mov cx, dx
xor ecx, 0x684e
mov dx, cx
mov word [0x4b7270], dx
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x144]
movzx edi, byte [esi + ecx*4]
shl edi, 0x18
movzx ebx, byte [esi + ecx*4 + 1]
shl ebx, 0x10
or edi, ebx
movzx ebx, byte [esi + ecx*4 + 2]
shl ebx, 8
or edi, ebx
movzx esi, byte [esi + ecx*4 + 3]
or edi, esi
mov dword [esp + ecx*4 + 0x38], edi
mov ecx, dword [0x4a5f28]
add ecx, 0x97d80f2e
mov dword [0x4a5f28], ecx
mov ecx, dword [0x4a9c74]
shl ecx, 9
cmp eax, ecx
jg 0x40831e
mov ax, word [0x4af952]
mov cx, ax
mov edx, ecx
dec edx
mov ax, dx
mov word [0x4af952], ax
xor ecx, 0x9bca
mov ax, word [0x4b5df2]
mov dx, ax
and edx, ecx
mov ax, dx
mov word [0x4b5df2], ax
mov eax, dword [0x4a04f8]
and eax, 0xc0603060
mov dword [0x4a04f8], eax
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x40825f
mov eax, dword [0x4a9d14]
inc eax
mov dword [0x4a9d14], eax
mov ecx, dword [0x4a28b4]
imul eax, ecx
mov dx, word [0x4aeba8]
movsx ecx, dx
cmp eax, ecx
jg 0x408372
mov dword [0x4ac8a4], 0xdac42fe1
jmp 0x4083c7
mov eax, 0xfe750413
mov cx, word [0x4b68ba]
mov dx, cx
inc edx
mov cx, dx
mov word [0x4b68ba], cx
movsx edx, cx
sub edx, 0xb5c575d5
cmp eax, edx
jge 0x4083c2
mov ax, word [0x4b7a9c]
mov cx, ax
inc ecx
mov dx, cx
mov word [0x4b7a9c], dx
movsx ecx, ax
mov esi, dword [0x4a8f74]
or ecx, esi
mov dword [0x4ac774], ecx
jmp 0x4083c7
mov eax, dword [esp + 0x140]
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x34], ecx
movsd xmm0, qword [eax + 0x20]
movsd qword [esp + 0x2c], xmm0
movsd xmm0, qword [eax + 0x18]
movsd qword [esp + 0x24], xmm0
movsd xmm0, qword [eax + 8]
movsd xmm1, qword [eax + 0x10]
movsd qword [esp + 0x1c], xmm1
movsd qword [esp + 0x14], xmm0
mov dx, word [0x4b335a]
mov ax, dx
not eax
imul eax, eax, 0xf8f93b5d
mov ecx, 0x5707456c
sub ecx, eax
mov dx, word [0x4b0d8c]
mov ax, dx
or eax, ecx
mov dx, ax
mov word [0x4b0d8c], dx
mov eax, esp
mov dword [eax + 4], 0x100
mov dword [eax], 0x3440
call fcn.004489c0
mov dword [esp + 8], eax
mov eax, dword [0x4a8f80]
sar eax, 0xa
cmp eax, 0x4c87451d
jl 0x408465
mov dword [0x4a344c], 0x1e81735c
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0x40
je 0x408931
mov eax, dword [0x4a3a90]
mov ecx, eax
inc ecx
mov dword [0x4a3a90], ecx
mov ecx, dword [0x4a8b24]
lea eax, [ecx + eax + 1]
mov dword [0x4a8b24], eax
cmp dword [esp + 0x10], 0xf
jle 0x40867c
mov eax, dword [0x49e764]
inc eax
mov dword [0x49e764], eax
mov ecx, dword [0x49c57c]
xor ecx, 0xf77c5ca
cmp eax, ecx
je 0x4084cd
mov word [0x4af9a2], 0x31f7
jmp 0x4084e5
mov ax, word [0x4b3e12]
mov cx, ax
xor ecx, 0xce6b
mov ax, cx
mov word [0x4b3e12], ax
mov eax, 0x1c723ade
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + ecx*4 + 0x30]
mov esi, edx
rol esi, 0xf
mov edi, edx
rol edi, 0xd
xor esi, edi
shr edx, 0xa
xor esi, edx
mov dword [esp + ecx*4 + 0x38], esi
mov ecx, dword [0x49cd70]
shl ecx, 5
xor ecx, 0x5f45dcc1
or ecx, 0x22dabea7
cmp eax, ecx
jg 0x408538
mov eax, dword [0x4ad770]
and eax, 0xd4cef83f
mov dword [0x4ad770], eax
jmp 0x40857e
mov eax, 0x14f275b5
mov ecx, dword [0x4abda8]
cmp eax, ecx
jne 0x408579
mov eax, 0x3f784db6
mov ecx, dword [0x49f4e4]
imul ecx, ecx, 0x6bbbf550
or ecx, 0x334f209
cmp eax, ecx
jge 0x40856f
jmp 0x408574
jmp 0x408574
jmp 0x408579
jmp 0x40857e
mov eax, 0x32afd181
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + ecx*4 + 0x1c]
mov esi, dword [esp + ecx*4 + 0x38]
add esi, edx
mov dword [esp + ecx*4 + 0x38], esi
mov ecx, dword [0x4a00c0]
cmp eax, ecx
jg 0x4085d5
mov ax, word [0x4b06a8]
mov cx, ax
dec ecx
mov ax, cx
mov word [0x4b06a8], ax
imul ecx, ecx, 0xca4db004
mov ax, word [0x4b2e2a]
mov dx, ax
add edx, ecx
mov ax, dx
mov word [0x4b2e2a], ax
jmp 0x408616
mov eax, 0x4ddce346
mov cx, word [0x4ae490]
mov dx, cx
dec edx
mov si, dx
mov word [0x4ae490], si
movsx edx, cx
mov edi, dword [0x49bf14]
xor edx, edi
cmp eax, edx
jne 0x408611
mov eax, dword [0x4a4e24]
add eax, 0xdbd4228a
mov dword [0x4a4e24], eax
jmp 0x408616
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 - 4]
mov edx, ecx
rol edx, 0x19
mov esi, ecx
rol esi, 0xe
xor edx, esi
shr ecx, 3
xor edx, ecx
mov ecx, dword [esp + eax*4 + 0x38]
add ecx, edx
mov dword [esp + eax*4 + 0x38], ecx
mov eax, dword [0x49eb5c]
not eax
or eax, 0x7827
mov di, word [0x4b33ae]
mov cx, di
sub ecx, eax
mov di, cx
mov word [0x4b33ae], di
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 - 8]
mov edx, dword [esp + eax*4 + 0x38]
add edx, ecx
mov dword [esp + eax*4 + 0x38], edx
mov eax, dword [0x49cf98]
or eax, 0xbca912b1
mov dword [0x49cf98], eax
mov eax, 0xfbc55850
mov ecx, dword [0x4a9938]
imul ecx, ecx, 0x5f1e9248
mov dword [0x4a9938], ecx
mov dx, word [0x4af29c]
mov cx, dx
imul ecx, ecx, 0x5ea80ba4
mov dx, cx
mov word [0x4af29c], dx
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov ebx, esi
rol ebx, 0x1a
mov ebp, esi
rol ebp, 0x15
xor ebx, ebp
mov ebp, esi
rol ebp, 7
xor ebx, ebp
add ecx, ebx
mov ebx, dword [esp + 0x2c]
xor edi, ebx
and esi, edi
xor ebx, esi
add ecx, ebx
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov edi, dword [edi + esi*4]
add ecx, edi
mov esi, dword [esp + esi*4 + 0x38]
add ecx, esi
mov dword [esp + 0x13c], ecx
mov ecx, dword [0x4add10]
mov esi, ecx
inc esi
mov dword [0x4add10], esi
or ecx, 0xa321a6ea
cmp eax, ecx
jg 0x408732
mov eax, dword [0x4a0500]
mov ecx, eax
inc ecx
mov dword [0x4a0500], ecx
add eax, 0x28e99fc2
mov ecx, dword [0x4a2c00]
xor ecx, eax
mov dword [0x4a2c00], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, eax
rol edx, 0x1e
mov esi, eax
rol esi, 0x13
xor edx, esi
mov esi, eax
rol esi, 0xa
xor edx, esi
mov esi, eax
and esi, ecx
mov edi, dword [esp + 0x1c]
or eax, ecx
and edi, eax
or esi, edi
add edx, esi
mov dword [esp + 0x138], edx
mov eax, dword [0x4ad550]
sar eax, 0xa
add eax, 0x7bbf682
mov ecx, dword [0x4a9e18]
or ecx, eax
mov dword [0x4a9e18], ecx
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x20], ecx
mov eax, dword [0x4a3d30]
mov ecx, eax
inc ecx
mov dword [0x4a3d30], ecx
mov ecx, dword [0x4acf54]
add ecx, eax
mov dword [0x4acf54], ecx
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
add eax, ecx
mov dword [esp + 0x30], eax
mov eax, dword [0x4a98d8]
shr eax, 0xa
mov ecx, dword [0x4a5ab0]
not ecx
or eax, ecx
or eax, 0xb05e
mov bx, ax
mov word [0x4ae746], bx
mov eax, dword [0x4a1f1c]
mov ecx, dword [0x49b834]
mov edx, ecx
inc edx
mov dword [0x49b834], edx
add ecx, 0xfad4fd81
or eax, ecx
mov ecx, dword [0x4a36ec]
add ecx, eax
mov dword [0x4a36ec], ecx
mov eax, dword [0x4ace60]
xor eax, 0x14995dbf
mov ecx, dword [0x4aa000]
sar ecx, 7
add ecx, 0x5a9fcf0f
cmp eax, ecx
jl 0x408840
mov eax, dword [0x49c4fc]
and eax, 0x61cdeb5
mov dword [0x49c4fc], eax
jmp 0x408871
mov eax, 0x41e17319
mov ecx, dword [0x4abfec]
sar ecx, 5
add ecx, 0x3f822b02
cmp eax, ecx
jl 0x40886c
mov eax, dword [0x4a1910]
imul eax, eax, 0x2b5ea309
mov dword [0x4a1910], eax
jmp 0x408871
mov dword [esp + 0xc], 8
cmp dword [esp + 0xc], 0
je 0x4088ef
mov eax, 0xff59c380
mov ecx, dword [0x4a723c]
mov edx, dword [0x49c20c]
shl edx, 3
and ecx, edx
cmp eax, ecx
jne 0x4088ba
mov ax, word [0x4b2b9a]
mov cx, ax
or ecx, 0xf676
mov ax, cx
mov word [0x4b2b9a], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + eax*4 + 0x10]
mov dword [esp + eax*4 + 0x14], ecx
mov dx, word [0x4b7ad4]
mov ax, dx
and eax, 0x8000
mov dx, ax
mov word [0x4b7ad4], dx
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x408879
mov ax, word [0x4b3de0]
mov cx, ax
imul ecx, ecx, 0xbe7285ef
mov ax, cx
mov word [0x4b3de0], ax
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x14], ecx
mov ecx, dword [0x4a6044]
xor ecx, 0xf65a85a4
mov dword [0x4a31c4], ecx
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x40846d
mov ax, word [0x4b7b72]
mov cx, ax
add ecx, 0xa2f79a13
mov ax, cx
mov word [0x4b7b72], ax
mov ecx, dword [esp + 8]
mov edx, esp
mov dword [edx + 4], ecx
mov dword [edx], 0x100
call fcn.004073a0
mov ecx, dword [0x4acbe4]
add ecx, 0x5cac5e1c
mov dword [0x4acbe4], ecx
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 8
je 0x4089c6
mov dword [0x4a4e98], 0x8820088
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 + 0x14]
mov edx, dword [esp + 0x140]
mov esi, dword [edx + eax*4 + 8]
add esi, ecx
mov dword [edx + eax*4 + 8], esi
mov di, word [0x4b7d5c]
movsx eax, di
not eax
mov dword [0x4abfd4], eax
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x408977
mov eax, dword [0x4ad08c]
mov ecx, dword [0x4aceb4]
sub ecx, eax
mov dword [0x4aceb4], ecx
add esp, 0x148
pop esi
pop edi
pop ebx
pop ebp
ret