Function at 0x10003e70
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
push esi
mov esi, ecx
push edi
mov dword [esp + 0x14], esi
mov edi, esi
mov esi, 0x28
nop dword [eax + eax]
mov ecx, edi
call fcn.10004800
add edi, 0x28
sub esi, 1
jne 0x10003e90
mov esi, dword [esp + 0x14]
mov byte [esi + 0x640], 0
lea edi, [esi + 0x64c]
mov dword [esi + 0x644], 0
mov dword [esi + 0x648], 0
mov esi, 0x28
nop dword [eax]
mov ecx, edi
call fcn.10004880
add edi, 0x1c
sub esi, 1
jne 0x10003ed0
mov esi, dword [esp + 0x14]
mov word [esi + 0xaac], 0
lea edi, [esi + 0xabc]
mov byte [esi + 0xaae], 0
mov dword [esi + 0xab0], 0xc8
mov word [esi + 0xab4], 0
mov byte [esi + 0xab6], 0
mov dword [esi + 0xab8], 0
mov esi, 0x15
mov ecx, edi
call fcn.100048c0
add edi, 0x1c
sub esi, 1
jne 0x10003f22
mov esi, dword [esp + 0x14]
push pe_nt_image_headers32
mov dword [esi + 0xd08], 0
mov dword [esi + 0xd0c], 0
mov dword [esi + 0xd10], 0
call fcn.1009a685
add esp, 4
lea ecx, [esi + 0xd14]
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [esi + 0xd0c], eax
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov dword [esi + 0xd20], 7
mov dword [esi + 0xd24], 8
mov dword [esi + 0xd08], 0x3f800000
push dword [esi + 0xd0c]
push 0x10
call fcn.10014200
lea ecx, [esi + 0xd28]
call fcn.100042e0
lea ecx, [esi + 0xde8]
call fcn.10004560
lea edi, [esi + 0xe90]
mov esi, 0x24
mov ecx, edi
call fcn.10004970
add edi, 0xb4
sub esi, 1
jne 0x10003fd1
mov esi, dword [esp + 0x14]
mov dword [esi + 0x27e0], 0x64
lea edi, [esi + 0x27e4]
mov esi, 3
nop dword [eax]
mov ecx, edi
call fcn.10004a10
add edi, 0x10
sub esi, 1
jne 0x10004000
mov esi, dword [esp + 0x14]
lea ecx, [esi + 0x281c]
mov dword [esi + 0x2814], 0
mov dword [esi + 0x2818], 0
call fcn.10003990
push 7
push 0x100ea0a4
lea ecx, [esp + 0x28]
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0xf
mov byte [esp + 0x28], 0
call fcn.10013840
lea ecx, [esp + 0x20]
push ecx
lea eax, [esp + 0x3c]
push eax
push ecx
lea ecx, [esi + 0x2994]
call fcn.100113f0
lea ecx, [esp + 0x20]
call fcn.10011b70
push 7
push 0x100ea0a4
lea ecx, [esp + 0x28]
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0xf
mov byte [esp + 0x28], 0
call fcn.10013840
lea ecx, [esp + 0x38]
push ecx
push ecx
lea edx, [esp + 0x28]
push edx
lea ecx, [esi + 0x29a0]
call fcn.100113f0
lea ecx, [esp + 0x20]
call fcn.10011b70
mov dword [esi + 0x29ac], 0
push 0x2c
mov dword [esi + 0x29b0], 0
mov dword [esi + 0x29b4], 0
call fcn.1009a685
add esp, 4
lea ecx, [esi + 0x29b8]
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [esi + 0x29b0], eax
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov dword [esi + 0x29c4], 7
mov dword [esi + 0x29c8], 8
mov dword [esi + 0x29ac], 0x3f800000
push dword [esi + 0x29b0]
push 0x10
call fcn.10014200
xor eax, eax
mov dword [esi + 0x29dc], 0
lea edi, [esi + 0x29cc]
mov dword [esi + 0x29e4], eax
mov word [edi], ax
mov dword [esi + 0x29e8], eax
mov dword [esi + 0x29ec], eax
lea eax, [esp + 0x18]
push eax
push 0
push 0
push 0x100dc3d0
mov dword [edi + 0x14], 7
call dword [sym.imp.SHELL32.dll_SHGetKnownFolderPath]
test eax, eax
js 0x1000420f
mov edx, dword [esp + 0x18]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x1c], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10004190
sub ecx, dword [esp + 0x1c]
xor eax, eax
sar ecx, 1
push ecx
push edx
lea ecx, [esp + 0x28]
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 7
mov word [esp + 0x28], ax
call fcn.10013460
lea eax, [esp + 0x20]
cmp edi, eax
je 0x100041fc
mov ecx, edi
call fcn.10013400
movups xmm0, xmmword [esp + 0x20]
xor eax, eax
mov word [esp + 0x20], ax
movups xmmword [edi], xmm0
movq xmm0, qword [esp + 0x30]
movq qword [edi + 0x10], xmm0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 7
lea ecx, [esp + 0x20]
call fcn.10013400
push dword [esp + 0x18]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov ecx, dword [ebp + 8]
mov edx, ecx
lea eax, [edx + 1]
mov dword [esp + 0x1c], eax
nop dword [eax + eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x10004220
sub edx, dword [esp + 0x1c]
push edx
push ecx
call fcn.100980fb
mov edx, eax
lea ecx, [esp + 0x28]
call fcn.10002e00
lea eax, [esp + 0x20]
mov ecx, edi
push eax
call fcn.10003010
lea ecx, [esp + 0x20]
call fcn.10013400
mov ecx, esi
call fcn.1000fc40
push 0
push str.default.json
mov ecx, esi
mov byte [esi + 0x2842], 0
call fcn.100089d0
xor eax, eax
mov byte [esp + 0x57], 0
push eax
lea edi, [esi + 0x29a0]
mov word [esp + 0x60], ax
push edi
push 0x10003c50
lea eax, [esp + 0x4c]
mov byte [esp + 0x67], 0
push eax
push 0
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_EnumFontFamiliesExW]
mov ecx, dword [edi]
mov eax, 0x2aaaaaab
mov edi, dword [esi + 0x29a4]
add ecx, 0x18
push dword [esp + 0x1c]
mov esi, edi
sub esi, ecx
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, edi
push eax
call fcn.10020860
mov eax, dword [esp + 0x14]
pop edi
pop esi
mov esp, ebp
pop ebp
ret 4