Function at 0x10007e30
Capabilities:
Authenticate hmac
Create new key via cryptacquirecontext
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov ecx, dword [ebp + 0x1c]
sub esp, 0x44
push ebx
push esi
push edi
call fcn.10006650
cmp dword [ebp + 8], 0
je 0x10007f64
cmp dword [ebp + 0xc], 1
jl 0x10007f64
cmp dword [ebp + 0x10], 0
je 0x10007f64
cmp dword [ebp + 0x14], 0
je 0x10007f64
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
push 0xf0000000
push 0x18
push 0
push 0
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x20], 0
call esi
test eax, eax
jne 0x10007ef2
push eax
push 0x18
push eax
push eax
lea ecx, [esp + 0x1c]
push ecx
call esi
test eax, eax
jne 0x10007ef2
push 8
push 0x18
push eax
push eax
lea edx, [esp + 0x1c]
push edx
call esi
test eax, eax
jne 0x10007ef2
push eax
push 0x18
push str.Microsoft_Base_Cryptographic_Provider_v1.0
push eax
lea eax, [esp + 0x1c]
push eax
call esi
test eax, eax
jne 0x10007ef2
push 0xf0000000
push 0x18
push str.Microsoft_Base_Cryptographic_Provider_v1.0
push eax
lea ecx, [esp + 0x1c]
push ecx
call esi
test eax, eax
jne 0x10007ef2
push 8
push 0x18
push str.Microsoft_Base_Cryptographic_Provider_v1.0
push eax
lea edx, [esp + 0x1c]
push edx
call esi
test eax, eax
je 0x10007f64
mov ebx, dword [ebp + 0x18]
mov edi, 0x40
cmp ebx, 0x800d
je 0x10007f0a
cmp ebx, 0x800e
jne 0x10007f0f
mov edi, 0x80
lea ecx, [esp + 0x10]
call fcn.10006370
mov eax, dword [ebp + 0x14]
cmp eax, edi
jle 0x10007f39
mov edx, dword [ebp + 0x10]
lea ecx, [esp + 0x10]
push ecx
push eax
mov eax, dword [esp + 0x14]
push edx
push ebx
push eax
call fcn.10007980
add esp, 0x14
jmp 0x10007f47
mov ecx, dword [ebp + 0x10]
push eax
push ecx
lea ecx, [esp + 0x18]
call fcn.10006680
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x10007f6d
mov edx, dword [esp + 0xc]
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea ecx, [esp + 0x10]
call fcn.10006650
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, edi
jge 0x10007f7f
mov ecx, edi
sub ecx, eax
push ecx
lea ecx, [esp + 0x14]
call fcn.10006430
lea ecx, [esp + 0x30]
call fcn.10003800
lea edx, [esp + 0x30]
push edx
lea ecx, [esp + 0x14]
call fcn.10006510
lea ecx, [esp + 0x20]
call fcn.10006370
lea ecx, [esp + 0x18]
call fcn.10006370
push 1
push edi
lea ecx, [esp + 0x28]
call fcn.10006490
push 1
push edi
lea ecx, [esp + 0x20]
call fcn.10006490
xor esi, esi
test edi, edi
jle 0x10008004
push esi
lea ecx, [esp + 0x14]
call fcn.10006500
mov bl, byte [eax]
push esi
lea ecx, [esp + 0x24]
xor bl, 0x36
call fcn.10006500
push esi
lea ecx, [esp + 0x14]
mov byte [eax], bl
call fcn.10006500
mov bl, byte [eax]
push esi
lea ecx, [esp + 0x1c]
xor bl, 0x5c
call fcn.10006500
inc esi
cmp esi, edi
mov byte [eax], bl
jl 0x10007fc6
mov ebx, dword [ebp + 0x18]
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x24]
call fcn.10006510
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x1c]
call fcn.10006510
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push edx
push eax
lea ecx, [esp + 0x28]
xor esi, esi
call fcn.10006380
lea ecx, [esp + 0x28]
call fcn.10006370
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x10]
push edx
push eax
push ebx
push ecx
call fcn.10007980
add esp, 0x14
test eax, eax
je 0x100080b3
lea edx, [esp + 0x30]
push edx
lea ecx, [esp + 0x2c]
call fcn.10006510
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x1c]
call fcn.10006470
mov edi, dword [ebp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
push edi
push ecx
push edx
push ebx
push eax
call fcn.10007980
add esp, 0x14
test eax, eax
je 0x100080ac
lea ecx, [esp + 0x30]
push ecx
mov ecx, edi
mov esi, 1
call fcn.10006510
jmp 0x100080b3
mov ecx, edi
call fcn.10006650
mov edx, dword [esp + 0xc]
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea ecx, [esp + 0x28]
call fcn.10006650
lea ecx, [esp + 0x18]
call fcn.10006650
lea ecx, [esp + 0x20]
call fcn.10006650
lea ecx, [esp + 0x30]
call fcn.10003790
lea ecx, [esp + 0x10]
call fcn.10006650
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret