Function at 0x1004a9a0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10066b50
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x10078014]
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 - 0x68], ebx
mov eax, dword [ebx + 0x1c]
test eax, eax
js 0x1004aeba
push 0
lea eax, [ebp - 0x43]
mov word [ebp - 0x44], 0x46
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x43], 0
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x28], 0
call fcn.100028c0
mov dword [ebp - 4], 0
mov eax, 0xc22e4507
mov edi, dword [ebx + 0x1c]
imul edi
add edx, edi
sar edx, 0x10
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
call fcn.10039f70
call fcn.100642b1
mov esi, eax
mov edx, edi
imul ecx, esi, 0x15180
mov eax, 0x91a2b3c5
mov dword [ebp - 0x30], esi
sub edx, ecx
mov ecx, 0x18
mul edx
shr edx, 0xb
mov eax, edx
xor edx, edx
div ecx
mov ecx, edx
call fcn.10039fb0
call fcn.100642b1
mov ebx, eax
lea ecx, [esi + esi*2]
mov edx, edi
mov dword [ebp - 0x4c], ebx
mov eax, 0x88888889
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
mov ecx, edx
call fcn.10039fb0
call fcn.100642b1
mov ecx, esi
shl ecx, 4
sub ecx, esi
mov esi, eax
lea ecx, [esi + 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
mov ecx, edx
call fcn.10039fb0
call fcn.100642b1
mov edx, dword [ebp - 0x30]
mov edi, eax
test edx, edx
je 0x1004ab73
cmp edx, 0xa
jae 0x1004aaec
mov al, 0x49
mov byte [ebp - 0x2a], 0
mov cl, 0x79
mov byte [ebp - 0x2c], al
xor cl, al
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], cl
lea eax, [ebp - 0x2b]
jmp 0x1004aaf9
mov word [ebp - 0x30], 0x57
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edx
push eax
mov ch, 0x7b
mov byte [ebp - 0x3a], 0
mov al, 0x5e
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x41
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 8
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 0xe
xor dl, ch
mov byte [ebp - 0x3e], cl
xor bl, ch
mov byte [ebp - 0x3d], dl
mov ecx, esp
mov byte [ebp - 0x3c], bl
push eax
call fcn.100029c0
lea eax, [ebp - 0x64]
push eax
call fcn.100061b0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.1000b610
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x1004ab70
mov ecx, dword [ebp - 0x64]
inc edx
push 1
call fcn.10002790
add esp, 4
mov ebx, dword [ebp - 0x4c]
test ebx, ebx
je 0x1004ac1f
cmp ebx, 0xa
jae 0x1004ab99
mov cl, 0x17
mov byte [ebp - 0x2a], 0
mov al, 0x27
mov byte [ebp - 0x2c], cl
xor al, cl
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], al
lea eax, [ebp - 0x2b]
jmp 0x1004aba6
mov word [ebp - 0x30], 0x2b
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push ebx
push eax
mov ch, 0x65
mov byte [ebp - 0x3a], 0
mov al, 0x40
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x5f
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 0x16
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 0x10
xor dl, ch
mov byte [ebp - 0x3e], cl
xor bl, ch
mov byte [ebp - 0x3d], dl
mov ecx, esp
mov byte [ebp - 0x3c], bl
push eax
call fcn.100029c0
lea eax, [ebp - 0x64]
push eax
call fcn.100061b0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.1000b610
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x1004ac66
mov ecx, dword [ebp - 0x64]
inc edx
push 1
call fcn.10002790
add esp, 4
jmp 0x1004ac66
mov bl, 0x2e
mov byte [ebp - 0x34], 0
mov dl, 0x1e
mov byte [ebp - 0x38], bl
mov al, dl
mov byte [ebp - 0x34], 0
mov cl, 0x14
xor dl, bl
xor al, bl
mov byte [ebp - 0x37], dl
xor cl, bl
mov byte [ebp - 0x36], al
mov byte [ebp - 0x35], cl
test dl, dl
jne 0x1004ac49
xor ecx, ecx
jmp 0x1004ac59
lea ecx, [ebp - 0x37]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004ac50
sub ecx, edx
push ecx
lea eax, [ebp - 0x37]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000b4b0
test esi, esi
je 0x1004ad12
cmp esi, 0xa
jae 0x1004ac8c
mov cl, 0x48
mov byte [ebp - 0x2a], 0
mov al, 0x78
mov byte [ebp - 0x2c], cl
xor al, cl
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], al
lea eax, [ebp - 0x2b]
jmp 0x1004ac99
mov word [ebp - 0x30], 0x29
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push esi
push eax
mov ch, 0x65
mov byte [ebp - 0x3a], 0
mov al, 0x40
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x5f
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 0x16
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 0x10
xor dl, ch
mov byte [ebp - 0x3e], cl
xor bl, ch
mov byte [ebp - 0x3d], dl
mov ecx, esp
mov byte [ebp - 0x3c], bl
push eax
call fcn.100029c0
lea eax, [ebp - 0x64]
push eax
call fcn.100061b0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 3
call fcn.1000b610
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x1004ad58
mov ecx, dword [ebp - 0x64]
inc edx
push 1
call fcn.10002790
add esp, 4
jmp 0x1004ad58
mov bl, 0x7d
mov byte [ebp - 0x34], 0
mov dl, 0x4d
mov byte [ebp - 0x38], bl
mov al, dl
mov byte [ebp - 0x34], 0
mov cl, 0x47
xor dl, bl
xor al, bl
mov byte [ebp - 0x37], dl
xor cl, bl
mov byte [ebp - 0x36], al
mov byte [ebp - 0x35], cl
test dl, dl
jne 0x1004ad3c
xor ecx, ecx
jmp 0x1004ad4b
lea ecx, [ebp - 0x37]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004ad42
sub ecx, edx
push ecx
lea eax, [ebp - 0x37]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000b4b0
test edi, edi
je 0x1004adfd
cmp edi, 0xa
jae 0x1004ad7e
mov cl, 6
mov byte [ebp - 0x2a], 0
mov al, 0x36
mov byte [ebp - 0x2c], cl
xor al, cl
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], al
lea eax, [ebp - 0x2b]
jmp 0x1004ad8b
mov word [ebp - 0x30], 0x58
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edi
push eax
mov ah, 0x1f
mov byte [ebp - 0x47], 0
mov al, 0x3a
mov byte [ebp - 0x4c], ah
mov dl, al
mov byte [ebp - 0x47], 0
mov cl, 0x6c
xor al, ah
xor cl, ah
mov byte [ebp - 0x4b], al
sub esp, 0x18
mov byte [ebp - 0x4a], cl
mov bl, 0x6a
xor dl, ah
xor bl, ah
mov byte [ebp - 0x49], dl
lea eax, [ebp - 0x4b]
mov byte [ebp - 0x48], bl
mov ecx, esp
push eax
call fcn.100029c0
lea eax, [ebp - 0x64]
push eax
call fcn.100061b0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 4
call fcn.1000b610
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x1004ae3c
mov ecx, dword [ebp - 0x64]
inc edx
push 1
call fcn.10002790
add esp, 4
jmp 0x1004ae3c
mov dl, 0x69
mov byte [ebp - 0x29], 0
mov cl, 0x59
mov byte [ebp - 0x2c], dl
mov al, cl
mov byte [ebp - 0x29], 0
xor cl, dl
xor al, dl
mov byte [ebp - 0x2b], cl
mov byte [ebp - 0x2a], al
test cl, cl
jne 0x1004ae20
xor ecx, ecx
jmp 0x1004ae2f
lea ecx, [ebp - 0x2b]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004ae26
sub ecx, edx
push ecx
lea eax, [ebp - 0x2b]
push eax
lea ecx, [ebp - 0x28]
call fcn.1000b4b0
cmp dword [ebp - 0x14], 0x10
lea edx, [ebp - 0x28]
mov dword [ebp - 0x50], 0xf
cmovae edx, dword [ebp - 0x28]
mov dword [ebp - 0x54], 0
mov byte [ebp - 0x64], 0
cmp byte [edx], 0
jne 0x1004ae62
xor ecx, ecx
jmp 0x1004ae70
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004ae67
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x64]
call fcn.100028c0
mov ecx, dword [ebp - 0x68]
lea edx, [ebp - 0x64]
mov byte [ebp - 4], 5
mov ecx, dword [ecx + 0x14]
call fcn.10014f70
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x1004aea2
mov ecx, dword [ebp - 0x64]
inc edx
push 1
call fcn.10002790
add esp, 4
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x1004aed8
mov ecx, dword [ebp - 0x28]
inc edx
push 1
call fcn.10002790
add esp, 4
jmp 0x1004aed8
jg 0x1004aed8
mov esi, dword [ebx]
test esi, esi
je 0x1004aed8
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1004aed8
push eax
mov ecx, esi
call dword [0x1006ebec]
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.10063065
mov esp, ebp
pop ebp
ret