Function at 0x10047800
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1009a7a0
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x100bd078]
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 - 0x50], ebx
mov al, byte [ebx + 0x34]
test al, al
je 0x10047ced
mov eax, dword [ebx + 0x30]
test eax, eax
jle 0x10047846
dec eax
mov dword [ebx + 0x30], eax
cmp dword [ebx + 0x30], 0
jl 0x10047ce4
lea eax, [ebp - 0x43]
mov word [ebp - 0x44], 0x24
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x43], 0
call fcn.10002980
mov dword [ebp - 4], 0
mov eax, 0xc22e4507
mov edi, dword [ebx + 0x30]
imul edi
add edx, edi
sar edx, 0x10
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
call fcn.1003c5d0
call fcn.100979f1
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.1003c610
call fcn.100979f1
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.1003c610
call fcn.100979f1
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.1003c610
call fcn.100979f1
mov edx, dword [ebp - 0x30]
mov edi, eax
test edx, edx
je 0x100479c6
cmp edx, 0xa
jae 0x1004794d
mov al, 0x55
mov byte [ebp - 0x2a], 0
mov cl, 0x65
mov byte [ebp - 0x2c], al
xor cl, al
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], cl
lea eax, [ebp - 0x2b]
jmp 0x1004795a
mov word [ebp - 0x30], 0x2f
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edx
push eax
mov ch, 0x19
mov byte [ebp - 0x3a], 0
mov al, 0x3c
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x23
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 0x6a
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 0x6c
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.10002980
lea eax, [ebp - 0x68]
push eax
call fcn.10009ac0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.10006060
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002340
mov ebx, dword [ebp - 0x4c]
test ebx, ebx
je 0x10047a64
cmp ebx, 0xa
jae 0x100479ec
mov cl, 0x62
mov byte [ebp - 0x2a], 0
mov al, 0x52
mov byte [ebp - 0x2c], cl
xor al, cl
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], al
lea eax, [ebp - 0x2b]
jmp 0x100479f9
mov word [ebp - 0x30], 0x56
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push ebx
push eax
mov ch, 0x71
mov byte [ebp - 0x3a], 0
mov al, 0x54
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x4b
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 2
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 4
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.10002980
lea eax, [ebp - 0x68]
push eax
call fcn.10009ac0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.10006060
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002340
jmp 0x10047aaa
mov bl, 0x1a
mov byte [ebp - 0x34], 0
mov dl, 0x2a
mov byte [ebp - 0x38], bl
mov al, dl
mov byte [ebp - 0x34], 0
mov cl, 0x20
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 0x10047a8e
xor ecx, ecx
jmp 0x10047a9d
lea ecx, [ebp - 0x37]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10047a94
sub ecx, edx
push ecx
lea eax, [ebp - 0x37]
push eax
lea ecx, [ebp - 0x28]
call fcn.10005f30
test esi, esi
je 0x10047b48
cmp esi, 0xa
jae 0x10047ad0
mov cl, 0x2d
mov byte [ebp - 0x2a], 0
mov al, 0x1d
mov byte [ebp - 0x2c], cl
xor al, cl
mov byte [ebp - 0x2a], 0
mov byte [ebp - 0x2b], al
lea eax, [ebp - 0x2b]
jmp 0x10047add
mov word [ebp - 0x30], 0x50
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push esi
push eax
mov ch, 0x41
mov byte [ebp - 0x3a], 0
mov al, 0x64
mov byte [ebp - 0x40], ch
mov dl, al
mov byte [ebp - 0x3a], 0
mov ah, 0x7b
xor al, ch
xor ah, ch
mov byte [ebp - 0x3f], al
mov cl, 0x32
mov byte [ebp - 0x3b], ah
sub esp, 0x18
lea eax, [ebp - 0x3f]
xor cl, ch
mov bl, 0x34
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.10002980
lea eax, [ebp - 0x68]
push eax
call fcn.10009ac0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 3
call fcn.10006060
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002340
jmp 0x10047b8e
mov bl, 0x38
mov byte [ebp - 0x34], 0
mov dl, 8
mov byte [ebp - 0x38], bl
mov al, dl
mov byte [ebp - 0x34], 0
mov cl, 2
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 0x10047b72
xor ecx, ecx
jmp 0x10047b81
lea ecx, [ebp - 0x37]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10047b78
sub ecx, edx
push ecx
lea eax, [ebp - 0x37]
push eax
lea ecx, [ebp - 0x28]
call fcn.10005f30
test edi, edi
je 0x10047c25
cmp edi, 0xa
jae 0x10047bb4
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 0x10047bc1
mov word [ebp - 0x30], 0x10
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2f], 0
push edi
push eax
mov ah, 0x32
mov byte [ebp - 0x47], 0
mov al, 0x17
mov byte [ebp - 0x4c], ah
mov dl, al
mov byte [ebp - 0x47], 0
mov cl, 0x41
xor al, ah
xor cl, ah
mov byte [ebp - 0x4b], al
sub esp, 0x18
mov byte [ebp - 0x4a], cl
mov bl, 0x47
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.10002980
lea eax, [ebp - 0x68]
push eax
call fcn.10009ac0
add esp, 0x24
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 4
call fcn.10006060
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002340
jmp 0x10047c66
mov dl, 0x50
mov byte [ebp - 0x29], 0
mov cl, 0x60
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 0x10047c48
xor ecx, ecx
jmp 0x10047c59
lea ecx, [ebp - 0x2b]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10047c50
sub ecx, edx
push ecx
lea eax, [ebp - 0x2b]
push eax
lea ecx, [ebp - 0x28]
call fcn.10005f30
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
mov dl, 0x3f
mov byte [ebp - 0x29], 0
cmovae eax, dword [ebp - 0x28]
mov cl, 0x4c
push eax
mov al, 0x1a
mov byte [ebp - 0x2c], dl
xor al, dl
mov byte [ebp - 0x29], 0
sub esp, 0x18
mov byte [ebp - 0x2b], al
xor cl, dl
lea eax, [ebp - 0x2b]
mov byte [ebp - 0x2a], cl
mov ecx, esp
push eax
call fcn.10002980
lea eax, [ebp - 0x68]
push eax
call fcn.10009ac0
add esp, 0x20
mov ecx, dword [ebp - 0x50]
mov edx, eax
mov byte [ebp - 4], 5
mov ecx, dword [ecx + 0x18]
call fcn.100170e0
mov eax, dword [ebp - 0x54]
cmp eax, 0x10
jb 0x10047ccd
inc eax
lea ecx, [ebp - 0x68]
push eax
push dword [ebp - 0x68]
call fcn.10002760
mov eax, dword [ebp - 0x14]
cmp eax, 0x10
jb 0x10047ced
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.10002760
jmp 0x10047ced
mov byte [ebx + 0x34], 0
call fcn.10047780
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.10067c75
mov esp, ebp
pop ebp
ret