Function at 0x409980
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x66ded8
mov eax, dword fs:[0]
push eax
sub esp, 0x1dc
mov eax, dword [0x70d06c]
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 edi, ecx
lea ecx, [ebp - 0x1e4]
mov dword [ebp - 4], 0
call fcn.004cc925
lea ecx, [ebp - 0x17c]
mov byte [ebp - 4], 1
call fcn.004cc925
mov dword [ebp - 0x184], 0
mov dword [ebp - 0x180], 0xf
mov byte [ebp - 0x194], 0
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0xf
mov byte [ebp - 0x144], 0
mov byte [ebp - 4], 4
lea eax, [ebp + 8]
cmp dword [ebp + 0x1c], 0x10
push 0
push dword [ebp + 0x18]
cmovae eax, dword [ebp + 8]
push eax
mov dword [edi + 0x34], 0
mov dword [edi + 0x38], 0
call fcn.004c9d88
add esp, 0xc
test eax, eax
je 0x409a96
sub esp, 0x18
lea eax, [ebp + 8]
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x12c]
push eax
call fcn.004c9bf4
add esp, 0x1c
lea ecx, [ebp + 8]
push eax
call fcn.00405f30
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409a96
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409a8c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a530
push edx
push ecx
call fcn.00429d60
add esp, 8
push dword [ebp - 0x1e8]
mov ebx, dword [ebp + 0x1c]
lea eax, [ebp + 8]
mov esi, dword [ebp + 0x18]
cmp ebx, 0x10
push 1
cmovae eax, dword [ebp + 8]
push 0x6f51a4
push 0
push esi
push eax
call fcn.0040a9e0
mov edx, eax
add esp, 0x18
cmp edx, 0xffffffff
je 0x409b5a
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
cmp esi, edx
jb 0x40a535
sub esi, edx
lea eax, [ebp + 8]
or ecx, 0xffffffff
cmp esi, 0xffffffff
cmovb ecx, esi
cmp ebx, 0x10
push ecx
cmovae eax, dword [ebp + 8]
lea ecx, [ebp - 0x12c]
add eax, edx
push eax
call fcn.004064f0
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp + 8]
call fcn.00405f30
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409b5a
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409b50
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a53a
push edx
push ecx
call fcn.00429d60
add esp, 8
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x1e4]
call fcn.004ccf8f
test al, al
jne 0x409b74
xor bl, bl
jmp 0x40a475
push 4
push str.data
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
lea eax, [ebp - 0x17c]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp - 0x1e4]
call fcn.004ccde2
mov byte [ebp - 4], 4
mov bl, al
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409bfe
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409bf4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a53f
push edx
push ecx
call fcn.00429d60
add esp, 8
test bl, bl
je 0x40a46e
push 0xe0
call fcn.004299b5
push 0xe0
mov esi, eax
push 0
push esi
call fcn.00501b40
add esp, 0x10
mov ecx, esi
call fcn.0040a580
mov dword [edi + 0x38], eax
lea ecx, [ebp - 0x12c]
push 3
push 0x6f5174
mov dword [eax + 0x30], 0
mov eax, dword [edi + 0x38]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
mov dword [eax + 0xc4], 0
call fcn.004064f0
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0x30
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004ccd8e
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409cc8
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409cbe
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a544
push edx
push ecx
call fcn.00429d60
add esp, 8
push 8
push str.filename
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0x34
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409d50
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409d46
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a549
push edx
push ecx
call fcn.00429d60
add esp, 8
push 8
push str.fullname
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0x4c
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409dd8
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409dce
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a54e
push edx
push ecx
call fcn.00429d60
add esp, 8
push 7
push str.downurl
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0x64
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409e60
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409e56
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a553
push edx
push ecx
call fcn.00429d60
add esp, 8
push 8
push str.softtype
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0x94
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409eea
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409ee0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a558
push edx
push ecx
call fcn.00429d60
add esp, 8
push 4
push str.size
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0xac
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409f74
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409f6a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a55d
push edx
push ecx
call fcn.00429d60
add esp, 8
push 4
push str.type
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0xc4
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004ccd8e
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x409ffe
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x409ff4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a562
push edx
push ecx
call fcn.00429d60
add esp, 8
push 3
push 0x6f51e4
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x17c]
mov eax, dword [edi + 0x38]
add eax, 0xc8
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x40a088
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a07e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a567
push edx
push ecx
call fcn.00429d60
add esp, 8
push 0xb
push str.description
lea ecx, [ebp - 0x12c]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
call fcn.004064f0
lea eax, [ebp - 0x144]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp - 0x17c]
call fcn.004cce93
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x40a110
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a106
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a56c
push edx
push ecx
call fcn.00429d60
add esp, 8
cmp dword [ebp - 0x130], 0x10
lea eax, [ebp - 0x144]
push 0
push dword [ebp - 0x134]
cmovae eax, dword [ebp - 0x144]
push eax
call fcn.004c9d88
add esp, 0xc
test eax, eax
lea eax, [ebp - 0x144]
je 0x40a193
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.004cac98
add esp, 8
mov ecx, dword [edi + 0x38]
push eax
add ecx, 0x7c
call fcn.00408280
mov edx, dword [ebp - 0x118]
cmp edx, 8
jb 0x40a1be
mov ecx, dword [ebp - 0x12c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a1b4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
jmp 0x40a1b4
push 0x3a8
sub esp, 0x18
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x12c]
push eax
call fcn.004ca438
add esp, 0x20
jmp 0x40a14f
push edx
push ecx
call fcn.00429d60
add esp, 8
mov eax, dword [edi + 0x38]
add eax, 0x34
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
jb 0x40a1cf
mov eax, dword [eax]
push 0
push ecx
push eax
call fcn.004c9d88
add esp, 0xc
test eax, eax
je 0x40a245
mov eax, dword [edi + 0x38]
sub esp, 0x18
add eax, 0x34
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x12c]
push eax
call fcn.004c9bf4
mov ecx, dword [edi + 0x38]
add esp, 0x1c
add ecx, 0x34
push eax
call fcn.00405f30
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x40a245
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a23b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
mov eax, dword [edi + 0x38]
add eax, 0x4c
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
jb 0x40a256
mov eax, dword [eax]
push 0
push ecx
push eax
call fcn.004c9d88
add esp, 0xc
test eax, eax
je 0x40a2cc
mov eax, dword [edi + 0x38]
sub esp, 0x18
add eax, 0x4c
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x12c]
push eax
call fcn.004c9bf4
mov ecx, dword [edi + 0x38]
add esp, 0x1c
add ecx, 0x4c
push eax
call fcn.00405f30
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x40a2cc
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a2c2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.00501b40
add esp, 0xc
lea eax, [ebp - 0x114]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov ecx, dword [edi + 0x38]
lea edx, [ebp - 0x114]
add ecx, 0x18
lea esi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x40a303
sub edx, esi
lea eax, [ebp - 0x114]
push edx
push eax
call fcn.004064f0
mov eax, dword [edi + 0x38]
add eax, 0xc8
cmp dword [eax + 0x14], 0x10
jb 0x40a329
mov eax, dword [eax]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameA]
mov ecx, dword [edi + 0x38]
push eax
add ecx, 0x18
call fcn.00405e20
mov eax, dword [edi + 0x38]
push 0
push 0
push 0
push 0x3a8
sub esp, 0x18
add eax, 0x18
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x1ac]
push eax
call fcn.004ca438
add esp, 0x20
mov byte [ebp - 4], 0xf
cmp dword [eax + 0x14], 8
jb 0x40a373
mov eax, dword [eax]
push eax
mov eax, dword [edi + 0x38]
push 0x3a8
sub esp, 0x18
add eax, 0xc8
mov ecx, esp
push eax
call fcn.00406050
lea eax, [ebp - 0x12c]
push eax
call fcn.004ca438
add esp, 0x20
mov byte [ebp - 4], 0x10
cmp dword [eax + 0x14], 8
jb 0x40a3a7
mov eax, dword [eax]
push eax
call fcn.004dab20
mov edx, dword [ebp - 0x118]
add esp, 0x14
test al, al
sete bl
cmp edx, 8
jb 0x40a3f5
mov ecx, dword [ebp - 0x12c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a3eb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
mov edx, dword [ebp - 0x198]
xor eax, eax
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 7
mov word [ebp - 0x12c], ax
cmp edx, 8
jb 0x40a452
mov ecx, dword [ebp - 0x1ac]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40a448
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
test bl, bl
je 0x40a46e
mov eax, dword [edi + 0x38]
add eax, 0x18
mov dword [eax + 0x10], 0
cmp dword [eax + 0x14], 0x10
jb 0x40a46b
mov eax, dword [eax]
mov byte [eax], 0
cmp dword [edi + 0x38], 0
setne bl
mov edx, dword [ebp - 0x130]
cmp edx, 0x10
jb 0x40a4af
mov ecx, dword [ebp - 0x144]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a4a5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
lea ecx, [ebp - 0x17c]
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0xf
mov byte [ebp - 0x144], 0
call fcn.004cc9db
lea ecx, [ebp - 0x1e4]
call fcn.004cc9db
mov edx, dword [ebp + 0x1c]
cmp edx, 0x10
jb 0x40a510
mov ecx, dword [ebp + 8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40a506
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40a571
push edx
push ecx
call fcn.00429d60
add esp, 8
mov al, bl
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.004296e5
mov esp, ebp
pop ebp
ret 0x18
call fcn.005059c0
call fcn.00404680
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
call fcn.005059c0
int3