Function at 0x470076
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x450
mov eax, dword [0x542040]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
push ecx
mov dword [ebp - 0x444], eax
mov dword [ebp - 0x448], ebx
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x43c], 0
call dword [sym.imp.USER32.dll_GetDpiForWindow]
mov ecx, dword [ebx + 0x58]
mov dword [ebp - 0x440], eax
test cl, 8
je 0x46ffd9
mov eax, dword [ebx + 0x84]
jmp 0x46ffe8
test cl, cl
jns 0x46ffe5
mov eax, dword [ebx + 0x88]
jmp 0x46ffe8
mov eax, dword [ebx + 0x5c]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x434], eax
cmp ecx, 0x2b20
je 0x470009
cmp ecx, 0x2b03
je 0x470009
cmp ecx, 0x2b04
jne 0x470012
mov eax, dword [ebx + 0x5c]
mov dword [ebp - 0x434], eax
lea eax, [ecx - 0x2b03]
cmp eax, 0x24
ja case.0x470028.11013
movzx eax, byte [eax + 0x47036c]
jmp dword [eax*4 + 0x470354]
cmp ecx, 0x2b03
lea edx, [ebp - 0x438]
mov eax, 3
mov esi, 6
cmove esi, eax
lea eax, [ebp - 0x43c]
push eax
mov edi, dword [esi*4 + 0x5484d8]
mov ecx, edi
call fcn.0046fee0
add esp, 4
test edi, edi
jne 0x47014b
mov edi, 0x51b3ac
jmp 0x47008e
mov esi, 0x92
jmp 0x470089
mov esi, 0x89
jmp 0x470089
mov esi, 0xd1
jmp 0x470089
mov esi, 0xee
mov edi, str.shell32.dll
push 0x208
lea eax, [ebp - 0x41c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je case.0x470028.11013
push 0x51b47c
lea eax, [ebp - 0x41c]
push 0x208
push eax
call fcn.004ef767
add esp, 0xc
lea eax, [ebp - 0x41c]
push edi
push 0x208
push eax
call fcn.004ef767
mov edi, dword [sym.imp.SHELL32.dll_ExtractIconExW]
lea eax, [ebp - 0x41c]
add esp, 0xc
push 0
push 0
push 0
push 0xffffffffffffffff
push eax
call edi
test eax, eax
jle case.0x470028.11013
cmp dword [ebp - 0x440], 0x60
lea eax, [ebp - 0x430]
mov dword [ebp - 0x430], 0
push 1
jle 0x470115
push 0
push eax
jmp 0x470118
push eax
push 0
push esi
lea eax, [ebp - 0x41c]
push eax
call edi
mov ecx, dword [ebp - 0x430]
lea eax, [ebp - 0x43c]
push eax
lea edx, [ebp - 0x438]
call fcn.0046fee0
mov edi, dword [ebp - 0x430]
add esp, 4
test edi, edi
je case.0x470028.11013
mov ecx, dword [ebp - 0x434]
call fcn.00472fa0
mov ecx, dword [ebx + 0x13c]
push eax
lea eax, [ebp - 0x42c]
mov dword [ebp - 0x424], ecx
mov ecx, dword [ebx + 0x140]
push eax
push dword [ebp - 0x444]
mov dword [ebp - 0x42c], 0
mov dword [ebp - 0x428], 0
mov dword [ebp - 0x420], ecx
call dword [sym.imp.USER32.dll_FillRect]
mov ecx, dword [0x545ecc]
movsd xmm1, qword [0x537280]
mov esi, dword [ebp - 0x438]
test ecx, ecx
jne 0x4701b6
mov dword [ebp - 0x440], esi
jmp 0x4701e7
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
movd xmm1, esi
cvtdq2pd xmm1, xmm1
mulsd xmm0, xmm1
call fcn.00507b20
movsd xmm1, qword [0x537280]
mov ecx, dword [0x545ecc]
mov dword [ebp - 0x440], eax
test ecx, ecx
jne 0x4701f5
mov edx, dword [ebp - 0x43c]
mov eax, edx
jmp 0x47021c
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
movd xmm1, dword [ebp - 0x43c]
cvtdq2pd xmm1, xmm1
mulsd xmm0, xmm1
call fcn.00507b20
mov edx, dword [ebp - 0x43c]
mov ebx, dword [ebx + 0x140]
add ebx, 0xfffffffc
mov dword [ebp - 0x438], ebx
mov ecx, ebx
mov dword [ebp - 0x434], ebx
mov ebx, dword [ebp - 0x448]
cmp eax, dword [ebx + 0x140]
mov ebx, dword [ebp - 0x434]
cmovle ebx, dword [ebp - 0x440]
mov dword [ebp - 0x434], ebx
mov ebx, dword [ebp - 0x448]
cmp eax, dword [ebx + 0x140]
cmovle ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x438], ecx
mov ecx, dword [0x545ecc]
cmp eax, 0x2b04
je 0x4702be
cmp eax, 0x2b03
je 0x4702be
mov edx, dword [ebp - 0x438]
mov eax, dword [ebx + 0x140]
mov ecx, dword [ebx + 0x58]
sub eax, edx
mov esi, dword [ebp - 0x434]
push 3
push 0
push 0
push edx
cdq
sub eax, edx
shr ecx, 3
sar eax, 1
and ecx, 1
add eax, ecx
push esi
push edi
push eax
mov eax, dword [ebx + 0x13c]
sub eax, esi
cdq
sub eax, edx
sar eax, 1
add eax, ecx
push eax
jmp 0x470319
test ecx, ecx
jne 0x4702ca
mov ebx, dword [ebp - 0x43c]
jmp 0x47030c
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
movd xmm0, edx
divsd xmm1, qword [0x537280]
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x44c], xmm1
mulsd xmm0, xmm1
call fcn.00507b20
movd xmm0, esi
mov ebx, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [ebp - 0x44c]
call fcn.00507b20
mov esi, eax
push 3
push 0
push 0
push ebx
push esi
push edi
push 0
push 0
push dword [ebp - 0x444]
call dword [sym.imp.USER32.dll_DrawIconEx]
push edi
call dword [sym.imp.USER32.dll_DestroyIcon]
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 8]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004dadd7
mov esp, ebp
pop ebp
ret