Function at 0x5163f0
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5aaebf
mov eax, dword fs:[0]
push eax
sub esp, 0xc98
mov eax, dword [0x6336a0]
xor eax, esp
mov dword [esp + 0xc90], eax
push ebx
push esi
push edi
mov eax, dword [0x6336a0]
xor eax, esp
push eax
lea eax, [esp + 0xca8]
mov dword fs:[0], eax
push 0x60286c
lea eax, [esp + 0x1c]
push 0x63c094
push eax
call fcn.00401ba0
add esp, 0xc
xor edi, edi
mov dword [esp + 0xcb0], edi
mov eax, dword [eax]
push eax
lea ecx, [esp + 0xe0]
push ecx
call fcn.005183c0
mov byte [esp + 0xcb0], 2
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x516488
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x4f4]
push ecx
call fcn.00517100
lea edx, [esp + 0x31c]
push edx
mov byte [esp + 0xcb4], 3
call fcn.005156e0
lea eax, [esp + 0x1c]
push eax
mov byte [esp + 0xcb4], 4
call fcn.00512970
lea ecx, [esp + 0x3c4]
push ecx
mov byte [esp + 0xcb4], 5
call fcn.005132e0
lea esi, [esp + 0x26c]
mov byte [esp + 0xcb0], 6
call fcn.00513a70
lea edx, [esp + 0x62c]
push edx
mov byte [esp + 0xcb4], 7
call fcn.00513d80
lea eax, [esp + 0x554]
push eax
mov byte [esp + 0xcb4], 8
call fcn.00514d90
push 0x10b
lea ecx, [esp + 0x1e0]
push ecx
mov byte [esp + 0xcb8], 9
call fcn.00517db0
mov dword [esp + method.CDlgOptionStart.virtual_0], vtable.CDlgOptionStart.0
mov dword [esp + 0x258], edi
mov dword [esp + 0x25c], edi
mov dword [esp + 0x260], edi
mov dword [esp + 0x264], edi
mov dword [esp + 0x254], edi
lea esi, [esp + 0x464]
mov byte [esp + 0xcb0], 0xa
call fcn.00513740
lea edx, [esp + 0x548]
mov byte [esp + 0xcb0], 0xb
push 0xc
mov dword [esp + 0x19c], edx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x20]
mov dword [ebx], eax
mov dword [ebx + 4], edi
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
cmp eax, edi
mov dword [esp + 0x14], eax
jge 0x5165b1
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x1e0]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x516605
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x468]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x516659
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x558]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x5166ad
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x3c8]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x516701
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x270]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x516755
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x630]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x5167a9
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
push 0xc
mov dword [ecx + edx*4], ebx
call fcn.0055514b
mov ebx, eax
lea eax, [esp + 0x320]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
mov eax, dword [esp + 0x1ac]
add esp, 4
test eax, eax
mov dword [esp + 0x14], eax
jge 0x5167fd
jmp fcn.00555520
lea edi, [eax + 1]
lea esi, [esp + 0x1a0]
call fcn.00541660
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x14]
mov dword [ecx + edx*4], ebx
lea ecx, [esp + 0xdc]
call fcn.00518860
cmp eax, 1
jne 0x516fdc
cmp dword [esp + 0x94], 0
je 0x5169df
mov eax, dword [esp + 0xb8]
cmp eax, dword [esp + 0x98]
je 0x51685b
push eax
mov edi, 0x5ebd78
call fcn.00515fb0
add esp, 4
mov eax, dword [esp + 0xbc]
cmp eax, dword [esp + 0x9c]
je 0x516879
push eax
mov edi, 0x5ebd80
call fcn.00515fb0
add esp, 4
mov eax, dword [esp + 0xc0]
cmp eax, dword [esp + 0xa0]
je 0x516897
push eax
mov edi, 0x5dc9cc
call fcn.00515fb0
add esp, 4
mov ecx, dword [esp + 0xd4]
mov edx, dword [0x63c6a8]
mov eax, dword [esp + 0xc4]
push ecx
push edx
mov dword [0x63c1a4], eax
call fcn.00577334
add esp, 8
test eax, eax
je 0x5168d5
lea eax, [esp + 0xd4]
push eax
mov ecx, 0x63c6a8
call fcn.00402330
call fcn.0046bb20
mov ecx, dword [esp + 0xcc]
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb4]
mov dword [0x63c110], ecx
mov ecx, dword [esp + 0xb0]
push ecx
push eax
push edx
mov dword [0x63c7e8], eax
mov dword [0x63c7ec], ecx
mov dword [0x63c7f0], edx
call fcn.004f61e0
mov edx, dword [esp + 0xb0]
mov eax, dword [0x63c664]
add esp, 0xc
push edx
push eax
call fcn.00577334
add esp, 8
test eax, eax
je 0x516985
mov ecx, dword [esp + 0xa4]
mov eax, dword [ecx - 0xc]
xor ecx, ecx
add eax, 2
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00555176
add esp, 4
test eax, eax
je 0x516985
mov edx, dword [esp + 0xa4]
mov esi, eax
movzx ecx, word [edx]
mov word [esi], cx
add edx, 2
add esi, 2
test cx, cx
jne 0x516960
push 0
push eax
mov eax, dword [0x63c460]
push 0x4ad
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [esp + 0xc8]
mov edx, dword [0x63c684]
push ecx
push edx
call fcn.00577334
add esp, 8
test eax, eax
je 0x5169b2
lea eax, [esp + 0xc8]
push eax
mov ecx, 0x63c684
call fcn.00402330
mov ecx, dword [esp + 0xa8]
mov edx, dword [0x63c688]
push ecx
push edx
call fcn.00577334
add esp, 8
test eax, eax
je 0x5169df
lea eax, [esp + 0xa8]
push eax
mov ecx, 0x63c688
call fcn.00402330
cmp dword [esp + 0x43c], 0
mov ebx, dword [sym.imp.USER32.dll_InvalidateRect]
je 0x516ab2
mov ecx, dword [esp + 0x440]
mov eax, dword [esp + 0x44c]
mov edx, dword [esp + 0x448]
mov dword [0x63c0f0], ecx
mov ecx, dword [esp + 0x450]
mov dword [0x63c180], eax
mov dword [0x63c178], edx
mov edx, dword [esp + 0x454]
lea eax, [esp + 0x458]
mov dword [0x63c184], ecx
push eax
mov ecx, 0x63c1c8
mov dword [0x63c5bc], edx
call fcn.00402330
mov edi, dword [esp + 0x45c]
cmp dword [0x63c128], edi
je 0x516a6b
mov ecx, dword [0x63c450]
mov dword [0x63c128], edi
mov eax, dword [ecx + 0x5120]
call fcn.004d7eb0
mov edx, dword [0x63c450]
mov eax, dword [edx + 0x1914]
push 0
push 0
push eax
call ebx
mov eax, dword [esp + 0x444]
cmp dword [0x63c1a8], eax
je 0x516ab2
mov ecx, dword [0x63c450]
mov dword [0x63c1a8], eax
mov esi, dword [ecx + 0x5120]
test esi, esi
je 0x516ab2
test eax, eax
je 0x516aad
call fcn.004d42d0
jmp 0x516ab2
call fcn.004d4410
cmp dword [esp + 0x254], 0
je 0x516bb9
mov eax, dword [esp + 0x264]
mov edx, dword [esp + 0x260]
mov dword [0x63c0e8], eax
mov eax, dword [esp + 0x258]
cmp dword [0x63c0dc], eax
mov dword [0x63c0e4], edx
je 0x516bad
test eax, eax
je 0x516b1f
push str.TangoBrowser
lea ecx, [esp + 0x18]
call fcn.004023b0
mov byte [esp + 0xcb0], 0xc
mov ecx, dword [0x63c094]
mov edx, dword [0x63c65c]
push ecx
push edx
push eax
call fcn.00498590
add esp, 0xc
jmp 0x516b8f
push 0
push 0x26
lea eax, [esp + 0xa9c]
push eax
push 0
mov word [esp + 0xaa4], 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x516b68
lea edi, [esp + 0xa94]
add edi, 0xfffffffe
jmp 0x516b50
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x516b50
mov ecx, 0x10
mov esi, str.internet_exploreriexplore.exe
rep movsd dword es:[edi], dword [esi]
push str.TangoBrowser
lea ecx, [esp + 0x18]
call fcn.004023b0
lea ecx, [esp + 0xa94]
push ecx
push eax
mov byte [esp + 0xcb8], 0xd
call fcn.004999b0
add esp, 8
lea ecx, [esp + 0x14]
mov byte [esp + 0xcb0], 0xb
call fcn.00401f20
mov edx, dword [esp + 0x258]
mov dword [0x63c0dc], edx
mov eax, dword [esp + 0x25c]
mov dword [0x63c0e0], eax
cmp dword [esp + 0x4dc], 0
je 0x516c11
cmp dword [0x63c1b4], 0
mov eax, dword [esp + 0x4e4]
jne 0x516be1
test eax, eax
je 0x516be1
mov dword [0x63c1bc], 1
mov ecx, dword [esp + 0x4e8]
lea edx, [esp + 0x4e0]
mov dword [0x63c0ec], ecx
push edx
mov ecx, 0x63c1b8
mov dword [0x63c1b4], eax
call fcn.00402330
mov eax, dword [esp + 0x4ec]
mov dword [0x63c138], eax
cmp dword [esp + 0x2e4], 0
je 0x516d2e
mov eax, dword [esp + 0x2ec]
mov ecx, dword [esp + 0x2e8]
mov edx, dword [esp + 0x2f8]
mov dword [0x63c11c], eax
mov eax, dword [0x63c164]
cmp eax, dword [esp + 0x2fc]
mov dword [0x63c0fc], ecx
mov ecx, dword [esp + 0x2f0]
mov dword [0x63c118], edx
mov edx, dword [esp + 0x2f4]
mov dword [0x63c19c], ecx
mov dword [0x63c16c], edx
jne 0x516c7c
mov ecx, dword [0x63c168]
cmp ecx, dword [esp + 0x300]
je 0x516c8f
mov edx, dword [0x63c450]
mov eax, dword [edx + 0xf70]
push 0
push 0
push eax
call ebx
mov eax, dword [esp + 0x304]
mov ecx, dword [esp + 0x2fc]
mov edx, dword [esp + 0x300]
mov dword [0x63c120], eax
mov eax, dword [esp + 0x310]
cmp dword [0x63c0f4], eax
mov dword [0x63c164], ecx
mov ecx, dword [esp + 0x314]
mov dword [0x63c168], edx
mov dword [0x63c130], ecx
je 0x516cfb
mov esi, dword [0x63c450]
push eax
add esi, 0xf50
mov dword [0x63c0f4], eax
call fcn.0047e7d0
mov edx, dword [0x63c450]
mov eax, dword [edx + 0xf70]
push 1
push 0
push eax
call ebx
mov eax, dword [esp + 0x308]
cmp dword [0x63c124], eax
je 0x516d2e
mov ecx, dword [0x63c450]
push ecx
mov dword [0x63c124], eax
call fcn.004632e0
mov edx, dword [0x63c450]
mov eax, dword [edx + 0xf70]
push 1
push 0
push eax
call ebx
cmp dword [esp + 0x398], 0
je 0x516e54
mov ecx, dword [esp + 0x3b0]
mov edx, dword [esp + 0x3b4]
imul ecx, ecx, 0x3e8
mov eax, dword [esp + 0x3b8]
imul edx, edx, 0x3e8
mov dword [0x63c6ac], ecx
mov ecx, dword [esp + 0x3ac]
mov dword [0x63c6b4], eax
mov dword [0x63c6b0], edx
mov edx, dword [esp + 0x394]
lea eax, [esp + 0x39c]
mov dword [0x63c68c], ecx
push eax
mov ecx, 0x63c694
mov dword [0x63c690], edx
call fcn.00402330
mov ecx, dword [esp + 0x3a0]
lea edx, [esp + 0x3a4]
mov dword [0x63c698], ecx
push edx
mov ecx, 0x63c69c
call fcn.00402330
lea eax, [esp + 0x3a8]
push eax
mov ecx, 0x63c6a0
call fcn.00402330
lea ecx, [esp + 0x3bc]
push ecx
mov ecx, 0x63c6a4
call fcn.00402330
mov ecx, dword [0x63c6ac]
mov eax, 0x10624dd3
imul ecx
mov ecx, dword [0x63c6b0]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [0x63cdf4], eax
mov dword [0x63cdf8], eax
mov eax, 0x10624dd3
imul ecx
mov ecx, dword [0x63c6b4]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x63c698]
push edx
push 0x63c6a4
mov dword [0x63ce00], eax
mov eax, dword [0x63c68c]
mov dword [0x63cdfc], ecx
mov ecx, dword [0x63c690]
push 0x63c6a0
push 0x63c69c
mov edx, 0x63c694
call fcn.00538b90
add esp, 0x10
cmp dword [esp + 0x5cc], 0
je 0x516e6a
mov eax, dword [esp + 0x624]
mov dword [0x63c6c8], eax
cmp dword [esp + 0x6a4], 0
je 0x516fdc
mov eax, dword [esp + 0xa8c]
test eax, eax
jne 0x516e8d
cmp dword [0x63c470], eax
je 0x516ece
jmp 0x516ea0
cmp eax, 1
jne 0x516ece
cmp dword [0x63c470], 0
jne 0x516ece
mov eax, 2
mov ecx, dword [0x63c448]
mov dword [0x63c470], eax
call fcn.0050df90
mov esi, dword [0x63c448]
call fcn.0050e610
mov esi, dword [0x63c450]
add esi, 0x2148
mov edi, eax
call fcn.004f8930
mov ecx, dword [esp + 0xa88]
cmp dword [0x63c474], ecx
je 0x516efe
mov eax, dword [0x63c44c]
test eax, eax
mov dword [0x63c474], ecx
je 0x516eef
mov eax, dword [eax + 0x20]
push 0
push ecx
push 0x5a0
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [esp + 0xa84]
imul ecx, ecx, 0x3e8
cmp word [esp + 0x6c8], 0
mov dword [0x63c46c], ecx
je 0x516f4b
mov ecx, 0x17
lea esi, [esp + 0x6ac]
mov edi, 0x63c478
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x63c44c]
test eax, eax
je 0x516f4b
mov edx, dword [eax + 0x20]
push 0
push 0
push 0x5a3
push edx
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [esp + 0x778]
mov eax, dword [esp + 0x774]
mov edx, dword [esp + 0x710]
mov dword [0x63c4d8], ecx
mov ecx, dword [esp + 0x718]
mov dword [0x63c4d4], eax
mov eax, dword [esp + 0x714]
mov dword [0x63c5b4], ecx
mov ecx, dword [esp + 0x70c]
mov dword [0x63c5b0], eax
mov eax, dword [esp + 0x708]
mov dword [0x63c5ac], edx
mov edx, dword [esp + 0xa80]
mov dword [0x63c610], ecx
mov ecx, dword [esp + 0x8fc]
mov dword [0x63c60c], eax
mov eax, dword [0x63c450]
mov dword [0x63c594], edx
mov edx, dword [esp + 0x71c]
add ecx, 1
add eax, 0xed8
mov dword [0x63c614], ecx
mov dword [0x63c5b8], edx
call fcn.0050e9b0
lea ecx, [esp + 0x464]
mov byte [esp + 0xcb0], 0xa
call fcn.005137b0
lea ecx, [esp + 0x1dc]
mov byte [esp + 0xcb0], 9
call fcn.00515470
lea ecx, [esp + 0x554]
mov byte [esp + 0xcb0], 8
call fcn.00514e30
lea ecx, [esp + 0x62c]
mov byte [esp + 0xcb0], 7
call fcn.00513eb0
lea ecx, [esp + 0x26c]
mov byte [esp + 0xcb0], 6
call fcn.00513b00
lea ecx, [esp + 0x3c4]
mov byte [esp + 0xcb0], 5
call fcn.005133a0
lea ecx, [esp + 0x1c]
mov byte [esp + 0xcb0], 4
call fcn.00512ab0
lea ecx, [esp + 0x31c]
mov byte [esp + 0xcb0], 3
call fcn.005157d0
lea ecx, [esp + 0x4f4]
mov byte [esp + 0xcb0], 2
call fcn.005171b0
lea ecx, [esp + 0xdc]
mov dword [esp + 0xcb0], 0xffffffff
call fcn.005184f0
mov ecx, dword [esp + 0xca8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc90]
xor ecx, esp
call fcn.00577139
mov esp, ebp
pop ebp
ret