Function at 0x47cdf0
Capabilities:
Check if file exists
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x521787
mov eax, dword fs:[0]
push eax
sub esp, 0x294
mov eax, dword [0x56f790]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [ebp + 8]
mov dword [ebp - 0x26c], esi
call fcn.00410b40
mov ecx, eax
test ecx, ecx
je 0x47d575
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x284], eax
mov dword [ebp - 4], 0
call fcn.00410b40
mov ecx, eax
test ecx, ecx
je 0x47d57f
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x27c], eax
mov byte [ebp - 4], 1
call fcn.00410b40
mov ecx, eax
test ecx, ecx
je 0x47d589
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x28c], eax
lea eax, [ebp - 0x290]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x28c]
mov dword [ebp - 0x290], 0
push eax
lea eax, [ebp - 0x27c]
mov ecx, esi
push eax
lea eax, [ebp - 0x284]
push eax
call fcn.0050e180
test eax, eax
jne 0x47ced4
push str.CInstaller::_LaunchIconBubble__icon_not_found
call fcn.00441aa0
jmp 0x47d4ec
mov eax, dword [edi + 0xd0]
push dword [eax - 0xc]
push eax
push dword [ebp - 0x27c]
call fcn.004e6780
add esp, 0xc
test eax, eax
je 0x47cf0e
push dword [ebp - 0x27c]
push dword [ebp - 0x284]
push str.CInstaller::_LaunchIconBubble__icon_not_mine___s_s
call fcn.00441aa0
add esp, 0xc
jmp 0x47d4ef
mov ecx, esi
call fcn.0050e870
mov esi, eax
test esi, esi
je 0x47d4ef
push dword [ebp - 0x284]
push str.icon_real_name
push esi
call fcn.0044f680
push dword [ebp - 0x27c]
push str.exec_path_or_url
push esi
call fcn.0044f680
push dword [ebp - 0x28c]
push str.exec_args
push esi
call fcn.0044f680
push dword [ebp - 0x290]
push str.is_url_link
push esi
call fcn.0044f5c0
call fcn.0044d1e0
mov edi, eax
mov dword [ebp - 0x2a0], edi
push str.iconbubble
mov byte [ebp - 4], 3
call fcn.0044d210
push eax
push 0x52cecc
push edi
call fcn.0044ce10
mov eax, dword [ebp - 0x26c]
add esp, 0x40
add eax, 0x18
mov dword [ebp - 0x294], eax
push dword [eax]
push 0x52cebc
push edi
call fcn.0044f680
push esi
push str.args
push edi
call fcn.0044ce10
push edi
call fcn.0044d770
add esp, 0x1c
mov dword [ebp - 0x274], eax
test eax, eax
je 0x47d4e2
xor eax, eax
mov dword [ebp - 0x23c], 0
mov dword [ebp - 0x238], 7
mov word [ebp - 0x24c], ax
push 0xe
push 0x52cf48
lea ecx, [ebp - 0x264]
mov byte [ebp - 4], 4
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x250], 7
mov word [ebp - 0x264], ax
call fcn.00413ec0
lea eax, [ebp - 0x24c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x264]
push eax
call fcn.0043b320
add esp, 8
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x264]
call fcn.00410350
cmp dword [ebp - 0x238], 8
lea eax, [ebp - 0x24c]
push 0
cmovae eax, dword [ebp - 0x24c]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
cmp dword [ebp - 0x238], 8
lea ecx, [ebp - 0x24c]
mov eax, dword [ebp - 0x23c]
cmovae ecx, dword [ebp - 0x24c]
mov dword [ebp - 0x224], 0
mov dword [ebp - 0x220], 0
mov dword [ebp - 0x268], eax
mov dword [ebp - 0x26c], ecx
cmp eax, 8
jae 0x47d0b3
movups xmm0, xmmword [ecx]
mov dword [ebp - 0x220], 7
movups xmmword [ebp - 0x234], xmm0
jmp 0x47d100
mov esi, eax
lea ecx, [ebp - 0x234]
mov eax, SysReAllocString
or esi, 7
cmp esi, eax
cmova esi, eax
lea eax, [esi + 1]
push eax
call fcn.0042e570
mov ecx, dword [ebp - 0x268]
mov dword [ebp - 0x234], eax
lea ecx, [ecx*2 + 2]
push ecx
push dword [ebp - 0x26c]
push eax
call fcn.004b0ce0
mov eax, dword [ebp - 0x268]
add esp, 0xc
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x224], eax
push 0x20
push str.ldsgameinst_iconbubble_cmd.json
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 6
call fcn.0042e5e0
push dword [ebp - 0x274]
lea ecx, [ebp - 0x264]
call fcn.0040fef0
lea eax, [ebp - 0x264]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x234]
push eax
call fcn.0043e010
add esp, 8
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x264]
mov esi, eax
call fcn.00410300
push dword [ebp - 0x274]
call fcn.004bba85
add esp, 4
test esi, esi
jg 0x47d194
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x234]
neg esi
push esi
push eax
push str.CInstaller::_LaunchBubble__write_file_failed___s__error___d
call fcn.00441aa0
add esp, 0xc
jmp 0x47d4cc
push 0x20a
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.004b17e0
add esp, 0xc
lea ecx, [ebp - 0x21c]
cmp dword [ebp - 0x220], 8
lea eax, [ebp - 0x234]
cmovae eax, dword [ebp - 0x234]
push 0x104
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
lea eax, [ebp - 0x21c]
push eax
call esi
test eax, eax
jne 0x47d1fd
lea eax, [ebp - 0x21c]
push eax
push str.CInstaller::_LaunchBubble__GetShortPathName__s__failed
call fcn.00441aa0
add esp, 8
jmp 0x47d4cc
lea eax, [ebp - 0x26c]
push 1
push eax
call fcn.00465430
push str.GmSvcDll.dat
push eax
lea eax, [ebp - 0x270]
mov byte [ebp - 4], 8
push eax
call fcn.00410610
add esp, 0x14
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0xa
call fcn.00408250
push dword [ebp - 0x270]
call esi
test eax, eax
jne 0x47d30b
lea eax, [ebp - 0x268]
push eax
call fcn.00466430
push str.lpiGmSvcDll.dat
push eax
lea eax, [ebp - 0x278]
mov byte [ebp - 4], 0xb
push eax
call fcn.00410610
add esp, 0x10
push eax
lea ecx, [ebp - 0x270]
mov byte [ebp - 4], 0xc
call fcn.00408360
lea ecx, [ebp - 0x278]
call fcn.00408250
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 0xa
call fcn.00408250
push dword [ebp - 0x270]
call esi
test eax, eax
jne 0x47d30b
lea eax, [ebp - 0x268]
push eax
call fcn.00462c20
push str.lpiGmSvcDll.dat
push eax
lea eax, [ebp - 0x278]
mov byte [ebp - 4], 0xd
push eax
call fcn.00410610
add esp, 0x10
push eax
lea ecx, [ebp - 0x270]
mov byte [ebp - 4], 0xe
call fcn.00408360
lea ecx, [ebp - 0x278]
call fcn.00408250
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 0xa
call fcn.00408250
push dword [ebp - 0x270]
call esi
test eax, eax
jne 0x47d30b
push str.CInstaller::_LaunchBubble__not_found_GmSvc.dat
call fcn.00441aa0
add esp, 4
jmp 0x47d4c1
lea ecx, [ebp - 0x280]
call fcn.0040fec0
lea ecx, [ebp - 0x288]
call fcn.0040fec0
push 1
lea eax, [ebp - 0x288]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0x280]
push eax
push dword [ebp - 0x270]
call fcn.00467db0
add esp, 0x10
test eax, eax
jne 0x47d359
push str.CInstaller::_LaunchBubble__GetRunDllPath_failed.
call fcn.00441aa0
add esp, 4
jmp 0x47d4ab
push dword [ebp - 0x294]
lea ecx, [ebp - 0x274]
call fcn.0041d580
mov esi, dword [ebp - 0x274]
mov byte [ebp - 4], 0x11
cmp dword [esi - 0xc], 0
jne 0x47d392
push 0xc
push str.ldsgame_inst
lea ecx, [ebp - 0x274]
call fcn.00407f80
mov esi, dword [ebp - 0x274]
lea ecx, [ebp - 0x268]
call fcn.0040fec0
lea eax, [ebp - 0x21c]
mov byte [ebp - 4], 0x12
push eax
push esi
push dword [0x56f608]
lea eax, [ebp - 0x268]
push dword [ebp - 0x288]
push dword [0x56f604]
push str._s__s___s_LDSExecCommand____from__s____cmd__s_
push eax
call fcn.0040ecb0
mov esi, dword [ebp - 0x268]
push esi
push dword [ebp - 0x280]
push str.CInstaller::_LaunchBubble__lanuch__s__s
call fcn.00441a80
add esp, 0x28
lea ecx, [ebp - 0x26c]
push 0x53a49c
call fcn.0046e520
push str.install
lea ecx, [ebp - 0x278]
mov byte [ebp - 4], 0x13
call fcn.004093d0
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x294], esp
mov dword [eax + 0x24], 0
push 0
push 0
lea eax, [ebp - 0x26c]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x278]
push eax
call fcn.0046f0b0
mov ecx, eax
mov byte [ebp - 4], 0x14
call fcn.00470670
lea ecx, [ebp - 0x278]
call fcn.00408250
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 0x12
call fcn.00408250
lea eax, [ebp - 0x298]
mov dword [ebp - 0x29c], 0
push eax
push 0
lea eax, [ebp - 0x29c]
mov dword [ebp - 0x298], 0
push eax
push 0
push 1
push 5
push esi
push dword [ebp - 0x280]
call fcn.00446150
add esp, 0x20
lea ecx, [ebp - 0x268]
call fcn.00408250
lea ecx, [ebp - 0x274]
call fcn.00408250
lea ecx, [ebp - 0x288]
call fcn.00408250
lea ecx, [ebp - 0x280]
call fcn.00408250
lea ecx, [ebp - 0x270]
call fcn.00408250
lea ecx, [ebp - 0x234]
call fcn.00410350
lea ecx, [ebp - 0x24c]
call fcn.00410350
test edi, edi
je 0x47d4ef
push edi
call fcn.0044d3a0
add esp, 4
mov edx, dword [ebp - 0x28c]
or esi, 0xffffffff
mov byte [ebp - 4], 1
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x47d513
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x27c]
mov eax, esi
mov byte [ebp - 4], 0
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x47d534
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x284]
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x47d556
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004ac4b8
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.00404400
push 0x80004005
call fcn.00404400
push 0x80004005
call fcn.00404400
int3