Function at 0x10033337
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using aes via winapi
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Print debug messages

Disassembly:
push ebp
lea ebp, [esp - 0x193a0]
mov eax, 0x19420
call fcn.10040c40
mov eax, dword [0x10074bac]
xor eax, ebp
mov dword [ebp + 0x1939c], eax
mov eax, dword [ebp + 0x193b4]
push ebx
push esi
mov esi, dword [ebp + 0x193ac]
push edi
mov edi, dword [ebp + 0x193b0]
xor ebx, ebx
push 0x3ff
mov dword [ebp - 0x6c], eax
lea eax, [ebp + 0x18f9d]
push ebx
push eax
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x70], ebx
mov byte [ebp + 0x18f9c], bl
call fcn.10040850
push esi
mov esi, str.june_s
lea eax, [ebp + 0x18f9c]
push esi
push eax
call fcn.10040b98
push 0x18fff
lea eax, [ebp - 0x63]
push ebx
push eax
mov byte [ebp - 0x64], bl
call fcn.10040850
add esp, 0x24
push edi
lea eax, [ebp - 0x64]
cmp dword [ebp + 0x193a8], ebx
je 0x100333ce
push esi
jmp 0x100333d3
push 0x1005d458
push eax
call fcn.10040b98
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
add esp, 0xc
push 0xf0000000
push 0x18
push ebx
push ebx
lea eax, [ebp - 0x74]
push eax
call esi
test eax, eax
jne 0x10033442
mov edi, 0xf0000008
push edi
push 0x18
push ebx
push ebx
lea eax, [ebp - 0x74]
push eax
call esi
test eax, eax
jne 0x1003343f
push 0xf0000010
push 0x18
push ebx
push ebx
lea eax, [ebp - 0x74]
push eax
call esi
test eax, eax
jne 0x10033426
push str.Error_during_CryptAcquireContext_CRYPT_DELETEKEYSETCRYPT_VERIFYCONTEXT__n
jmp 0x1003356a
push edi
push 0x18
push ebx
push ebx
lea eax, [ebp - 0x74]
push eax
call esi
test eax, eax
jne 0x1003343f
push str.Error_during_CryptAcquireContext_CRYPT_NEWKEYSETCRYPT_VERIFYCONTEXT__n
jmp 0x1003356a
mov edi, dword [ebp - 0x78]
lea eax, [ebp - 0x68]
push eax
push ebx
push ebx
push 0x800e
push dword [ebp - 0x74]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10033464
push str.Error_during_CryptCreateHash__n
jmp 0x1003356a
cmp dword [ebp + 0x193a8], 2
push ebx
jne 0x10033521
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push edi
push dword [ebp - 0x68]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x10033543
mov esi, dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
push ebx
lea eax, [ebp - 0x80]
push eax
push ebx
push 4
push dword [ebp - 0x68]
mov dword [ebp - 0x80], ebx
call esi
test eax, eax
je 0x1003369e
push ebx
lea eax, [ebp - 0x78]
push eax
push ebx
push 2
push dword [ebp - 0x68]
mov dword [ebp - 0x78], ebx
call esi
test eax, eax
je 0x1003369e
push dword [ebp - 0x78]
call fcn.100434a3
pop ecx
push ebx
mov edi, eax
lea eax, [ebp - 0x78]
push eax
push edi
push 2
push dword [ebp - 0x68]
call esi
test eax, eax
je 0x10033513
xor esi, esi
cmp dword [ebp - 0x78], ebx
jbe 0x1003350a
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x6c], eax
movzx eax, byte [esi + edi]
push eax
push str._2.2x
push dword [ebp - 0x6c]
call fcn.10040b98
add dword [ebp - 0x6c], 2
add esp, 0xc
inc esi
cmp esi, dword [ebp - 0x78]
jb 0x100334eb
push dword [ebp - 0x68]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp edi, ebx
je 0x1003369e
push edi
jmp 0x10033698
lea eax, [ebp + 0x18f9c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea eax, [ebp + 0x18f9c]
push eax
push dword [ebp - 0x68]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x1003354a
push str.Error_during_CryptHashData.__n
jmp 0x1003356a
lea eax, [ebp - 0x7c]
push eax
push 1
push dword [ebp - 0x68]
push 0x6610
push dword [ebp - 0x74]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x10033575
push str.Error_during_CryptDeriveKey__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
jmp 0x1003369e
lea eax, [ebp - 0x64]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1003357b
sub eax, edx
mov edi, eax
lea eax, [edi + 0x400]
push eax
call fcn.100434a3
mov esi, eax
pop ecx
cmp esi, ebx
je 0x10033688
push edi
push ebx
push esi
call fcn.10040850
add esp, 0xc
lea eax, [ebp - 0x64]
cmp dword [ebp + 0x193a8], ebx
je 0x1003362e
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x100335b6
sub eax, edx
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x64]
mov edx, esi
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x100335cb
mov eax, dword [ebp - 0x70]
add eax, 0x400
push eax
lea eax, [ebp - 0x70]
push eax
push esi
push ebx
push 1
push ebx
push dword [ebp - 0x7c]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
jne 0x100335fe
push str.Error_during_CryptEncrypt.__n
jmp 0x1003368d
mov eax, dword [ebp - 0x6c]
xor edi, edi
mov byte [eax], bl
cmp dword [ebp - 0x70], ebx
jbe 0x10033693
movzx eax, byte [edi + esi]
push eax
push dword [ebp - 0x6c]
push str._s_02x
push dword [ebp - 0x6c]
call fcn.10040b98
add esp, 0x10
inc edi
cmp edi, dword [ebp - 0x70]
jb 0x1003360e
jmp 0x10033693
push esi
push eax
call fcn.1003d6d4
pop ecx
lea eax, [ebp - 0x64]
pop ecx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1003363d
sub eax, edx
shr eax, 1
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
push eax
push esi
push ebx
push 1
push ebx
push dword [ebp - 0x7c]
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x10033668
push str.Error_during_CryptDecrypt.__n
jmp 0x1003368d
mov eax, dword [ebp - 0x70]
mov edi, dword [ebp - 0x6c]
add eax, 0xfffffffc
push eax
lea eax, [esi + 4]
push eax
push edi
call fcn.10041ca0
mov eax, dword [ebp - 0x70]
add esp, 0xc
mov byte [edi + eax - 4], bl
jmp 0x10033693
push str.Out_of_memory.__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp esi, ebx
je 0x1003369e
push esi
call fcn.100425b3
pop ecx
cmp dword [ebp - 0x68], ebx
je 0x100336be
push dword [ebp - 0x68]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x100336bb
push str.Error_during_CryptDestroyHash._n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov dword [ebp - 0x68], ebx
cmp dword [ebp - 0x7c], ebx
je 0x100336db
push dword [ebp - 0x7c]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test eax, eax
jne 0x100336db
push str.Error_during_CryptDestroyKey__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
cmp dword [ebp - 0x74], ebx
je 0x100336f9
push ebx
push dword [ebp - 0x74]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
jne 0x100336f9
push str.Error_during_CryptReleaseContext__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, dword [ebp + 0x1939c]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1004083f
add ebp, 0x193a0
leave
ret