Function at 0x4100c0
Capabilities:
Check if file exists
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x49fc57
mov eax, dword fs:[0]
push eax
sub esp, 0x1c8
mov eax, dword [0x4c2c40]
xor eax, esp
mov dword [esp + 0x1c0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4c2c40]
xor eax, esp
push eax
lea eax, [esp + 0x1dc]
mov dword fs:[0], eax
mov esi, dword [esp + 0x1f4]
mov edi, dword [esi + 8]
cmp dword [esi + 4], edi
mov eax, dword [esp + 0x1ec]
mov ebp, dword [esp + 0x1f0]
mov dword [esp + 0x44], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x68], esi
mov dword [esp + 0x24], edx
jbe 0x41012d
call fcn.00478a25
mov ebx, dword [esi + 4]
cmp ebx, dword [esi + 8]
jbe 0x41013a
call fcn.00478a25
push edi
push esi
push ebx
push esi
lea eax, [esp + 0x80]
push eax
push esi
call fcn.00411020
xor esi, esi
mov dword [esp + 0x128], 7
mov dword [esp + 0x124], esi
mov word [esp + 0x114], si
lea ecx, [esp + 0x110]
mov dword [esp + 0x1e4], esi
mov byte [esp + 0x17], 1
call fcn.0043d1a0
test al, al
je 0x410d97
mov ecx, dword [esp + 0x44]
lea ebx, [esp + 0x148]
call fcn.00443440
push esi
push esi
mov byte [esp + 0x1ec], 1
mov eax, dword [ebp + 0x64]
push 1
push eax
xor ecx, ecx
lea ebx, [esp + 0x120]
lea edx, [esp + 0x158]
call fcn.00403930
cmp eax, esi
jne 0x4101cc
mov ecx, dword [esp + 0x24]
mov dword [ecx], esi
jmp 0x410d57
cmp eax, 3
jne 0x410d4d
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
lea edx, [esp + 0x110]
push edx
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0x1ec], 2
call fcn.00443ce0
test eax, eax
jne 0x410d2f
lea eax, [esp + 0x34]
mov dword [esp + 0x18], esi
call fcn.004476d0
test eax, eax
jbe 0x410d11
jmp 0x410222
xor esi, esi
mov ecx, dword [esp + 0x38]
cmp ecx, esi
je 0x410239
mov eax, dword [esp + 0x3c]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x18], eax
jb 0x410242
call fcn.00478a25
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx + edx*4]
mov ebp, dword [eax + 0x14]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x6c], esi
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x44]
push ecx
mov byte [esp + 0x1e8], 3
call fcn.00441c70
mov esi, eax
xor ebx, ebx
cmp ebp, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x6c], esi
je 0x410b2a
mov edx, 0x4a9c14
lea eax, [esp + 0xd4]
mov byte [esp + 0x23], bl
call fcn.004015e0
mov byte [esp + 0x1e4], 4
mov eax, dword [esi + 8]
cmp eax, ebx
je 0x4102a9
add eax, 0xbc
jmp 0x4102ac
lea eax, [esi + 0xc]
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0x80]
mov dword [esp + 0x98], 7
mov dword [esp + 0x94], ebx
mov word [esp + 0x84], bx
call fcn.00401b70
mov byte [esp + 0x1e4], 5
cmp dword [esp + 0x90], 8
mov edi, dword [esp + 0x7c]
jae 0x4102ef
lea edi, [esp + 0x7c]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x410305
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
mov al, 1
jmp 0x410309
mov al, byte [esp + 0x23]
cmp dword [esp + 0x8c], ebx
je 0x410316
cmp al, 1
jne 0x410337
cmp dword [esi + 8], ebx
je 0x410325
mov eax, dword [esi + 8]
add eax, 0xd8
jmp 0x410328
lea eax, [esi + 0x44]
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0xdc]
call fcn.00401b70
push 0xffffffffffffffff
mov edi, 7
push ebx
lea eax, [esp + 0xdc]
lea ecx, [esp + 0xa0]
mov dword [esp + 0x9c], vtable.CAUVersion.0
mov dword [esp + 0xb8], edi
mov dword [esp + 0xb4], ebx
mov word [esp + 0xa4], bx
call fcn.00401b70
mov byte [esp + 0x1e4], 6
push 0xffffffffffffffff
push ebx
lea eax, [ebp + 4]
lea ecx, [esp + 0xfc]
mov dword [esp + 0xf8], vtable.CAUVersion.0
mov dword [esp + 0x114], edi
mov dword [esp + 0x110], ebx
mov word [esp + 0x100], bx
call fcn.00401b70
mov byte [esp + 0x1e4], 7
cmp dword [esp + 0x108], ebx
je 0x410454
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
lea edx, [esp + 0x94]
push edx
lea ebx, [esp + 0x4c]
lea edi, [esp + 0xf4]
mov byte [esp + 0x1e8], 8
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
mov byte [esp + 0x1e4], 7
call fcn.00401620
test bl, bl
je 0x41044d
mov ecx, edi
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
lea ecx, [esp + 0xd4]
call fcn.00401620
mov byte [esp + 0x1e4], 2
mov eax, dword [esi]
mov edx, dword [eax]
push 1
mov ecx, esi
call edx
jmp 0x410cf5
xor ebx, ebx
mov edi, 7
push 0xffffffffffffffff
push ebx
lea eax, [ebp + 0x24]
lea ecx, [esp + 0xc0]
mov dword [esp + 0xbc], vtable.CAUVersion.0
mov dword [esp + 0xd8], edi
mov dword [esp + 0xd4], ebx
mov word [esp + 0xc4], bx
call fcn.00401b70
mov byte [esp + 0x1e4], 9
cmp dword [esp + 0xcc], ebx
je 0x410526
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
lea eax, [esp + 0xb4]
push eax
lea ebx, [esp + 0x4c]
lea edi, [esp + 0x98]
mov byte [esp + 0x1e8], 0xa
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
call fcn.00401620
test bl, bl
je 0x410524
lea ecx, [esp + 0xb4]
call fcn.00455860
lea ecx, [esp + 0xf0]
call fcn.00455860
mov ecx, edi
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
lea ecx, [esp + 0xd4]
call fcn.00401620
mov byte [esp + 0x1e4], 2
mov edx, dword [esi]
mov ecx, esi
jmp 0x410cef
xor ebx, ebx
lea ecx, [esp + 0xb4]
call fcn.00455860
lea ecx, [esp + 0xf0]
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
lea ecx, [esp + 0xd4]
call fcn.00401620
mov dword [esp + 0x90], 7
mov dword [esp + 0x8c], ebx
mov word [esp + 0x7c], bx
lea ecx, [esp + 0x78]
push ecx
mov byte [esp + 0x1e8], 0xb
call fcn.00433760
add esp, 4
call fcn.004337b0
mov ecx, eax
lea edx, [esp + 0x48]
call fcn.00440350
mov edi, eax
push 1
push 0x4a9fc4
lea ecx, [esp + 0x80]
mov byte [esp + 0x1ec], 0xc
call fcn.004035d0
push ebx
mov esi, eax
push edi
or eax, 0xffffffff
call fcn.004036a0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1e4], 0xb
call fcn.00401620
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x80]
lea ecx, [esp + 0xa0]
mov dword [esp + 0x9c], vtable.CAUVersion.0
mov dword [esp + 0xb8], 7
mov dword [esp + 0xb4], ebx
mov word [esp + 0xa4], bx
call fcn.00401b70
lea edx, [ebp + 0x40]
push edx
lea esi, [esp + 0xb8]
mov byte [esp + 0x1e8], 0xd
call fcn.00442d20
mov byte [esp + 0x1e4], 0xe
cmp dword [esp + 0xcc], ebx
je 0x4106ae
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
lea eax, [esp + 0x94]
push eax
lea ebx, [esp + 0x4c]
mov edi, esi
mov byte [esp + 0x1e8], 0xf
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
mov byte [esp + 0x1e4], 0xe
call fcn.00401620
test bl, bl
je 0x4106ac
mov ecx, esi
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1e4], 2
jmp 0x410ced
xor ebx, ebx
lea ecx, [ebp + 0x60]
push ecx
lea esi, [esp + 0xf4]
call fcn.00442d20
mov byte [esp + 0x1e4], 0x10
cmp dword [esp + 0x108], ebx
je 0x41074b
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
mov edx, esi
push edx
lea ebx, [esp + 0x4c]
lea edi, [esp + 0x98]
mov byte [esp + 0x1e8], 0x11
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
call fcn.00401620
test bl, bl
je 0x410749
mov ecx, esi
call fcn.00455860
lea ecx, [esp + 0xb4]
call fcn.00455860
mov ecx, edi
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1e4], 2
mov eax, dword [ecx]
mov edx, dword [eax]
push 1
call edx
jmp 0x410cf5
xor ebx, ebx
lea ecx, [esp + 0xf0]
call fcn.00455860
lea ecx, [esp + 0xb4]
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
mov byte [esp + 0x1e4], 3
call fcn.00401620
cmp dword [ebp + 0xb4], ebx
je 0x410799
lea ebx, [ebp + 0xa0]
call fcn.00410df0
test al, al
jne 0x410730
xor ebx, ebx
lea eax, [ebp + 0x80]
mov dword [esp + 0x28], ebx
call fcn.004476d0
test eax, eax
jbe 0x410a4b
mov esi, dword [esp + 0x2c]
mov ecx, dword [esi + 0x84]
add esi, 0x80
cmp ecx, ebx
je 0x4107d2
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x28], eax
jb 0x4107d7
call fcn.00478a25
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x28]
mov edi, dword [eax + ecx*4]
mov dword [esp + 0x70], edi
mov dword [esp + 0x64], ebx
mov edx, dword [esp + 0x30]
lea ebx, [edi + 0x40]
push edx
mov byte [esp + 0x1e8], 0x12
call fcn.00441c70
mov ebp, eax
test ebp, ebp
mov dword [esp + 0x64], ebp
je 0x410b06
mov edx, 0x4a9c14
lea eax, [esp + 0xd4]
xor bl, bl
call fcn.004015e0
mov byte [esp + 0x1e4], 0x13
mov eax, dword [ebp + 8]
xor ecx, ecx
cmp eax, ecx
je 0x410837
add eax, 0xbc
jmp 0x41083a
lea eax, [ebp + 0xc]
push 0xffffffffffffffff
mov dword [esp + 0x90], ecx
mov word [esp + 0x80], cx
push ecx
lea ecx, [esp + 0x80]
mov dword [esp + 0x98], 7
call fcn.00401b70
mov byte [esp + 0x1e4], 0x14
cmp dword [esp + 0x90], 8
mov esi, dword [esp + 0x7c]
jae 0x41087d
lea esi, [esp + 0x7c]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x410891
push esi
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
mov bl, 1
cmp dword [esp + 0x8c], 0
je 0x4108a0
cmp bl, 1
jne 0x4108c3
cmp dword [ebp + 8], 0
je 0x4108b0
mov eax, dword [ebp + 8]
add eax, 0xd8
jmp 0x4108b3
lea eax, [ebp + 0x44]
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0xdc]
call fcn.00401b70
xor ebx, ebx
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0xdc]
lea ecx, [esp + 0xa0]
mov dword [esp + 0x9c], vtable.CAUVersion.0
mov dword [esp + 0xb8], 7
mov dword [esp + 0xb4], ebx
mov word [esp + 0xa4], bx
call fcn.00401b70
push edi
lea esi, [esp + 0xb8]
mov byte [esp + 0x1e8], 0x15
call fcn.00442d20
mov byte [esp + 0x1e4], 0x16
cmp dword [esp + 0xcc], ebx
je 0x410974
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
lea eax, [esp + 0x94]
push eax
lea ebx, [esp + 0x4c]
mov edi, esi
mov byte [esp + 0x1e8], 0x17
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
mov byte [esp + 0x1e4], 0x16
call fcn.00401620
test bl, bl
jne 0x410ac6
mov edi, dword [esp + 0x70]
add edi, 0x20
push edi
lea esi, [esp + 0xf4]
call fcn.00442d20
mov byte [esp + 0x1e4], 0x18
cmp dword [esp + 0x108], 0
je 0x4109d8
mov edx, str.LessOrEqual
lea eax, [esp + 0x48]
call fcn.004015e0
mov ecx, esi
push ecx
lea ebx, [esp + 0x4c]
lea edi, [esp + 0x98]
mov byte [esp + 0x1e8], 0x19
call fcn.00442c40
add esp, 4
test al, al
lea ecx, [esp + 0x48]
sete bl
call fcn.00401620
test bl, bl
jne 0x410aba
lea ecx, [esp + 0xf0]
call fcn.00455860
lea ecx, [esp + 0xb4]
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
lea ecx, [esp + 0xd4]
call fcn.00401620
mov byte [esp + 0x1e4], 3
mov edx, dword [ebp]
mov eax, dword [edx]
push 1
mov ecx, ebp
call eax
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
add esi, 1
add eax, 0x80
mov dword [esp + 0x28], esi
call fcn.004476d0
xor ebx, ebx
cmp esi, eax
jb 0x4107b0
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x14]
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0xc0]
mov dword [esp + 0xbc], vtable.CAURegion.0
mov dword [esp + 0xd8], 7
mov dword [esp + 0xd4], ebx
mov word [esp + 0xc4], bx
call fcn.00401b70
push ebp
lea ebx, [esp + 0xb8]
mov byte [esp + 0x1e8], 0x1a
call fcn.00442a50
test al, al
mov ecx, ebx
jne 0x410b17
call fcn.00443eb0
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1e4], 2
jmp 0x410ced
lea ecx, [esp + 0xf0]
call fcn.00455860
lea ecx, [esp + 0xb4]
call fcn.00455860
lea ecx, [esp + 0x94]
call fcn.00455860
lea ecx, [esp + 0x78]
call fcn.00401620
lea ecx, [esp + 0xd4]
call fcn.00401620
mov byte [esp + 0x1e4], 3
mov edx, dword [ebp]
mov eax, dword [edx]
push 1
mov ecx, ebp
call eax
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1e4], 2
jmp 0x410ced
mov byte [esp + 0x1e4], 3
call fcn.00443eb0
mov esi, dword [esp + 0x1c]
xor ebx, ebx
mov ecx, esi
call fcn.0043ec30
push 0xffffffffffffffff
mov edi, 7
push ebx
add eax, 0x20
lea ecx, [esp + 0x134]
mov dword [esp + 0x14c], edi
mov dword [esp + 0x148], ebx
mov word [esp + 0x138], bx
call fcn.00401b70
mov byte [esp + 0x1e4], 0x1b
mov ecx, dword [esp + 0x38]
cmp ecx, ebx
je 0x410b7d
mov eax, dword [esp + 0x3c]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x18], eax
jb 0x410b86
call fcn.00478a25
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x18]
mov ecx, dword [ecx + eax*4]
lea edx, [esp + 0x12c]
push edx
call fcn.004439e0
mov esi, eax
cmp esi, ebx
je 0x410ca9
push 0xffffffffffffffff
push ebx
lea eax, [esi + 0x54]
lea ecx, [esp + 0x80]
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], ebx
mov word [esp + 0x84], bx
call fcn.00401b70
lea ecx, [esp + 0x78]
push ecx
lea edx, [esp + 0xd8]
push edx
mov byte [esp + 0x1ec], 0x1c
call fcn.0043fde0
add esp, 8
push eax
lea eax, [esi + 0x38]
push eax
lea ecx, [esi + 0x1c]
push ecx
push esi
lea edx, [esp + 0x174]
push edx
mov byte [esp + 0x1f8], 0x1d
call fcn.0043c0d0
mov ebp, 8
mov byte [esp + 0x1e4], 0x1f
cmp dword [esp + 0xec], ebp
jb 0x410c2e
mov eax, dword [esp + 0xd8]
push eax
call fcn.0045a870
add esp, 4
mov esi, dword [esp + 0x68]
lea ecx, [esp + 0x164]
push ecx
mov dword [esp + 0xf0], edi
mov dword [esp + 0xec], ebx
mov word [esp + 0xdc], bx
call fcn.00410ec0
mov ecx, dword [esp + 0x38]
cmp ecx, ebx
je 0x410c6c
mov eax, dword [esp + 0x3c]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x18], eax
jb 0x410c75
call fcn.00478a25
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov ecx, dword [ecx + edx*4]
cmp dword [ecx], 1
jne 0x410c85
mov byte [esp + 0x17], bl
lea esi, [esp + 0x164]
call fcn.0043c190
cmp dword [esp + 0x90], ebp
jb 0x410cae
mov eax, dword [esp + 0x7c]
push eax
call fcn.0045a870
add esp, 4
jmp 0x410cae
mov ebp, 8
cmp dword [esp + 0x144], ebp
jb 0x410cc7
mov ecx, dword [esp + 0x130]
push ecx
call fcn.0045a870
add esp, 4
mov ecx, dword [esp + 0x1c]
cmp ecx, ebx
mov dword [esp + 0x144], edi
mov dword [esp + 0x140], ebx
mov word [esp + 0x130], bx
mov byte [esp + 0x1e4], 2
je 0x410cf5
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov esi, dword [esp + 0x18]
add esi, 1
lea eax, [esp + 0x34]
mov dword [esp + 0x18], esi
call fcn.004476d0
cmp esi, eax
jb 0x410220
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x34]
push eax
mov dword [ecx], 3
mov byte [esp + 0x1e8], 1
call fcn.00443a80
jmp 0x410d57
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x34]
push eax
mov dword [edx], 1
mov byte [esp + 0x1e8], 1
call fcn.00443a80
jmp 0x410d57
mov ecx, dword [esp + 0x24]
mov dword [ecx], 1
mov eax, dword [esp + 0x114]
mov esi, 8
cmp dword [esp + 0x128], esi
jae 0x410d73
lea eax, [esp + 0x114]
push eax
call fcn.00478f9d
add esp, 4
cmp dword [esp + 0x160], esi
jb 0x410da2
mov edx, dword [esp + 0x14c]
push edx
call fcn.0045a870
add esp, 4
jmp 0x410da2
mov eax, dword [esp + 0x24]
mov dword [eax], esi
mov esi, 8
cmp dword [esp + 0x128], esi
jb 0x410dbb
mov ecx, dword [esp + 0x114]
push ecx
call fcn.0045a870
add esp, 4
mov al, byte [esp + 0x17]
mov ecx, dword [esp + 0x1dc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x1c0]
xor ecx, esp
call fcn.00478599
add esp, 0x1d4
ret