Function at 0x1002ae20
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100d01bc
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x1011b07c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x78], ebx
mov eax, dword [ebx + 0x28]
test eax, eax
js 0x1002b503
lea eax, [ebp - 0x53]
mov word [ebp - 0x54], 0x3a
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x53], 0
call fcn.10007870
mov dword [ebp - 4], 0
mov eax, 0xc22e4507
mov edi, dword [ebx + 0x28]
sub esp, 8
imul edi
add edx, edi
sar edx, 0x10
mov eax, edx
shr eax, 0x1f
add eax, edx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x40], xmm0
fld qword [ebp - 0x40]
fstp qword [esp]
call fcn.100cdd10
add esp, 8
fstp qword [ebp - 0x40]
movsd xmm0, qword [ebp - 0x40]
call fcn.1004ea11
mov esi, eax
mov edx, edi
imul ecx, esi, 0x15180
mov eax, 0x91a2b3c5
sub esp, 8
mov dword [ebp - 0x34], esi
sub edx, ecx
mov ecx, 0x18
mul edx
shr edx, 0xb
mov eax, edx
xor edx, edx
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1010db80]
movsd qword [ebp - 0x40], xmm0
fld qword [ebp - 0x40]
fstp qword [esp]
call fcn.100cdd10
add esp, 8
fstp qword [ebp - 0x40]
movsd xmm0, qword [ebp - 0x40]
call fcn.1004ea11
mov ebx, eax
lea ecx, [esi + esi*2]
mov edx, edi
mov dword [ebp - 0x74], ebx
mov eax, 0x88888889
sub esp, 8
lea esi, [ebx + ecx*8]
imul ecx, esi, 0xe10
sub edx, ecx
mov ecx, 0x3c
mul edx
shr edx, 5
mov eax, edx
xor edx, edx
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1010db80]
movsd qword [ebp - 0x40], xmm0
fld qword [ebp - 0x40]
fstp qword [esp]
call fcn.100cdd10
add esp, 8
fstp qword [ebp - 0x40]
movsd xmm0, qword [ebp - 0x40]
call fcn.1004ea11
mov dword [ebp - 0x50], eax
mov ecx, esi
shl ecx, 4
sub esp, 8
sub ecx, esi
lea ecx, [eax + ecx*4]
mov edx, ecx
shl edx, 4
sub edx, ecx
mov ecx, 0x3c
shl edx, 2
sub edi, edx
xor edx, edx
mov eax, edi
div ecx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1010db80]
movsd qword [ebp - 0x40], xmm0
fld qword [ebp - 0x40]
fstp qword [esp]
call fcn.100cdd10
add esp, 8
fstp qword [ebp - 0x40]
movsd xmm0, qword [ebp - 0x40]
call fcn.1004ea11
mov edx, dword [ebp - 0x34]
mov edi, eax
test edx, edx
je 0x1002b0a7
cmp edx, 0xa
jae 0x1002affb
mov al, 0x24
mov byte [ebp - 0x32], 0
mov cl, 0x14
mov byte [ebp - 0x34], al
xor cl, al
mov byte [ebp - 0x32], 0
mov byte [ebp - 0x33], cl
lea eax, [ebp - 0x33]
jmp 0x1002b008
mov word [ebp - 0x30], 0x63
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edx
push eax
mov dword [ebp - 0x40], 0x6c3a6c49
xor esi, esi
mov word [ebp - 0x3c], 0x733c
mov byte [ebp - 0x3a], 0
nop dword [eax]
cmp esi, 6
jb 0x1002b03c
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x3f]
xor bl, byte [ebp - 0x40]
cmp esi, 6
jb 0x1002b05f
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x3f], bl
inc esi
cmp esi, 5
jb 0x1002b020
sub esp, 0x1c
mov byte [ebp - 0x3a], 0
lea eax, [ebp - 0x3f]
mov ecx, esp
push eax
call fcn.10007870
lea eax, [ebp - 0x70]
push eax
call fcn.10006ae0
add esp, 0x28
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call fcn.1000c970
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0
call fcn.10006c10
mov ebx, dword [ebp - 0x74]
test ebx, ebx
je 0x1002b176
cmp ebx, 0xa
jae 0x1002b0cd
mov cl, 0x28
mov byte [ebp - 0x32], 0
mov al, 0x18
mov byte [ebp - 0x34], cl
xor al, cl
mov byte [ebp - 0x32], 0
mov byte [ebp - 0x33], al
lea eax, [ebp - 0x33]
jmp 0x1002b0da
mov word [ebp - 0x30], 0xd
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push ebx
push eax
mov dword [ebp - 0x40], 0x7e287e5b
xor esi, esi
mov word [ebp - 0x3c], 0x612e
mov byte [ebp - 0x3a], 0
nop
cmp esi, 6
jb 0x1002b10c
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x3f]
xor bl, byte [ebp - 0x40]
cmp esi, 6
jb 0x1002b12f
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x3f], bl
inc esi
cmp esi, 5
jb 0x1002b0f0
sub esp, 0x1c
mov byte [ebp - 0x3a], 0
lea eax, [ebp - 0x3f]
mov ecx, esp
push eax
call fcn.10007870
lea eax, [ebp - 0x70]
push eax
call fcn.10006ae0
add esp, 0x28
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 2
call fcn.1000c970
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0
call fcn.10006c10
jmp 0x1002b1dc
mov dword [ebp - 0x48], 0x18121222
xor esi, esi
mov byte [ebp - 0x44], 0
cmp esi, 4
jb 0x1002b19f
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x47]
xor bl, byte [ebp - 0x48]
cmp esi, 4
jb 0x1002b1c2
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x47], bl
inc esi
cmp esi, 3
jb 0x1002b183
lea eax, [ebp - 0x47]
mov byte [ebp - 0x44], 0
push eax
lea ecx, [ebp - 0x2c]
call fcn.1000ae10
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x1002b2ad
cmp ecx, 0xa
jae 0x1002b205
mov dl, 0x7e
mov byte [ebp - 0x32], 0
mov al, 0x4e
mov byte [ebp - 0x34], dl
xor al, dl
mov byte [ebp - 0x32], 0
mov byte [ebp - 0x33], al
lea eax, [ebp - 0x33]
jmp 0x1002b212
mov word [ebp - 0x30], 0x6d
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push ecx
push eax
mov dword [ebp - 0x40], 0x63356346
xor esi, esi
mov word [ebp - 0x3c], 0x7c33
mov byte [ebp - 0x3a], 0
cmp esi, 6
jb 0x1002b243
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x3f]
xor bl, byte [ebp - 0x40]
cmp esi, 6
jb 0x1002b266
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x3f], bl
inc esi
cmp esi, 5
jb 0x1002b227
sub esp, 0x1c
mov byte [ebp - 0x3a], 0
lea eax, [ebp - 0x3f]
mov ecx, esp
push eax
call fcn.10007870
lea eax, [ebp - 0x70]
push eax
call fcn.10006ae0
add esp, 0x28
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 3
call fcn.1000c970
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0
call fcn.10006c10
jmp 0x1002b319
mov dword [ebp - 0x48], 0xc060636
xor esi, esi
mov byte [ebp - 0x44], 0
nop word [eax + eax]
cmp esi, 4
jb 0x1002b2dc
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x47]
xor bl, byte [ebp - 0x48]
cmp esi, 4
jb 0x1002b2ff
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x47], bl
inc esi
cmp esi, 3
jb 0x1002b2c0
lea eax, [ebp - 0x47]
mov byte [ebp - 0x44], 0
push eax
lea ecx, [ebp - 0x2c]
call fcn.1000ae10
test edi, edi
je 0x1002b3e6
cmp edi, 0xa
jae 0x1002b33f
mov cl, 0x6c
mov byte [ebp - 0x32], 0
mov al, 0x5c
mov byte [ebp - 0x34], cl
xor al, cl
mov byte [ebp - 0x32], 0
mov byte [ebp - 0x33], al
lea eax, [ebp - 0x33]
jmp 0x1002b34c
mov word [ebp - 0x30], 0x36
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edi
push eax
mov dword [ebp - 0x50], 0x5b0d5b7e
xor esi, esi
mov word [ebp - 0x4c], 0xb
nop dword [eax]
cmp esi, 5
jb 0x1002b37c
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x4f]
xor bl, byte [ebp - 0x50]
cmp esi, 5
jb 0x1002b39f
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x4f], bl
inc esi
cmp esi, 4
jb 0x1002b360
sub esp, 0x1c
mov byte [ebp - 0x4b], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10007870
lea eax, [ebp - 0x70]
push eax
call fcn.10006ae0
add esp, 0x28
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 4
call fcn.1000c970
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0
call fcn.10006c10
jmp 0x1002b449
mov dword [ebp - 0x34], 0x797949
xor esi, esi
nop
cmp esi, 3
jb 0x1002b40c
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov bl, byte [ebp + esi - 0x33]
xor bl, byte [ebp - 0x34]
cmp esi, 3
jb 0x1002b42f
push 0x90
push str.C:Program_Files__x86_Microsoft_Visual_Studio_14.0VCinclude_array
push str.array_subscript_out_of_range
call fcn.1003dac0
add esp, 0xc
mov byte [ebp + esi - 0x33], bl
inc esi
cmp esi, 2
jb 0x1002b3f0
lea eax, [ebp - 0x33]
mov byte [ebp - 0x31], 0
push eax
lea ecx, [ebp - 0x2c]
call fcn.1000ae10
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10007870
mov eax, dword [ebp - 0x78]
mov byte [ebp - 4], 5
mov esi, dword [eax + 0x18]
test esi, esi
je 0x1002b484
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1002b484
lea eax, [ebp - 0x70]
mov ecx, esi
push eax
call dword [0x1010a820]
mov eax, dword [ebp - 0x58]
cmp eax, 0x10
jb 0x1002b49b
inc eax
push 1
push eax
push dword [ebp - 0x6c]
call fcn.10007470
add esp, 0xc
mov dword [ebp - 0x58], 0xf
mov dword [ebp - 0x5c], 0
mov byte [ebp - 0x6c], 0
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 6
call fcn.10006f50
lea ecx, [ebp - 0x70]
call fcn.10006df0
mov eax, dword [ebp - 0x14]
cmp eax, 0x10
jb 0x1002b4d8
inc eax
push 1
push eax
push dword [ebp - 0x28]
call fcn.10007470
add esp, 0xc
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x28], 0
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 7
call fcn.10006f50
lea ecx, [ebp - 0x2c]
call fcn.10006df0
jmp 0x1002b52c
jg 0x1002b52c
mov esi, dword [ebx]
mov byte [ebx + 0x2c], 0
mov dword [ebx + 0x28], 0
test esi, esi
je 0x1002b52c
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1002b52c
push eax
mov ecx, esi
call dword [0x1010a7f4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1004d370
mov esp, ebp
pop ebp
ret