Function at 0x51cb50
Capabilities:
Encode data using base64
Encrypt data using dpapi

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a3920
mov eax, dword fs:[0]
push eax
sub esp, 0x40
push ebx
push esi
push edi
mov eax, dword [0x6340c4]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x24], ebx
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebp + 8]
mov dword [ebx], 0
test eax, eax
je 0x51ce18
mov dword [ebp - 4], 0
push eax
mov dword [ebp - 0x44], eax
call fcn.004d40c0
add esp, 4
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x40]
push eax
push 4
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.CRYPT32.dll_CryptProtectData]
test eax, eax
je 0x51ce18
mov eax, dword [ebp - 0x40]
lea eax, [eax*2 + 8]
mov dword [ebp - 0x2c], eax
inc eax
push eax
call fcn.004c5d8d
mov edi, dword [ebp - 0x3c]
mov esi, eax
mov dword [ebx], esi
add esp, 4
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x18], ebx
mov byte [ebp - 4], 1
test edi, edi
je 0x51ce2c
mov eax, ebx
mov ecx, 4
imul ecx
test edx, edx
jg 0x51ce59
jl 0x51cc1d
cmp eax, 0x7fffffff
ja 0x51ce59
push 0
push 3
push edx
push eax
call fcn.004f6bd0
mov ecx, eax
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x28], eax
lea edx, [eax + eax*2]
mov eax, ebx
sub eax, edx
mov dword [ebp - 0x38], edx
add ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, ecx
imul eax, ebx, 0x4c
sub edx, eax
je 0x51cc7b
and edx, 0x80000003
jns 0x51cc70
dec edx
or edx, 0xfffffffc
add edx, 1
je 0x51cc7b
mov eax, 4
sub eax, edx
add ecx, eax
lea ecx, [ecx + ebx*2]
add ecx, 2
cmp dword [ebp - 0x2c], ecx
jl 0x51ce2c
mov ecx, dword [ebp - 0x28]
mov eax, 0x6bca1af3
shl ecx, 2
xor ebx, ebx
imul ecx
mov dword [ebp - 0x30], ecx
xor ecx, ecx
sar edx, 5
mov eax, edx
mov dword [ebp - 0x20], ecx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x1c], eax
mov eax, 0x13
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x2c], eax
test edx, edx
js 0x51cd89
cmp ecx, edx
jne 0x51ccdf
mov eax, dword [ebp - 0x30]
imul ecx, edx, 0x4c
sub eax, ecx
mov ecx, dword [ebp - 0x20]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp - 0x1c]
sar eax, 2
mov dword [ebp - 0x2c], eax
test eax, eax
jle 0x51cd5f
mov dword [ebp - 0x28], eax
nop word [eax + eax]
movzx eax, byte [edi]
movzx ecx, byte [edi + 1]
movzx edx, byte [edi + 2]
add edi, 3
shl eax, 8
or ecx, eax
shl ecx, 8
or edx, ecx
shl edx, 8
mov eax, edx
shl edx, 6
shr eax, 0x1a
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_C:drone_srcGUIWindowsEulaDlg.cpp]
mov byte [esi], al
mov eax, edx
shr eax, 0x1a
shl edx, 6
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_C:drone_srcGUIWindowsEulaDlg.cpp]
mov byte [esi + 1], al
mov eax, edx
shr eax, 0x1a
shr edx, 0x14
and edx, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_C:drone_srcGUIWindowsEulaDlg.cpp]
mov byte [esi + 2], al
movzx eax, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_C:drone_srcGUIWindowsEulaDlg.cpp]
mov byte [esi + 3], al
add esi, 4
sub dword [ebp - 0x28], 1
jne 0x51ccf0
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
lea ebx, [ebx + eax*4]
mov dword [ebp - 0x28], esi
inc ecx
mov dword [ebp - 0x34], ebx
mov word [esi], 0xa0d
add ebx, 2
add esi, 2
mov dword [ebp - 0x20], ecx
cmp ecx, edx
jle 0x51ccc3
test ebx, ebx
je 0x51cd89
mov esi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], eax
je 0x51ce06
lea edx, [eax + 1]
mov dword [ebp - 0x38], edx
test edx, edx
je 0x51ce06
xor ecx, ecx
test eax, eax
jle 0x51cdad
mov al, byte [edi]
inc edi
movzx ecx, al
mov eax, dword [ebp - 0x18]
shl ecx, 8
cmp eax, 1
jle 0x51cdbe
movzx eax, byte [edi]
inc edi
or ecx, eax
mov eax, dword [ebp - 0x18]
shl ecx, 8
cmp eax, 2
jle 0x51cdcb
movzx eax, byte [edi]
or ecx, eax
shl ecx, 8
test edx, edx
jle 0x51cdeb
mov eax, ecx
shl ecx, 6
shr eax, 0x1a
mov al, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_C:drone_srcGUIWindowsEulaDlg.cpp]
mov byte [esi], al
inc esi
sub edx, 1
jne 0x51cdd2
mov edx, dword [ebp - 0x38]
mov edi, 4
add ebx, edx
sub edi, edx
test edi, edi
jle 0x51ce04
push edi
push 0x3d
push esi
call fcn.004c76f0
add esp, 0xc
add ebx, edi
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov byte [ebx + eax], 0
push dword [ebp - 0x3c]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push esi
call fcn.004c59d6
mov eax, dword [ebp - 0x24]
add esp, 4
mov dword [eax], 0
jmp 0x51ce0f
push 0x80004005
call fcn.00443030
int3