Function at 0x437a50
Capabilities:
Authenticate hmac

Disassembly:
push rbp
sub rsp, 0xf0
lea rax, [sym.__gxx_personality_sj0]
mov qword [rsp + 0x90], rax
lea rax, [0x00689e40]
mov qword [rsp + 0x98], rax
lea rax, [rsp + 0xf0]
mov qword [rsp + 0xa0], rax
lea rax, [0x004380ee]
mov qword [rsp + 0xa8], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x100], rcx
mov rcx, rax
mov qword [rsp + 0x108], rdx
mov dword [rsp + 0x110], r8d
mov qword [rsp + 0xc8], rax
mov qword [rsp + 0xb0], rsp
call dbg._Unwind_SjLj_Register
mov eax, dword [rsp + 0x110]
mov rcx, qword [rsp + 0x100]
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax]
mov rax, qword [rax + 0x80]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov rax, qword [rax]
call qword [rax + 0xa8]
lea rdx, [method.CryptoPP::HashTransformation.BlockSize___const]
mov qword [rsp + 0x50], rax
mov rax, qword [rax]
mov qword [rsp + 0x48], rdx
mov rax, qword [rax + 0x50]
cmp rax, rdx
jne 0x437bd0
mov ecx, 0x30
call sym.__cxa_allocate_exception
lea rdx, str.HMAC:_can_only_be_used_with_a_block_based_hash_function
mov dword [rsp + 0x68], 1
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0xd0]
mov rcx, rax
mov qword [rsp + 0x38], rax
call fcn.00437a10
mov r8, qword [rsp + 0x38]
mov edx, 1
mov dword [rsp + 0x68], 2
mov rcx, qword [rsp + 0x30]
call fcn.004e29b0
mov rcx, qword [rsp + 0x30]
lea rdx, fcn.004a5c00
mov rax, qword [rsp + 0x38]
mov qword [rcx], rdx
mov rcx, qword [rsp + 0xd0]
add rax, 0x10
cmp rcx, rax
je 0x437bad
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x30]
lea r8, [fcn.004a5c00]
mov dword [rsp + 0x68], 0xffffffff
lea rdx, [0x0063d3a0]
call sym.__cxa_throw
nop dword [rax]
mov dword [rsp + 0x68], 0xffffffff
mov rcx, qword [rsp + 0x50]
call rax
test eax, eax
mov dword [rsp + 0x30], eax
je 0x437b34
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov rax, qword [rax]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov dword [rsp + 0x40], 0
mov rdx, qword [rax]
mov rdx, qword [rdx + 0x50]
cmp rdx, qword [rsp + 0x48]
jne 0x438002
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov rax, qword [rax]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
lea rcx, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
mov rdx, qword [rax]
mov rdx, qword [rdx + 0x48]
cmp rdx, rcx
jne 0x437ff0
lea rcx, [rax - 8]
mov rax, qword [rax - 8]
call qword [rax + 0xa8]
mov rdx, qword [rax]
mov rcx, rax
lea rax, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
mov rdx, qword [rdx + 0x48]
cmp rdx, rax
je 0x4380d2
mov dword [rsp + 0x68], 0xffffffff
call rdx
mov edx, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x100]
add eax, edx
mov rdx, qword [rsp + 0x100]
add rcx, 0x10
mov r9, rax
mov qword [rsp + 0x40], rax
mov r8, qword [rdx + 0x20]
mov rdx, qword [rdx + 0x28]
mov dword [rsp + 0x20], 1
mov dword [rsp + 0x68], 0xffffffff
call method.CryptoPP::AllocatorWithCleanup_unsigned_char__false_::pointer_CryptoPP::StandardReallocate_unsigned_char__CryptoPP.AllocatorWithCleanup_unsigned_char__false____CryptoPP::AllocatorWithCleanup_unsigned_char__false___unsigned_char__CryptoPP::Allocat
mov rdx, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x40]
mov qword [rdx + 0x28], rax
mov qword [rdx + 0x20], rcx
mov qword [rdx + 0x18], 0xffffffffffffffff
mov edx, dword [rsp + 0x30]
cmp dword [rsp + 0x110], edx
ja 0x437e20
test rax, rax
je 0x437d22
cmp qword [rsp + 0x108], 0
je 0x437d22
mov edx, dword [rsp + 0x110]
test edx, edx
jne 0x437fc2
mov rcx, qword [rsp + 0x38]
xor edx, edx
mov r8d, dword [rsp + 0x30]
sub r8d, dword [rsp + 0x110]
add rcx, rax
call sym.memset
mov eax, dword [rsp + 0x30]
mov qword [rsp + 0x30], 0
sub eax, 1
mov qword [rsp + 0x58], rax
jmp 0x437d8b
movzx eax, byte [rsp + 0x40]
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
xor eax, 0x5c
mov byte [rdx], al
mov rdx, qword [rsp + 0x100]
mov rax, qword [rdx + 0x28]
add rax, rcx
xor byte [rax], 0x36
lea rax, [rcx + 1]
cmp rcx, qword [rsp + 0x58]
je 0x437e00
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov rax, qword [rax + 0x28]
mov qword [rsp + 0x50], rax
add rax, qword [rsp + 0x30]
mov qword [rsp + 0x38], rax
movzx eax, byte [rax]
mov byte [rsp + 0x40], al
mov rax, qword [rsp + 0x100]
mov rax, qword [rax]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov rdx, qword [rax]
mov rdx, qword [rdx + 0x50]
cmp rdx, qword [rsp + 0x48]
je 0x437d55
mov rcx, rax
call rdx
mov eax, eax
add rax, qword [rsp + 0x30]
add rax, qword [rsp + 0x50]
mov qword [rsp + 0x38], rax
jmp 0x437d55
mov rcx, qword [rsp + 0xc8]
call sym._Unwind_SjLj_Unregister
nop
add rsp, 0xf0
pop rbp
ret
mov rax, qword [rsp + 0x100]
mov rcx, qword [rsp + 0x100]
mov rax, qword [rax]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov rdx, qword [rsp + 0x100]
mov rcx, rax
mov qword [rsp + 0x40], rax
mov rax, qword [rax]
mov rdx, qword [rdx + 0x28]
mov r10, qword [rax + 0x68]
mov qword [rsp + 0x58], rdx
lea rdx, [method.CryptoPP::HashTransformation.CalculateDigest_unsigned_char__unsigned_char_const__unsigned_long_long_]
cmp r10, rdx
jne 0x438030
mov rax, qword [rax + 0x28]
lea rdx, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.Update_unsigned_char_const__unsigned_long_long_]
cmp rax, rdx
jne 0x438057
mov r8, qword [rsp + 0x38]
sub rcx, 8
mov rdx, qword [rsp + 0x108]
call method.CryptoPP::HMAC_Base.Update_unsigned_char_const__unsigned_long_long_
mov rcx, qword [rsp + 0x40]
lea rdx, [method.CryptoPP::HashTransformation.Final_unsigned_char_]
mov rax, qword [rcx]
mov r8, qword [rax + 0x38]
cmp r8, rdx
jne 0x438078
mov rdx, qword [rax + 0x80]
mov rax, qword [rax + 0x48]
mov qword [rsp + 0x38], rdx
lea rdx, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
cmp rax, rdx
jne 0x438092
mov rax, rcx
mov rax, qword [rax - 8]
lea rcx, [rcx - 8]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov rdx, qword [rax]
mov rcx, rax
lea rax, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
mov rdx, qword [rdx + 0x48]
cmp rdx, rax
je 0x4380e0
mov dword [rsp + 0x68], 0xffffffff
call rdx
mov r8d, eax
lea rax, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.TruncatedFinal_unsigned_char__unsigned_long_long_]
cmp qword [rsp + 0x38], rax
jne 0x4380a6
mov rcx, qword [rsp + 0x40]
mov dword [rsp + 0x68], 0xffffffff
mov rdx, qword [rsp + 0x58]
sub rcx, 8
call method.CryptoPP::HMAC_Base.TruncatedFinal_unsigned_char__unsigned_long_long_
mov rdx, qword [rsp + 0x50]
lea rcx, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
mov rax, qword [rdx]
mov rax, qword [rax + 0x48]
cmp rax, rcx
jne 0x438012
mov rax, qword [rdx - 8]
lea rcx, [rdx - 8]
mov rax, qword [rax + 0xa8]
mov dword [rsp + 0x68], 0xffffffff
call rax
mov rdx, qword [rax]
mov rcx, rax
lea rax, [method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const]
mov rdx, qword [rdx + 0x48]
cmp rdx, rax
je 0x4380c4
mov dword [rsp + 0x68], 0xffffffff
call rdx
mov dword [rsp + 0x110], eax
mov eax, eax
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x28]
jmp 0x437d22
mov r8, qword [rsp + 0x38]
mov rcx, rax
mov rdx, qword [rsp + 0x108]
call sym.memcpy
mov rax, qword [rsp + 0x100]
mov rax, qword [rax + 0x28]
jmp 0x437d22
mov dword [rsp + 0x68], 0xffffffff
mov rcx, rax
call rdx
jmp 0x437c96
mov rcx, rax
call rdx
add eax, eax
mov dword [rsp + 0x40], eax
jmp 0x437c29
mov dword [rsp + 0x68], 0xffffffff
mov rcx, qword [rsp + 0x50]
call rax
jmp 0x437fa3
mov dword [rsp + 0x68], 0xffffffff
mov r9, qword [rsp + 0x38]
mov r8, qword [rsp + 0x108]
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x40]
call r10
jmp 0x437f4a
mov dword [rsp + 0x68], 0xffffffff
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x108]
mov rcx, qword [rsp + 0x40]
call rax
jmp 0x437e9e
mov dword [rsp + 0x68], 0xffffffff
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x40]
call r8
jmp 0x437f4a
mov dword [rsp + 0x68], 0xffffffff
mov rcx, qword [rsp + 0x40]
call rax
jmp 0x437f1a
mov dword [rsp + 0x68], 0xffffffff
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x38]
call rax
jmp 0x437f4a
sub rcx, 8
call method.CryptoPP::HMAC_Base.DigestSize___const
jmp 0x437fa3
sub rcx, 8
call method.CryptoPP::HMAC_Base.DigestSize___const
jmp 0x437c96
sub rcx, 8
call method.CryptoPP::HMAC_Base.DigestSize___const
jmp 0x437f1a