Function at 0x40da30
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 dword [esp + 0x144], eax
mov dword [esp + 0x140], ecx
mov eax, dword [0x49ff08]
shl eax, 7
imul eax, eax, 0x3ea37014
xor eax, 0xb67034b4
cmp eax, 0xcdcf7b39
jle 0x40dad7
mov eax, 0x3d878480
mov cx, word [0x4a438c]
mov dx, cx
dec edx
mov si, dx
mov word [0x4a438c], si
movsx edx, cx
add edx, 0x78ea8143
xor edx, 0x59af957a
cmp eax, edx
je 0x40dad2
mov ax, word [0x4a3eb8]
mov cx, ax
inc ecx
mov ax, cx
mov word [0x4a3eb8], ax
or ecx, 0xda0a
mov ax, word [0x4a29b4]
mov dx, ax
add edx, ecx
mov ax, dx
mov word [0x4a29b4], ax
jmp 0x40dad7
mov eax, 0xf9dafb29
mov ecx, dword [0x4a0410]
inc ecx
mov dword [0x4a0410], ecx
mov dx, word [0x4a3f62]
movsx esi, dx
sar esi, 8
xor ecx, esi
cmp eax, ecx
jge 0x40db0f
mov eax, dword [0x4a0014]
or eax, 0xfeffefd1
mov dword [0x4a0014], eax
mov eax, dword [0x49bdf8]
not eax
mov ecx, dword [0x49a95c]
or ecx, eax
mov dword [0x49a95c], ecx
mov eax, dword [0x49fcdc]
and eax, 0xa7ae9773
mov dword [0x49fcdc], eax
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0x10
je 0x40dc03
mov eax, dword [0x4a1150]
mov ecx, eax
dec ecx
mov dword [0x4a1150], ecx
add eax, 0x186c7af2
mov dx, word [0x4a49a8]
mov cx, dx
xor ecx, eax
mov dx, cx
mov word [0x4a49a8], dx
mov eax, dword [0x49d4a4]
add eax, 0xdd92c16d
mov dword [0x49d4a4], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x144]
movzx esi, byte [ecx + eax*4]
shl esi, 0x18
movzx edi, byte [ecx + eax*4 + 1]
shl edi, 0x10
or esi, edi
movzx edi, byte [ecx + eax*4 + 2]
shl edi, 8
or esi, edi
movzx ecx, byte [ecx + eax*4 + 3]
or esi, ecx
mov dword [esp + eax*4 + 0x38], esi
mov dx, word [0x4a4e16]
movsx eax, dx
mov ecx, dword [0x49d7e4]
xor eax, ecx
xor eax, 0xd95a0626
mov dword [0x49d7e4], eax
mov eax, dword [0x49f250]
imul eax, eax, 0xf9d7cb85
mov dword [0x49f250], eax
mov eax, dword [0x49bc10]
add eax, 0x77983258
mov ecx, dword [0x4a0978]
sub ecx, eax
mov dword [0x4a0978], ecx
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x40db3b
mov ax, word [0x4a1bc2]
mov cx, ax
imul ecx, ecx, 0xb8a63faf
or ecx, 0x871
mov ax, word [0x4a1678]
mov dx, ax
sub edx, ecx
mov ax, dx
mov word [0x4a1678], ax
mov ecx, dword [esp + 0x140]
mov edx, dword [ecx + 0x28]
mov dword [esp + 0x34], edx
movsd xmm0, qword [ecx + 0x20]
movsd qword [esp + 0x2c], xmm0
movsd xmm0, qword [ecx + 0x18]
movsd qword [esp + 0x24], xmm0
movsd xmm0, qword [ecx + 8]
movsd xmm1, qword [ecx + 0x10]
movsd qword [esp + 0x1c], xmm1
movsd qword [esp + 0x14], xmm0
mov ecx, dword [0x49b724]
inc ecx
mov dword [0x49b724], ecx
xor ecx, 0x6ba9abe6
mov ax, word [0x4a1996]
movsx edx, ax
xor edx, 0xffffffff
and edx, 0xee74ab3e
cmp ecx, edx
jg 0x40dca6
mov eax, dword [0x499394]
mov ecx, dword [0x49ba64]
and ecx, eax
mov dword [0x49ba64], ecx
mov eax, esp
mov dword [eax + 4], 0x100
mov dword [eax], 0x7780
call fcn.0042bee0
mov dword [esp + 8], eax
mov eax, dword [0x49cfcc]
or eax, 0xd36dfb9a
mov dword [0x49cfcc], eax
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0x40
je 0x40e1a6
mov eax, dword [0x49c198]
not eax
imul eax, eax, 0xe22da63d
or eax, 0xc3f0f4a2
mov dword [0x49cef0], eax
cmp dword [esp + 0x10], 0xf
jle 0x40de1e
mov eax, dword [0x49b3e8]
or eax, 0x1bdb4dc3
mov ecx, dword [0x49bfc8]
mov edx, ecx
dec edx
mov dword [0x49bfc8], edx
cmp eax, ecx
jge 0x40dd74
mov eax, dword [0x49f9f0]
mov ecx, dword [0x49b2f0]
add ecx, 0x35940652
or ecx, 0x7323279e
cmp eax, ecx
jne 0x40dd5f
mov eax, dword [0x4a0e68]
or eax, 0xe204fed
mov ecx, dword [0x4a082c]
add ecx, eax
mov dword [0x4a082c], ecx
jmp 0x40dd6f
mov eax, dword [0x4a0200]
imul eax, eax, 0xf2ddedfe
mov dword [0x4a0200], eax
jmp 0x40dd74
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 + 0x30]
mov edx, ecx
rol edx, 0xf
mov esi, ecx
rol esi, 0xd
xor edx, esi
shr ecx, 0xa
xor edx, ecx
mov dword [esp + eax*4 + 0x38], edx
mov eax, dword [0x49c4dc]
mov ecx, dword [0x49fbf8]
imul eax, ecx
imul eax, eax, 0xcc66e200
mov dword [0x49fbf8], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 + 0x1c]
mov edx, dword [esp + eax*4 + 0x38]
add edx, ecx
mov dword [esp + eax*4 + 0x38], edx
mov dword [0x49e0ac], 0xd1956344
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 dword [0x49bed8], 0x12f94a38
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 di, word [0x4a48e0]
mov ax, di
add eax, 0xe7caab35
mov di, ax
mov word [0x4a48e0], di
mov eax, dword [0x49a09c]
add eax, 0xc467443b
mov ecx, dword [0x49f648]
shl ecx, 1
cmp eax, ecx
jle 0x40de67
mov eax, dword [0x49902c]
mov ecx, dword [0x49cd5c]
mov edx, ecx
dec edx
mov dword [0x49cd5c], edx
and eax, ecx
xor eax, 0x43e3421
mov ecx, dword [0x49c0d4]
add ecx, eax
mov dword [0x49c0d4], ecx
jmp 0x40de96
mov ax, word [0x4a1c0a]
mov cx, ax
mov edx, ecx
dec edx
mov ax, dx
mov word [0x4a1c0a], ax
mov ax, word [0x4a5834]
mov dx, ax
and ecx, edx
and ecx, 0x4f80
mov ax, cx
mov word [0x4a5834], ax
mov eax, 0x7fae8472
mov cx, word [0x4a1818]
movsx edx, cx
shr edx, 0xa
mov esi, dword [0x499c00]
xor edx, esi
mov cx, word [0x4a3496]
mov si, cx
and esi, edx
mov cx, si
mov word [0x4a3496], cx
mov edx, 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 edx, ebx
mov ebx, dword [esp + 0x2c]
xor edi, ebx
and esi, edi
xor ebx, esi
add edx, ebx
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov edi, dword [edi + esi*4]
add edx, edi
mov esi, dword [esp + esi*4 + 0x38]
add edx, esi
mov dword [esp + 0x13c], edx
mov cx, word [0x4a38d6]
mov dx, cx
add edx, 0xadfc5ba7
mov cx, dx
mov word [0x4a38d6], cx
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, edx
rol edi, 0x1e
mov ebx, edx
rol ebx, 0x13
xor edi, ebx
mov ebx, edx
rol ebx, 0xa
xor edi, ebx
mov ebx, edx
and ebx, esi
mov ebp, dword [esp + 0x1c]
or edx, esi
and ebp, edx
or ebx, ebp
add edi, ebx
mov dword [esp + 0x138], edi
mov edx, dword [0x49cf70]
not edx
mov cx, word [0x4a3804]
mov si, cx
inc esi
mov cx, si
mov word [0x4a3804], cx
movsx esi, cx
sub edx, esi
add edx, 0x916bf819
cmp eax, edx
jne 0x40dfa1
mov eax, dword [0x4a006c]
add eax, 0x7dddf017
mov ecx, dword [0x4a02f0]
and ecx, eax
mov dword [0x4a02f0], ecx
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x20]
add ecx, eax
mov dword [esp + 0x20], ecx
mov eax, dword [0x49cd6c]
mov ecx, dword [0x49cb94]
add eax, ecx
mov ecx, dword [0x4a0d7c]
cmp eax, ecx
jg 0x40dfdc
mov eax, dword [0x4a0ccc]
xor eax, 0xef7f2d0
mov dword [0x4a0ccc], eax
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
add eax, ecx
mov dword [esp + 0x30], eax
mov dx, word [0x4a139c]
mov ax, dx
inc eax
mov si, ax
mov word [0x4a139c], si
movsx eax, dx
xor eax, 0x91765f9e
mov ecx, dword [0x499e38]
sub ecx, eax
mov dword [0x499e38], ecx
mov eax, dword [0x499b04]
xor eax, 0xf58faffe
mov dword [0x4a06f0], eax
mov eax, dword [0x4a0be4]
mov ecx, eax
inc ecx
mov dword [0x4a0be4], ecx
or eax, 0x17e8
mov dx, word [0x4a1900]
mov cx, dx
add ecx, eax
mov dx, cx
mov word [0x4a1900], dx
mov dword [esp + 0xc], 8
cmp dword [esp + 0xc], 0
je 0x40e162
mov eax, dword [0x49f0a0]
or eax, 0x225710cc
mov dword [0x49f0a0], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + eax*4 + 0x10]
mov dword [esp + eax*4 + 0x14], ecx
mov dx, word [0x4a46bc]
movsx eax, dx
mov ecx, dword [0x49c2c8]
xor ecx, 0x2a37eed5
cmp eax, ecx
jg 0x40e0e6
mov ax, word [0x4a1a62]
movsx ecx, ax
sar ecx, 8
or ecx, 0x11fda50b
cmp ecx, 0xd1b8b045
jge 0x40e0e1
mov eax, dword [0x49d13c]
sar eax, 6
xor eax, 0x88903a14
mov ecx, dword [0x49a574]
or eax, ecx
mov ecx, dword [0x49a52c]
imul ecx, eax
mov dword [0x49a52c], ecx
jmp 0x40e14d
mov eax, dword [0x49cedc]
inc eax
mov dword [0x49cedc], eax
cmp eax, 0xf5084f59
jl 0x40e130
mov eax, dword [0x4a0f24]
shr eax, 5
mov cx, word [0x4a301e]
movsx edx, cx
shr edx, 6
imul eax, edx
mov cx, word [0x4a3250]
mov dx, cx
imul edx, eax
mov cx, dx
mov word [0x4a3250], cx
jmp 0x40e148
mov ax, word [0x4a177a]
mov cx, ax
imul ecx, ecx, 0x11fb4ddf
mov ax, cx
mov word [0x4a177a], ax
jmp 0x40e14d
jmp 0x40e152
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
mov dword [esp + 0xc], eax
jmp 0x40e05b
mov eax, dword [0x49e950]
shl eax, 5
xor eax, 0x58bc1ccb
mov dword [0x4a02e0], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], eax
mov cx, word [0x4a16a8]
mov ax, cx
imul eax, eax, 0x7ecd7ae3
mov cx, ax
mov word [0x4a16a8], cx
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x40dcd5
mov eax, 0x4c821508
mov ecx, dword [0x49f0a0]
imul ecx, ecx, 0x6db9bf1f
imul ecx, ecx, 0x8426d87a
cmp eax, ecx
jle 0x40e1f5
mov eax, dword [0x4a04b4]
xor eax, 0xffffffff
cmp eax, 0x5ecccdbd
je 0x40e1f0
mov ax, word [0x4a5534]
mov cx, ax
or ecx, 0x3863
mov ax, cx
mov word [0x4a5534], ax
jmp 0x40e1f5
mov eax, dword [esp + 8]
mov ecx, esp
mov dword [ecx + 4], eax
mov dword [ecx], 0x100
call fcn.00443120
mov dx, word [0x4a2554]
mov ax, dx
add eax, 0x8c4d9896
mov dx, ax
mov word [0x4a2554], dx
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 8
je 0x40e27c
mov eax, dword [0x4a008c]
xor eax, 0x888c2083
mov dword [0x4a008c], eax
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 eax, dword [0x49dcdc]
add eax, 0xe004e1cc
mov dword [0x49dcdc], eax
mov eax, dword [esp + 0x10]
add eax, 1
mov dword [esp + 0x10], eax
jmp 0x40e22a
mov eax, dword [0x49bcf0]
add eax, 0xfaf7fe5f
mov dword [0x49bcf0], eax
add esp, 0x148
pop esi
pop edi
pop ebx
pop ebp
ret