Function at 0x402170
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffa00
cmp dword [0x468f80], 0
push ebx
push esi
push edi
mov ebx, dword [ebp + 8]
jne 0x402195
xor eax, eax
mov al, byte [ebx]
cmp eax, 0x2d
je 0x40248b
push ebx
call fcn.00452eec
pop ecx
mov esi, eax
test esi, esi
jle 0x402281
cmp byte [0x467ed0], 0
je 0x402281
xor eax, eax
mov al, byte [0x467ed0]
push eax
push 0x45dce8
call fcn.00452e98
add esp, 8
test eax, eax
je 0x402281
mov eax, ebx
mov edx, 0x45dced
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4021f7
test cl, cl
je 0x402281
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4021f7
add eax, 2
add edx, 2
test cl, cl
jne 0x4021d7
je 0x402281
xor eax, eax
mov al, byte [ebx + esi - 1]
cmp eax, 0x5c
je 0x402226
cmp byte [0x4676d0], 0
jne 0x402281
push ebx
call sub.KERNEL32.dll_GetFileAttributesA
mov edi, eax
cmp eax, 0xffffffff
je 0x402281
test edi, 0x10
je 0x402281
xor eax, eax
push esi
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x4676d0
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
cmp esi, 1
jle case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + esi - 2]
cmp eax, 0x3a
je case.0x4024a9.59
xor edx, edx
mov dl, byte [esi + 0x4676cf]
cmp edx, 0x5c
jne case.0x4024a9.59
mov byte [esi + 0x4676cf], 0
jmp case.0x4024a9.59
cmp byte [0x4672c8], 0
jne 0x4022b3
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
mov esi, 0x4672c8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x4024a9.59
cmp byte [0x467ed0], 0
jne 0x4023c1
xor eax, eax
or ecx, 0xffffffff
mov edi, 0x4672c8
mov esi, 0x467ed0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, 0x45dcef
and ecx, 3
mov eax, ebx
rep movsb byte es:[edi], byte [esi]
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x40231f
test cl, cl
je 0x40230a
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x40231f
add eax, 2
add edx, 2
test cl, cl
jne 0x4022ee
jne 0x40231f
mov esi, 0x45dcf1
mov edi, 0x4672c8
mov eax, edi
movsw word es:[edi], word [esi]
jmp case.0x4024a9.59
push ebx
call fcn.0040809c
cmp ebx, eax
jne 0x4023b1
xor edx, edx
mov dl, byte [0x467ed0]
push edx
push 0x45dcf3
call fcn.00452e98
add esp, 8
test eax, eax
je 0x4023b1
push 0x400
push 0x45dd12
lea ecx, [ebp - 0x400]
push ecx
push 0x45dd08
push 0x45dcfc
call fcn.0040ba80
cmp byte [ebp - 0x400], 0
je 0x4023b1
lea eax, [ebp - 0x400]
push eax
call fcn.004080c8
push ebx
lea edx, [ebp - 0x400]
push edx
call fcn.00452e5c
add esp, 8
xor eax, eax
lea edi, [ebp - 0x400]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, ebx
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x4672c8
push ebx
call fcn.004085c4
jmp case.0x4024a9.59
mov eax, ebx
mov edx, 0x45dd13
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x4023f1
test cl, cl
je 0x4023e4
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x4023f1
add eax, 2
add edx, 2
test cl, cl
jne 0x4023c8
jne 0x4023f1
mov esi, 0x45dd17
mov edi, ebx
mov eax, edi
movsw word es:[edi], word [esi]
xor edx, edx
mov dl, byte [ebx]
cmp edx, 0x40
jne 0x402411
push ebx
call sub.KERNEL32.dll_GetFileAttributesA
cmp eax, 0xffffffff
jne 0x402411
inc ebx
push ebx
call fcn.00402ee8
jmp case.0x4024a9.59
mov eax, dword [0x468ed4]
inc eax
lea edx, [eax + eax*8]
shl edx, 3
sub edx, eax
lea edx, [eax + edx*4]
shl edx, 2
push edx
mov ecx, dword [0x468ed0]
push ecx
call fcn.00459ccc
add esp, 8
mov esi, eax
mov dword [0x468ed0], esi
mov eax, dword [0x468ed4]
mov edx, eax
lea eax, [edx + eax*8]
shl eax, 3
sub eax, edx
lea eax, [edx + eax*4]
xor ecx, ecx
mov dword [esi + eax*4 + 0x460], ecx
push 0x400
push ebx
mov eax, dword [0x468ed4]
inc dword [0x468ed4]
lea edx, [eax + eax*8]
shl edx, 3
sub edx, eax
lea edx, [eax + edx*4]
shl edx, 2
add edx, dword [0x468ed0]
push edx
call fcn.00453048
add esp, 0xc
jmp case.0x4024a9.59
xor ecx, ecx
mov cl, byte [ebx + 1]
push ecx
call fcn.00458c24
pop ecx
add eax, 0xffffffd3
cmp eax, 0x2d
ja case.0x4024a9.45
mov al, byte [eax + 0x4024b0]
jmp dword [eax*4 + 0x4024de]
mov dword [0x468f80], 1
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
push eax
call fcn.00458c24
pop ecx
sub eax, 1
jb 0x402566
sub eax, 0x2c
je 0x402575
sub eax, 3
je 0x402582
sub eax, 0x22
je 0x402591
jmp case.0x4024a9.59
mov dword [0x468ee0], 1
jmp case.0x4024a9.59
xor edx, edx
mov dword [0x468ee0], edx
jmp case.0x4024a9.59
mov dword [0x468ee0], 2
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 3]
cmp eax, 0x31
jl 0x4025ad
cmp eax, 0x38
jg 0x4025ad
add eax, 0xffffffd0
mov dword [0x468f00], eax
jmp case.0x4024a9.59
cmp eax, 0x2d
jne 0x4025bf
xor edx, edx
mov dword [0x468f00], edx
jmp case.0x4024a9.59
mov dword [0x468f00], 0xffffffff
jmp case.0x4024a9.59
add ebx, 2
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x4682d0
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x4024a9.59
mov dword [0x466ab0], 1
jmp case.0x4024a9.59
movzx esi, byte [ebx + 2]
cmp esi, 0x30
jl 0x40261d
cmp esi, 0x35
jg 0x40261d
mov dword [0x468ee4], esi
push esi
call fcn.00458c24
pop ecx
cmp eax, 0x44
jne 0x402668
xor eax, eax
mov al, byte [ebx + 3]
push eax
call fcn.00458c24
pop ecx
cmp eax, 0x41
jl 0x402651
cmp eax, 0x45
jg 0x402651
lea ecx, [eax - 0x41]
mov edx, 0x10000
shl edx, cl
mov dword [0x468ee8], edx
jmp 0x402668
lea eax, [ebx + 3]
push eax
call fcn.0041833f
pop ecx
and eax, 0x7c0
shl eax, 0xa
mov dword [0x468ee8], eax
xor edx, edx
mov dl, byte [ebx + 2]
push edx
call fcn.00458c24
pop ecx
cmp eax, 0x4d
jne case.0x4024a9.59
xor ecx, ecx
mov cl, byte [ebx + 3]
push ecx
call fcn.00458c24
pop ecx
sub eax, 1
jb 0x4026ac
sub eax, 0x2c
je 0x40269d
sub eax, 0x19
je 0x4026bb
jmp case.0x4024a9.59
mov dword [0x468efc], 0xffffffff
jmp case.0x4024a9.59
mov dword [0x468efc], 1
jmp case.0x4024a9.59
mov dword [0x468efc], 2
jmp case.0x4024a9.59
push 3
push 0x45dd19
lea eax, [ebx + 1]
push eax
call fcn.00453098
add esp, 0xc
test eax, eax
jne 0x40271f
lea edx, [ebx + 4]
xor eax, eax
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x4686d0
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp byte [0x4686d0], 0
jne 0x40271f
mov esi, 0x45dd1d
mov edi, 0x4686d0
mov eax, edi
movsw word es:[edi], word [esi]
xor edx, edx
mov dl, byte [ebx + 2]
test byte [edx + 0x464e1d], 2
je 0x402748
or dword [0x468ef0], 2
add ebx, 2
push ebx
call fcn.0041833f
pop ecx
mov dword [0x468ef4], eax
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
push eax
call fcn.00458c24
pop ecx
sub eax, 1
jb 0x40276d
sub eax, 0x2c
je 0x402779
sub eax, 0x18
je 0x402788
sub eax, 0x11
je 0x402794
jmp case.0x4024a9.59
or dword [0x468ef0], 1
jmp case.0x4024a9.59
mov dword [0x468ef0], 0xffffffff
jmp case.0x4024a9.59
or dword [0x468ef0], 4
jmp case.0x4024a9.59
or dword [0x468ef0], 8
jmp case.0x4024a9.59
xor edx, edx
mov dl, byte [ebx + 2]
push edx
call fcn.00458c24
pop ecx
add eax, 0xffffffbd
cmp eax, 0x13
ja case.0x4024a9.59
mov al, byte [eax + 0x4027c5]
jmp dword [eax*4 + 0x4027d9]
or ecx, 0xffffffff
xor eax, eax
mov al, byte [ebx + 3]
cmp eax, 0x2d
je 0x402805
add ecx, 2
mov dword [0x468ef8], ecx
jmp case.0x4024a9.59
mov dword [0x468f18], 1
jmp case.0x4024a9.59
mov dword [0x468f14], 1
jmp case.0x4024a9.59
add ebx, 3
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x467ad0
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x4024a9.59
add ebx, 3
push 0x1e
push ebx
push 0x468f44
mov dword [0x468f40], 1
call fcn.00453048
add esp, 0xc
jmp case.0x4024a9.59
mov dword [0x468f3c], 1
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
push eax
call fcn.00458c24
pop ecx
cmp eax, 0x44
jne 0x4028ab
mov dword [0x468f04], 1
jmp case.0x4024a9.59
lea edx, [ebx + 2]
push edx
call fcn.00458cb8
pop ecx
mov esi, eax
test esi, esi
jne 0x4028c3
or esi, 0xffffffff
jmp 0x402953
push ebx
call fcn.00452eec
pop ecx
movzx eax, byte [ebx + eax - 1]
push eax
call fcn.00458c24
pop ecx
sub eax, 0x42
je 0x402953
sub eax, 4
je 0x4028e7
sub eax, 5
je 0x40293a
jmp 0x402943
mov edx, esi
cmp edx, 0x4b0
jg 0x402905
je 0x402925
sub edx, 0x168
je 0x402917
sub edx, 0x168
je 0x40291e
jmp 0x402953
sub edx, 0x5a0
je 0x40292c
sub edx, 0x5a0
je 0x402933
jmp 0x402953
mov esi, 0x58800
jmp 0x402953
mov esi, 0xb2400
jmp 0x402953
mov esi, 0x128600
jmp 0x402953
mov esi, 0x163e00
jmp 0x402953
mov esi, 0x2c7c00
jmp 0x402953
mov eax, esi
shl eax, 0xa
mov esi, eax
jmp 0x402953
mov edx, esi
shl edx, 3
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
mov esi, edx
mov dword [0x468eec], esi
jmp case.0x4024a9.59
xor ecx, ecx
mov cl, byte [ebx + 2]
push ecx
call fcn.00458c24
pop ecx
cmp eax, 0x42
jne case.0x4024a9.59
mov dword [0x468f08], 1
jmp case.0x4024a9.59
add ebx, 2
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x468ad0
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.0x4024a9.59
add ebx, 2
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, 0x4668cb
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
cmp byte [0x4668cb], 0
jne case.0x4024a9.59
call fcn.004082bc
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
push eax
call fcn.00458c24
pop ecx
cmp eax, 0x50
jne case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 3]
test byte [eax + 0x464e1d], 2
je 0x402a1c
add eax, 0xffffffd1
mov dword [0x468f0c], eax
jmp case.0x4024a9.59
mov dword [0x468f0c], 1
jmp case.0x4024a9.59
cmp byte [ebx + 3], 0
jne case.0x4024a9.59
xor edx, edx
mov dl, byte [ebx + 2]
push edx
call fcn.00458c24
pop ecx
sub eax, 0x46
je 0x402a72
sub eax, 2
je 0x402a63
sub eax, 0xb
jne case.0x4024a9.59
mov dword [0x468f10], 1
jmp case.0x4024a9.59
mov dword [0x468f24], 1
jmp case.0x4024a9.59
mov dword [0x468f38], 1
jmp case.0x4024a9.59
mov dword [0x468f20], 1
jmp case.0x4024a9.59
mov dword [0x468f1c], 1
jmp case.0x4024a9.59
xor ecx, ecx
mov cl, byte [ebx + 2]
push ecx
call fcn.00458c24
pop ecx
sub eax, 0x2b
je 0x402aba
sub eax, 2
je 0x402ac9
jmp case.0x4024a9.59
mov dword [0x466ab4], 1
jmp case.0x4024a9.59
mov dword [0x466ab8], 1
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
cmp eax, 0x40
jne 0x402af0
add ebx, 3
push ebx
call fcn.0040303c
jmp case.0x4024a9.59
mov eax, dword [0x468edc]
inc eax
lea edx, [eax + eax*8]
shl edx, 3
sub edx, eax
lea edx, [eax + edx*4]
shl edx, 2
push edx
mov ecx, dword [0x468ed8]
push ecx
call fcn.00459ccc
mov esi, eax
xor ecx, ecx
mov dword [0x468ed8], esi
add esp, 8
mov eax, dword [0x468edc]
add ebx, 2
mov edx, eax
lea eax, [edx + eax*8]
shl eax, 3
sub eax, edx
lea eax, [edx + eax*4]
mov dword [esi + eax*4 + 0x460], ecx
push 0x400
mov eax, dword [0x468edc]
push ebx
inc dword [0x468edc]
lea edx, [eax + eax*8]
shl edx, 3
sub edx, eax
lea edx, [eax + edx*4]
shl edx, 2
add edx, dword [0x468ed8]
push edx
call fcn.00453048
add esp, 0xc
jmp case.0x4024a9.59
xor ecx, ecx
mov cl, byte [ebx + 2]
push ecx
call fcn.00458c24
pop ecx
sub eax, 0x4b
je 0x402b83
dec eax
je 0x402b8f
jmp case.0x4024a9.59
mov dword [0x468f28], 1
jmp case.0x4024a9.59
mov dword [0x468f2c], 1
jmp case.0x4024a9.59
xor eax, eax
mov al, byte [ebx + 2]
push eax
call fcn.00458c24
pop ecx
sub eax, 0x4c
je 0x402bb3
sub eax, 9
je 0x402bbf
jmp case.0x4024a9.59
mov dword [0x468f30], 1
jmp case.0x4024a9.59
mov dword [0x468f34], 1
jmp case.0x4024a9.59
push ebx
push 0x372
call fcn.00408028
push eax
lea edx, [ebp - 0x600]
push edx
call fcn.00456f9c
add esp, 0xc
push 0x10
push 0x66
call fcn.00408028
push eax
lea ecx, [ebp - 0x600]
push ecx
mov eax, dword [0x4656d8]
push eax
call sub.USER32.dll_MessageBoxA
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4