Function at 0x421f10
Capabilities:
Check if file exists
Get file attributes
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x46a006
mov eax, dword fs:[0]
push eax
sub esp, 0x148
mov eax, dword [0x4896a0]
xor eax, esp
mov dword [esp + 0x144], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4896a0]
xor eax, esp
push eax
lea eax, [esp + 0x15c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x16c]
mov edi, dword [esp + 0x174]
push 1
mov esi, ecx
mov dword [esp + 0x20], eax
call fcn.00420a90
test al, al
je 0x421f71
xor al, al
jmp 0x4221c7
xor ebx, ebx
cmp byte [esi + 0xe4], bl
jne 0x421f6a
lea ebp, [esi + 0x78]
mov ecx, ebp
call fcn.004242a0
cmp eax, 0xffffffff
je 0x421f6a
mov ecx, esi
call fcn.004210b0
cmp eax, 0xffff
je 0x421f6a
cmp edi, ebx
je 0x421fe4
lea ecx, [esp + 0x30]
push ecx
push edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
call fcn.00427bc2
test eax, eax
je 0x421f6a
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x38]
push edx
call fcn.00424040
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x24], eax
cmp eax, 0xffffffff
je 0x421f6a
lea ecx, [esi + 0x20]
call fcn.00426b90
mov edx, dword [esp + 0x1c]
lea edi, [esi + 0xe8]
push edx
mov ecx, edi
call fcn.00426640
lea eax, [esp + 0x18]
push eax
mov ecx, esi
call fcn.00420be0
mov ecx, eax
call fcn.00424130
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x164], ebx
cmp dword [ecx - 0xc], ebx
jne 0x42204e
mov ecx, esi
call fcn.004210b0
push eax
lea edx, [esp + 0x1c]
push str.file_i
push edx
call fcn.00405290
mov eax, dword [esp + 0x24]
add esp, 0xc
push eax
mov ecx, esi
call fcn.00420be0
mov ecx, eax
call fcn.00423b20
mov al, byte [esi + 0x15c]
cmp al, byte [edi + 0x74]
jne 0x42206d
mov edi, dword [edi + 0x28]
push 1
mov ecx, edi
call fcn.00423b80
push ebx
mov ecx, edi
call fcn.00423b40
mov ecx, esi
call fcn.00420be0
mov ecx, dword [eax + 0x24]
push ecx
mov ecx, esi
call fcn.00420c90
cmp dword [esi + 0x10], ebx
mov ecx, ebp
setne byte [esp + 0x20]
mov edx, dword [esp + 0x20]
push edx
mov byte [esp + 0x1b], al
call fcn.004242a0
mov edi, dword [esp + 0x174]
cmp eax, 1
sete al
movzx ecx, al
push ecx
push edi
mov ecx, esi
call fcn.00420be0
mov ecx, eax
call fcn.004239c0
test al, al
jne 0x4220c4
push 0xffffffffffffff95
mov ecx, esi
call fcn.00421690
push ebp
mov ecx, esi
call fcn.00420be0
mov ecx, eax
call fcn.00423860
cmp byte [esi + 0x15c], bl
je 0x4220ee
mov edx, dword [esp + 0x18]
push edx
mov ecx, esi
call fcn.00420be0
mov ecx, eax
call fcn.00423b20
cmp byte [esp + 0x20], bl
je 0x42213f
push ebx
push 0xc
lea ecx, [esp + 0x2c]
call fcn.00425500
mov ecx, dword [esp + 0x1c]
movzx edx, word [ecx + 0x10]
lea eax, [esp + 0x24]
push eax
shl edx, 0x10
push edx
mov ecx, esi
mov byte [esp + 0x16c], 1
call fcn.004215b0
mov eax, dword [esp + 0x28]
push ebx
push 0xc
push eax
mov ecx, ebp
call fcn.00424e80
lea ecx, [esp + 0x24]
mov byte [esp + 0x164], bl
call fcn.00425530
mov ecx, dword [esi + 0x74]
mov edx, dword [esi + 0x70]
mov dword [esi + 0x64], ebx
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x38], ecx
mov dword [esi + 0x34], edx
mov dword [esi + 0x30], ebx
mov dword [esi + 0x3c], ebx
cmp byte [esp + 0x17], bl
je 0x422175
mov ecx, esi
call fcn.00420be0
cmp word [eax + 0xe], bx
je 0x422175
call fcn.00420be0
xor ecx, ecx
mov word [eax + 0xe], cx
mov ecx, esi
call fcn.00420be0
cmp word [eax + 0xe], 8
jne 0x4221b5
cmp byte [esi + 4], bl
je 0x422190
lea eax, [esi + 0xc8]
jmp 0x422192
xor eax, eax
push 0x38
push 0x474278
push ebx
push 8
push 0xfffffffffffffff1
push 8
push edi
lea edx, [esi + 0x28]
push edx
mov dword [esi + 0x50], eax
call fcn.00461240
push eax
mov ecx, esi
call fcn.00421740
lea ecx, [esp + 0x18]
mov byte [esi + 0xe4], 1
call fcn.00402fe0
mov al, 1
mov ecx, dword [esp + 0x15c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x144]
xor ecx, esp
call fcn.00449ba6
add esp, 0x154
ret 0xc