Function at 0x40671c
Capabilities:
Check if file exists

Disassembly:
push 0x18
mov eax, 0x42401e
call fcn.0041514d
push str.40651ff2ad0d11c58b8b225dbaa6339e06049d7e70c642efd746d242849725d15030f0f27152a6c4fbe1df9d7f8a51a768fdde10bea8529e90fcaa11a8c4b85c3d63b21d2326f943dfa6410ea15e346be778ec3a3d8b74e33c38d637df46cd8d5e4aa0d5b2b2c4b00a8ef35eae5b54131709564ba96352bf05bde4564ca62bb9b9426eefc0f387b403b5986c26fca8992d4874e92a8b0ac0fbd6640f0135b1bc66b2bba3571fc1819c3a7649c8934c305a9c859b086edc853d521d38dc4586bb28f095aa746c100966e493fa3c20e05ff8be3337005505f7a599a79db27541120be32b13057032d93ae4c7ef4018435968f767929d7da374e933cc51a8457503f842d963a65a715cdf2c06d178ebf7101a63f0e16f97af8daa698fd8b81b95f81c759d96d3a4e354e3318472ab879a057121a266ceed5f25173f3c2931e7723cf55b734425d047a878b644510e125aca842eeedc2a61f185b161084d2bde1e0b43e8c1a49b66406cb36dd52e6d641e76bacb37de71a51f6a0c28af6a4719926d9cbbbc55b55fa787f919adebc7c549ec06a8fe9fa3e03fc3731d499bcfad12e3727dab2549696d73cb02019f79c3aac0796cf50af9febe2d1e7785d79e4b9cfa3fa3988eee9f3f83f7dcaa957a98d7ee9ceb86a74060427fcb02019f79c3aac0d9e358ad0e247ba85c1e2aa4ed7ab29c311b3844e5d7aa6cdfbe90d43d8934e319ea49fcf781d3597a304447731ceaa88843500467028bc94a234eb27d1776d0335db2d7440c79c5498f824b0307f1f655b662e64b87261c720da8cc059979d30483248463175c68f396d006d0e2f2d61086329e3aed5eea32b53c4b7134e2cb140bf6a3c8afe399e5cb06e775fac3e8c42efcfb9d5b95ff07437ca0a4c8d0f5ee063bdc73565ba12374bc6c7455c2ba384c4f1261b21aa1f78a37a2369ad92f68e5a7805cde4603ea6c80cb74f77d491b95188fe50a188f8de7e53db915e260257c562bf99b91fd0483248463175c680fe0a671072ad5fc1529c6dbc182862f585163c4b5b7c0c9fd34e9dbb0fee4bc6e8d397c83f4a6306d1aedae0b6d9ba7d6a4933032e045d215c6eaaea9a887dd7fd8f2d6a66f81bf5ca245e8af68a53da77ac8356bf4f51603acada9912c414b4d5a9e1b9cd90191a4a404d3274bf265f7185c43bb020b4113785f7b78be4a5e54ff606f4974a2cf87273b91f5a710a37d05b344c290bef6ca7d29d979954b477e3359ef4be19fa68925947262f2733efe7a2924f94429feb4e81f2d88842b64eea7c12eae937f88b986f393f1013c184cd9c8d9aa54eaf8a19fbbbb0e55824f45654e877c788f20f0e42df0d5bc08aba474c23138b3bb24465688270f7fea05aff3b902b8b699d1b63838d76c7ba22584e3e6ea4c23820c072807b11aa94ed74e5c796a98102d9a6e113d4cfad695edcf6cc624bf7b95a2a6feb74f7f26133625d421ea8adb81e7021a17cf6268a92079809f366e115087f9ea3cb52f864adfa55ba24c8e61a37523b5ee7ace4ae662b9d84ff8d82121c364c9b671eadba0258a890f4c072904350a4cef0c625ef4696dfa89e1dcdd2e8a2b4020ee3a192fb2af14b40d42844472c7dae6e733f5cf1f332d62018493d4f79124eb8ab8f611b8c276790b95e6bb6f0c47642f2cb8e96025d34a97d03b4289faa6ca0f7b50562da9586473e46af20fb4e600552732240ec4bee1b0aec850cd9dc2fc7beff931fd25a47e9589b0ef1b6d0e12b6efc85ecfe0eca87c969e94bc112012a7afd57e7d34efa645efc5ed77262a9a97fac9ef7e52d420274e3674c74c7439bcb2ba9b9097da6f68f512c8043475e8f0c9a721ee6dff013b6f44a151c62b75de28a8d2162640d3447d24a6b595aa2696ea04c91c3e7838eb5b03b499ae67ca40ae05159ba6215906dee03afb97bff2eae914975f8c1bf586199a7667270c0f3316d9fe8b7cf10d515730e366e6eff6c1b992b3d43f120a3cf4555e5d3a00483434bdec2b8a58cb1551b61c496defb022cdc16de852f2bd94b768cb443b18907d58e58c7ecbdba4f2398207e1a0426650a94c764ff4696783f0783edbf842d963a65a715c538ca0318f8ba64fb4c91f4844bbb91cbbc1d622f647fd1ff1af18afb8ff3a126daf32c18ffef8f787953cdeb30c9c75f7bbc69892e87f72d985f8490e519bd40af6e48b57c154cd41daf013e51bad24693d08ca27748a30bae1f407e761f6c5c4290ffe9cefa2292c63aaddd2ed6e99f8d1729ad610fc5c7d146b0d328dc0bc03ee2d08ed36a8a381da16248f15f4674d0ac49a9a08df5c00f122223bf68081ae551942af5617e2dff2aff5dd1130531a9d4f3f1b96dadcb57c63651fc048cd48c3c465ff4261fd1d5a35015b1ad0110b72b3e80d1e7f521a5ca59d0fdc71ba0e457deda6ac0db96cb1ffa83a9c4cb813b3ad54420898ae6d5c8dc867250410c5a71615dd7ce39b45f2afa84b2035c52b4020ee3a192fb20d708a5fbdc89f837164793f4a173409e6eff6c1b992b3d418f54c37e35663967db5833be880285083189dfa0379426a41599b44712f8f4e905cb2eff12d48adc8e791a649aa10404c13ed25f3e64f7a462743087e899f9f1a5fa063878087164b26a4b31240ea5bf1816c3732b84277bdfe2c894e586091226d630bd7a14c4132149e849d1b9326b57c63651fc048cd743fa3c47d1804fc1d8304b311757990fa6891646d5cd7086c6c3c351310e7bf59d13f09b3836739a3333c94978c6c1d47d3518b207881a61c6b684b23446a8c4f9b934679b65b6013b888259a2c67a5650e0680a2b45c2bdee8d5fdcfe6492d4d888c2c4dc4c6952ac3b9ac62f1e8442aa8b809c1fc93d2ee8f7346f5f040a649cff3170907fef5
lea eax, [ebp - 0x14]
push eax
call fcn.00402644
and dword [ebp - 4], 0
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x20]
call fcn.00410c80
lea esi, [ebp - 0x14]
mov byte [ebp - 4], 1
call fcn.00401415
and dword [ebp - 0x1c], 0
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x20]
push eax
lea edi, [ebp - 0x1c]
call fcn.00409257
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x10]
cmp dword [eax - 0xc], 0
je 0x4067c2
mov eax, dword [0x43b30c]
mov ecx, 0x43b30c
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 8]
mov byte [ebp - 4], 3
push dword [ebp - 0x10]
push dword [eax]
lea eax, [ebp - 0x18]
push 0x430f40
call fcn.00401552
mov esi, dword [ebp - 0x18]
add esp, 0xc
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4067ba
lea eax, [ebp - 0x10]
push eax
mov eax, ebx
call fcn.00409425
lea eax, [esi - 0x10]
call fcn.0040159d
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x10]
add eax, 0xfffffff0
call fcn.0040159d
cmp dword [ebp - 0x1c], 0
jg 0x406755
mov eax, dword [ebx + 0x10]
sub eax, dword [ebx + 0xc]
xor ecx, ecx
sar eax, 2
cmp ecx, eax
mov eax, dword [ebp - 0x20]
sbb esi, esi
add eax, 0xfffffff0
neg esi
call fcn.0040159d
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
call fcn.0040159d
mov eax, esi
call fcn.00415225
ret