Function at 0x415820
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x541581
mov eax, dword fs:[0]
push eax
mov eax, 0x2c64
call fcn.00519540
mov eax, dword [0x594ca8]
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 eax, dword [ebp + 8]
push 0x3ff
lea edx, [ebp - 0x40f]
push 0
push edx
mov dword [ebp - 0x2c1c], eax
mov dword [ebp - 0x2c20], ecx
mov byte [ebp - 0x410], 0
call fcn.00518f10
push 0x27ff
lea eax, [ebp - 0x2c0f]
push 0
push eax
mov byte [ebp - 0x2c10], 0
call fcn.00518f10
add esp, 0x18
push 1
push 0x1c
lea ecx, [ebp - 0x410]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0x570678
call ebx
inc eax
cmp eax, 0x3fffffff
jg 0x4158f8
lea edi, [eax + eax]
mov eax, edi
call fcn.0051b8f0
mov esi, esp
test esi, esi
je 0x4158f8
push 0
push 0
push edi
push esi
push 0xffffffffffffffff
push 0x570678
push 0
push 3
mov byte [esi], 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
neg eax
sbb eax, eax
and eax, esi
mov dword [ebp - 0x2c14], eax
jmp 0x415902
mov dword [ebp - 0x2c14], 0
push str.1905Cache1
call ebx
inc eax
cmp eax, 0x3fffffff
jg 0x415943
lea edi, [eax + eax]
mov eax, edi
call fcn.0051b8f0
mov esi, esp
test esi, esi
je 0x415943
push 0
push 0
push edi
push esi
push 0xffffffffffffffff
push str.1905Cache1
push 0
push 3
mov byte [esi], 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
neg eax
sbb eax, eax
and eax, esi
jmp 0x415945
xor eax, eax
mov edx, dword [ebp - 0x2c14]
push edx
push eax
lea eax, [ebp - 0x410]
push eax
push str._s_s_sSoftUpdateInfo.xml
lea ecx, [ebp - 0x2c10]
push 0x2800
push ecx
call fcn.00515fea
add esp, 0x18
lea edx, [ebp - 0x2c10]
push edx
lea ecx, [ebp - 0x2c70]
call fcn.00531df0
push 0
lea ecx, [ebp - 0x2c70]
mov dword [ebp - 4], 0
call fcn.00532cf0
test al, al
je 0x415c69
lea ecx, [ebp - 0x2c70]
call fcn.005313d0
mov ecx, eax
call fcn.005313d0
mov dword [ebp - 0x2c18], eax
test eax, eax
je 0x415c69
mov esi, dword [ebp - 0x2c18]
mov eax, dword [esi + 0x20]
mov ecx, str.data
add eax, 8
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4159f0
test dl, dl
je 0x4159ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4159f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4159d0
xor eax, eax
jmp 0x4159f5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x415c54
mov ecx, esi
call fcn.005313d0
mov edi, eax
mov dword [ebp - 0x2c14], edi
test edi, edi
je 0x415c54
jmp 0x415a26
mov edi, dword [ebp - 0x2c14]
mov esi, dword [edi + 0x20]
mov ecx, str.info
lea eax, [esi + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x415a51
test dl, dl
je 0x415a4d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x415a51
add eax, 2
add ecx, 2
test dl, dl
jne 0x415a31
xor eax, eax
jmp 0x415a56
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x415b59
mov ecx, edi
call fcn.005314c0
lea ecx, [ebp - 0x2c24]
push ecx
mov ebx, eax
call fcn.00402ce0
add esp, 4
mov edx, dword [ebp - 0x2c1c]
mov byte [ebp - 4], 1
mov eax, dword [eax]
mov ebx, dword [edx]
lea esi, [eax - 0x10]
sub ebx, 0x10
cmp esi, ebx
je 0x415b3a
cmp dword [ebx + 0xc], 0
jl 0x415b2e
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x415b2e
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x415ac7
cmp eax, dword [esi]
jne 0x415ac7
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x415b02
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x415cbf
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.0051672f
add esp, 0x10
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x415b1b
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x2c1c]
add edi, 0x10
mov dword [ecx], edi
mov edi, dword [ebp - 0x2c14]
jmp 0x415b3a
mov ecx, dword [eax - 0xc]
push ecx
push eax
mov ecx, edx
call fcn.004046e0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x2c24]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x415c2d
mov ecx, str.versionlab
lea eax, [esi + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x415b81
test dl, dl
je 0x415b7d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x415b81
add eax, 2
add ecx, 2
test dl, dl
jne 0x415b61
xor eax, eax
jmp 0x415b86
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x415c39
mov ecx, edi
call fcn.005314c0
lea ecx, [ebp - 0x2c28]
push ecx
mov ebx, eax
call fcn.00402ce0
add esp, 4
mov edx, dword [ebp - 0x2c20]
mov byte [ebp - 4], 2
mov ecx, dword [eax]
mov esi, dword [edx]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x415c13
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x415c07
mov edi, dword [eax]
cmp edi, dword [esi]
jne 0x415c01
push eax
call fcn.00404890
add esp, 4
mov edi, eax
or edx, 0xffffffff
lock xadd dword [ebx], edx
dec edx
test edx, edx
jg 0x415bee
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, dword [ebp - 0x2c20]
add edi, 0x10
mov dword [eax], edi
mov edi, dword [ebp - 0x2c14]
jmp 0x415c13
mov edi, dword [ebp - 0x2c14]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edx
call fcn.004046e0
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x2c28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x415c39
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, edi
call fcn.00531400
mov dword [ebp - 0x2c14], eax
test eax, eax
jne 0x415a20
mov esi, dword [ebp - 0x2c18]
mov ecx, esi
call fcn.00531400
mov dword [ebp - 0x2c18], eax
test eax, eax
jne 0x4159bb
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x2c3c]
mov dword [ebp - method.TiXmlDocument.virtual_0], vtable.TiXmlDocument.0
cmp eax, 0x59cb88
je 0x415c90
push eax
call fcn.00416a5f
add esp, 4
lea ecx, [ebp - 0x2c70]
call fcn.00531ad0
lea esp, [ebp - 0x2c80]
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.005155a4
mov esp, ebp
pop ebp
ret 4
call fcn.00404880
int3