Function at 0x4128c0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x541667
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2c74
call fcn.005194d0
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.00518ea0
push 0x27ff
lea eax, [esp + 0x48d]
push 0
push eax
mov byte [esp + 0x494], 0
call fcn.00518ea0
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.00515f7a
lea ecx, [esp + 0x8c]
push ecx
push str._s_initUpdateXml
lea edx, [esp + 0x494]
push 0x2800
push edx
call fcn.00515f7a
add esp, 0x20
lea eax, [esp + 0x47c]
push eax
lea ecx, [esp + 0x38]
call fcn.00531d70
push 0
lea ecx, [esp + 0x38]
mov dword [esp + 0x2c94], 0
call fcn.00532c70
test al, al
je 0x412d01
lea ecx, [esp + 0x34]
call fcn.00531350
mov ecx, eax
call fcn.00531350
mov ecx, eax
call fcn.00531350
mov dword [esp + 0x18], eax
test eax, eax
je 0x412d01
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 0x412a20
test dl, dl
je 0x412a1c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412a20
add eax, 2
add ecx, 2
test dl, dl
jne 0x412a00
xor eax, eax
jmp 0x412a25
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412c16
mov ecx, edi
call fcn.00531350
mov edi, eax
mov dword [esp + 0x14], edi
test edi, edi
je 0x412cec
jmp 0x412a48
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 0x412a73
test dl, dl
je 0x412a6f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412a73
add eax, 2
add ecx, 2
test dl, dl
jne 0x412a53
xor eax, eax
jmp 0x412a78
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412bfe
mov ecx, edi
call fcn.00531440
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 0x412b86
cmp dword [ebx + 0xc], 0
jl 0x412b78
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x412b78
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x412b15
cmp eax, dword [esi]
jne 0x412b15
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x412b50
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 0x412d57
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.005166bf
add esp, 0x10
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412b69
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 0x412b86
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 0x412bae
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 0x412bd6
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 0x412bfe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, edi
call fcn.00531380
mov dword [esp + 0x14], eax
test eax, eax
jne 0x412a44
jmp 0x412cec
mov ecx, str.version
lea eax, [esi + 8]
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x412c40
test dl, dl
je 0x412c3c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x412c40
add eax, 2
add ecx, 2
test dl, dl
jne 0x412c20
xor eax, eax
jmp 0x412c45
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x412cec
mov ecx, edi
call fcn.00531440
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 0x412cc4
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x412cb8
mov edi, dword [eax]
cmp edi, dword [esi]
jne 0x412cb8
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 0x412cad
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 0x412cc4
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 0x412cec
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x18]
call fcn.00531380
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4129ea
mov dword [esp + 0x2c90], 0xffffffff
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], vtable.TiXmlDocument.0
cmp eax, 0x59cb88
je 0x412d28
push eax
call fcn.004169ff
add esp, 4
lea ecx, [esp + 0x34]
call fcn.00531a50
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.0051553d
mov esp, ebp
pop ebp
ret 4
call fcn.00404880
int3