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

Disassembly:
push 0xffffffffffffffff
push 0x69484e
mov eax, dword fs:[0]
push eax
sub esp, 0x3e8
mov eax, dword [0x78f694]
xor eax, esp
mov dword [esp + 0x3e4], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x78f694]
xor eax, esp
push eax
lea eax, [esp + 0x3fc]
mov dword fs:[0], eax
mov esi, dword [esp + 0x414]
mov ebp, dword [esp + 0x40c]
mov edi, ecx
push str.processCertificateRequest
push esi
lea ecx, [esp + 0x44]
mov dword [esp + 0x2c], edi
call fcn.004b1850
xor ebx, ebx
cmp ebp, ebx
mov dword [esp + 0x404], ebx
je 0x58fc21
cmp dword [esp + 0x410], 3
jb 0x58fc21
lea ecx, [esp + 0x110]
call fcn.00485650
add edi, 0xb8
push edi
lea ecx, [esp + 0x114]
mov byte [esp + 0x408], 1
call fcn.004870b0
push str..certificateRequest
lea ecx, [esp + 0x114]
call fcn.00485280
lea ecx, [esp + 0x74]
call fcn.00468060
lea ecx, [esp + 0x384]
mov byte [esp + 0x404], 2
call fcn.00485650
lea ecx, [esp + 0x310]
mov byte [esp + 0x404], 3
call fcn.00485650
lea ecx, [esp + 0x1f8]
mov byte [esp + 0x404], 4
call fcn.0047f3a0
lea ecx, [esp + 0x28]
mov byte [esp + 0x404], 5
call fcn.005aa720
cmp byte [esi + 0x122], bl
movzx edi, byte [ebp]
mov byte [esp + 0x404], 6
mov dword [esp + 0x1c], edi
je 0x58f430
push edi
push str.NumCertificateTypes
mov ecx, esi
call fcn.004b14c0
sub dword [esp + 0x410], 1
add ebp, 1
mov byte [esp + 0x17], 1
call fcn.0058ec20
cmp eax, ebx
mov dword [esp + 0x18], eax
jne 0x58f4c4
lea ecx, [esp + 0x28]
mov byte [esp + 0x404], 5
call fcn.005aa740
lea ecx, [esp + 0x1f8]
mov byte [esp + 0x404], 4
call fcn.0047f440
lea ecx, [esp + 0x310]
mov byte [esp + 0x404], 3
call fcn.00485710
lea ecx, [esp + 0x384]
mov byte [esp + 0x404], 2
call fcn.00485710
lea ecx, [esp + 0x74]
mov byte [esp + 0x404], 1
call fcn.00468860
lea ecx, [esp + 0x110]
mov byte [esp + 0x404], 0
call fcn.00485710
jmp 0x58fc2f
lea ecx, [esp + 0x9c]
call fcn.00485650
cmp edi, ebx
mov byte [esp + 0x404], 7
jbe 0x58f680
movzx edi, byte [ebp]
push str.allowedCertTypes_
lea ecx, [esp + 0xa0]
call fcn.00487140
push ebx
lea ecx, [esp + 0xa0]
call fcn.004886f0
push 0x5d
lea ecx, [esp + 0xa0]
call fcn.00487e40
cmp edi, 1
lea ecx, [esp + 0x9c]
jne 0x58f53b
push str.RSA_Sign
call fcn.00483ec0
push eax
lea eax, [esp + 0x118]
push eax
mov ecx, esi
call fcn.004b0630
jmp 0x58f5c0
cmp edi, 2
jne 0x58f547
push str.DSS_Sign
jmp 0x58f593
cmp edi, 3
jne 0x58f568
push str.RSA_Fixed_DH
call fcn.00483ec0
push eax
lea edx, [esp + 0x118]
push edx
mov ecx, esi
call fcn.004b0630
jmp 0x58f5c0
cmp edi, 4
jne 0x58f589
push str.DSS_Fixed_DH
call fcn.00483ec0
push eax
lea eax, [esp + 0x118]
push eax
mov ecx, esi
call fcn.004b0630
jmp 0x58f5c0
cmp edi, 0x40
jne 0x58f5aa
push str.ECDSA_Sign
call fcn.00483ec0
push eax
lea ecx, [esp + 0x118]
push ecx
mov ecx, esi
call fcn.004b0630
jmp 0x58f5c0
push edi
call fcn.00483ec0
push eax
lea edx, [esp + 0x118]
push edx
mov ecx, esi
call fcn.004b0740
cmp byte [esi + 0x122], 0
je 0x58f652
cmp edi, 1
mov ecx, esi
jne 0x58f5e7
mov eax, dword [esi]
mov edx, dword [eax + 0x2c]
push str.RSA_Sign
push str.certType
call edx
jmp 0x58f652
cmp edi, 2
jne 0x58f5ff
mov eax, dword [esi]
mov edx, dword [eax + 0x2c]
push str.DSS_Sign
push str.certType
call edx
jmp 0x58f652
cmp edi, 3
jne 0x58f617
mov eax, dword [esi]
mov edx, dword [eax + 0x2c]
push str.RSA_Fixed_DH
push str.certType
call edx
jmp 0x58f652
cmp edi, 4
jne 0x58f62f
mov eax, dword [esi]
mov edx, dword [eax + 0x2c]
push str.DSS_Fixed_DH
push str.certType
call edx
jmp 0x58f652
cmp edi, 0x40
jne 0x58f647
mov eax, dword [esi]
mov edx, dword [eax + 0x2c]
push str.ECDSA_Sign
push str.certType
call edx
jmp 0x58f652
push edi
push str.certType
call fcn.004b14c0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x2c]
cmp eax, 4
jge 0x58f666
mov dword [ecx + eax*4 + 0x30], edi
add dword [ecx + 0x2c], 1
add ebp, 1
sub dword [esp + 0x410], 1
je 0x58f68e
add ebx, 1
cmp ebx, dword [esp + 0x1c]
jb 0x58f4e0
cmp dword [esp + 0x410], 2
jae 0x58f6bd
push 0x16
jmp 0x58f690
push 1
push str.tooShortLoc
mov ecx, esi
call fcn.004b14c0
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.CertificateRequest_message_too_short
mov ecx, esi
call edx
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x17], 0
call fcn.0048ed60
jmp 0x58fb81
mov eax, dword [esp + 0x24]
mov ecx, 3
cmp dword [eax + 0x44], ecx
jne 0x58f8f7
cmp dword [eax + 0x40], ecx
jne 0x58f8f7
mov eax, dword [esp + 0x410]
xor ebx, ebx
mov bh, byte [ebp]
sub eax, 2
add ebp, 2
mov dword [esp + 0x34], ebp
mov dword [esp + 0x410], eax
mov bl, byte [ebp - 1]
cmp eax, ebx
mov dword [esp + 0x30], ebx
ja 0x58f704
push 0x17
jmp 0x58f690
mov eax, dword [esp + 0x18]
mov edi, ebx
shr edi, 1
lea ecx, [esp + 0x184]
mov dword [esp + 0x38], edi
mov dword [eax + 0x40], edi
call fcn.00485650
test edi, edi
mov byte [esp + 0x404], 8
mov dword [esp + 0x20], 0
jle 0x58f8da
mov ecx, dword [esp + 0x18]
add ecx, 0x44
mov dword [esp + 0x48], str.anonymous
mov dword [esp + 0x4c], 0x6e7db0
mov dword [esp + 0x50], 0x6e7dac
mov dword [esp + 0x54], str.ecdsa
mov dword [esp + 0x1c], ecx
jmp 0x58f768
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ebp]
add ebp, 1
mov dword [ecx + 0x80], eax
movzx edi, byte [ebp]
mov dword [ecx], edi
add ebp, 1
cmp byte [esi + 0x122], 0
mov ebx, eax
je 0x58f7d1
push str.signatureAndHashAlgorithm
push esi
lea ecx, [esp + 0x98]
call fcn.004b1850
push ebx
push str.hashAlg
mov ecx, esi
mov byte [esp + 0x40c], 9
call fcn.004b14c0
push edi
push str.sigAlg
mov ecx, esi
call fcn.004b14c0
lea ecx, [esp + 0x90]
mov byte [esp + 0x404], 8
call fcn.004b18c0
push str.serverSupportedSigAlgs_
lea ecx, [esp + 0xa0]
call fcn.00487140
mov ecx, dword [esp + 0x20]
push ecx
lea ecx, [esp + 0xa0]
call fcn.00488660
push 0x5d
lea ecx, [esp + 0xa0]
call fcn.00487e40
lea ecx, [esp + 0x184]
mov dword [esp + 0x58], str.none
mov dword [esp + 0x5c], 0x6d4be4
mov dword [esp + 0x60], str.sha1
mov dword [esp + 0x64], str.sha224
mov dword [esp + 0x68], str.sha256
mov dword [esp + 0x6c], str.sha384
mov dword [esp + 0x70], str.sha512
call fcn.00484e60
cmp edi, 3
lea ecx, [esp + 0x184]
ja 0x58f85d
mov edx, dword [esp + edi*4 + 0x48]
push edx
call fcn.00485280
jmp 0x58f863
push edi
call fcn.00488660
push 0x2c
lea ecx, [esp + 0x188]
call fcn.00487e40
cmp ebx, 6
lea ecx, [esp + 0x184]
ja 0x58f889
mov eax, dword [esp + ebx*4 + 0x58]
push eax
call fcn.00485280
jmp 0x58f88f
push ebx
call fcn.00488660
lea ecx, [esp + 0x184]
call fcn.00483ec0
push eax
lea ecx, [esp + 0xa0]
call fcn.00483ec0
push eax
lea ecx, [esp + 0x118]
push ecx
mov ecx, esi
call fcn.004b0630
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], 4
add eax, 1
cmp eax, dword [esp + 0x38]
mov dword [esp + 0x20], eax
jl 0x58f764
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
sub dword [esp + 0x410], ebx
lea ecx, [esp + 0x184]
add ebp, ebx
mov byte [esp + 0x404], 7
call fcn.00485710
cmp dword [esp + 0x410], 2
jae 0x58f930
push 2
push str.tooShortLoc
mov ecx, esi
call fcn.004b14c0
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.CertificateRequest_message_too_short
mov ecx, esi
call eax
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x17], 0
call fcn.0048ed60
jmp 0x58fb81
mov ebx, dword [esp + 0x410]
xor ecx, ecx
mov ch, byte [ebp]
sub ebx, 2
add ebp, 2
mov dword [esp + 0x410], ebx
mov cl, byte [ebp - 1]
mov edi, ecx
cmp edi, ebx
je 0x58f99b
push 3
push str.tooShortLoc
mov ecx, esi
call fcn.004b14c0
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.CertificateRequest_message_too_short
mov ecx, esi
call eax
push edi
push str.totalLen
mov ecx, esi
call fcn.004b14c0
push ebx
push str.msgLen
mov ecx, esi
call fcn.004b14c0
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x17], 0
call fcn.0048ed60
jmp 0x58fb81
cmp byte [esi + 0x122], 0
je 0x58f9b1
push edi
push str.totalLen
mov ecx, esi
call fcn.004b14c0
mov eax, dword [esp + 0x410]
xor ebx, ebx
test eax, eax
jne 0x58f9f7
cmp byte [esi + 0x122], 0
je 0x58f9d4
push ebx
push str.NumDistinguishedNames
mov ecx, esi
call fcn.004b14c0
cmp byte [esp + 0x17], 0
jne 0x58fb3f
mov ecx, dword [esp + 0x18]
call fcn.0048ed60
jmp 0x58fb81
mov eax, dword [esp + 0x410]
cmp eax, 2
jb 0x58fb1e
xor ecx, ecx
mov ch, byte [ebp]
sub eax, 2
add ebp, 2
mov dword [esp + 0x410], eax
mov cl, byte [ebp - 1]
mov edi, ecx
cmp edi, eax
ja 0x58fb25
lea ecx, [esp + 0x74]
call fcn.00467d60
push edi
push ebp
lea ecx, [esp + 0x7c]
call fcn.00469150
push esi
lea edx, [esp + 0x78]
push edx
lea ecx, [esp + 0x30]
call fcn.005aadf0
test al, al
mov byte [esp + 0x17], al
je 0x58fb2c
lea ecx, [esp + 0x1f8]
call fcn.0047f660
push esi
lea eax, [esp + 0x1fc]
push eax
lea ecx, [esp + 0x30]
call fcn.005aaed0
lea ecx, [esp + 0x1f8]
call fcn.004828c0
mov ecx, dword [esp + 0x18]
push eax
push 0
add ecx, 0x144
call fcn.004cd3b0
cmp byte [esi + 0x122], 0
je 0x58faa7
lea ecx, [esp + 0x1f8]
push ecx
push str.DistinguishedName
mov ecx, esi
call fcn.004b11c0
push str.acceptableCertAuthDNs_
lea ecx, [esp + 0xa0]
call fcn.00487140
push ebx
lea ecx, [esp + 0xa0]
call fcn.00488660
push 0x5d
lea ecx, [esp + 0xa0]
call fcn.00487e40
lea ecx, [esp + 0x1f8]
call fcn.00480da0
push eax
lea ecx, [esp + 0xa0]
call fcn.00483ec0
push eax
lea edx, [esp + 0x118]
push edx
mov ecx, esi
call fcn.004b0630
mov eax, dword [esp + 0x410]
sub eax, edi
add ebp, edi
add ebx, 1
test eax, eax
mov dword [esp + 0x410], eax
jne 0x58f9f0
jmp 0x58f9be
push 4
jmp 0x58f690
push 5
jmp 0x58f690
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Invalid_DistinguishedName_DER
mov ecx, esi
call edx
jmp 0x58f9d4
cmp byte [esi + 0x122], 0
je 0x58fb6d
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.CertificateRequest_message_is_OK.
mov ecx, esi
call edx
cmp byte [esi + 0x122], 0
je 0x58fb6d
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.Queueing_CertificateRequest_message.
mov ecx, esi
call edx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
push eax
add ecx, 0x404
call fcn.004af0d0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x404], 6
call fcn.00485710
lea ecx, [esp + 0x28]
mov byte [esp + 0x404], 5
call fcn.005aa740
lea ecx, [esp + 0x1f8]
mov byte [esp + 0x404], 4
call fcn.0047f440
lea ecx, [esp + 0x310]
mov byte [esp + 0x404], 3
call fcn.00485710
lea ecx, [esp + 0x384]
mov byte [esp + 0x404], 2
call fcn.00485710
lea ecx, [esp + 0x74]
mov byte [esp + 0x404], 1
call fcn.00468860
lea ecx, [esp + 0x110]
mov byte [esp + 0x404], 0
call fcn.00485710
lea ecx, [esp + 0x3c]
mov dword [esp + 0x404], 0xffffffff
call fcn.004b18c0
mov al, byte [esp + 0x17]
jmp 0x58fc45
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Invalid_CertificateRequest_message
mov ecx, esi
call eax
lea ecx, [esp + 0x3c]
mov dword [esp + 0x404], 0xffffffff
call fcn.004b18c0
xor al, al
mov ecx, dword [esp + 0x3fc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3e4]
xor ecx, esp
call fcn.0062cbd3
add esp, 0x3f4
ret 0xc