Function at 0x4089a3
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
mov ebx, ecx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov eax, dword [ebx + 0x98]
push esi
xor esi, esi
push edi
mov dword [eax + 0x294], esi
mov eax, dword [ebx + 0x98]
push str.advapi32.dll
mov dword [eax + 0x2ac], esi
call ebp
mov edi, eax
cmp edi, esi
jne 0x4089e8
push esi
push str.advapi32
call fcn.0040bdfb
pop ecx
pop ecx
jmp 0x408bff
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CryptAcquireContextA
push edi
call esi
push str.CryptDestroyKey
push edi
mov dword [0x422148], eax
call esi
push str.CryptGetKeyParam
push edi
mov dword [0x42213c], eax
call esi
push str.CryptSetKeyParam
push edi
mov dword [0x422218], eax
call esi
push str.CryptExportKey
push edi
mov dword [0x422228], eax
call esi
push str.CryptGetUserKey
push edi
mov dword [0x422128], eax
call esi
push str.CryptEncrypt
push edi
mov dword [0x42212c], eax
call esi
push str.CryptGenKey
push edi
mov dword [0x42221c], eax
call esi
push str.CryptGenRandom
push edi
mov dword [0x422124], eax
call esi
push str.CryptImportKey
push edi
mov dword [0x42222c], eax
call esi
push str.CryptDecrypt
push edi
mov dword [0x422130], eax
call esi
push str.CryptCreateHash
push edi
mov dword [0x422224], eax
call esi
push str.CryptHashData
push edi
mov dword [0x422220], eax
call esi
push str.CryptSignHashA
push edi
mov dword [0x422144], eax
call esi
push str.CryptVerifySignatureA
push edi
mov dword [0x422138], eax
call esi
push str.CryptReleaseContext
push edi
mov dword [0x422134], eax
call esi
push str.crypt32.dll
mov dword [0x422140], eax
call ebp
mov edi, eax
xor ebp, ebp
cmp edi, ebp
je 0x408ae7
push str.CryptProtectData
push edi
call esi
push str.CryptUnprotectData
push edi
mov dword [0x422214], eax
call esi
mov dword [0x422230], eax
cmp dword [0x422214], ebp
push 3
pop edi
jne 0x408b04
mov eax, dword [ebx + 0x98]
add eax, 0x2c8
cmp dword [eax], 2
jne 0x408b04
mov dword [eax], edi
cmp dword [0x422148], ebp
push ebp
jne 0x408b17
push str.CryptAcquireContext
jmp 0x4089dc
mov ecx, ebx
call fcn.00408c0b
xor esi, esi
mov eax, dword [ebx + 0x98]
mov ecx, dword [eax + 0x2ac]
cmp ecx, ebp
je 0x408b38
cmp dword [eax + 0x2b0], ebp
je 0x408b48
cmp dword [eax + 0x294], ebp
je 0x408bac
cmp dword [eax + 0x298], ebp
jne 0x408bac
inc esi
cmp esi, edi
jg 0x408bc6
cmp ecx, ebp
je 0x408b65
push ebp
push ecx
call dword [0x422140]
mov eax, dword [ebx + 0x98]
mov dword [eax + 0x2ac], ebp
mov eax, dword [ebx + 0x98]
mov eax, dword [eax + 0x294]
cmp eax, ebp
je 0x408b89
push ebp
push eax
call dword [0x422140]
mov eax, dword [ebx + 0x98]
mov dword [eax + 0x294], ebp
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, edi
jne 0x408b9d
push 2
pop eax
jmp 0x408b9f
xor eax, eax
push eax
mov ecx, ebx
call fcn.00408c0b
jmp 0x408b20
cmp esi, edi
jg 0x408bc6
mov eax, dword [ebx + 0x98]
cmp dword [eax + 0x2b0], ebp
jne 0x408be9
cmp dword [eax + 0x298], ebp
jne 0x408be9
mov eax, dword [ebx]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp eax, 1
jne 0x408be9
push edi
mov ecx, ebx
call fcn.00408c0b
mov ebx, dword [ebx + 0x98]
cmp dword [ebx + 0x2b0], ebp
jne 0x408c03
cmp dword [ebx + 0x298], ebp
jne 0x408c03
xor eax, eax
jmp 0x408c06
push 1
pop eax
pop edi
pop esi
pop ebp
pop ebx
ret