Function at 0x412100
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov dword [esp], ecx
mov eax, dword [0x511014]
xor eax, ebp
mov dword [esp + 0x78], eax
pcmpeqd xmm0, xmm0
lea edi, [esp + 0x30]
movdqa xmmword [edi + 0x30], xmm0
movdqa xmmword [edi + 0x20], xmm0
movdqa xmmword [edi + 0x10], xmm0
movdqa xmmword [edi], xmm0
lea ebx, [esp + 0x14]
push 0x16f
push str....._base_files_file_win.cc
push str.DoInitialize
push ebx
call fcn.00454af0
add esp, 0x10
xor esi, esi
mov ecx, edi
push esi
push esi
push ebx
call fcn.0046afe0
test byte [0x512ba0], 0x19
jne 0x412383
mov ebx, dword [ebp + 0xc]
mov eax, ebx
and eax, 1
neg eax
and eax, 3
xor ecx, ecx
inc ecx
test bl, 2
cmove ecx, eax
test bl, 4
mov edx, 4
cmovne ecx, edx
test bl, 8
mov esi, 2
cmove esi, ecx
test bl, 0x10
mov eax, 5
cmove eax, esi
test eax, eax
je 0x4123b1
mov ecx, ebx
and ecx, 0x40
shl ecx, 0x18
test bl, 0x80
cmove edx, ecx
mov ecx, ebx
rol ecx, 0x1a
mov esi, ebx
shl esi, 0xb
and esi, 0x20000000
mov edi, ebx
shr edi, 4
and edi, 0x10000
and ecx, 0x80000100
or ecx, esi
or ecx, edi
or ecx, edx
mov esi, ebx
shr esi, 8
and esi, 3
mov edx, ebx
shr edx, 0xd
and edx, 4
or edx, esi
and ebx, 0x400
mov dword [esp + 0x10], ebx
shl ebx, 0x14
mov esi, dword [ebp + 0xc]
shr esi, 3
and esi, 0x100
or esi, ebx
mov ebx, dword [ebp + 0xc]
mov edi, ebx
shr edi, 0xb
and edi, 2
or edi, esi
mov esi, ebx
shl esi, 0xd
and esi, 0x4000000
or esi, edi
mov edi, ebx
shl edi, 8
and edi, 0xa000000
or edi, esi
mov esi, dword [ebp + 8]
xor edx, 3
cmp byte [esi + 0xb], 0
jns 0x412243
mov esi, dword [esi]
xor ebx, ebx
push ebx
push edi
push eax
push ebx
push edx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov esi, dword [esp]
cmp dword [esi], eax
je 0x4122cf
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esi]
inc ecx
cmp ecx, 2
mov ebx, dword [ebp + 0xc]
jae 0x4122f9
mov ecx, edi
inc ecx
cmp ecx, 2
jb 0x412283
mov dword [esi], edi
mov edi, eax
call fcn.00459380
mov eax, edi
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov edi, dword [esi]
inc edi
cmp edi, 2
jb 0x4122d4
mov eax, dword [esp + 0x10]
shr eax, 0xa
mov dword [esi + 0x14], 0
mov byte [esi + 0x19], al
test bl, 4
jne 0x4122e8
test bl, 0xa
je 0x4122b1
mov byte [esi + 0x18], 1
lea ecx, [esp + 0x30]
call fcn.004840c0
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.00496ce3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov ebx, dword [ebp + 0xc]
jmp 0x41228c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004123d0
add esp, 4
mov dword [esi + 0x14], eax
jmp 0x4122b1
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
setne byte [esi + 0x18]
jmp 0x4122b1
mov dword [esp + 0xc], eax
call fcn.00459380
mov eax, dword [esi]
mov dword [esp + 8], eax
cmp dword [0x523df0], 0
je 0x412341
mov eax, dword [0x523df0]
mov dword [esp], eax
mov eax, dword [eax]
mov ecx, dword [eax]
mov dword [esp + 4], ecx
call dword [section..00cfg]
mov ecx, dword [esp]
push dword [esp + 8]
call dword [esp + 8]
mov dword [esi], 0
mov eax, dword [esp + 0xc]
jmp 0x412270
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x50511c
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4123c8
mov ecx, eax
cmp eax, sym.opera.exe_GetHandleVerifier
je 0x41237d
call dword [section..00cfg]
call ecx
push 0
push eax
call fcn.00426270
add esp, 8
mov esi, dword [esp]
mov ebx, dword [ebp + 0xc]
jmp 0x412311
push 1
push 0
jmp 0x41236d
lea edx, [esp + 0x24]
mov dword [edx], ebx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], esi
sub esp, 8
movq xmm0, qword [esp + 0x30]
movq qword [esp], xmm0
mov ecx, str.ScopedBlockingCall
call fcn.004d8680
add esp, 8
jmp 0x41216d
push 0x57
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [esp]
mov dword [eax + 0x14], 0xffffffff
jmp 0x4122b1
xor eax, eax
push eax
jmp 0x41236c