Function at 0x10019820
Capabilities:
Get common file path
Query or enumerate registry value
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1005ac9b
mov eax, dword fs:[0]
push eax
sub esp, 0xc18
mov eax, dword [0x10080704]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xorps xmm0, xmm0
mov dword [ebp - 0xc1c], 0
movq qword [ebp - 0xc24], xmm0
mov dword [ebp - 0xc24], 0
mov dword [ebp - 0xc20], 0
mov dword [ebp - 0xc1c], 0
push 0x20219
push str.SOFTWAREDocGuarder
push closesocket
lea ecx, [ebp - 0xc24]
mov dword [ebp - 4], 0
call fcn.10019b20
test eax, eax
jne 0x10019a4b
mov ax, word [0x1006e8bc]
push 0x7fe
mov word [ebp - 0xc10], ax
lea eax, [ebp - 0xc0e]
push 0
push eax
call fcn.10033470
mov ebx, dword [ebp - 0xc24]
lea eax, [ebp - 0xc18]
add esp, 0xc
mov dword [ebp - 0xc18], 0x800
push eax
lea eax, [ebp - 0xc10]
push eax
lea eax, [ebp - 0xc14]
push eax
push 0
push str.ClientId
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x10019a3d
mov eax, dword [ebp - 0xc14]
cmp eax, 1
je 0x1001991c
cmp eax, 2
jne 0x10019a3d
mov eax, dword [ebp - 0xc18]
test eax, eax
je 0x10019940
test al, 1
jne 0x10019a3d
shr eax, 1
cmp word [ebp + eax*2 - 0xc12], 0
je 0x10019949
jmp 0x10019a3d
xor eax, eax
mov word [ebp - 0xc10], ax
lea ecx, [ebp - 0xc10]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10019952
sub ecx, edx
sar ecx, 1
je 0x10019a3d
push 0x400
lea eax, [ebp - 0x410]
push 0
push eax
call fcn.10033470
lea ecx, [ebp - 0xc10]
add esp, 0xc
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10019986
sub ecx, edx
sar ecx, 1
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jle 0x100199a4
xor edi, edi
jmp 0x100199c1
add esi, esi
mov eax, esi
call fcn.1001c8d0
mov eax, esp
lea ecx, [ebp - 0xc10]
push 3
push esi
push ecx
push eax
call fcn.100197e0
mov edi, eax
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x100199c4
sub edi, ecx
lea ecx, [ebp - 0xc10]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100199d6
sub ecx, edx
sar ecx, 1
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jle 0x100199f4
xor eax, eax
jmp 0x10019a0f
add esi, esi
mov eax, esi
call fcn.1001c8d0
mov eax, esp
lea ecx, [ebp - 0xc10]
push 3
push esi
push ecx
push eax
call fcn.100197e0
lea ecx, [ebp - 0xc14]
push ecx
lea ecx, [ebp - 0x410]
push ecx
push edi
push eax
call fcn.10019e10
lea eax, [ebp - 0x410]
push eax
push 0x400
push 0x10082c10
call fcn.100446cc
add esp, 0x1c
test ebx, ebx
je 0x10019aea
push ebx
jmp 0x10019ae4
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.10033470
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
push str.DSOCclientID
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0
push 0x80
push 3
push 0
push 1
push closesocket
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x10019ad9
push 0
lea eax, [ebp - 0xc14]
mov dword [ebp - 0xc14], 0
push eax
push 0x400
push 0x10082c10
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0xc24]
test eax, eax
je 0x10019aea
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 0x10082c10
lea esp, [ebp - 0xc34]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1001bcd0
mov esp, ebp
pop ebp
ret