Function at 0x46e780
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x4f18a1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x450
mov eax, dword [0x53ffd0]
xor eax, dword [esp + 0x45c]
push ebx
push esi
mov dword [esp + 0x454], eax
mov esi, ecx
mov eax, dword [esi]
push edi
mov edi, dword [eax - 0xc]
xor eax, eax
mov dword [esp + 0x10], eax
cmp edi, eax
mov dword [esp + 0x464], eax
je 0x46ea19
mov ebx, edi
and ebx, 3
cmp ebx, 1
mov dword [esp + 0xc], ebx
je 0x46ea19
push edi
lea ecx, [esp + 0x14]
call fcn.0044be40
test al, al
je 0x46ea19
mov eax, dword [esi]
push ebp
mov ebp, dword [esp + 0x14]
lea esi, [eax + edi*2]
cmp eax, esi
mov ecx, ebp
jae 0x46e810
mov dl, byte [eax]
sub dl, 0x21
add eax, 2
mov byte [ecx], dl
inc ecx
cmp eax, esi
jb 0x46e801
and edi, 0xfffffffc
jle 0x46e864
lea ecx, [edi - 1]
lea esi, [ebp + 1]
shr ecx, 2
mov eax, esi
inc ecx
mov bl, byte [eax]
mov dl, byte [eax - 1]
shl dl, 2
shr bl, 4
and bl, 3
or dl, bl
mov byte [esi - 1], dl
mov dl, byte [eax + 1]
mov bl, byte [eax]
shr dl, 2
and dl, 0xf
shl bl, 4
or dl, bl
mov byte [esi], dl
mov dl, byte [eax + 2]
mov bl, byte [eax + 1]
and dl, 0x3f
shl bl, 6
or dl, bl
mov byte [esi + 1], dl
add eax, 4
add esi, 3
dec ecx
jne 0x46e821
mov ebx, dword [esp + 0x10]
lea eax, [edi + edi*2]
cdq
and edx, 3
add eax, edx
mov esi, eax
sar esi, 2
cmp ebx, 2
jne 0x46e88d
mov al, byte [edi + ebp + 1]
mov cl, byte [edi + ebp]
shr al, 4
and al, 3
shl cl, 2
or al, cl
mov byte [esi + ebp], al
jmp 0x46e8bf
cmp ebx, 3
jne 0x46e8c0
mov dl, byte [edi + ebp + 1]
mov cl, byte [edi + ebp]
lea eax, [edi + ebp + 1]
shr dl, 4
and dl, bl
shl cl, 2
or dl, cl
mov byte [esi + ebp], dl
mov dl, byte [edi + ebp + 2]
mov al, byte [eax]
shr dl, 2
inc esi
and dl, 0xf
shl al, 4
or dl, al
mov byte [esi + ebp], dl
inc esi
push 0x508d50
or ebx, 0xffffffff
call dword [sym.imp.KERNEL32.DLL_LoadLibraryW]
mov edi, eax
test edi, edi
je 0x46e901
push str.AddFontMemResourceEx
push edi
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
test eax, eax
je 0x46e8f1
lea ecx, [esp + 0x10]
push ecx
push 0
push esi
push ebp
call eax
mov ebx, eax
push edi
call dword [sym.imp.KERNEL32.DLL_FreeLibrary]
cmp ebx, 0xffffffff
jne 0x46ea00
lea edx, [esp + 0x254]
push edx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
mov ecx, esi
xor ebx, ebx
sar ecx, 2
xor edi, edi
xor eax, eax
cmp ecx, ebx
jle 0x46e92c
add edi, dword [ebp + eax*4]
inc eax
cmp eax, ecx
jl 0x46e923
call fcn.004d4318
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
push edi
lea eax, [esp + 0x258]
push eax
lea ecx, [esp + 0x18]
push 0x508d18
push ecx
mov byte [esp + 0x478], 1
call fcn.00407a50
mov edi, dword [esp + 0x20]
add esp, 0x10
lea edx, [esp + 0x28]
push edx
push edi
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
call fcn.004d7506
test eax, eax
jne 0x46e9d7
lea ecx, [esp + 0x18]
call fcn.004d6a42
push ebx
push 0x9021
push edi
lea ecx, [esp + 0x24]
mov byte [esp + 0x474], 2
call fcn.004d6c93
test eax, eax
je 0x46e9c6
push esi
push ebp
lea ecx, [esp + 0x20]
call fcn.004d678f
lea ecx, [esp + 0x18]
call fcn.004d69e0
lea ecx, [esp + 0x18]
mov byte [esp + 0x468], 1
call fcn.004d6a81
push edi
call dword [sym.imp.GDI32.dll_AddFontResourceW]
lea eax, [edi - 0x10]
mov byte [esp + 0x468], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ea00
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
push ebp
mov dword [esp + 0x46c], 0xffffffff
call fcn.004d2f9a
add esp, 4
mov al, 1
pop ebp
jmp 0x46ea33
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x468], 0xffffffff
call fcn.004d2f9a
add esp, 4
xor al, al
mov ecx, dword [esp + 0x45c]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x454]
xor ecx, dword [esp + 0x464]
pop esi
pop ebx
add esp, 0x45c
jmp fcn.004b8f56