Function at 0x40aed0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2bc
push ebx
push esi
push edi
push 0x60
pop ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], 0x5e
mov dword [ebp - 0x10], 0x4a
mov dword [ebp - 0xc], 0xfffffefa
movups xmm1, xmmword [ebp - 0x18]
mov dword [ebp - 0x30], edx
lea edx, [ebx + 0x50]
mov dword [ebp - 0x34], ecx
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0xe
xor edi, edi
mov dword [ebp - 4], eax
mov ecx, edi
mov eax, 0x4018a0
inc ecx
lea eax, [eax + 2]
cmp ecx, 0x23b8
jl 0x40af48
cmp word [eax], di
jne 0x40af2f
mov esi, dword [0x44a0dc]
jmp 0x40af54
mov esi, dword [0x44a0dc]
xor esi, 0xadb84b96
xor esi, 0xff8724ac
mov dword [ebp - 0x5c], 0x50
sub esi, 0x64556f4c
mov dword [ebp - 0x58], 0x49
mov dword [ebp - 0x54], 0x18
mov eax, edi
mov dword [ebp - 0x50], 0xa
mov dword [ebp - 0x4c], 0xffffffe5
sub edx, dword [ebp + eax*4 - 0x5c]
inc eax
cmp eax, 5
jl 0x40af85
push 0x64
mov dword [ebp - 0x38], edx
mov ecx, edi
pop edx
mov dword [ebp - 0x24], edx
mov eax, edi
mov dword [ebp - 0x20], 0x5f
mov dword [ebp - 0x1c], 0xffffff3d
sub ecx, dword [ebp + eax*4 - 0x24]
inc eax
cmp eax, 3
jl 0x40afaa
push 5
mov dword [ebp - 0x44], ecx
mov eax, edi
mov dword [ebp - 0x5c], ebx
mov ecx, 0x180
mov dword [ebp - 0x58], 0x57
mov dword [ebp - 0x54], 0x31
mov dword [ebp - 0x50], 0x42
mov dword [ebp - 0x4c], 0x36
pop ebx
sub ecx, dword [ebp + eax*4 - 0x5c]
inc eax
cmp eax, ebx
jl 0x40afe0
mov dword [ebp - 0x18], edx
mov edx, 0x4f4
mov dword [ebp - 0x10], ebx
mov ebx, edi
mov dword [ebp - 0x14], 0x4e
mov dword [ebp - 0xc], 0xffffff56
movups xmm1, xmmword [ebp - 0x18]
push 0x61
mov dword [ebp - 0x3c], ecx
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
pop ecx
add eax, 3
mov dword [ebp - 0x40], eax
mov eax, 0x4017e0
add edx, ecx
inc eax
cmp edx, 0x1987
ja 0x40b049
movsx ecx, byte [eax]
test ecx, ecx
jne 0x40b035
jmp 0x40b06e
mov edx, 0x4018a0
call fcn.00404606
sub esp, 0xc
mov edx, 0x401788
mov ecx, 0x4018a0
sub esi, 0x1adab930
call fcn.004044b0
add esp, 0xc
or esi, 0xeaf4dee7
mov edx, 0x4018a0
imul eax, esi, 0x981a502a
mov dword [ebp - 8], eax
call fcn.00404606
mov dword [ebp - 0x24], 0x3d
mov eax, edi
mov dword [ebp - 0x20], 0x3c
mov dword [ebp - 0x1c], 0xffffff87
sub ebx, dword [ebp + eax*4 - 0x24]
inc eax
cmp eax, 3
jl 0x40b09e
push 0x5c
pop ecx
mov esi, ecx
mov dword [ebp - 0x2c], 0x25
mov dword [ebp - 0x28], 0x7f
mov eax, edi
add esi, dword [ebp + eax*4 - 0x2c]
inc eax
cmp eax, 2
jl 0x40b0bd
imul eax, dword [ebp - 8], 0x4eafb0f
xor edx, edx
mov dword [ebp - 0x18], ecx
xorps xmm1, xmm1
mov dword [ebp - 0x14], 0x27
mov dword [ebp - 0x10], 0x5b
mov dword [ebp - 0xc], 0xffffff22
mov dword [0x44a0dc], eax
mov eax, dword [ebp - 0x30]
div dword [ebp - 4]
xor edx, edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x30]
div dword [ebp - 0x38]
movups xmm0, xmmword [ebp - 0x18]
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd dword [ebp - 0x28], xmm1
cmp edx, dword [ebp - 0x44]
jbe 0x40b14f
push 0x4e
pop ecx
mov dword [ebp - 0x48], 0x36
mov eax, edi
mov dword [ebp - 0x44], 0xffffff8c
add ecx, dword [ebp + eax*4 - 0x48]
inc eax
cmp eax, 2
jl 0x40b13e
imul ecx, dword [ebp - 4]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x3c]
call fcn.00409bc2
mov dword [ebp - 8], eax
test eax, eax
jne 0x40b1f2
mov esi, dword [0x44a0dc]
push 0x1a
pop ebx
and esi, 0x63132a13
mov dword [ebp - 0x24], 0x54
mov dword [ebp - 0x20], 0x13
mov dword [ebp - 0x1c], 0xffffff7f
mov ecx, 0x401810
mov al, 0x6e
sub al, 0x30
cmp al, 9
ja 0x40b19c
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40b18d
jmp 0x40b1c4
mov ecx, 0x401810
mov al, 0x6e
sub al, 0x30
cmp al, 9
ja 0x40b1b2
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40b1a3
jmp 0x40b1b8
or esi, 0xa4e65b37
and esi, 0xa0b98a84
or esi, 0x800880
mov edx, 0x4018a0
add esi, 0x468e6ed4
call fcn.00404606
add ebx, dword [ebp + edi*4 - 0x24]
inc edi
cmp edi, 3
jl 0x40b186
xor ecx, ecx
mov dword [0x44a0dc], esi
call fcn.0041d467
mov eax, ebx
jmp 0x40b482
push dword [ebp - 0x40]
lea eax, [ebp - 0x58]
push dword [ebp + 0xc]
push eax
call fcn.004341ae
add esp, 0xc
jmp 0x40b223
mov ecx, ebx
call fcn.004064a5
mov ecx, ebx
mov byte [ebp + ebx - 0x2bc], al
call fcn.004063fb
mov byte [ebp + ebx - 0x1bc], al
inc ebx
cmp ebx, esi
jb 0x40b206
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x1bc]
mov ecx, dword [ebp + 8]
push eax
call fcn.0040870a
mov eax, dword [ebp - 0x28]
pop ecx
cmp eax, dword [ebp - 4]
jae 0x40b46b
push 0xc
pop eax
mov dword [ebp - 0x18], 0x37
mov dword [ebp - 0x14], 0x17
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], 0xffffffb5
movups xmm0, xmmword [ebp - 0x18]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], 0x1e
mov dword [ebp - 0x60], 0x46
mov dword [ebp - 0x20], 0x51
mov dword [ebp - 0x1c], 0xffffff96
mov dword [ebp - 0x74], 0x2c
mov dword [ebp - 0x70], 0xb
mov dword [ebp - 0x6c], 0x59
mov ecx, 0x80
mov eax, edi
sub ecx, dword [ebp + eax*4 - 0x68]
inc eax
cmp eax, 3
jl 0x40b2a0
mov dword [ebp - 0x3c], ecx
mov eax, edi
mov ecx, 0x90
mov dword [ebp - 0x88], 0x56
mov dword [ebp - 0x84], 0x50
mov dword [ebp - 0x80], 0xf
mov dword [ebp - 0x7c], 0x1c
mov dword [ebp - 0x78], 0xffffffaf
sub ecx, dword [ebp + eax*4 - 0x88]
inc eax
cmp eax, 5
jl 0x40b2dd
push 0x29
mov dword [ebp - 0x40], ecx
mov eax, edi
pop ecx
add ecx, dword [ebp + eax*4 - 0x20]
inc eax
cmp eax, 2
jl 0x40b2f2
mov esi, dword [0x44a0dc]
mov eax, edi
mov dword [ebp - 0x44], ecx
xor esi, 0xcf449b5d
mov ecx, 0x90
mov dword [ebp - 0x9c], 0x27
mov dword [ebp - 0x98], 0x4f
mov dword [ebp - 0x94], 0xe
mov dword [ebp - 0x90], 0x35
mov dword [ebp - 0x8c], 0xffffffc7
sub ecx, dword [ebp + eax*4 - 0x9c]
imul esi, esi, 0x4920e347
inc eax
cmp eax, 5
jl 0x40b344
mov dword [ebp - 0x38], ecx
mov ebx, 0xa0
mov eax, edi
sub ebx, dword [ebp + eax*4 - 0x74]
inc eax
cmp eax, 3
jl 0x40b361
push 0x6e
mov edx, 0xc6c
mov eax, 0x401810
pop ecx
add edx, ecx
inc eax
cmp edx, 0x237d
ja 0x40b392
movsx ecx, byte [eax]
test ecx, ecx
jne 0x40b378
add esi, 0xad72a171
jmp 0x40b3bd
sub esp, 0xc
mov edx, 0x401810
mov ecx, 0x4018a0
call fcn.004044b0
add esp, 0xc
mov edx, 0x4018a0
and esi, 0x4e31d089
call fcn.00404606
or esi, 0x163ea086
mov eax, dword [ebp - 0x3c]
movups xmm1, xmm0
imul eax, dword [ebp - 0x28]
or esi, 0x848352dc
push dword [ebp - 0x40]
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [0x44a0dc], esi
movups xmm0, xmm1
add eax, dword [ebp - 0x34]
psrldq xmm0, 4
paddd xmm1, xmm0
push eax
movd esi, xmm1
lea eax, [ebp - 0xbc]
push eax
inc esi
call fcn.004341ae
lea eax, [ebp - 0x2bc]
push eax
push dword [ebp - 8]
lea edx, [ebp - 0xac]
lea ecx, [ebp - 0xbc]
call fcn.0040a2fe
push dword [ebp - 0x44]
lea edx, [ebp - 0xac]
lea ecx, [ebp - 0x58]
call fcn.0040a6e3
push ebx
mov ebx, dword [ebp - 0x28]
lea eax, [ebp - 0xac]
push eax
mov eax, dword [ebp - 0x38]
imul eax, ebx
add eax, dword [ebp - 0x34]
push eax
call fcn.004341ae
push esi
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.004341ae
movups xmm0, xmmword [ebp - 0x18]
add esp, 0x30
inc ebx
mov dword [ebp - 0x28], ebx
cmp ebx, dword [ebp - 4]
jb 0x40b299
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
call fcn.0040a939
mov ecx, dword [ebp - 8]
mov esi, eax
call fcn.0041d467
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret