Function at 0x40671b
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x26c
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
xor ecx, ecx
push 3
mov dword [ebp - 0xc], edx
xor eax, eax
mov dword [ebp - 0x30], 0x45
mov dword [ebp - 0x2c], 0x1f
mov dword [ebp - 0x28], 0xffffff9c
pop ebx
sub ecx, dword [ebp + eax*4 - 0x30]
inc eax
cmp eax, ebx
jl 0x406749
push 0x3d
pop esi
mov dword [ebp - 0x40], 0x41
xorps xmm1, xmm1
mov dword [ebp - 0x3c], 0x2e
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], 0xffffff8c
movups xmm0, xmmword [ebp - 0x40]
push 0x3c
pop edi
psubd xmm1, xmm0
mov dword [ebp - 0x24], ecx
movaps xmm0, xmm1
movzx ecx, cl
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 4], ecx
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, edi
mov dword [ebp - 0xa4], eax
cmp ecx, eax
jge 0x407163
push 0x2f
pop edx
push 0x5f
pop eax
push 0x1a
mov dword [ebp - 0x188], eax
mov dword [ebp - 0x184], eax
pop eax
push 0x36
pop ecx
push 0x5d
mov dword [ebp - 0x1ac], eax
mov dword [ebp - 0x168], eax
pop eax
push 0x3b
mov dword [ebp - 0x13c], ecx
mov dword [ebp - 0xf8], ecx
pop ecx
mov dword [ebp - 0xcc], edx
mov dword [ebp - 0xc8], 0xffffff7d
mov dword [ebp - 0x12c], edi
mov dword [ebp - 0x128], 0x4c
mov dword [ebp - 0x124], 0x19
mov dword [ebp - 0x120], 0xffffff2a
mov dword [ebp - 0xd4], 0x30
mov dword [ebp - 0xd0], 0xffffffb9
mov dword [ebp - 0x18c], 0xd
mov dword [ebp - 0x180], 0xfffffed3
mov dword [ebp - 0x19c], 0x5d
mov dword [ebp - 0x198], 0x48
mov dword [ebp - 0x194], 7
mov dword [ebp - 0x190], 0xffffff3b
mov dword [ebp - 0x1a8], 0x44
mov dword [ebp - 0x1a4], 0x59
mov dword [ebp - 0x1a0], 0xffffff57
mov dword [ebp - 0x1bc], 0x1d
mov dword [ebp - 0x1b8], 0x5c
mov dword [ebp - 0x1b4], 0x18
mov dword [ebp - 0x1b0], 0xffffff21
mov dword [ebp - 0x138], 0x47
mov dword [ebp - 0x134], 0xa
mov dword [ebp - 0x130], 0xffffff85
mov dword [ebp - 0xb4], 4
mov dword [ebp - 0xb0], 0xffffffab
mov dword [ebp - 0x14c], 0x35
mov dword [ebp - 0x148], 0x60
mov dword [ebp - 0x144], 0x16
mov dword [ebp - 0x140], 0xffffff75
mov dword [ebp - 0xe0], 0x4c
mov dword [ebp - 0xdc], 0x59
mov dword [ebp - 0xd8], 0xffffff14
mov dword [ebp - 0x15c], 0xa
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x154], 0x56
mov dword [ebp - 0x150], 0xffffff1c
mov dword [ebp - 0x16c], 0x48
mov dword [ebp - 0x164], 0x63
mov dword [ebp - 0x160], 0xffffff5b
mov dword [ebp - 0x1cc], 0x15
mov dword [ebp - 0x1c8], 0xc
mov dword [ebp - 0x1c4], esi
mov dword [ebp - 0x1c0], 0xffffff76
mov dword [ebp - 0xec], 0x5a
mov dword [ebp - 0xe8], edx
mov dword [ebp - 0xe4], 0xffffff9f
mov dword [ebp - 0x17c], 0x62
mov dword [ebp - 0x178], 0x10
mov dword [ebp - 0x174], 0x13
mov dword [ebp - 0x170], 0xffffffaf
mov dword [ebp - 0xbc], 0xe
mov dword [ebp - 0xb8], 0xffffffb7
mov dword [ebp - 0xc4], 0x21
mov dword [ebp - 0xc0], 0xffffffc9
mov dword [ebp - 0xf4], 0x4d
mov dword [ebp - 0xf0], 0xffffff5c
mov dword [ebp - 0x104], eax
mov dword [ebp - 0x100], 0x30
mov dword [ebp - 0xfc], 0xffffff51
mov dword [ebp - 0x110], 0x26
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0x108], 0xffffff97
movups xmm2, xmmword [ebp - 0x12c]
mov edi, dword [0x44a030]
movups xmm3, xmmword [ebp - 0x13c]
mov dword [ebp - 0x118], eax
movzx eax, byte [ebp + 8]
movups xmm4, xmmword [ebp - 0x14c]
push 5
movups xmm6, xmmword [ebp - 0x15c]
mov dword [ebp - 0x11c], 0xd
movups xmm7, xmmword [ebp - 0x16c]
mov dword [ebp - 0x114], 0xffffff59
movups xmm5, xmmword [ebp - 0x17c]
mov dword [ebp - 0x2c], 0x57
mov dword [ebp - 0x28], 0xffffff61
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], 0xffffff6b
mov dword [ebp - 0x1c], eax
pop edx
push 0x58
pop ecx
lea esi, [edi - 0x5ef04b86]
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xcc]
inc eax
cmp eax, 2
jl 0x406aba
push 0x56
mov dword [ebp - 0x50], ecx
and esi, 0xdbe06466
pop edi
xor ecx, ecx
mov dword [ebp - 0x1e0], 0x59
mov dword [ebp - 0x1dc], 0x21
xor eax, eax
mov dword [ebp - 0x1d8], edi
mov dword [ebp - 0x1d4], 0x18
mov dword [ebp - 0x1d0], 0xffffff18
sub ecx, dword [ebp + eax*4 - 0x1e0]
inc eax
cmp eax, edx
jl 0x406b05
movups xmm1, xmm2
mov dword [ebp - 0x14], ecx
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push 0x17
pop ecx
add eax, 0x39
mov dword [ebp - 0x4c], eax
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xd4]
inc eax
cmp eax, 2
jl 0x406b3e
push 0x20
mov dword [ebp - 0x10], ecx
xor eax, eax
pop ecx
mov dword [ebp - 0x1f4], 0x3b
mov dword [ebp - 0x1f0], 0x1c
mov dword [ebp - 0x1ec], 0x4e
mov dword [ebp - 0x1e8], 1
mov dword [ebp - 0x1e4], 0xffffff76
sub ecx, dword [ebp + eax*4 - 0x1f4]
inc eax
cmp eax, edx
jl 0x406b85
push 0x1c
mov dword [ebp - 0xac], ecx
xor eax, eax
pop ecx
mov dword [ebp - 0x208], 0x2a
mov dword [ebp - 0x204], 0x5d
mov dword [ebp - 0x200], 0x48
mov dword [ebp - 0x1fc], 0xa
mov dword [ebp - 0x1f8], 0xffffff3f
sub ecx, dword [ebp + eax*4 - 0x208]
inc eax
cmp eax, edx
jl 0x406bce
push 0x28
mov dword [ebp - 0xa8], ecx
xor eax, eax
pop ecx
mov dword [ebp - 0x21c], 0x5c
mov dword [ebp - 0x218], 0x46
mov dword [ebp - 0x214], edx
mov dword [ebp - 0x210], 0x51
mov dword [ebp - 0x20c], 0xffffff2c
sub ecx, dword [ebp + eax*4 - 0x21c]
inc eax
cmp eax, edx
jl 0x406c13
movups xmm1, xmmword [ebp - 0x18c]
mov edx, 0x401800
mov dword [ebp - 0x44], ecx
mov ecx, edx
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
movups xmm1, xmmword [ebp - 0x19c]
add eax, 0x62
movaps xmm0, xmm1
mov dword [ebp - 0x48], eax
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movups xmm0, xmmword [ebp - 0x1ac]
movd eax, xmm1
xorps xmm1, xmm1
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
add eax, 0x1d
paddd xmm1, xmm0
mov dword [ebp - 0x6c], eax
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
movups xmm1, xmmword [ebp - 0x1bc]
add eax, 0xf
movaps xmm0, xmm1
mov dword [ebp - 0x68], eax
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
add eax, 0x52
mov dword [ebp - 0x64], eax
mov al, 0x46
sub al, 0x30
cmp al, 9
ja 0x406ce5
inc ecx
mov al, byte [ecx]
test al, al
jne 0x406cd6
jmp 0x406cf0
lea eax, [esi - 0x4044ace2]
mov dword [0x44a1cc], eax
sub esp, 0xc
mov ecx, 0x4012e0
sub esi, 0x63511d45
call fcn.004044b0
xorps xmm1, xmm1
add esp, 0xc
psubd xmm1, xmm3
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ecx, xmm1
push 0x55
add ecx, 0xd
xor eax, eax
mov dword [ebp - 0x18], ecx
pop ecx
add ecx, dword [ebp + eax*4 - 0xb4]
inc eax
cmp eax, 2
jl 0x406d34
mov dword [ebp - 0x58], ecx
xorps xmm1, xmm1
psubd xmm1, xmm4
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push 0x4b
pop ecx
add eax, 0x24
mov dword [ebp - 0x54], eax
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xe0]
inc eax
cmp eax, ebx
jl 0x406d72
push 0xb
mov dword [ebp - 0x5c], ecx
xor eax, eax
pop ecx
push 5
mov dword [ebp - 0x230], 0x28
mov dword [ebp - 0x22c], 0x39
mov dword [ebp - 0x228], 0x1d
mov dword [ebp - 0x224], edi
mov dword [ebp - 0x220], 0xffffff36
pop edx
sub ecx, dword [ebp + eax*4 - 0x230]
inc eax
cmp eax, edx
jl 0x406db7
push 0x30
mov dword [ebp - 0x60], ecx
xor eax, eax
pop ecx
mov dword [ebp - 0x244], 0x28
mov dword [ebp - 0x240], 0x52
mov dword [ebp - 0x23c], 0x20
mov dword [ebp - 0x238], 0x35
mov dword [ebp - 0x234], 0xffffff5d
sub ecx, dword [ebp + eax*4 - 0x244]
inc eax
cmp eax, edx
jl 0x406dfd
movups xmm1, xmm6
mov dword [ebp - 0x88], ecx
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
xorps xmm1, xmm1
psubd xmm1, xmm7
movaps xmm0, xmm1
psrldq xmm0, 8
add eax, 0x4a
paddd xmm1, xmm0
mov dword [ebp - 0x84], eax
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
movups xmm1, xmmword [ebp - 0x1cc]
push 0x2c
add eax, 0x24
movaps xmm0, xmm1
mov dword [ebp - 0x80], eax
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ecx, xmm1
add ecx, 0x2e
xor eax, eax
mov dword [ebp - 0x20], ecx
pop ecx
sub ecx, dword [ebp + eax*4 - 0xec]
inc eax
cmp eax, ebx
jl 0x406e8e
xorps xmm1, xmm1
mov dword [ebp - 0x74], ecx
psubd xmm1, xmm5
imul edi, esi, 0xc12f4300
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd eax, xmm1
push 0x3f
pop ecx
add eax, 0x38
mov dword [ebp - 0x70], eax
xor eax, eax
add ecx, dword [ebp + eax*4 - 0xbc]
inc eax
cmp eax, 2
jl 0x406ed1
push 0x18
mov dword [ebp - 0x78], ecx
xor eax, eax
pop ecx
add ecx, dword [ebp + eax*4 - 0xc4]
inc eax
cmp eax, 2
jl 0x406ee6
push 0x25
mov dword [ebp - 0x7c], ecx
xor eax, eax
pop ecx
add ecx, dword [ebp + eax*4 - 0xf8]
inc eax
cmp eax, ebx
jl 0x406efb
push 0x25
mov dword [ebp - 0xa0], ecx
xor eax, eax
pop ecx
add ecx, dword [ebp + eax*4 - 0x104]
inc eax
cmp eax, ebx
jl 0x406f12
push 0xc
mov dword [ebp - 0x9c], ecx
and edi, 0xeeb888b3
pop ecx
xor eax, eax
add ecx, dword [ebp + eax*4 - 0x110]
inc eax
cmp eax, ebx
jl 0x406f2f
push 0x40
mov dword [ebp - 0x98], ecx
add edi, 0x8542963e
pop ecx
xor eax, eax
add ecx, dword [ebp + eax*4 - 0x11c]
inc eax
cmp eax, ebx
jl 0x406f4c
push 0x4c
mov dword [ebp - 0x94], ecx
xor eax, eax
pop ecx
add ecx, dword [ebp + eax*4 - 0x2c]
inc eax
cmp eax, 2
jl 0x406f63
lea eax, [edi - 0x4425b53f]
mov dword [ebp - 0x90], ecx
push 0x30
mov dword [0x44a084], eax
xor eax, eax
pop ebx
mov dword [ebp - 0x258], 0x15
mov dword [ebp - 0x254], 0x5b
mov dword [ebp - 0x250], 0x22
mov dword [ebp - 0x24c], 0x55
mov dword [ebp - 0x248], 0xffffff45
sub ebx, dword [ebp + eax*4 - 0x258]
inc eax
cmp eax, edx
jl 0x406fb5
push 0x3c
mov dword [ebp - 0x8c], ebx
xor eax, eax
pop esi
mov dword [ebp - 0x26c], 0x25
mov dword [ebp - 0x268], 0x43
mov dword [ebp - 0x264], 0x11
mov dword [ebp - 0x260], 0x2a
mov dword [ebp - 0x25c], 0xffffff95
sub esi, dword [ebp + eax*4 - 0x26c]
inc eax
cmp eax, edx
jl 0x406ffe
push 0x5a
pop edx
xor eax, eax
add edx, dword [ebp + eax*4 - 0x3c]
inc eax
cmp eax, 3
jl 0x40700f
mov eax, dword [ebp - 0x1c]
sub edi, 0x43647ff3
imul eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 4]
imul ecx, dword [ebp - 0x44]
mov ebx, dword [ebp - 8]
mov dword [0x44a030], edi
imul eax, dword [ebp - 0xac]
mov edi, dword [ebp - 8]
add eax, dword [ebp - 0x48]
add ecx, eax
mov eax, dword [ebp - 0x10]
imul eax, dword [ebp - 0x4c]
add eax, dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
mov al, byte [ecx + eax]
mov ecx, dword [ebp - 0x10]
xor al, byte [ecx + edi]
mov ecx, dword [ebp - 0x14]
imul ecx, dword [ebp - 0x50]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 4]
mov edi, dword [ebp - 0x14]
add edi, ecx
imul ecx, dword [ebp - 0x5c]
mov byte [edi + ebx], al
mov edi, ebx
mov eax, dword [ebp - 0x1c]
imul eax, dword [ebp - 0x54]
imul eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x60]
add ecx, eax
mov eax, dword [ebp - 0x18]
imul eax, dword [ebp - 0x64]
add eax, dword [ebp - 4]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc]
mov al, byte [ecx + eax]
mov ecx, dword [ebp - 0x18]
xor al, byte [ecx + edi]
mov edi, dword [ebp - 0x68]
imul edi, dword [ebp - 0x6c]
mov ecx, dword [ebp - 4]
add edi, ecx
imul ecx, dword [ebp - 0x78]
mov byte [edi + ebx], al
mov edi, ebx
mov eax, dword [ebp - 0x1c]
imul eax, dword [ebp - 0x70]
mov ebx, dword [ebp - 4]
imul eax, dword [ebp - 0x74]
add eax, dword [ebp - 0x7c]
add ecx, eax
mov eax, dword [ebp - 0x20]
imul eax, dword [ebp - 0x80]
add eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0xc]
mov al, byte [ecx + eax]
mov ecx, dword [ebp - 0x20]
xor al, byte [ecx + edi]
mov ecx, dword [ebp - 0x84]
imul ecx, dword [ebp - 0x88]
add ecx, dword [ebp - 4]
mov byte [ecx + edi], al
mov ecx, ebx
mov eax, dword [ebp - 0x1c]
imul eax, dword [ebp - 0x8c]
imul ecx, esi
imul eax, dword [ebp - 0x90]
add eax, edx
mov edx, dword [ebp - 0x94]
imul edx, dword [ebp - 0x98]
add ecx, eax
mov eax, dword [ebp - 0xc]
mov al, byte [ecx + eax]
add edx, ebx
mov ecx, dword [ebp - 0x9c]
xor al, byte [edx + edi]
imul ecx, dword [ebp - 0xa0]
add ecx, ebx
push 3
pop ebx
push 5
mov byte [ecx + edi], al
mov ecx, dword [ebp - 0x24]
mov edi, dword [0x44a030]
inc cl
movzx eax, cl
mov dword [ebp - 0x24], ecx
mov dword [ebp - 4], eax
pop edx
cmp eax, dword [ebp - 0xa4]
jl 0x406aaf
pop edi
pop esi
pop ebx
leave
ret