Function at 0x1001efa9
Capabilities:
Authenticate hmac

Disassembly:
push 0xdc
mov eax, 0x10073aba
call fcn.1003bfa0
mov ebx, ecx
mov eax, dword [ebx + 0x158]
cmp eax, dword [ebx + 0x15c]
je 0x1001f5ab
mov eax, dword [ebx + 0x144]
shl eax, 2
mov dword [ebp - 0xd0], eax
lea ecx, [eax - 4]
mov dword [ebp - 0xa0], ecx
cmp ecx, eax
jge 0x1001f5ab
imul esi, ecx, 0x68
lea edi, [ebx + 0x10]
push 0x18
pop eax
mov dword [ebp - 0xc4], 0x68
mov dword [ebp - 0xa4], esi
add edi, eax
mov eax, dword [ebx + 0x15c]
sub eax, dword [ebx + 0x158]
cdq
idiv dword [ebp - 0xc4]
mov dword [ebp - 0xcc], edi
dec eax
cmp ecx, eax
jg 0x1001f5ab
mov eax, dword [ebx + 0x158]
xor edx, edx
mov cl, byte [esi + eax + 0x62]
cmp cl, 2
jne 0x1001f534
cmp dword [esi + eax + 0x1c], edx
jle 0x1001f4b7
lea eax, [ebp - 0x43]
mov word [ebp - 0x44], 0x36
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x43], dl
call fcn.10004179
and dword [ebp - 4], 0
mov ecx, 0x15180
mov eax, dword [ebx + 0x158]
push ecx
push ecx
mov edi, dword [esi + eax + 0x1c]
mov eax, edi
cdq
idiv ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x9c], xmm0
fld qword [ebp - 0x9c]
fstp qword [esp]
call fcn.10071e10
pop ecx
fstp qword [ebp - 0x9c]
movsd xmm0, qword [ebp - 0x9c]
pop ecx
call fcn.10071b71
mov esi, eax
xor edx, edx
imul ecx, esi, 0x15180
mov eax, edi
push 0x18
mov dword [ebp - 0xa8], esi
sub eax, ecx
mov ecx, 0xe10
div ecx
pop ecx
xor edx, edx
div ecx
mov ecx, edx
call fcn.100185b5
call fcn.10071b71
imul esi, esi, 0x18
xor edx, edx
mov dword [ebp - 0x98], eax
push 0x3c
add esi, eax
mov eax, edi
imul ecx, esi, 0xe10
sub eax, ecx
pop ecx
div ecx
xor edx, edx
div ecx
mov ecx, edx
call fcn.100185b5
call fcn.10071b71
imul ecx, esi, 0x3c
xor edx, edx
mov esi, eax
mov dword [ebp - 0xc8], eax
push 0x3c
add ecx, esi
imul ecx, ecx, 0x3c
sub edi, ecx
pop ecx
mov eax, edi
div ecx
mov ecx, edx
call fcn.100185b5
call fcn.10071b71
mov ecx, dword [ebp - 0xa8]
mov edi, eax
test ecx, ecx
je 0x1001f1cd
xor edx, edx
cmp ecx, 0xa
jae 0x1001f155
mov al, 0x10
mov byte [ebp - 0x78], 0x20
xor al, 0x20
mov byte [ebp - 0x76], dl
mov byte [ebp - 0x77], al
lea eax, [ebp - 0x77]
jmp 0x1001f161
mov word [ebp - 0x48], 0x1b
lea eax, [ebp - 0x47]
mov byte [ebp - 0x47], dl
push ecx
push eax
mov cl, 0x2d
mov dword [ebp - 0x64], 0x85e082d
mov word [ebp - 0x60], 0x1758
mov byte [ebp - 0x5e], dl
xor cl, byte [ebp + edx - 0x63]
mov byte [ebp + edx - 0x63], cl
inc edx
cmp edx, 5
jae 0x1001f188
mov cl, byte [ebp - 0x64]
jmp 0x1001f175
sub esp, 0x18
mov byte [ebp - 0x5e], 0
lea eax, [ebp - 0x63]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xc0]
push eax
call fcn.10003c43
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call fcn.10006885
push 0
push 1
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0
call fcn.1000402e
mov ecx, dword [ebp - 0x98]
xor edx, edx
test ecx, ecx
je 0x1001f26f
cmp ecx, 0xa
jae 0x1001f1f5
mov al, 0x27
mov byte [ebp - 0x7c], 0x17
xor al, 0x17
mov byte [ebp - 0x7a], dl
mov byte [ebp - 0x7b], al
lea eax, [ebp - 0x7b]
jmp 0x1001f201
mov word [ebp - 0x4c], 0x11
lea eax, [ebp - 0x4b]
mov byte [ebp - 0x4b], dl
push ecx
push eax
mov cl, 0x46
mov dword [ebp - 0x6c], 0x63356346
mov word [ebp - 0x68], 0x7c33
mov byte [ebp - 0x66], dl
xor cl, byte [ebp + edx - 0x6b]
mov byte [ebp + edx - 0x6b], cl
inc edx
cmp edx, 5
jae 0x1001f228
mov cl, byte [ebp - 0x6c]
jmp 0x1001f215
sub esp, 0x18
mov byte [ebp - 0x66], 0
lea eax, [ebp - 0x6b]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xc0]
push eax
call fcn.10003c43
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 2
call fcn.10006885
push 0
push 1
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0
call fcn.1000402e
jmp 0x1001f2aa
mov cl, 1
mov dword [ebp - 0x38], 0x3b313101
mov byte [ebp - 0x34], 0
xor cl, byte [ebp + edx - 0x37]
mov byte [ebp + edx - 0x37], cl
inc edx
cmp edx, 3
jae 0x1001f28f
mov cl, byte [ebp - 0x38]
jmp 0x1001f27c
lea eax, [ebp - 0x37]
mov byte [ebp - 0x34], 0
push eax
call fcn.1000415c
pop ecx
push eax
lea eax, [ebp - 0x37]
push eax
lea ecx, [ebp - 0x2c]
call fcn.100067e2
xor edx, edx
test esi, esi
je 0x1001f348
cmp esi, 0xa
jae 0x1001f2ce
push 0x18
pop ecx
mov al, 0x28
mov byte [ebp - 0x80], cl
xor al, cl
mov byte [ebp - 0x7e], dl
mov byte [ebp - 0x7f], al
lea eax, [ebp - 0x7f]
jmp 0x1001f2da
mov word [ebp - 0x50], 0x5e
lea eax, [ebp - 0x4f]
mov byte [ebp - 0x4f], dl
push esi
push eax
mov cl, 0x65
mov dword [ebp - 0x74], 0x40164065
mov word [ebp - 0x70], 0x5f10
mov byte [ebp - 0x6e], dl
xor cl, byte [ebp + edx - 0x73]
mov byte [ebp + edx - 0x73], cl
inc edx
cmp edx, 5
jae 0x1001f301
mov cl, byte [ebp - 0x74]
jmp 0x1001f2ee
sub esp, 0x18
mov byte [ebp - 0x6e], 0
lea eax, [ebp - 0x73]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xc0]
push eax
call fcn.10003c43
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 3
call fcn.10006885
push 0
push 1
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0
call fcn.1000402e
jmp 0x1001f383
mov cl, 0x43
mov dword [ebp - 0x40], 0x79737343
mov byte [ebp - 0x3c], 0
xor cl, byte [ebp + edx - 0x3f]
mov byte [ebp + edx - 0x3f], cl
inc edx
cmp edx, 3
jae 0x1001f368
mov cl, byte [ebp - 0x40]
jmp 0x1001f355
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x3c], 0
push eax
call fcn.1000415c
pop ecx
push eax
lea eax, [ebp - 0x3f]
push eax
lea ecx, [ebp - 0x2c]
call fcn.100067e2
xor edx, edx
test edi, edi
je 0x1001f428
cmp edi, 0xa
jae 0x1001f3b1
mov al, 0x20
mov byte [ebp - 0x84], 0x10
xor al, 0x10
mov byte [ebp - 0x82], dl
mov byte [ebp - 0x83], al
lea eax, [ebp - 0x83]
jmp 0x1001f3bd
mov word [ebp - 0x54], 0xd
lea eax, [ebp - 0x53]
mov byte [ebp - 0x53], dl
push edi
push eax
mov cl, 0x54
mov dword [ebp - 0x5c], 0x71277154
mov word [ebp - 0x58], 0x21
xor cl, byte [ebp + edx - 0x5b]
mov byte [ebp + edx - 0x5b], cl
inc edx
cmp edx, 4
jae 0x1001f3e1
mov cl, byte [ebp - 0x5c]
jmp 0x1001f3ce
sub esp, 0x18
mov byte [ebp - 0x57], 0
lea eax, [ebp - 0x5b]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xc0]
push eax
call fcn.10003c43
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 4
call fcn.10006885
push 0
push 1
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0
call fcn.1000402e
jmp 0x1001f45f
mov cl, 0x34
mov dword [ebp - 0x30], 0x40434
xor cl, byte [ebp + edx - 0x2f]
mov byte [ebp + edx - 0x2f], cl
inc edx
cmp edx, 2
jae 0x1001f444
mov cl, byte [ebp - 0x30]
jmp 0x1001f431
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2d], 0
push eax
call fcn.1000415c
pop ecx
push eax
lea eax, [ebp - 0x2f]
push eax
lea ecx, [ebp - 0x2c]
call fcn.100067e2
cmp dword [ebp - 0x18], 0x10
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0xc0]
cmovae eax, dword [ebp - 0x2c]
push eax
call fcn.10004179
mov edi, dword [ebp - 0xcc]
lea edx, [ebp - 0xc0]
mov byte [ebp - 4], 5
mov ecx, dword [edi]
call fcn.1000de6f
push 0
push 1
lea ecx, [ebp - 0xc0]
call fcn.1000402e
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
push 0
push 1
call fcn.1000402e
mov esi, dword [ebp - 0xa4]
jmp 0x1001f584
cmp cl, 2
jne 0x1001f534
cmp dword [esi + eax + 0x1c], edx
jne 0x1001f534
add cl, 0x5c
mov dword [ebp - 0x94], 0x373f095e
mov dword [ebp - 0x90], 0x3930372a
mov dword [ebp - 0x8c], 0x707070
xor cl, byte [ebp + edx - 0x93]
mov byte [ebp + edx - 0x93], cl
inc edx
cmp edx, 0xa
jae 0x1001f4ff
mov cl, byte [ebp - 0x94]
jmp 0x1001f4e3
lea eax, [ebp - 0x93]
mov byte [ebp - 0x89], 0
push eax
lea ecx, [ebp - 0xc0]
call fcn.10004179
mov dword [ebp - 4], 6
lea edx, [ebp - 0xc0]
mov ecx, dword [edi]
call fcn.1000de6f
lea ecx, [ebp - 0xc0]
jmp 0x1001f577
mov al, 0x51
mov byte [ebp - 0x88], 0x7c
xor al, 0x7c
mov byte [ebp - 0x86], dl
mov byte [ebp - 0x87], al
lea ecx, [ebp - 0xe8]
lea eax, [ebp - 0x87]
push eax
call fcn.10004179
mov dword [ebp - 4], 7
lea edx, [ebp - 0xe8]
mov ecx, dword [edi]
call fcn.1000de6f
lea ecx, [ebp - 0xe8]
or dword [ebp - 4], 0xffffffff
push 0
push 1
call fcn.1000402e
mov ecx, dword [ebp - 0xa0]
push 0x68
pop eax
inc ecx
add esi, eax
push 0x18
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0xa4], esi
pop eax
cmp ecx, dword [ebp - 0xd0]
jl 0x1001f005
call fcn.1003bf4a
ret