Function at 0x464b50
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ba60c
mov eax, dword fs:[0]
push eax
sub esp, 0x178
mov eax, dword [0x6319d0]
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, dword [ebp + 8]
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x128], edi
call fcn.0046d4f0
xor ebx, ebx
test eax, eax
je 0x464c1a
push edi
push str.KINIFile::CheckIfNGENPath_:_pszRootPath___s_n
push 0x68ffb0
call fcn.00599ee3
mov eax, dword [str.ENTRY:]
mov ecx, dword [0x5ccf7c]
mov dword [0x68feb0], eax
mov eax, 0x68ffb0
mov dword [0x68feb4], ecx
add esp, 0xc
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x464bd0
mov edi, 0x68feb0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x464be1
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d500
push 0x68feb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov edi, dword [ebp - 0x128]
mov dword [ebp - 0x13c], ebx
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464c3a
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x118], eax
mov dword [ebp - 4], ebx
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464c69
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x130], eax
mov byte [ebp - 4], 1
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464c99
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x134], eax
mov byte [ebp - 4], 2
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464cc9
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x124], eax
mov byte [ebp - 4], 3
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464cf9
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x140], eax
mov byte [ebp - 4], 4
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464d29
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x11c], eax
mov byte [ebp - 4], 5
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x464d59
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x144], eax
mov esi, dword [ebp - 0x14c]
add esi, 0x47b8
cmp byte [esi], 0
mov byte [ebp - 4], 6
mov dword [ebp - 0x150], ebx
mov dword [ebp - 0x148], ebx
mov dword [ebp - 0x158], esi
je 0x464e70
cmp edi, ebx
jne 0x464d9e
xor eax, eax
jmp 0x464dac
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x464da3
sub eax, edx
mov ecx, dword [ebp - 0x128]
push eax
push ecx
lea ecx, [ebp - 0x118]
call fcn.004026b0
mov ebx, dword [ebp - 0x118]
cmp dword [ebx - 0xc], 0
jl 0x4654c6
push str.20000
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x464de8
sub eax, ebx
cmp eax, 0xffffffff
jne 0x464e13
cmp dword [ebx - 0xc], 0
jl 0x4654c6
push str.20001
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x4654c6
sub eax, ebx
cmp eax, 0xffffffff
je 0x4654c6
mov edx, dword [ebp - 0x128]
mov eax, esi
sub edx, esi
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x464e20
mov dword [ebp - 0x13c], 1
call fcn.0046d4f0
test eax, eax
je 0x4654c6
mov edx, dword [ebp - 0x128]
push edx
push str.pszRootPath___s_n
push 0x68fdb0
call fcn.00599ee3
add esp, 0xc
push 0x68fdb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
jmp 0x4654c6
cmp edi, ebx
jne 0x464e78
xor eax, eax
jmp 0x464e89
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x464e80
sub eax, edx
mov edi, dword [ebp - 0x128]
push eax
push edi
lea ecx, [ebp - 0x118]
call fcn.004026b0
mov ebx, dword [ebp - 0x118]
mov eax, dword [ebx - 0xc]
test eax, eax
js 0x464ec2
push str.20000
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x464ec2
sub eax, ebx
cmp eax, 0xffffffff
jne 0x464eed
cmp dword [ebx - 0xc], 0
jl 0x4654c6
push str.20001
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x4654c6
sub eax, ebx
cmp eax, 0xffffffff
je 0x4654c6
push 0x104
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push str.Microsoft.NETFramework_
lea ecx, [ebp - 0x120]
call fcn.00403380
mov esi, eax
lea ecx, [ebp - 0x114]
push ecx
mov bl, 7
lea ecx, [ebp - 0x12c]
mov byte [ebp - 4], bl
call fcn.00403380
push esi
push eax
lea edx, [ebp - 0x138]
push edx
mov byte [ebp - 4], 8
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x140]
mov byte [ebp - 4], 9
call fcn.00402af0
mov eax, dword [ebp - 0x138]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x464f73
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x464f98
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x464fbe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x5cd348
lea ecx, [ebp - 0x12c]
call fcn.00403380
push eax
lea ecx, [ebp - 0x140]
push ecx
lea edx, [ebp - 0x120]
mov ebx, 0xa
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x118]
mov byte [ebp - 4], 0xb
call fcn.00402af0
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465022
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465048
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ebx
lea ecx, [ebp - 0x184]
call fcn.004a7e5d
push 1
lea ecx, [ebp - 0x118]
push ecx
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0xc
call fcn.00460af0
mov byte [ebp - 4], 0xd
test edi, edi
jne 0x465078
xor eax, eax
jmp 0x465089
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x465080
sub eax, edx
push eax
push edi
lea ecx, [ebp - 0x118]
call fcn.004026b0
mov esi, dword [ebp - 0x118]
push 0x5c
push esi
call fcn.0059aa24
add esp, 8
test eax, eax
je 0x465120
sub eax, esi
mov esi, eax
cmp esi, 0xffffffff
je 0x465120
push esi
lea edx, [ebp - 0x120]
push edx
lea ecx, [ebp - 0x118]
call fcn.004024f0
push eax
lea ecx, [ebp - 0x130]
mov byte [ebp - 4], 0xe
call fcn.00402af0
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4650fd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc esi
push esi
push 0
lea ecx, [ebp - 0x118]
call fcn.00407710
lea ecx, [ebp - 0x118]
push ecx
lea ecx, [ebp - 0x134]
call fcn.00402af0
jmp 0x465144
lea edx, [ebp - 0x118]
push edx
lea ecx, [ebp - 0x130]
call fcn.00402af0
push 8
push str.NGEN.EXE
lea ecx, [ebp - 0x134]
call fcn.004026b0
mov esi, dword [ebp - 0x130]
cmp dword [esi - 0xc], 0
jl 0x46519e
push str.20000
push esi
call fcn.0059a963
add esp, 8
test eax, eax
je 0x465175
sub eax, esi
cmp eax, 0xffffffff
je 0x465175
mov dword [ebp - 0x148], 0
jmp 0x46519e
cmp dword [esi - 0xc], 0
jl 0x46519e
push str.20001
push esi
call fcn.0059a963
add esp, 8
test eax, eax
je 0x46519e
sub eax, esi
cmp eax, 0xffffffff
je 0x46519e
mov dword [ebp - 0x148], 1
mov eax, dword [ebp - 0x180]
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x138], eax
test eax, eax
je 0x46543f
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x120]
push ecx
lea ecx, [ebp - 0x184]
call fcn.0045f5b0
mov ecx, dword [eax]
mov esi, dword [ebp - 0x124]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 0xf
cmp eax, esi
je 0x465232
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x465222
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x465222
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x465217
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x124], ebx
jmp 0x465232
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x124]
call fcn.004026b0
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465258
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x5cd28c
lea ecx, [ebp - 0x15c]
call fcn.00403380
mov esi, eax
lea ecx, [ebp - 0x124]
push ecx
lea edx, [ebp - 0x140]
push edx
lea eax, [ebp - 0x160]
push eax
mov byte [ebp - 4], 0x10
call fcn.00402910
push esi
push eax
lea ecx, [ebp - 0x164]
push ecx
mov byte [ebp - 4], 0x11
call fcn.00402910
lea edx, [ebp - 0x134]
push edx
push eax
lea eax, [ebp - 0x12c]
push eax
mov byte [ebp - 4], 0x12
call fcn.00402910
add esp, 0x24
mov ecx, dword [eax]
mov esi, dword [ebp - 0x11c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 0x13
cmp eax, esi
je 0x465316
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x465306
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x465306
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4652fb
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x11c], ebx
jmp 0x465316
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x11c]
call fcn.004026b0
mov eax, dword [ebp - 0x12c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x12
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46533c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x164]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x11
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465362
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x160]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465388
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4653ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x4653e1
mov ecx, dword [ebp - 0x11c]
push ecx
push str.csNGENFilePath___s_n
push 0x68fcb0
call fcn.00599ee3
add esp, 0xc
push 0x68fcb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov eax, dword [ebp - 0x148]
lea edx, [ebp - 0x154]
push edx
push eax
lea ecx, [ebp - 0x124]
push ecx
mov ecx, dword [ebp - 0x14c]
lea edx, [ebp - 0x11c]
push edx
call fcn.004626a0
test eax, eax
je 0x465432
mov eax, dword [ebp - 0x154]
cmp eax, dword [ebp - 0x150]
jbe 0x465432
mov dword [ebp - 0x150], eax
lea eax, [ebp - 0x11c]
push eax
lea ecx, [ebp - 0x144]
call fcn.00402af0
cmp dword [ebp - 0x138], 0
jne 0x4651b8
mov esi, dword [ebp - 0x144]
cmp dword [esi - 0xc], 0
je 0x4654b1
mov edi, dword [ebp - 0x128]
mov edx, edi
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x465457
mov edx, dword [ebp - 0x158]
mov eax, esi
sub edx, esi
jmp 0x465470
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x465470
mov dword [ebp - 0x13c], 1
call fcn.0046d4f0
test eax, eax
je 0x4654b1
push edi
push str.pszRootPath___s_n
push 0x68fbb0
call fcn.00599ee3
add esp, 0xc
push 0x68fbb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 6
call fcn.004a8028
mov ebx, dword [ebp - 0x118]
call fcn.0046d4f0
test eax, eax
je 0x465549
mov ecx, dword [ebp - 0x13c]
push ecx
push str.KINIFile::CheckIfNGENPath_:_bRetVal___d_n
push 0x68fab0
call fcn.00599ee3
mov eax, dword [0x5ccefc]
mov edx, dword [str.EXIT:]
mov dword [0x68f9b4], eax
mov eax, 0x68fab0
add esp, 0xc
mov dword [0x68f9b0], edx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x465505
mov edi, 0x68f9b0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x465516
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x68f9b0
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d510
mov eax, dword [ebp - 0x144]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46556f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465595
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x140]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4655bb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x124]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4655e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465607
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x130]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46562d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x465650
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x13c]
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.00599ed4
mov esp, ebp
pop ebp
ret 4