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

Disassembly:
sub esp, 0x200
mov eax, dword [0x4a99c8]
xor eax, esp
mov dword [esp + 0x1fc], eax
push ebx
mov ebx, dword [esp + 0x208]
xor eax, eax
mov dword [esp + 4], ebx
mov dword [esp + 0x18], eax
cmp dword [ebx + 0x437c], eax
jle 0x40fadc
mov ebx, dword [esp + 0x20c]
push ebp
push esi
push edi
nop dword [eax]
imul ebp, eax, 0x11c
mov eax, dword [esp + 0x10]
add eax, ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], eax
cmp dword [eax + 0x4390], 0
je 0x40fac0
cmp dword [eax + 0x438c], 0
je 0x40fac0
mov esi, dword [eax + 0x4380]
lea edi, [eax + 0x4380]
mov ecx, str.extKeyUsage
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f0d1
test dl, dl
je 0x40f0cd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f0d1
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f0b1
xor eax, eax
jmp 0x40f0d6
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f28a
xor ebp, ebp
test ebx, ebx
je 0x40f0f2
push esi
push 0x440b20
call fcn.00414b20
add esp, 8
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ebx
lea ecx, [eax + 0x4394]
mov byte [edx + eax + 0x4394], 0
add ecx, edx
push dword [edx + eax + 0x438c]
mov dword [esp + 0x24], ecx
push dword [edx + eax + 0x4390]
lea eax, [esp + 0x38]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40f23b
mov eax, dword [esp + 0x34]
cmp eax, 0x10
je 0x40f157
push dword [eax*4 + 0x48ab70]
push str._not_as_sequence__skipping__tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f23b
push ebx
push dword [esp + 0x44]
lea eax, [esp + 0x74]
push dword [esp + 0x4c]
push 0xa
push eax
call fcn.0040dd70
mov ebx, eax
add esp, 0x14
mov dword [esp + 0x18], ebx
cmp ebx, 1
jl 0x40f234
test ebx, ebx
jle 0x40f234
lea esi, [esp + 0x78]
mov dword [esp + 0x14], esi
nop
cmp dword [esi - 4], 6
jne 0x40f271
push dword [esi]
push dword [esi + 4]
call fcn.00411f20
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x40f252
mov edx, dword [ecx + 0x30]
mov ebx, edx
lea edi, [ebx + 1]
nop dword [eax]
mov al, byte [ebx]
inc ebx
test al, al
jne 0x40f1c0
sub ebx, edi
lea eax, [ebp + 1]
add eax, ebx
cmp eax, 0x100
jge 0x40f21c
mov edi, dword [esp + 0x1c]
test ebp, ebp
jle 0x40f1e9
mov byte [edi + ebp], 0x2c
inc ebp
mov byte [edi + ebp], 0
mov edx, dword [ecx + 0x30]
mov esi, edx
nop dword [eax + eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x40f1f0
sub edx, esi
dec edi
nop word [eax + eax]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40f200
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
add ebp, ebx
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
add esi, 0x20
sub ebx, 1
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ebx
jne 0x40f190
mov ebx, dword [esp + 0x218]
test ebx, ebx
je 0x40fac0
mov eax, dword [esp + 0x20]
add eax, 0x4394
push eax
jmp 0x40fab3
cmp dword [esp + 0x218], 0
je 0x40f220
push dword [0x48ab88]
push str._OID_not_found_skipping_Extension_data_parse__tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f220
cmp dword [esp + 0x218], 0
je 0x40f220
push str._expected_OID__skipping_Extension_data_parse_n
call fcn.00414b20
add esp, 4
jmp 0x40f220
mov ecx, str.keyUsage
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f2b1
test dl, dl
je 0x40f2ad
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f2b1
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f291
xor eax, eax
jmp 0x40f2b6
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f500
test ebx, ebx
je 0x40f2d0
push esi
push 0x440b20
call fcn.00414b20
add esp, 8
mov eax, dword [esp + 0x10]
push ebx
lea esi, [eax + 0x4394]
add esi, ebp
mov byte [esi], 0
push dword [eax + ebp + 0x438c]
push dword [eax + ebp + 0x4390]
lea eax, [esp + 0x58]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40faae
mov eax, dword [esp + 0x54]
cmp eax, 3
je 0x40f330
test ebx, ebx
je 0x40fac0
push dword [eax*4 + 0x48ab70]
push str._not_a_bit_string__skipping_tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40faae
mov eax, dword [esp + 0x5c]
mov byte [esi], 0
movzx edx, byte [eax + 1]
mov cl, byte [eax]
shr edx, cl
test dl, 1
je 0x40f37a
lea ecx, [esi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f347
mov eax, dword [str.DigitalSignature]
mov dword [ecx], eax
mov eax, dword [0x45618c]
mov dword [ecx + 4], eax
mov eax, dword [0x456190]
mov dword [ecx + 8], eax
mov eax, dword [0x456194]
mov dword [ecx + 0xc], eax
mov ax, word [0x456198]
mov word [ecx + 0x10], ax
test dl, 2
je 0x40f3b3
lea ecx, [esi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f382
mov eax, dword [str.CertificateSign]
mov dword [ecx], eax
mov eax, dword [0x4561a0]
mov dword [ecx + 4], eax
mov eax, dword [0x4561a4]
mov dword [ecx + 8], eax
mov eax, dword [0x4561a8]
mov dword [ecx + 0xc], eax
mov al, byte [0x4561ac]
mov byte [ecx + 0x10], al
test dl, 4
je 0x40f3f3
lea ecx, [esi - 1]
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f3c0
mov eax, dword [str.Key_Encipherment]
mov dword [ecx], eax
mov eax, dword [0x4561b4]
mov dword [ecx + 4], eax
mov eax, dword [0x4561b8]
mov dword [ecx + 8], eax
mov eax, dword [0x4561bc]
mov dword [ecx + 0xc], eax
mov ax, word [0x4561c0]
mov word [ecx + 0x10], ax
test dl, 8
je 0x40f433
lea ecx, [esi - 1]
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f400
mov eax, dword [str.DataEncipherment]
mov dword [ecx], eax
mov eax, dword [0x4561c8]
mov dword [ecx + 4], eax
mov eax, dword [0x4561cc]
mov dword [ecx + 8], eax
mov eax, dword [0x4561d0]
mov dword [ecx + 0xc], eax
mov ax, word [0x4561d4]
mov word [ecx + 0x10], ax
test dl, 0x10
je 0x40f46b
lea ecx, [esi - 1]
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f440
mov eax, dword [str.KeyAgreement]
mov dword [ecx], eax
mov eax, dword [0x4561dc]
mov dword [ecx + 4], eax
mov eax, dword [0x4561e0]
mov dword [ecx + 8], eax
mov ax, word [0x4561e4]
mov word [ecx + 0xc], ax
test dl, 0x20
je 0x40f49c
lea ecx, [esi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f473
mov eax, dword [str.KeyCertSign]
mov dword [ecx], eax
mov eax, dword [0x4561ec]
mov dword [ecx + 4], eax
mov eax, dword [0x4561f0]
mov dword [ecx + 8], eax
mov al, byte [0x4561f4]
mov byte [ecx + 0xc], al
test dl, 0x40
je 0x40f4c5
lea ecx, [esi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f4a4
mov eax, dword [str.CRLSign]
mov dword [ecx], eax
mov eax, dword [0x4561fc]
mov dword [ecx + 4], eax
mov al, byte [0x456200]
mov byte [ecx + 8], al
test dl, dl
jns 0x40faae
lea ecx, [esi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40f4d0
mov eax, dword [str.EncipherOnly]
mov dword [ecx], eax
mov eax, dword [0x456208]
mov dword [ecx + 4], eax
mov eax, dword [0x45620c]
mov dword [ecx + 8], eax
mov ax, word [0x456210]
mov word [ecx + 0xc], ax
jmp 0x40faae
mov ecx, str.subjectKeyIdentifier
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f527
test dl, dl
je 0x40f523
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f527
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f507
xor eax, eax
jmp 0x40f52c
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f59b
mov eax, dword [esp + 0x10]
xor esi, esi
cmp dword [eax + ebp + 0x438c], esi
jle 0x40f586
lea ebx, [eax + 0x4394]
mov edi, 0x100
add ebx, ebp
nop dword [eax]
mov eax, dword [eax + ebp + 0x4390]
movzx eax, byte [eax + esi]
push eax
push str._2.2x
push edi
push ebx
call fcn.00401010
mov eax, dword [esp + 0x20]
inc esi
add esp, 0x10
sub edi, 3
add ebx, 3
cmp esi, dword [eax + ebp + 0x438c]
jl 0x40f550
mov ebx, dword [esp + 0x218]
test ebx, ebx
je 0x40fac0
add eax, 0x4394
add eax, ebp
push eax
jmp 0x40fab3
mov ecx, str.subjectAltName
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f5c2
test dl, dl
je 0x40f5be
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f5c2
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f5a2
xor eax, eax
jmp 0x40f5c7
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f5ee
push ebx
push edi
call fcn.0040fc70
add esp, 8
test ebx, ebx
je 0x40fac0
mov eax, dword [esp + 0x10]
add eax, 0x4394
add eax, ebp
push eax
jmp 0x40fab3
mov ecx, str.issuerAltName
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f615
test dl, dl
je 0x40f611
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f615
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f5f5
xor eax, eax
jmp 0x40f61a
sbb eax, eax
or eax, 1
test eax, eax
je 0x40fac0
mov ecx, str.authorityKeyIdentifier
mov eax, esi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f650
test dl, dl
je 0x40f64c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f650
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f630
xor eax, eax
jmp 0x40f655
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f7bd
test ebx, ebx
je 0x40f66f
push esi
push 0x440b20
call fcn.00414b20
add esp, 8
mov eax, dword [esp + 0x10]
add eax, 0x4394
add eax, ebp
mov dword [esp + 0x18], eax
mov byte [eax], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + ebp + 0x4390]
test ecx, ecx
je 0x40f7a6
mov eax, dword [eax + ebp + 0x438c]
test eax, eax
je 0x40f7a6
push ebx
push eax
push ecx
lea eax, [esp + 0x38]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40f7a6
mov eax, dword [esp + 0x34]
cmp eax, 0x10
je 0x40f6e8
test ebx, ebx
je 0x40fac0
push dword [eax*4 + 0x48ab70]
push str._not_as_sequence__skipping_tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f7a6
push ebx
push dword [esp + 0x44]
lea eax, [esp + 0x1b4]
push dword [esp + 0x4c]
push 3
push eax
call fcn.0040dd70
mov edi, eax
add esp, 0x14
mov dword [esp + 0x1c], edi
cmp edi, 1
jl 0x40f7a6
test edi, edi
jle 0x40f7a6
lea ebx, [esp + 0x1b8]
mov dword [esp + 0x14], ebx
mov eax, dword [ebx - 4]
test eax, eax
je 0x40f74c
cmp dword [esp + 0x218], 0
je 0x40f78f
push dword [eax*4 + 0x48ab70]
push str._not_a_BER__skipping_extension__tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f78f
mov ebp, dword [ebx]
xor esi, esi
mov eax, dword [ebx + 4]
mov dword [esp + 0x28], eax
test ebp, ebp
jle 0x40f78f
mov ebx, dword [esp + 0x18]
mov edi, 0x100
movzx eax, byte [esi + eax]
push eax
push str._2.2x
push edi
push ebx
call fcn.00401010
mov eax, dword [esp + 0x38]
inc esi
add esp, 0x10
sub edi, 3
add ebx, 3
cmp esi, ebp
jl 0x40f764
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
add ebx, 0x20
sub edi, 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edi
jne 0x40f725
mov ebx, dword [esp + 0x218]
test ebx, ebx
je 0x40fac0
mov eax, dword [esp + 0x20]
add eax, 0x4394
push eax
jmp 0x40fab3
mov ecx, str.cRLDistributionPoints
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f7e4
test dl, dl
je 0x40f7e0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f7e4
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f7c4
xor eax, eax
jmp 0x40f7e9
sbb eax, eax
or eax, 1
test eax, eax
je 0x40fac0
mov ecx, str.authorityInfoAccess
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f818
test dl, dl
je 0x40f814
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f818
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f7f8
xor eax, eax
jmp 0x40f81d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40f993
test ebx, ebx
je 0x40f837
push esi
push 0x440b20
call fcn.00414b20
add esp, 8
mov eax, dword [esp + 0x10]
push ebx
lea edi, [eax + 0x4394]
add edi, ebp
mov byte [edi], 0
push dword [eax + ebp + 0x438c]
push dword [eax + ebp + 0x4390]
lea eax, [esp + 0x38]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40f985
mov eax, dword [esp + 0x34]
cmp eax, 0x10
je 0x40f897
test ebx, ebx
je 0x40fac0
push dword [eax*4 + 0x48ab70]
push str._not_as_sequence__skipping_tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f985
push ebx
push dword [esp + 0x44]
lea eax, [esp + 0x54]
push dword [esp + 0x4c]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40f985
mov eax, dword [esp + 0x54]
cmp eax, 0x10
je 0x40f8e2
test ebx, ebx
je 0x40fac0
push dword [eax*4 + 0x48ab70]
push str._not_as_sequence__skipping_tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f985
push ebx
push dword [esp + 0x64]
lea eax, [esp + 0x74]
push dword [esp + 0x6c]
push 0xa
push eax
call fcn.0040dd70
mov esi, eax
add esp, 0x14
cmp esi, 2
jl 0x40f985
xor edx, edx
test esi, esi
jle 0x40f91f
lea ecx, [esp + 0x74]
nop
mov eax, dword [ecx]
cmp eax, 6
jne 0x40f95c
inc edx
add ecx, 0x20
cmp edx, esi
jl 0x40f910
push dword [esp + 0x78]
push dword [esp + 0x80]
call fcn.00411f20
add esp, 8
push dword [esp + 0x9c]
push dword [esp + 0x9c]
test eax, eax
je 0x40f972
push dword [eax + 0x30]
push str._s__.s
push 0x100
push edi
call fcn.00401010
add esp, 0x18
jmp 0x40f985
push dword [eax*4 + 0x48ab70]
push str._not_an_OID__skipping_extension__tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40f985
push str.unknown__.s
push 0x100
push edi
call fcn.00401010
add esp, 0x14
test ebx, ebx
je 0x40fac0
push edi
jmp 0x40fab3
mov ecx, str.basicConstraints
mov eax, esi
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40f9c0
test dl, dl
je 0x40f9bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40f9c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x40f9a0
xor eax, eax
jmp 0x40f9c5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40fac0
test ebx, ebx
je 0x40f9df
push esi
push 0x440b20
call fcn.00414b20
add esp, 8
mov ebp, dword [esp + 0x20]
lea eax, [esp + 0x4c]
push ebx
lea esi, [ebp + 0x4394]
mov byte [esi], 0
push dword [ebp + 0x438c]
push dword [ebp + 0x4390]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
cmp eax, 1
jl 0x40faae
mov eax, dword [esp + 0x54]
cmp eax, 0x10
je 0x40fa33
push dword [eax*4 + 0x48ab70]
push str._not_a_seq__skipping_tag_s_n
call fcn.00414b20
add esp, 8
jmp 0x40faae
push ebx
push dword [esp + 0x64]
lea eax, [esp + 0x34]
push dword [esp + 0x6c]
push 1
push eax
call fcn.0040dd70
add esp, 0x14
test eax, eax
jns 0x40fa5b
mov dword [ebp + 0x4388], 0
jmp 0x40fa76
cmp dword [esp + 0x38], 1
jne 0x40fa76
cmp dword [esp + 0x34], 1
jne 0x40faae
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax]
mov dword [ebp + 0x4388], eax
cmp dword [ebp + 0x4388], 0
mov edi, str.false
mov eax, str.true
cmove eax, edi
cmp dword [ebp + 0x4384], 0
push eax
mov eax, str.true
cmove eax, edi
push eax
push str.critical:_s_CA:_s
push 0x100
push esi
call fcn.00401010
add esp, 0x14
test ebx, ebx
je 0x40fac0
push esi
push str.___s_n
call fcn.00414b20
add esp, 8
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [ecx + 0x437c]
jl 0x40f070
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x200]
pop ebx
xor ecx, esp
call fcn.0041c143
add esp, 0x200
ret