Function at 0x47c310
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48e2b4
mov eax, dword fs:[0]
push eax
sub esp, 0x154
mov eax, dword [0x4c0e0c]
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
mov edi, ecx
call fcn.00477540
lea ecx, [ebp - 0x12c]
mov dword [edi + 0x10], eax
mov esi, 1
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AFilePath::constructor_void_]
lea ecx, [ebp - 0x138]
mov dword [ebp - 4], 0
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::constructor_void_]
lea ecx, [ebp - 0x12c]
mov byte [ebp - 4], 1
call dword [sym.imp.FSUTIL.dll_public:_class_AFilePath____thiscall_AFilePath::GetExecutableDir_void_]
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x12c]
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AFilePath::getFileName_class_AString__const]
push str.Program
lea ecx, [ebp - 0x138]
call dword [sym.imp.FSUTIL.dll_public:_int___thiscall_AString::Find_char_const__const]
test eax, eax
je 0x47c3c9
lea eax, [ebp - 0x120]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x120]
push eax
lea ecx, [ebp - 0x12c]
call dword [0x48f470]
mov ebx, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::destructor_void_]
nop
lea eax, [ebp - 0x124]
push eax
lea ecx, [ebp - 0x12c]
call dword [sym.imp.FSUTIL.dll_public:_class_AString___thiscall_AFilePath::GetFullPath_void_]
mov ecx, dword [edi + 0x10]
push eax
add ecx, 8
mov byte [ebp - 4], 2
call dword [0x48f52c]
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 1
call ebx
mov ecx, dword [edi + 0x10]
call fcn.00479cc0
test eax, eax
je 0x47c427
mov ecx, dword [edi + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test eax, eax
je 0x47c45b
mov ecx, dword [edi + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x4c]
cmp eax, 0x100000
je 0x47c45b
test esi, esi
je 0x47c891
lea eax, [ebp - 0x120]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x120]
push eax
lea ecx, [ebp - 0x12c]
call dword [0x48f470]
xor esi, esi
jmp 0x47c3d0
mov esi, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::constructor_char_const__]
lea ecx, [ebp - 0x128]
push str.CLOUD_SKIP_LICENSE_CHECKING
call esi
mov ecx, dword [edi + 0x10]
mov byte [ebp - 4], 3
test ecx, ecx
jne 0x47c481
mov dword [ebp - 0x130], ecx
jmp 0x47c493
mov eax, dword [ecx]
lea edx, [ebp - 0x128]
push edx
call dword [eax + 0x10]
mov dword [ebp - 0x130], eax
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 1
call ebx
cmp dword [ebp - 0x130], 0
jne 0x47c79e
push dword [ebp + 8]
mov ecx, edi
call fcn.0047cba0
test eax, eax
jne 0x47c4e8
mov eax, dword [0x4c4c44]
cmp dword [0x4c4c40], eax
je 0x47c4d3
or dword [eax - 4], 0x200000
jmp 0x47c8ac
mov dword [ebp - 0x124], 0x200000
lea eax, [ebp - 0x124]
jmp 0x47c8a1
push str.Package_ID
lea ecx, [ebp - 0x130]
call esi
mov ecx, dword [edi + 0x10]
mov byte [ebp - 4], 4
test ecx, ecx
jne 0x47c508
mov dword [ebp - 0x124], ecx
jmp 0x47c521
mov eax, dword [ecx]
lea edx, [ebp - 0x134]
push edx
lea edx, [ebp - 0x130]
push edx
call dword [eax + 0xc]
mov dword [ebp - 0x124], eax
lea ecx, [ebp - 0x130]
mov byte [ebp - 4], 1
call ebx
cmp dword [ebp - 0x124], 0
jne 0x47c54b
mov dword [ebp - 0x124], 4
lea eax, [ebp - 0x124]
jmp 0x47c8a1
lea ecx, [ebp - 0x128]
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::constructor_void_]
push str.flexi.config_ids
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 5
call esi
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x124]
push eax
call fcn.0047bbc0
add esp, 8
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x124]
call ebx
lea ecx, [ebp - 0x128]
call dword [sym.imp.FSUTIL.dll_protected:_struct_AStringData____thiscall_AString::GetData_void_const]
cmp dword [eax + 4], 0
jne 0x47c5d3
push str.system.config_id_list
lea ecx, [ebp - 0x124]
call esi
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x124]
push eax
call fcn.0047bbc0
add esp, 8
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x124]
call ebx
lea ecx, [ebp - 0x160]
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_ADWordArray::constructor_void_]
lea eax, [ebp - 0x160]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x128]
push eax
call fcn.0047df80
mov ecx, dword [ebp - 0x158]
add esp, 8
xor eax, eax
test ecx, ecx
jle 0x47c626
mov edx, dword [ebp - 0x134]
nop dword [eax + eax]
mov ebx, dword [ebp - 0x15c]
cmp dword [ebx + eax*4], edx
mov ebx, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::destructor_void_]
je 0x47c65e
inc eax
cmp eax, ecx
jl 0x47c610
lea eax, [ebp - 0x124]
mov dword [ebp - 0x124], 0x200000
push eax
mov ecx, 0x4c4c40
call fcn.0041dc20
mov edi, dword [sym.imp.FSUTIL.dll_public_virtual:_void___thiscall_ADWordArray::destructor_void_]
lea ecx, [ebp - 0x160]
xor esi, esi
call edi
lea ecx, [ebp - 0x128]
call ebx
jmp 0x47c8ae
lea ecx, [ebp - 0x14c]
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_ADWordArray::constructor_void_]
push str.system.option_config_id_list
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 9
call esi
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x124]
push eax
call fcn.0047bbc0
add esp, 8
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x124]
mov esi, eax
call ebx
test esi, esi
je 0x47c6d5
lea eax, [ebp - 0x14c]
push eax
lea eax, [ebp - 0x128]
push eax
call fcn.0047df80
add esp, 8
cmp dword [ebp - 0x144], 0
jle 0x47c6d5
mov ecx, dword [edi + 0x10]
lea eax, [ebp - 0x14c]
push eax
call fcn.0047a1e0
cmp dword [0x4c0df0], 0
mov ecx, edi
je 0x47c6ea
call fcn.00477910
jmp 0x47c776
call fcn.004779f0
mov edi, dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
mov ebx, eax
push 0
mov dword [ebp - 0x124], edx
call edi
push eax
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_srand]
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
push 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4a5508]
mulsd xmm0, qword [0x4916c0]
mulsd xmm0, qword [0x4a5518]
mulsd xmm0, qword [0x4a5510]
cvttsd2si esi, xmm0
call edi
mov edi, eax
add esp, 0xc
sub edi, ebx
mov ecx, edx
mov eax, esi
sbb ecx, dword [ebp - 0x124]
cdq
cmp ecx, edx
jl 0x47c766
jg 0x47c75a
cmp edi, eax
jb 0x47c766
mov dword [0x4c4aa4], 1
jmp 0x47c770
mov dword [0x4c4aa4], 0
mov ebx, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::destructor_void_]
mov edi, dword [sym.imp.FSUTIL.dll_public_virtual:_void___thiscall_ADWordArray::destructor_void_]
lea ecx, [ebp - 0x14c]
mov esi, 1
call edi
lea ecx, [ebp - 0x160]
call edi
lea ecx, [ebp - 0x128]
call ebx
jmp 0x47c8ae
cmp dword [0x4c4c3c], 0
jne 0x47c858
mov ecx, edi
call fcn.0047c8f0
test eax, eax
jne 0x47c858
xor esi, esi
mov dword [ebp - 0x128], esi
cmp dword [0x4c0df0], esi
jne 0x47c8ae
mov ecx, edi
call fcn.004779f0
mov edi, dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
mov ebx, eax
push 0
mov dword [ebp - 0x134], edx
call edi
push eax
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_srand]
call dword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
push 0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x4a5508]
mulsd xmm0, qword [0x4916c0]
mulsd xmm0, qword [0x4a5518]
mulsd xmm0, qword [0x4a5510]
cvttsd2si esi, xmm0
call edi
mov edi, eax
add esp, 0xc
sub edi, ebx
mov ecx, edx
mov eax, esi
sbb ecx, dword [ebp - 0x134]
cdq
cmp ecx, edx
jl 0x47c879
jg 0x47c840
cmp edi, eax
jb 0x47c879
mov ebx, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::destructor_void_]
mov esi, dword [ebp - 0x128]
mov dword [0x4c4aa4], 1
jmp 0x47c8ae
cmp dword [0x4c0df0], 0
mov esi, 1
mov dword [ebp - 0x128], esi
je 0x47c7ce
mov ecx, edi
call fcn.00477910
jmp 0x47c8ae
mov ebx, dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AString::destructor_void_]
mov esi, dword [ebp - 0x128]
mov dword [0x4c4aa4], 0
jmp 0x47c8ae
mov dword [ebp - 0x134], 4
lea eax, [ebp - 0x134]
push eax
mov ecx, 0x4c4c40
call fcn.0041dc20
xor esi, esi
lea ecx, [ebp - 0x138]
call ebx
lea ecx, [ebp - 0x12c]
call dword [sym.imp.FSUTIL.dll_public:_void___thiscall_AFilePath::destructor_void_]
mov eax, esi
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.0047ff18
mov esp, ebp
pop ebp
ret 4