Function at 0x58c830
Capabilities:
Get common file path

Disassembly:
mov eax, 0x3138
call fcn.005d9990
mov eax, dword [esp + 0x314c]
test eax, eax
push ebx
push ebp
mov ebp, dword [esp + 0x3144]
push esi
jne 0x58ca32
push 0x7f02
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 0x1068
push 0x69fc18
mov dword [0x69fc10], eax
call fcn.004232e0
mov esi, dword [esp + 0x3154]
mov dword [0x69fc0c], 0
mov al, byte [esi]
add esp, 8
test al, al
je 0x58cb55
mov ebx, dword [esp + 0x3150]
cmp byte [ebx], 0
je 0x58cb55
push 0x69fc18
push 0x1068
push 0x69fc18
call fcn.00423310
add esp, 8
push eax
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x58cb55
push edi
mov edi, 0x69fc18
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x58c8d6
mov eax, dword [str.update.ini]
mov ecx, dword [0x5ff100]
mov dx, word [0x5ff104]
mov dword [edi], eax
mov al, byte [0x5ff106]
mov dword [edi + 4], ecx
mov word [edi + 8], dx
push 0
mov byte [edi + 0xa], al
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 0x69fc18
push str.started
push str.state
push str.update
call fcn.004cdea0
add esp, 0x10
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
pop edi
jne 0x58cb55
push 0x69fc18
push esi
push str.store
push str.update
call fcn.004cdea0
push 0x69fc18
push ebx
push 0x5ff0e0
push str.update
call fcn.004cdea0
mov ecx, dword [esp + 0x3174]
push ecx
lea edx, [esp + 0x1098]
push 0x5f4a40
push edx
call fcn.005d9929
push 0x69fc18
lea eax, [esp + 0x10a4]
push eax
push 0x5f72fc
push str.update
call fcn.004cdea0
push 0x69fc18
push 0
push 0
push 0
call fcn.004cdea0
mov edx, dword [0x6a0f3c]
add esp, 0x4c
push 0x400
lea ecx, [esp + 0x1078]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x58cb55
push 0x69fc18
push str.update
lea eax, [esp + 0x20e4]
push 0x5f4a5c
push eax
call fcn.005d9929
push 0x69fc0c
push 1
lea ecx, [esp + 0x20f4]
push ecx
lea edx, [esp + 0x1090]
push edx
call fcn.00425c90
add esp, 0x20
test eax, eax
je 0x58cb55
mov eax, dword [esp + 0x3148]
push 0
push 0x1f4
push 0x64
push eax
call dword [sym.imp.USER32.dll_SetTimer]
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3138
ret
mov al, byte [0x69fc18]
test al, al
je 0x58cbc6
push 0x64
push ebp
call dword [sym.imp.USER32.dll_KillTimer]
mov eax, dword [0x69fc0c]
xor esi, esi
test eax, eax
je 0x58ca64
push esi
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x58ca64
mov esi, 1
lea ecx, [esp + 0xc]
push 0x1068
push ecx
call fcn.004232e0
add esp, 8
push 0x69fc18
lea edx, [esp + 0x10]
push 0x1068
push edx
call fcn.00423310
add esp, 8
push eax
lea eax, [esp + 0x14]
push eax
push 0x5f4c90
push str.state
push str.update
call fcn.004ce2e0
lea ecx, [esp + 0x24]
push str.updating
push ecx
call fcn.005f1860
add esp, 0x20
test eax, eax
je 0x58cb51
lea edx, [esp + 0xc]
push str.failed
push edx
call fcn.005f1860
add esp, 8
test eax, eax
je 0x58cb55
lea eax, [esp + 0xc]
push str.finished
push eax
call fcn.005f1860
add esp, 8
test eax, eax
jne 0x58cb51
mov al, byte [0x69fc18]
test al, al
je 0x58cb12
push 0x69fc18
call fcn.005dc3b0
push 0x1068
push 0x69fc18
call fcn.004232e0
add esp, 0xc
mov eax, dword [0x69fc0c]
test eax, eax
je 0x58cb22
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x69fc10]
test eax, eax
je 0x58cb32
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 1
push 0
push 0x8064
push ebp
call dword [sym.imp.USER32.dll_PostMessageA]
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3138
ret
test esi, esi
je 0x58cbb6
mov al, byte [0x69fc18]
test al, al
je 0x58cb7a
push 0x69fc18
call fcn.005dc3b0
push 0x1068
push 0x69fc18
call fcn.004232e0
add esp, 0xc
mov eax, dword [0x69fc0c]
test eax, eax
je 0x58cb8a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x69fc10]
test eax, eax
je 0x58cb9a
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 0
push 0
push 0x8064
push ebp
call dword [sym.imp.USER32.dll_PostMessageA]
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x3138
ret
push 0
push 0x1f4
push 0x64
push ebp
call dword [sym.imp.USER32.dll_SetTimer]
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x3138
ret