Function at 0x4173fd
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
push esi
push edi
mov esi, ecx
push ebp
xor ebx, ebx
lea edi, [esi + 0x98]
push str.advapi32.dll
mov eax, dword [edi]
mov dword [eax + 0x294], ebx
mov eax, dword [edi]
mov ecx, dword [eax + 0x294]
mov dword [eax + 0x2ac], ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov ebp, eax
jne 0x417447
push ebx
push str.advapi32
call fcn.0040c250
add esp, 8
xor eax, eax
jmp 0x417662
push str.CryptAcquireContextA
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push ebp
call ebx
push str.CryptDestroyKey
mov dword [0x4205d4], eax
push ebp
call ebx
push str.CryptGetKeyParam
mov dword [0x4205c8], eax
push ebp
call ebx
push str.CryptSetKeyParam
mov dword [0x4206a4], eax
push ebp
call ebx
push str.CryptExportKey
mov dword [0x4206b4], eax
push ebp
call ebx
push str.CryptGetUserKey
mov dword [0x4205b4], eax
push ebp
call ebx
push str.CryptEncrypt
mov dword [0x4205b8], eax
push ebp
call ebx
push str.CryptGenKey
mov dword [0x4206a8], eax
push ebp
call ebx
push str.CryptGenRandom
mov dword [0x4205b0], eax
push ebp
call ebx
push str.CryptImportKey
mov dword [0x4206b8], eax
push ebp
call ebx
push str.CryptDecrypt
mov dword [0x4205bc], eax
push ebp
call ebx
push str.CryptCreateHash
mov dword [0x4206b0], eax
push ebp
call ebx
push str.CryptHashData
mov dword [0x4206ac], eax
push ebp
call ebx
push str.CryptSignHashA
mov dword [0x4205d0], eax
push ebp
call ebx
push str.CryptVerifySignatureA
mov dword [0x4205c4], eax
push ebp
call ebx
mov dword [0x4205c0], eax
push str.CryptReleaseContext
push ebp
call ebx
push str.crypt32.dll
mov dword [0x4205cc], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebp, eax
test ebp, ebp
je 0x417548
push str.CryptProtectData
push ebp
call ebx
push str.CryptUnprotectData
mov dword [0x4206a0], eax
push ebp
call ebx
mov dword [0x4206bc], eax
cmp dword [0x4206a0], 0
jne 0x417563
mov eax, dword [edi]
add eax, 0x2c8
cmp dword [eax], 2
jne 0x417563
mov dword [eax], 3
cmp dword [0x4205d4], 0
push 0
jne 0x417582
push str.CryptAcquireContext
call fcn.0040c250
add esp, 8
xor eax, eax
jmp 0x417662
mov ecx, esi
xor ebx, ebx
xor ebp, ebp
call fcn.00417667
mov eax, dword [edi]
mov ecx, dword [eax + 0x2ac]
test ecx, ecx
je 0x4175a1
cmp dword [eax + 0x2b0], ebp
je 0x4175b1
cmp dword [eax + 0x294], ebp
je 0x417607
cmp dword [eax + 0x298], ebp
jne 0x417607
inc ebx
cmp ebx, 3
jg 0x417620
test ecx, ecx
je 0x4175cb
push ebp
push ecx
call dword [0x4205cc]
mov eax, dword [edi]
mov dword [eax + 0x2ac], ebp
mov eax, dword [edi]
mov eax, dword [eax + 0x294]
test eax, eax
je 0x4175e7
push ebp
push eax
call dword [0x4205cc]
mov eax, dword [edi]
mov dword [eax + 0x294], ebp
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebx - 3]
mov ecx, esi
cmp eax, 1
sbb eax, eax
and eax, 2
push eax
call fcn.00417667
jmp 0x41758d
cmp ebx, 3
jg 0x417620
mov eax, dword [edi]
cmp dword [eax + 0x2b0], 0
jne 0x417644
cmp dword [eax + 0x298], 0
jne 0x417644
push 1
mov eax, dword [esi]
push 0x41d268
mov ecx, esi
push str.RSA_failed._Create_New_RSA_key_
call dword [eax + 0x90]
cmp eax, 1
jne 0x417644
push 3
mov ecx, esi
call fcn.00417667
mov eax, dword [edi]
cmp dword [eax + 0x2b0], 0
jne 0x41765d
cmp dword [eax + 0x298], 0
mov eax, 0
je 0x417662
mov eax, 1
pop ebp
pop edi
pop esi
pop ebx
ret