Function at 0x44ff60
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push edi
lea eax, [ebp - 8]
sub esp, 0x94
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x44], sym.___gxx_personality_sj0
mov dword [ebp - 0x40], 0x5c43f2
mov dword [ebp - 0x38], 0x450593
mov dword [ebp - 0x34], esp
mov dword [esp], eax
call dbg._Unwind_SjLj_Register
mov edi, dword [ebp - 0x60]
mov eax, dword [edi]
mov edx, dword [eax + 0x40]
cmp edx, dbg.CryptoPP::HMAC_Base::Restart()
jne 0x450083
cmp byte [edi + 0x18], 0
mov eax, dword [eax + 0x54]
jne 0x450060
mov dword [ebp - 0x58], 0xffffffff
mov ecx, dword [ebp - 0x60]
call eax
mov dword [ebp - 0x74], eax
mov eax, dword [eax]
mov eax, dword [eax + 0x28]
cmp eax, dbg.CryptoPP::HashTransformation::BlockSize() const
jne 0x4500a0
mov dword [esp], 0x20
lea edi, [ebp - 0x20]
call sym.___cxa_allocate_exception
mov ecx, edi
mov dword [ebp - 0x60], eax
mov dword [esp], str.HMAC:_can_only_be_used_with_a_block_based_hash_function
mov dword [ebp - 0x58], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const___clone_.isra.30_
sub esp, 4
mov dword [esp + 4], edi
mov dword [esp], 1
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x58], 2
call fcn.004cee50
push eax
lea edx, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x60]
mov dword [eax], method.CryptoPP::InvalidArgument.InvalidArgument__
mov eax, dword [ebp - 0x20]
cmp eax, edx
je 0x450037
mov dword [esp], eax
call sym.operator_delete_void_
mov dword [esp + 8], method.CryptoPP::InvalidArgument.InvalidArgument__
mov dword [esp + 4], 0x5e0be8
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
mov dword [ebp - 0x58], 0xffffffff
call sym.___cxa_throw
lea esi, [esi]
mov ecx, edi
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x20]
mov edi, dword [ebp - 0x60]
mov eax, dword [edi]
mov byte [edi + 0x18], 0
mov eax, dword [eax + 0x54]
jmp 0x44ffb7
mov ecx, edi
mov dword [ebp - 0x58], 0xffffffff
call edx
mov eax, dword [ebp - 0x60]
mov eax, dword [eax]
mov eax, dword [eax + 0x54]
jmp 0x44ffb7
mov dword [ebp - 0x58], 0xffffffff
mov ecx, dword [ebp - 0x74]
call eax
mov dword [ebp - 0x70], eax
test eax, eax
je 0x44ffd6
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov dword [ebp - 0x64], 0
mov edx, dword [eax]
mov edx, dword [edx + 0x28]
cmp edx, dbg.CryptoPP::HashTransformation::BlockSize() const
jne 0x450470
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov edx, dword [edx + 0x24]
cmp edx, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
jne 0x450460
lea ecx, [eax - 4]
mov eax, dword [eax - 4]
call dword [eax + 0x54]
mov edx, dword [eax]
mov ecx, eax
mov edx, dword [edx + 0x24]
cmp edx, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
je 0x450586
mov dword [ebp - 0x58], 0xffffffff
call edx
mov edx, dword [ebp - 0x60]
add eax, dword [ebp - 0x64]
mov dword [ebp - 0x68], eax
mov ecx, dword [edx + 0x10]
mov edx, dword [edx + 0x14]
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x64], edx
cmp eax, ecx
je 0x4501b0
test edx, edx
mov dword [ebp - 0x6c], edx
setne byte [ebp - 0x79]
test eax, eax
je 0x4502b4
mov dword [esp], eax
mov dword [ebp - 0x58], 0xffffffff
call dbg.CryptoPP::UnalignedAllocate(unsigned int)
mov ecx, eax
mov dword [ebp - 0x64], eax
test eax, eax
je 0x4502bb
cmp byte [ebp - 0x79], 0
je 0x4502bb
mov edi, dword [ebp - 0x68]
mov eax, dword [ebp - 0x78]
cmp edi, eax
cmovbe eax, edi
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x6c]
mov dword [esp], ecx
mov dword [esp + 4], edx
call sym._memcpy
mov edx, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x78]
xor eax, eax
mov edi, edx
rep stosb byte es:[edi], al
mov dword [esp], edx
mov dword [ebp - 0x58], 0xffffffff
call dbg.CryptoPP::UnalignedDeallocate(void*)
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x68]
mov edi, dword [ebp - 0x64]
mov dword [eax + 0x10], edx
mov edx, dword [ebp - 0x70]
mov dword [eax + 0x14], edi
mov dword [eax + 0xc], 0xffffffff
cmp dword [ebp + 0xc], edx
ja 0x4502d0
test edi, edi
je 0x4501f0
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x4501f0
mov edx, dword [ebp + 0xc]
test edx, edx
jne 0x450434
nop
lea esi, [esi]
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x64]
sub edx, dword [ebp + 0xc]
add eax, dword [ebp + 0xc]
mov dword [esp + 4], 0
mov dword [esp + 8], edx
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x64], 0
mov esi, esi
lea edi, [edi]
mov ecx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x64]
add eax, dword [ecx + 0x14]
mov dword [ebp - 0x68], eax
movzx eax, byte [eax]
mov byte [ebp - 0x6c], al
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov edx, dword [edx + 0x28]
cmp edx, dbg.CryptoPP::HashTransformation::BlockSize() const
jne 0x450284
movzx eax, byte [ebp - 0x6c]
mov edx, dword [ebp - 0x68]
mov edi, dword [ebp - 0x64]
xor eax, 0x5c
mov byte [edx], al
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x14]
add eax, edi
add edi, 1
xor byte [eax], 0x36
mov dword [ebp - 0x64], edi
cmp edi, dword [ebp - 0x70]
jne 0x450220
lea eax, [ebp - 0x5c]
mov dword [esp], eax
call sym.__Unwind_SjLj_Unregister
mov edi, dword [ebp - 4]
leave
ret 0xc
mov ecx, eax
call edx
movzx edx, byte [ebp - 0x6c]
mov edi, dword [ebp - 0x68]
xor edx, 0x5c
mov byte [edi + eax], dl
mov edx, dword [ebp - 0x60]
mov edi, dword [ebp - 0x64]
mov eax, dword [edx + 0x14]
add eax, edi
add edi, 1
xor byte [eax], 0x36
mov dword [ebp - 0x64], edi
cmp dword [ebp - 0x70], edi
jne 0x450220
jmp 0x450272
mov dword [ebp - 0x64], 0
mov edi, dword [ebp - 0x6c]
test edi, edi
je 0x4501b0
jmp 0x450195
mov edx, eax
mov eax, dword [eax]
mov ecx, edx
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov ecx, dword [ebp - 0x60]
mov edi, eax
mov dword [ebp - 0x64], eax
mov eax, dword [eax]
mov ecx, dword [ecx + 0x14]
mov edx, dword [eax + 0x34]
mov dword [ebp - 0x68], ecx
cmp edx, dbg.CryptoPP::HashTransformation::CalculateDigest(unsigned char*, unsigned char const*, unsigned int)
jne 0x4504b0
mov eax, dword [eax + 0x14]
cmp eax, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.Update_unsigned_char_const__unsigned_int_
jne 0x4504d8
lea eax, [edi - 4]
cmp byte [edi + 0x14], 0
mov dword [ebp - 0x6c], eax
je 0x450480
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x6c]
mov eax, dword [eax - 4]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov ecx, eax
mov edx, dword [edx + 0x14]
cmp edx, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.Update_unsigned_char_const__unsigned_int_
je 0x45056a
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [ebp - 0x58], 0xffffffff
call edx
sub esp, 8
mov edi, dword [ebp - 0x64]
mov eax, dword [edi]
mov edx, dword [eax + 0x1c]
cmp edx, dbg.CryptoPP::HashTransformation::Final(unsigned char*)
jne 0x4504f9
mov edx, dword [eax + 0x40]
mov eax, dword [eax + 0x24]
mov dword [ebp - 0x6c], edx
cmp eax, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
jne 0x450513
mov eax, dword [edi - 4]
lea ecx, [edi - 4]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov ecx, eax
mov edx, dword [edx + 0x24]
cmp edx, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
je 0x450544
mov dword [ebp - 0x58], 0xffffffff
call edx
cmp dword [ebp - 0x6c], method.non_virtual_thunk_to_CryptoPP::HMAC_Base.TruncatedFinal_unsigned_char__unsigned_int_
jne 0x450523
mov ecx, dword [ebp - 0x64]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x68]
sub ecx, 4
mov dword [esp], eax
mov dword [ebp - 0x58], 0xffffffff
call dbg.CryptoPP::HMAC_Base::TruncatedFinal(unsigned char*, unsigned int)
sub esp, 8
mov edx, dword [ebp - 0x74]
mov eax, dword [edx]
mov eax, dword [eax + 0x24]
cmp eax, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
jne 0x450490
mov eax, dword [edx - 4]
lea ecx, [edx - 4]
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x58], 0xffffffff
call eax
mov edx, dword [eax]
mov ecx, eax
mov edx, dword [edx + 0x24]
cmp edx, method.non_virtual_thunk_to_CryptoPP::HMAC_Base.DigestSize___const
je 0x450551
mov dword [ebp - 0x58], 0xffffffff
call edx
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x64], eax
jmp 0x4501f0
mov edx, dword [ebp + 0xc]
mov dword [esp + 8], edx
mov edx, dword [ebp + 8]
mov dword [esp], edi
mov dword [esp + 4], edx
call sym._memcpy
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x64], eax
jmp 0x4501f0
mov dword [ebp - 0x58], 0xffffffff
mov ecx, eax
call edx
jmp 0x450127
mov ecx, eax
call edx
add eax, eax
mov dword [ebp - 0x64], eax
jmp 0x4500e0
mov ecx, eax
call dbg.CryptoPP::HMAC_Base::KeyInnerHash()
jmp 0x45031f
mov ecx, edx
mov dword [ebp - 0x58], 0xffffffff
call eax
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x64], eax
jmp 0x4501f0
mov eax, dword [ebp + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x58], 0xffffffff
call edx
sub esp, 0xc
jmp 0x4503e2
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov edx, dword [ebp + 8]
mov dword [esp], edx
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x58], 0xffffffff
call eax
sub esp, 8
jmp 0x450360
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x58], 0xffffffff
call edx
sub esp, 4
jmp 0x4503e2
mov ecx, edi
mov dword [ebp - 0x58], 0xffffffff
call eax
jmp 0x4503b6
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x58], 0xffffffff
mov eax, dword [ebp - 0x6c]
call eax
sub esp, 8
jmp 0x4503e2
sub ecx, 4
call dbg.CryptoPP::HMAC_Base::DigestSize() const
jmp 0x4503b6
sub ecx, 4
call dbg.CryptoPP::HMAC_Base::DigestSize() const
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x64], eax
jmp 0x4501f0
mov eax, dword [ebp + 0xc]
sub ecx, 4
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call dbg.CryptoPP::HMAC_Base::Update(unsigned char const*, unsigned int)
push eax
push eax
jmp 0x450360
sub ecx, 4
call dbg.CryptoPP::HMAC_Base::DigestSize() const
jmp 0x450127