Function at 0x4ed0f0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [esp + 0x60]
mov eax, dword [edi]
test byte [eax + 0xc], 8
je 0x4ed2a3
mov eax, dword [eax + 0x10]
lea esi, [edi + 0xc]
mov dword [esp + 0x38], esi
test eax, eax
mov dword [esp + 0x28], eax
je 0x4ed2d0
lea esi, [esi]
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov eax, dword [edx]
cmp eax, 0x138
je 0x4ed540
jle 0x4ed213
cmp eax, 0x13b
je 0x4ed531
jg 0x4ed514
cmp eax, 0x139
je 0x4ed2e0
cmp eax, 0x13a
mov ebx, 0x68
mov esi, 0x68
jne 0x4ed522
lea esi, [esi]
cmp dword [esp + 0x68], ebx
ja 0x4ed244
mov eax, dword [esp + 0x68]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x30], eax
mov eax, dword [edi]
mov ebx, dword [esp + 0x28]
mov edx, dword [edx + 0x1c]
movzx eax, byte [eax + 0xc]
lea ecx, [ebx + 0x10]
mov dword [esp + 0x34], ecx
mov dword [esp], ecx
shl eax, 6
and eax, 0x100
mov dword [esp + 4], eax
call edx
mov eax, dword [esp + 0x2c]
mov dword [edi + 4], 0
test eax, eax
je 0x4ed558
mov ebp, dword [esp + 0x30]
mov ebx, ebp
add ebp, eax
xor eax, eax
jmp 0x4ed1fc
lea eax, [edx + 1]
add ebx, 1
mov dword [edi + 4], eax
movzx ecx, byte [ebx - 1]
xor ecx, 0x36
cmp ebp, ebx
mov byte [edi + edx + 0xc], cl
je 0x4ed310
cmp dword [edi + 8], eax
mov edx, eax
jne 0x4ed1e0
xor edx, edx
xor ecx, ecx
mov eax, edi
call dbg.md_write
mov edx, dword [edi + 4]
jmp 0x4ed1e0
cmp eax, 0x134
je 0x4ed2fb
jg 0x4ed2f0
sub eax, 9
cmp eax, 1
ja 0x4ed522
mov ebx, pe_nt_image_headers32
cmp dword [esp + 0x68], ebx
mov esi, pe_nt_image_headers32
jbe 0x4ed17a
mov eax, dword [edx + 0x18]
mov dword [esp], eax
call sym.__gcry_malloc_secure
test eax, eax
mov dword [esp + 0x30], eax
je 0x4ed59f
mov eax, dword [esp + 0x68]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [ebp]
mov eax, dword [eax]
mov dword [esp], eax
call dbg._gcry_md_hash_buffer
mov edx, dword [ebp]
mov eax, dword [edx + 0x18]
cmp eax, ebx
mov dword [esp + 0x2c], eax
ja 0x4ed561
mov eax, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
jmp 0x4ed192
mov ebx, dword [eax + 0x10]
test ebx, ebx
je 0x4ed2d0
xor edx, edx
mov esi, dword [ebx]
mov eax, dword [esi]
sub eax, 0x13e
cmp eax, 7
jbe 0x4ed4a0
cmp edx, 1
je 0x4ed585
mov esi, esi
lea edi, [edi]
mov eax, 5
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, 0x88
mov esi, 0x88
jmp 0x4ed170
cmp eax, 0x137
jne 0x4ed522
mov ebx, 0x20
mov esi, 0x20
jmp 0x4ed170
mov ecx, dword [esp + 0x2c]
cmp esi, ecx
mov ebx, ecx
jg 0x4ed332
jmp 0x4ed350
lea eax, [edx + 1]
add ebx, 1
cmp esi, ebx
mov dword [edi + 4], eax
mov byte [edi + edx + 0xc], 0x36
je 0x4ed350
cmp dword [edi + 8], eax
mov edx, eax
jne 0x4ed320
xor edx, edx
xor ecx, ecx
mov eax, edi
call dbg.md_write
mov edx, dword [edi + 4]
jmp 0x4ed320
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x34]
mov edx, dword [ebp]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [edx + 0x20]
mov eax, dword [ebp]
mov eax, dword [eax + 0x30]
mov dword [esp + 4], ebx
lea edx, [ebx + eax]
mov dword [esp + 8], eax
mov dword [esp], edx
call sym._memcpy
mov eax, dword [ebp]
mov edx, dword [eax + 0x1c]
mov eax, dword [edi]
movzx eax, byte [eax + 0xc]
mov dword [esp], ebx
shl eax, 6
and eax, 0x100
mov dword [esp + 4], eax
call edx
mov eax, dword [esp + 0x2c]
mov dword [edi + 4], 0
test eax, eax
je 0x4ed54f
mov ebx, dword [esp + 0x30]
lea ebp, [ebx + eax]
xor eax, eax
jmp 0x4ed3d9
lea eax, [edx + 1]
add ebx, 1
mov dword [edi + 4], eax
movzx ecx, byte [ebx - 1]
xor ecx, 0x5c
cmp ebx, ebp
mov byte [edi + edx + 0xc], cl
je 0x4ed3f0
cmp dword [edi + 8], eax
mov edx, eax
jne 0x4ed3c1
xor edx, edx
xor ecx, ecx
mov eax, edi
call dbg.md_write
mov edx, dword [edi + 4]
jmp 0x4ed3c1
mov ebx, dword [esp + 0x2c]
cmp ebx, esi
jl 0x4ed412
jmp 0x4ed430
lea eax, [edx + 1]
add ebx, 1
cmp esi, ebx
mov dword [edi + 4], eax
mov byte [edi + edx + 0xc], 0x5c
je 0x4ed430
cmp dword [edi + 8], eax
mov edx, eax
jne 0x4ed400
xor edx, edx
xor ecx, ecx
mov eax, edi
call dbg.md_write
mov edx, dword [edi + 4]
jmp 0x4ed400
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x34]
mov edx, dword [esi]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [edx + 0x20]
mov eax, dword [esi]
mov eax, dword [eax + 0x30]
mov dword [esp + 4], ebx
lea edx, [ebx + eax*2]
mov dword [esp + 8], eax
mov dword [esp], edx
call sym._memcpy
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call dbg._gcry_free
mov eax, dword [esi + 4]
test eax, eax
mov dword [esp + 0x28], eax
jne 0x4ed120
mov dword [edi + 4], 0
mov dword [esp], edi
call dbg._gcry_md_reset
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esi + 0x30]
lea ebp, [ebx + 0x10]
mov dword [esp + 4], 0
mov dword [esp], ebp
mov dword [esp + 8], eax
call sym._memset
mov eax, dword [edi]
mov edx, dword [esi]
mov esi, dword [esp + 0x68]
movzx eax, byte [eax + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x64]
mov dword [esp], ebp
shl eax, 6
mov dword [esp + 8], esi
and eax, 0x100
mov dword [esp + 4], eax
call dbg._gcry_blake2_init_with_key
test eax, eax
jne 0x4ed58a
mov ebx, dword [ebx + 4]
mov edx, 1
test ebx, ebx
jne 0x4ed2ac
mov edx, dword [edi]
and byte [edx + 0xc], 0xfd
mov dword [edi + 4], 0
jmp 0x4ed2d5
sub eax, 0x13e
cmp eax, 3
jbe 0x4ed230
mov ebx, 0x40
mov esi, 0x40
jmp 0x4ed170
mov ebx, 0x48
mov esi, 0x48
jmp 0x4ed170
mov ebx, 0x90
mov esi, 0x90
jmp 0x4ed170
xor eax, eax
xor ebx, ebx
jmp 0x4ed412
xor eax, eax
xor ebx, ebx
jmp 0x4ed332
mov dword [esp + 0xc], str.prepare_macpads
mov dword [esp + 8], 0x327
mov dword [esp + 4], str.md.c
mov dword [esp], str.k_len___macpad_Bsize
call dbg._gcry_assert_failed
mov eax, 5
mov dword [esp], edi
mov dword [esp + 0x28], eax
call dbg._gcry_md_reset
mov eax, dword [esp + 0x28]
jmp 0x4ed2d5
call dword [sym.imp.msvcrt.dll__errno]
mov eax, dword [eax]
mov dword [esp], eax
call dbg.gpg_err_code_from_errno
test eax, eax
je 0x4ed486
jmp 0x4ed2d5