Function at 0x404f10
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
push edi
mov edi, edx
test ebx, ebx
je 0x404f37
push 0x40
push 0
push ebx
call fcn.0043e940
add esp, 0xc
push edi
lea eax, [esp + 0x3c]
mov dword [esp + 0x3c], 0xaac56b
push eax
push 0xffffffffffffffff
mov dword [esp + 0x48], 0x11d0cd44
mov dword [esp + 0x4c], 0xc000c28c
mov dword [esp + 0x50], 0xee95c24f
call dword [sym.imp.WINTRUST.dll_WinVerifyTrust]
test eax, eax
je 0x404f78
test ebx, ebx
je 0x404fb8
mov dword [ebx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x405a04
push 0
lea eax, [esp + 0x30]
mov dword [esp + 0x38], 0
push eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x34], 0
push eax
push 0
push 0
push 0
push 0
push 2
push 0x400
push esi
push 1
call dword [sym.imp.CRYPT32.dll_CryptQueryObject]
test eax, eax
jne 0x404fc1
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [sym.imp.CRYPT32.dll_CryptMsgGetParam]
lea eax, [esp + 0x30]
xor edi, edi
push eax
push edi
push edi
push 6
push dword [esp + 0x3c]
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x3c], edi
call esi
mov ecx, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov dword [esp + 0xc], ecx
test eax, eax
je 0x405010
mov eax, dword [esp + 0x30]
test eax, eax
je 0x405010
push eax
push 8
call ecx
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
mov dword [esp + 0x10], eax
test edi, edi
je 0x4059e4
lea eax, [esp + 0x30]
push eax
push edi
push 0
push 6
push dword [esp + 0x3c]
call esi
test eax, eax
mov eax, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [esp + 0x14], eax
je 0x4059c4
mov ebx, dword [edi + 0x34]
xor esi, esi
test ebx, ebx
je 0x405089
mov edi, dword [edi + 0x38]
mov ecx, dword [edi]
mov eax, str.1.3.6.1.4.1.311.2.1.12
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405070
test dl, dl
je 0x40506c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405070
add eax, 2
add ecx, 2
test dl, dl
jne 0x405050
xor eax, eax
jmp 0x405075
sbb eax, eax
or eax, 1
test eax, eax
je 0x40538b
inc esi
add edi, 0xc
cmp esi, ebx
jb 0x405045
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0xc]
push 0
mov dword [esp + 0x60], eax
lea eax, [esp + 0x5c]
push eax
push 0xb0000
push 0
push 0x10001
push dword [esp + 0x48]
mov dword [esp + 0x8c], ecx
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x78], ecx
call dword [sym.imp.CRYPT32.dll_CertFindCertificateInStore]
mov edi, eax
test edi, edi
je 0x405338
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx + 4]
test eax, eax
je 0x405132
lea eax, [eax*4 + 2]
push eax
push 8
call esi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
mov eax, dword [ebp + 8]
mov dword [eax + 0x28], esi
test esi, esi
je 0x405132
mov ecx, dword [edi + 0xc]
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x405132
nop word [eax + eax]
mov eax, dword [edi + 0xc]
mov eax, dword [eax + 8]
movzx eax, byte [eax + ebx - 1]
push eax
push str._02X
push esi
call fcn.00404dd0
add esp, 0xc
lea esi, [esi + eax*2]
sub ebx, 1
jne 0x405110
mov esi, dword [sym.imp.CRYPT32.dll_CertGetNameStringW]
push 0
push 0
push 0
push 0
push 5
push edi
call esi
mov ebx, eax
test ebx, ebx
je 0x405193
lea eax, [ebx*2 + 2]
test eax, eax
je 0x405193
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x14], eax
test eax, eax
je 0x405193
push ebx
push eax
push 0
push 1
push 5
push edi
call esi
test eax, eax
jne 0x40519d
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x405193
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov dword [eax + 0x14], 0
push 0
push 0
push 0
push 0
push 4
push edi
call esi
mov ebx, eax
test ebx, ebx
je 0x4051f8
lea eax, [ebx*2 + 2]
test eax, eax
je 0x4051f8
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x10], eax
test eax, eax
je 0x4051f8
push ebx
push eax
push 0
push 1
push 4
push edi
call esi
test eax, eax
jne 0x405202
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4051f8
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov dword [eax + 0x10], 0
push 0
push 0
push 0
push 0
push 4
push edi
call esi
mov ebx, eax
test ebx, ebx
je 0x40525d
lea eax, [ebx*2 + 2]
test eax, eax
je 0x40525d
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
test eax, eax
je 0x40525d
push ebx
push eax
push 0
push 0
push 4
push edi
call esi
test eax, eax
jne 0x405267
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
test eax, eax
je 0x40525d
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov dword [eax + 4], 0
push 0
push 0
push 0
push 0
push 7
push edi
call esi
mov ebx, eax
test ebx, ebx
je 0x4052c2
lea eax, [ebx*2 + 2]
test eax, eax
je 0x4052c2
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], eax
test eax, eax
je 0x4052c2
push ebx
push eax
push 0
push 0
push 7
push edi
call esi
test eax, eax
jne 0x4052cc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4052c2
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
push 0
push 0
push 0
push 0
push 1
push edi
call esi
mov ebx, eax
test ebx, ebx
je 0x405327
lea eax, [ebx*2 + 2]
test eax, eax
je 0x405327
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 8], eax
test eax, eax
je 0x405327
push ebx
push eax
push 0
push 0
push 1
push edi
call esi
test eax, eax
jne 0x405331
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
test eax, eax
je 0x405327
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
push edi
call dword [sym.imp.CRYPT32.dll_CertFreeCertificateContext]
mov ecx, dword [esp + 0x10]
xor edi, edi
cmp dword [ecx + 0x34], edi
jbe 0x40575d
xor ebx, ebx
nop dword [eax]
mov esi, dword [ecx + 0x38]
mov eax, str.1.2.840.113549.1.9.5
mov ecx, dword [esi + ebx]
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4056ce
test dl, dl
je 0x405384
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4056ce
add eax, 2
add ecx, 2
test dl, dl
jne 0x405360
xor eax, eax
jmp 0x4056d3
mov edi, dword [esp + 0x10]
lea esi, [esi + esi*2]
mov dword [esp + 0x20], 0
mov eax, dword [edi + 0x38]
mov eax, dword [eax + esi*4 + 8]
test eax, eax
je 0x4056c0
mov ebx, dword [sym.imp.CRYPT32.dll_CryptDecodeObject]
lea ecx, [esp + 0x20]
push ecx
push 0
push 0
push dword [eax]
push dword [eax + 4]
push str.1.3.6.1.4.1.311.2.1.12
push 0x10001
call ebx
test eax, eax
je 0x405089
mov eax, dword [esp + 0x20]
test eax, eax
je 0x405089
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
mov dword [esp + 0x18], edi
test edi, edi
je 0x405085
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0x38]
mov ecx, dword [ecx + esi*4 + 8]
test ecx, ecx
je 0x4056a0
cmp dword [esp + 0x20], 0
je 0x4056a0
lea eax, [esp + 0x20]
push eax
push edi
push 0
push dword [ecx]
push dword [ecx + 4]
push str.1.3.6.1.4.1.311.2.1.12
push 0x10001
call ebx
test eax, eax
je 0x4056a9
mov ebx, dword [edi]
test ebx, ebx
jne 0x405442
xor eax, eax
jmp 0x4054a6
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405447
sub esi, ecx
sar esi, 1
cmp esi, 0xffffffff
jne 0x40546f
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405460
sub esi, ecx
sar esi, 1
lea eax, [esi*2 + 4]
test eax, eax
je 0x4054a6
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
je 0x4054a2
test esi, esi
je 0x4054a2
lea eax, [esi + 1]
push eax
push ebx
push edi
call fcn.00446995
add esp, 0xc
mov eax, edi
mov edi, dword [esp + 0x18]
mov edx, dword [ebp + 8]
mov dword [edx + 0x18], eax
mov ecx, dword [edi + 8]
test ecx, ecx
je 0x40557c
mov eax, dword [ecx]
sub eax, 1
je 0x4054fd
sub eax, 2
jne 0x40557c
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x405579
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4054d7
sub esi, ecx
sar esi, 1
cmp esi, 0xffffffff
jne 0x40553f
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4054f0
jmp 0x40553b
mov ebx, dword [ecx + 4]
test ebx, ebx
jne 0x405508
xor eax, eax
jmp 0x405579
mov esi, ebx
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405510
sub esi, ecx
sar esi, 1
cmp esi, 0xffffffff
jne 0x40553f
mov esi, ebx
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405530
sub esi, ecx
sar esi, 1
lea eax, [esi*2 + 4]
test eax, eax
je 0x405579
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
je 0x405572
test esi, esi
je 0x405572
lea eax, [esi + 1]
push eax
push ebx
push edi
call fcn.00446995
mov eax, edi
add esp, 0xc
mov edi, dword [esp + 0x18]
mov edx, dword [ebp + 8]
mov dword [edx + 0x1c], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x4056a9
mov ecx, dword [eax]
sub ecx, 1
je 0x40565c
sub ecx, 2
jne 0x4056a9
mov ebx, dword [eax + 4]
test ebx, ebx
jne 0x4055bd
mov esi, dword [esp + 0xc]
xor eax, eax
push edi
push eax
mov dword [edx + 0x20], eax
call esi
push eax
call dword [esp + 0x20]
mov edi, dword [esp + 0x10]
jmp 0x40508d
mov esi, ebx
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4055c2
sub esi, ecx
sar esi, 1
cmp esi, 0xffffffff
jne 0x4055ef
mov esi, ebx
lea ecx, [esi + 2]
nop dword [eax + eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4055e0
sub esi, ecx
sar esi, 1
lea eax, [esi*2 + 4]
test eax, eax
jne 0x405613
mov esi, dword [esp + 0xc]
push edi
push eax
mov dword [edx + 0x20], eax
call esi
push eax
call dword [esp + 0x20]
mov edi, dword [esp + 0x10]
jmp 0x40508d
push eax
push 8
call dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
je 0x40563b
test esi, esi
je 0x40563b
lea eax, [esi + 1]
push eax
push ebx
push edi
call fcn.00446995
add esp, 0xc
mov eax, edi
mov edi, dword [esp + 0x18]
mov edx, dword [ebp + 8]
mov esi, dword [esp + 0xc]
push edi
push 0
mov dword [edx + 0x20], eax
call esi
push eax
call dword [esp + 0x20]
mov edi, dword [esp + 0x10]
jmp 0x40508d
mov ebx, dword [eax + 4]
test ebx, ebx
jne 0x405667
xor eax, eax
jmp 0x405642
mov esi, ebx
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405670
sub esi, ecx
sar esi, 1
cmp esi, 0xffffffff
jne 0x4055ef
mov esi, ebx
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x405690
jmp 0x4055eb
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0x57
call eax
mov esi, dword [esp + 0xc]
push edi
push 0
call esi
push eax
call dword [esp + 0x20]
mov edi, dword [esp + 0x10]
jmp 0x40508d
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0x57
call eax
jmp 0x405089
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40574c
cmp dword [esi + ebx + 4], eax
je 0x40574c
mov dword [esp + 0x20], 8
mov eax, dword [esi + ebx + 8]
test eax, eax
je 0x405744
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x4c]
push ecx
push 0
push dword [eax]
push dword [eax + 4]
push str.1.2.840.113549.1.9.5
push 0x10001
call dword [sym.imp.CRYPT32.dll_CryptDecodeObject]
test eax, eax
je 0x40574c
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
jne 0x40574c
mov esi, dword [ebp + 8]
lea eax, [esp + 0x18]
add esi, 0x30
push esi
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
jne 0x40574c
xorps xmm0, xmm0
movups xmmword [esi], xmm0
jmp 0x40574c
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [esp + 0x10]
inc edi
add ebx, 0xc
cmp edi, dword [ecx + 0x34]
jb 0x405350
mov edi, dword [esp + 0x10]
xor esi, esi
mov ebx, dword [edi + 0x3c]
test ebx, ebx
je 0x4059c4
mov edi, dword [edi + 0x40]
mov eax, dword [edi]
mov ecx, str.1.2.840.113549.1.9.6
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405798
test dl, dl
je 0x405794
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405798
add eax, 2
add ecx, 2
test dl, dl
jne 0x405778
xor eax, eax
jmp 0x40579d
sbb eax, eax
or eax, 1
test eax, eax
je 0x4057b9
inc esi
add edi, 0xc
cmp esi, ebx
jb 0x405771
call dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
push ecx
push 0
jmp 0x4059df
mov edi, dword [esp + 0x10]
lea esi, [esi + esi*2]
mov eax, dword [edi + 0x40]
mov eax, dword [eax + esi*4 + 8]
test eax, eax
je 0x4059b3
cmp dword [esp + 0x28], 0
jne 0x4059b3
lea ecx, [esp + 0x28]
push ecx
push 0
push 0
push dword [eax]
push dword [eax + 4]
push 0x1f4
push 0x10001
call dword [sym.imp.CRYPT32.dll_CryptDecodeObject]
test eax, eax
je 0x4059c4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4059c4
mov ebx, dword [esp + 0xc]
push eax
push 8
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [esp + 0x24], eax
test eax, eax
je 0x4059c4
mov ecx, dword [edi + 0x40]
mov ecx, dword [ecx + esi*4 + 8]
test ecx, ecx
je 0x405990
cmp dword [esp + 0x28], 0
je 0x405990
lea edx, [esp + 0x28]
push edx
push eax
push 0
push dword [ecx]
push dword [ecx + 4]
push 0x1f4
push 0x10001
call dword [sym.imp.CRYPT32.dll_CryptDecodeObject]
test eax, eax
je 0x405998
mov ecx, dword [esp + 0x24]
add ecx, 0x34
je 0x40596f
mov eax, dword [ecx]
test eax, eax
je 0x40596f
xor esi, esi
test eax, eax
je 0x40596f
xor ebx, ebx
nop word [eax + eax]
mov edi, dword [ecx + 4]
mov eax, str.1.2.840.113549.1.9.5
mov ecx, dword [edi + ebx]
nop dword [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4058c0
test dl, dl
je 0x4058bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4058c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4058a0
xor eax, eax
jmp 0x4058c5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x405954
mov dword [esp + 0x20], 8
mov eax, dword [edi + ebx + 8]
test eax, eax
je 0x40594c
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x54]
push ecx
push 0
push dword [eax]
push dword [eax + 4]
push str.1.2.840.113549.1.9.5
push 0x10001
call dword [sym.imp.CRYPT32.dll_CryptDecodeObject]
test eax, eax
je 0x405954
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
test eax, eax
je 0x405954
mov edi, dword [ebp + 8]
lea eax, [edi + 0x30]
push eax
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
test eax, eax
je 0x405954
mov dword [edi + 0x2c], 1
call dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
push ecx
push 0
push eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x24]
jmp 0x4059d8
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ecx, dword [esp + 0x24]
inc esi
add ecx, 0x34
add ebx, 0xc
cmp esi, dword [ecx]
jb 0x405890
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
mov eax, dword [ebp + 8]
xorps xmm0, xmm0
mov dword [eax + 0x2c], 0
movups xmmword [eax + 0x30], xmm0
call ebx
push edi
push 0
push eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x24]
jmp 0x4059d8
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
push dword [esp + 0x24]
mov esi, ebx
push 0
call esi
mov ebx, dword [esp + 0x1c]
push eax
call ebx
call esi
push edi
push 0
push eax
call ebx
jmp 0x4059e4
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
call dword [esp + 0xc]
push edi
push 0
jmp 0x4059df
push edi
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4059e4
push eax
push 0
call dword [esp + 0x14]
push eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4059f5
push 0
push eax
call dword [sym.imp.CRYPT32.dll_CertCloseStore]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x405a04
push eax
call dword [sym.imp.CRYPT32.dll_CryptMsgClose]
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret