Function at 0x100154bb
Capabilities:
Authenticate hmac

Disassembly:
push 0x5c
mov eax, 0x100358d3
call fcn.10034326
mov ebx, ecx
mov dword [ebp - 0x50], ebx
xor eax, eax
cmp dword [ebx + 0x144], eax
jl 0x100158e4
mov word [ebp - 0x34], 0x27
lea ecx, [ebp - 0x2c]
mov byte [ebp - 0x33], al
lea eax, [ebp - 0x33]
push eax
call fcn.10002604
and dword [ebp - 4], 0
mov ecx, 0x15180
mov edi, dword [ebx + 0x144]
mov eax, edi
cdq
idiv ecx
mov ecx, eax
call fcn.10017117
call fcn.10034690
mov ebx, eax
xor edx, edx
imul ecx, ebx, 0x15180
mov eax, edi
push 0x18
mov dword [ebp - 0x34], ebx
sub eax, ecx
mov ecx, 0xe10
div ecx
pop ecx
xor edx, edx
div ecx
mov ecx, edx
call fcn.10013dc8
call fcn.10034690
imul esi, ebx, 0x18
xor edx, edx
mov dword [ebp - 0x4c], eax
push 0x3c
pop ebx
add esi, eax
mov eax, edi
imul ecx, esi, 0xe10
sub eax, ecx
div ebx
xor edx, edx
div ebx
mov ecx, edx
call fcn.10013dc8
call fcn.10034690
imul ecx, esi, 0x3c
xor edx, edx
mov esi, eax
add ecx, esi
imul ecx, ecx, 0x3c
sub edi, ecx
mov eax, edi
div ebx
mov ecx, edx
call fcn.10013dc8
call fcn.10034690
mov ecx, dword [ebp - 0x34]
mov edi, eax
push 0xa
pop ebx
test ecx, ecx
je 0x10015624
cmp ecx, ebx
jae 0x100155af
mov dl, 0x71
mov byte [ebp - 0x2e], 0
mov al, 0x41
mov byte [ebp - 0x30], dl
xor al, dl
xor edx, edx
mov byte [ebp - 0x2f], al
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2e], dl
jmp 0x100155bd
xor edx, edx
mov word [ebp - 0x34], 0x63
mov byte [ebp - 0x33], dl
lea eax, [ebp - 0x33]
push ecx
push eax
mov cl, 0x38
mov dword [ebp - 0x44], 0x1d4b1d38
mov word [ebp - 0x40], 0x24d
mov eax, edx
mov byte [ebp - 0x3e], dl
xor byte [ebp + eax - 0x43], cl
inc eax
cmp eax, 5
jae 0x100155e2
mov cl, byte [ebp - 0x44]
jmp 0x100155d3
sub esp, 0x18
mov byte [ebp - 0x3e], dl
lea eax, [ebp - 0x43]
mov ecx, esp
push eax
call fcn.10002604
lea eax, [ebp - 0x68]
push eax
call fcn.1000485c
add esp, 0x24
mov byte [ebp - 4], 1
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
jbe 0x1001560e
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002410
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x100156c4
cmp ecx, ebx
jae 0x1001564d
mov dl, 0xe
mov byte [ebp - 0x2e], 0
mov al, 0x3e
mov byte [ebp - 0x30], dl
xor al, dl
xor edx, edx
mov byte [ebp - 0x2f], al
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x2e], dl
jmp 0x1001565b
xor edx, edx
mov word [ebp - 0x34], 0x4b
mov byte [ebp - 0x33], dl
lea eax, [ebp - 0x33]
push ecx
push eax
mov cl, 0x6d
mov dword [ebp - 0x44], 0x481e486d
mov word [ebp - 0x40], 0x5718
mov eax, edx
mov byte [ebp - 0x3e], dl
xor byte [ebp + eax - 0x43], cl
inc eax
cmp eax, 5
jae 0x10015680
mov cl, byte [ebp - 0x44]
jmp 0x10015671
sub esp, 0x18
mov byte [ebp - 0x3e], dl
lea eax, [ebp - 0x43]
mov ecx, esp
push eax
call fcn.10002604
lea eax, [ebp - 0x68]
push eax
call fcn.1000485c
add esp, 0x24
mov byte [ebp - 4], 2
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
jbe 0x100156ac
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002410
jmp 0x10015702
mov cl, 0x76
mov dword [ebp - 0x3c], 0x4c464676
mov byte [ebp - 0x38], 0
xor eax, eax
xor byte [ebp + eax - 0x3b], cl
inc eax
cmp eax, 3
jae 0x100156e2
mov cl, byte [ebp - 0x3c]
jmp 0x100156d3
lea ecx, [ebp - 0x3b]
mov byte [ebp - 0x38], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100156ec
sub ecx, edx
lea eax, [ebp - 0x3b]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
test esi, esi
je 0x1001579a
xor edx, edx
cmp esi, ebx
jae 0x10015725
push 0x4c
mov cl, 0x7c
mov byte [ebp - 0x2e], dl
pop eax
xor al, cl
mov byte [ebp - 0x30], cl
mov byte [ebp - 0x2f], al
lea eax, [ebp - 0x2f]
jmp 0x10015731
mov word [ebp - 0x34], 0x47
lea eax, [ebp - 0x33]
mov byte [ebp - 0x33], dl
push esi
push eax
mov cl, 0x36
mov dword [ebp - 0x44], 0x13451336
mov word [ebp - 0x40], 0xc43
mov eax, edx
mov byte [ebp - 0x3e], dl
xor byte [ebp + eax - 0x43], cl
inc eax
cmp eax, 5
jae 0x10015756
mov cl, byte [ebp - 0x44]
jmp 0x10015747
sub esp, 0x18
mov byte [ebp - 0x3e], dl
lea eax, [ebp - 0x43]
mov ecx, esp
push eax
call fcn.10002604
lea eax, [ebp - 0x68]
push eax
call fcn.1000485c
add esp, 0x24
mov byte [ebp - 4], 3
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
jbe 0x10015782
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.10002410
jmp 0x100157d8
mov cl, 0x7b
mov dword [ebp - 0x3c], 0x414b4b7b
mov byte [ebp - 0x38], 0
xor eax, eax
xor byte [ebp + eax - 0x3b], cl
inc eax
cmp eax, 3
jae 0x100157b8
mov cl, byte [ebp - 0x3c]
jmp 0x100157a9
lea ecx, [ebp - 0x3b]
mov byte [ebp - 0x38], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100157c2
sub ecx, edx
lea eax, [ebp - 0x3b]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
test edi, edi
je 0x1001586e
cmp edi, ebx
jae 0x100157fa
mov cl, 0x60
mov al, 0x50
xor ebx, ebx
mov byte [ebp - 0x30], cl
xor al, cl
mov byte [ebp - 0x2e], bl
mov byte [ebp - 0x2f], al
lea eax, [ebp - 0x2f]
jmp 0x10015808
xor ebx, ebx
mov word [ebp - 0x34], 0x4d
mov byte [ebp - 0x33], bl
lea eax, [ebp - 0x33]
push edi
push eax
push 0x36
pop ecx
mov byte [ebp - 0x4c], cl
mov eax, ebx
mov dword [ebp - 0x4b], 0x43134513
mov byte [ebp - 0x47], bl
xor byte [ebp + eax - 0x4b], cl
inc eax
cmp eax, 4
jae 0x1001582b
mov cl, byte [ebp - 0x4c]
jmp 0x1001581c
sub esp, 0x18
mov byte [ebp - 0x47], bl
lea eax, [ebp - 0x4b]
mov ecx, esp
push eax
call fcn.10002604
lea eax, [ebp - 0x68]
push eax
call fcn.1000485c
add esp, 0x24
mov byte [ebp - 4], 4
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
jbe 0x10015857
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], bl
call fcn.10002410
jmp 0x100158ac
mov byte [ebp - 0x30], bl
xor eax, eax
mov word [ebp - 0x2f], 0x3a3a
mov byte [ebp - 0x2d], 0
xor byte [ebp + eax - 0x2f], bl
inc eax
cmp eax, 2
jae 0x1001588c
mov bl, byte [ebp - 0x30]
jmp 0x1001587d
lea ecx, [ebp - 0x2f]
mov byte [ebp - 0x2d], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015896
sub ecx, edx
lea eax, [ebp - 0x2f]
push ecx
push eax
lea ecx, [ebp - 0x2c]
call fcn.10007ce4
cmp dword [ebp - 0x18], 0xf
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x68]
cmova eax, dword [ebp - 0x2c]
push eax
call fcn.10002604
mov ecx, dword [ebp - 0x50]
lea edx, [ebp - 0x68]
mov byte [ebp - 4], 5
mov ecx, dword [ecx + 0x10]
call fcn.10009b96
lea ecx, [ebp - 0x68]
call fcn.10002410
lea ecx, [ebp - 0x2c]
call fcn.10002410
jmp 0x100158f3
mov ecx, dword [ebx]
xor dl, dl
mov byte [ebx + 0xd4], al
call fcn.1000932c
call fcn.100342e4
ret