Function at 0x407b20
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3f0
push ebx
push esi
push edi
mov edi, edx
mov dword [ebp - 0x74], 0x67452301
mov ebx, ecx
mov dword [ebp - 0x10], edi
push 0x40
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x70], 0xefcdab89
mov eax, dword [edi]
movzx esi, byte [ebx + 0xa]
mov dword [ebp - 0x18], eax
movzx eax, byte [ebx + 0xb]
shl si, 8
or si, ax
mov dword [ebp - 0x6c], 0x98badcfe
movzx eax, si
mov esi, dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x68], 0x10325476
mov dword [ebp - 0x64], 0
lea edx, [esi + 0x1486]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x1c], 0
call fcn.00406ca0
mov eax, dword [edi]
sub eax, ebx
je 0x407ba2
push eax
mov edx, ebx
lea ecx, [ebp - 0x74]
call fcn.00406ca0
lea eax, [ebp - 0x290]
mov byte [ebp - 0x3ec], 0x20
mov dword [ebp - 0x3d0], eax
xorps xmm0, xmm0
lea eax, [ebp - 0x190]
mov dword [ebp - 0x3d4], 0
mov dword [ebp - 0x3cc], eax
mov eax, 0x108
mov word [ebp - 0x190], ax
mov eax, dword [0x43d9ac]
mov dword [ebp - 0x398], eax
mov eax, dword [0x43d998]
mov dword [ebp - 0x384], eax
mov ax, word [0x43da2c]
movups xmmword [ebp - 0x3c4], xmm0
mov word [ebp - 0x304], ax
lea eax, [ebp - 0x290]
movups xmm0, xmmword [0x43d99c]
mov dword [ebp - 0x300], eax
xor eax, eax
push 0x3c
movups xmmword [ebp - 0x3a8], xmm0
push eax
movups xmm0, xmmword [0x43d988]
mov dword [ebp - 0x2a4], eax
mov dword [ebp - 0x298], eax
mov dword [ebp - 0x294], eax
mov word [ebp - 0x2a0], ax
lea eax, [ebp - 0x2f4]
movups xmmword [ebp - 0x394], xmm0
mov dword [ebp - 0x3ea], 0x100fa
xorps xmm0, xmm0
mov dword [ebp - 0x3e4], 0x1194
push eax
mov dword [ebp - 0x3c8], 0
mov dword [ebp - 0x3b4], 0
mov dword [ebp - 0x3b0], 0
mov word [ebp - 0x3ac], 0
mov byte [ebp - 0x3aa], 0
mov dword [ebp - 0x380], 0
mov dword [ebp - 0x37c], 0
mov dword [ebp - 0x378], 0
movups xmmword [ebp - 0x314], xmm0
mov dword [ebp - 0x2fc], 0
mov dword [ebp - 0x2f8], 0
mov dword [ebp - 0x29c], 0
call sub.VCRUNTIME140.dll_memset
lea edi, [esi + 0x1264]
mov dword [ebp - 0x2b8], 0
add esi, 0x1364
mov dword [ebp - 0x2b4], 0
add esp, 0xc
mov byte [ebp - 0x290], 0
mov ecx, edi
mov edx, pe_nt_image_headers32
cmp edi, esi
jae 0x407d2b
mov al, byte [ecx]
cmp al, 0x3f
ja 0x407d2b
test al, al
je 0x407e51
inc ecx
movzx eax, al
add ecx, eax
cmp ecx, esi
jb 0x407d13
mov byte [ebp - 0x290], 0
mov ecx, edi
cmp edi, esi
jae 0x407d50
mov al, byte [ecx]
cmp al, 0x3f
ja 0x407d50
test al, al
je 0x407e76
inc ecx
movzx eax, al
add ecx, eax
cmp ecx, esi
jb 0x407d38
mov eax, 0x101
movzx eax, ax
test eax, eax
je 0x407d67
push eax
mov edx, edi
lea ecx, [ebp - 0x74]
call fcn.00406ca0
mov eax, 0xff
mov word [ebp - 4], 0xff00
mov word [ebp - 0x3e8], ax
lea edx, [ebp - 4]
mov ax, word [ebp - 4]
lea ecx, [ebp - 0x74]
push 2
mov word [ebp - 4], ax
call fcn.00406ca0
push 4
lea edx, [ebp - 0x3e4]
mov dword [ebp - 0x3e4], 0
lea ecx, [ebp - 0x74]
call fcn.00406ca0
mov ecx, str._bhmac_md5_asig_alg
nop dword [eax]
mov al, byte [ecx]
mov edi, str._bhmac_md5_asig_alg
cmp al, 0x3f
ja 0x407dd1
test al, al
je 0x407e81
inc ecx
movzx eax, al
add ecx, eax
cmp ecx, 0x43dd3c
jb 0x407db0
mov eax, dword [ebp - 0x3cc]
mov byte [eax + 4], 0
mov ecx, str._bhmac_md5_asig_alg
mov al, byte [ecx]
cmp al, 0x3f
ja 0x407dfc
test al, al
je 0x407eb4
inc ecx
movzx eax, al
add ecx, eax
cmp ecx, 0x43dd3c
jb 0x407de0
mov eax, 0x101
mov esi, dword [ebp - 0x3cc]
movzx ecx, ax
add esi, ecx
test ecx, ecx
je 0x407e1b
push ecx
mov edx, edi
lea ecx, [ebp - 0x74]
call fcn.00406ca0
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
mov ecx, eax
add esp, 4
mov dword [ebp - 0xc], ecx
cmp ecx, 0xffffffff
jne 0x407ec1
push str.ERROR:_DNSDigest_SignMessage___mDNSPlatformUTC_returned_bad_time__1
push 0
call fcn.0041dc40
mov edi, dword [ebp - 0x10]
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword [edi], 0
jmp 0x407ec4
sub ecx, edi
inc ecx
movzx eax, cx
cmp ax, dx
ja 0x407d2b
push eax
lea eax, [ebp - 0x290]
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp 0x407d32
sub ecx, edi
inc ecx
movzx eax, cx
jmp 0x407d55
sub cx, di
inc cx
movzx eax, cx
mov ecx, pe_nt_image_headers32
cmp ax, cx
ja 0x407dd1
push eax
mov eax, dword [ebp - 0x3cc]
add eax, 4
push str._bhmac_md5_asig_alg
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
jmp 0x407ddb
sub cx, di
inc cx
movzx eax, cx
jmp 0x407e01
mov edi, dword [ebp - 0x10]
mov eax, ecx
mov word [ebp - 0xc], 0
shr eax, 0x18
lea edx, [ebp - 0xc]
mov byte [ebp - 0xa], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp - 9], al
mov eax, ecx
shr eax, 8
mov byte [ebp - 8], al
mov eax, dword [ebp - 0xc]
mov byte [ebp - 7], cl
lea ecx, [ebp - 0x74]
mov dword [esi + 4], eax
mov ax, word [ebp - 8]
push 6
mov word [esi + 8], ax
call fcn.00406ca0
push 2
lea edx, [esi + 0xa]
mov word [esi + 0xa], 0x2c01
lea ecx, [ebp - 0x74]
call fcn.00406ca0
push 2
lea edx, [ebp - 4]
mov word [ebp - 4], 0
lea ecx, [ebp - 0x74]
call fcn.00406ca0
xor eax, eax
lea edx, [ebp - 4]
push 2
lea ecx, [ebp - 0x74]
mov word [ebp - 4], ax
call fcn.00406ca0
lea edx, [ebp - 0x74]
lea ecx, [ebp - 0x84]
call fcn.00406fb0
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x74]
push 0x40
add edx, 0x14c6
mov dword [ebp - 0x74], 0x67452301
mov dword [ebp - 0x70], 0xefcdab89
mov dword [ebp - 0x6c], 0x98badcfe
mov dword [ebp - 0x68], 0x10325476
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x1c], 0
call fcn.00406ca0
push 0x10
lea edx, [ebp - 0x84]
lea ecx, [ebp - 0x74]
call fcn.00406ca0
lea edx, [ebp - 0x74]
lea ecx, [ebp - 0x84]
call fcn.00406fb0
movups xmm0, xmmword [ebp - 0x84]
mov edx, dword [ebp - 0x18]
mov ecx, ebx
mov word [esi + 0xc], 0x1000
movups xmmword [esi + 0xe], xmm0
movzx eax, byte [ebx]
add esi, 0x1e
mov byte [esi], al
movzx eax, byte [ebx + 1]
mov byte [esi + 1], al
lea eax, [ebx + 0x22f8]
push eax
mov dword [esi + 2], 0
lea eax, [ebp - 0x3ec]
sub esi, dword [ebp - 0x3cc]
push 0
push eax
lea eax, [ebp - 0x14]
add esi, 2
push eax
mov word [ebp - 0x3e0], si
call fcn.00403fd0
mov dword [edi], eax
test eax, eax
jne 0x408021
push str.ERROR:_DNSDigest_SignMessage___could_not_put_TSIG
push eax
call fcn.0041dc40
add esp, 8
mov dword [edi], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 0x14]
mov eax, ecx
pop edi
shr eax, 8
pop esi
mov byte [ebx + 0xa], al
mov byte [ebx + 0xb], cl
pop ebx
mov esp, ebp
pop ebp
ret 8