Function at 0x412a20
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x541727
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2c74
call fcn.00519540
mov eax, dword [0x594ca8]
xor eax, esp
mov dword [esp + 0x2c70], eax
push ebx
push esi
push edi
mov eax, dword [0x594ca8]
xor eax, esp
push eax
lea eax, [esp + 0x2c88]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
push 0x3ff
lea edx, [esp + 0x81]
push 0
push edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x88], 0
call fcn.00518f10
push 0x27ff
lea eax, [esp + 0x48d]
push 0
push eax
mov byte [esp + 0x494], 0
call fcn.00518f10
add esp, 0x18
push 1
push 0x1c
lea ecx, [esp + 0x84]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea edx, [esp + 0x7c]
push edx
push str._sm1905_tempxml
mov eax, edx
push 0x400
push eax
call fcn.00515fea
lea ecx, [esp + 0x8c]
push ecx
push str._s_initUpdateXml
lea edx, [esp + 0x494]
push 0x2800
push edx
call fcn.00515fea
add esp, 0x20
lea eax, [esp + 0x47c]
push eax
lea ecx, [esp + 0x38]
call fcn.00531df0
push 0
lea ecx, [esp + 0x38]
mov dword [esp + 0x2c94], 0
call fcn.00532cf0
test al, al
je 0x412e61
lea ecx, [esp + 0x34]
call fcn.005313d0
mov ecx, eax
call fcn.005313d0
mov ecx, eax
call fcn.005313d0
mov dword [esp + 0x18], eax
test eax, eax
je 0x412e61
mov edi, dword [esp + 0x18]
mov esi, dword [edi + 0x20]
mov ecx, str.description
lea eax, [esi + 8]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x412b80
test dl, dl
je 0x412b7c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412b80
add eax, 2
add ecx, 2
test dl, dl
jne 0x412b60
xor eax, eax
jmp 0x412b85
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412d76
mov ecx, edi
call fcn.005313d0
mov edi, eax
mov dword [esp + 0x14], edi
test edi, edi
je 0x412e4c
jmp 0x412ba8
mov edi, dword [esp + 0x14]
mov eax, dword [edi + 0x20]
mov ecx, str.content
add eax, 8
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x412bd3
test dl, dl
je 0x412bcf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412bd3
add eax, 2
add ecx, 2
test dl, dl
jne 0x412bb3
xor eax, eax
jmp 0x412bd8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412d5e
mov ecx, edi
call fcn.005314c0
lea ecx, [esp + 0x2c]
push ecx
mov ebx, eax
call fcn.00402ce0
mov ebx, dword [esp + 0x20]
push eax
lea edx, [esp + 0x2c]
push ebx
push edx
mov byte [esp + 0x2ca0], 1
call fcn.00403830
push 0x571c20
push eax
lea eax, [esp + 0x48]
push eax
mov byte [esp + 0x2cac], 2
call fcn.00404260
add esp, 0x1c
mov byte [esp + 0x2c90], 3
mov eax, dword [eax]
mov ebx, dword [ebx]
lea esi, [eax - 0x10]
sub ebx, 0x10
cmp esi, ebx
je 0x412ce6
cmp dword [ebx + 0xc], 0
jl 0x412cd8
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x412cd8
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x412c75
cmp eax, dword [esi]
jne 0x412c75
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x412cb0
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 0x412eb7
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 0x412cc9
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [esp + 0x1c]
add edi, 0x10
mov dword [ecx], edi
mov edi, dword [esp + 0x14]
jmp 0x412ce6
mov ecx, dword [eax - 0xc]
push ecx
mov ecx, dword [esp + 0x20]
push eax
call fcn.004046e0
mov byte [esp + 0x2c90], 2
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412d0e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c90], 1
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412d36
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c90], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412d5e
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 [esp + 0x14], eax
test eax, eax
jne 0x412ba4
jmp 0x412e4c
mov ecx, str.version
lea eax, [esi + 8]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x412da0
test dl, dl
je 0x412d9c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412da0
add eax, 2
add ecx, 2
test dl, dl
jne 0x412d80
xor eax, eax
jmp 0x412da5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412e4c
mov ecx, edi
call fcn.005314c0
lea ecx, [esp + 0x28]
push ecx
mov ebx, eax
call fcn.00402ce0
add esp, 4
mov edx, dword [esp + 0x20]
mov byte [esp + 0x2c90], 4
mov ecx, dword [eax]
mov esi, dword [edx]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x412e24
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x412e18
mov edi, dword [eax]
cmp edi, dword [esi]
jne 0x412e18
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 0x412e0d
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, dword [esp + 0x20]
add edi, 0x10
mov dword [eax], edi
jmp 0x412e24
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edx
call fcn.004046e0
mov byte [esp + 0x2c90], 0
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412e4c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
call fcn.00531400
mov dword [esp + 0x18], eax
test eax, eax
jne 0x412b4a
mov dword [esp + 0x2c90], 0xffffffff
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], vtable.TiXmlDocument.0
cmp eax, 0x59cb88
je 0x412e88
push eax
call fcn.00416a5f
add esp, 4
lea ecx, [esp + 0x34]
call fcn.00531ad0
mov ecx, dword [esp + 0x2c88]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2c70]
xor ecx, esp
call fcn.005155a4
mov esp, ebp
pop ebp
ret 4
call fcn.00404880
int3