Function at 0x4525f3
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, 0x475128
call fcn.0045454c
push ecx
push ebx
push esi
push edi
mov esi, ecx
and dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [0x49857c], eax
mov al, byte [ebp + 0x34]
push str.CreateFileW
push 0x48ef14
mov byte [esi + 0x14], al
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
test eax, eax
je 0x452678
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0x34], 0x476650
test ecx, ecx
je 0x452648
mov dword [ebp + 0x34], ecx
mov cl, byte [esi + 0x14]
push 0
mov dl, cl
push 0x80
neg dl
sbb edx, edx
add edx, 3
neg cl
sbb ecx, ecx
push edx
and ecx, 0x40000000
push 0
add ecx, 0x80000000
push 0
push ecx
push dword [ebp + 0x34]
call eax
jmp 0x4526c7
push str.CreateFileA
push 0x48ef14
call edi
push eax
call ebx
test eax, eax
mov dword [ebp - 0x10], eax
je 0x4526ca
lea ecx, [ebp + 8]
call fcn.0040b4a5
mov cl, byte [esi + 0x14]
mov dword [ebp + 0x34], eax
mov al, cl
xor edx, edx
neg al
sbb eax, eax
push edx
add eax, 3
push 0x80
neg cl
sbb ecx, ecx
push eax
and ecx, 0x40000000
push edx
add ecx, 0x80000000
push edx
push ecx
push dword [ebp + 0x34]
call dword [ebp - 0x10]
mov dword [esi + 0xc], eax
cmp dword [esi + 0xc], 0xffffffff
jne 0x45270a
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49857c], eax
mov dword [ebp + 0x34], esp
mov ecx, esp
lea eax, [ebp + 8]
push 0
push eax
mov dword [ecx], 0x476628
mov dword [ecx + 0x20], 0x476620
call fcn.00403c6a
call fcn.0043ad72
add esp, 0x28
xor bl, bl
jmp 0x45280c
push str.CreateFileMappingW
push 0x48ef14
call edi
push eax
call ebx
xor ecx, ecx
cmp eax, ecx
jne 0x452734
push str.CreateFileMappingA
push 0x48ef14
call edi
push eax
call ebx
xor ecx, ecx
cmp eax, ecx
je 0x452751
mov edx, dword [ebp + 0x30]
push ecx
push dword [edx]
mov dl, byte [esi + 0x14]
neg dl
sbb edx, edx
push ecx
and edx, 2
inc edx
inc edx
push edx
push ecx
push dword [esi + 0xc]
call eax
mov dword [esi + 0x10], eax
cmp dword [esi + 0x10], 0
jne 0x45276d
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49857c], eax
mov dword [ebp + 0x34], esp
jmp 0x4526e1
push str.MapViewOfFile
push 0x48ef14
call edi
push eax
call ebx
test eax, eax
je 0x45279f
mov ecx, dword [ebp + 0x30]
push dword [ecx]
mov cl, byte [esi + 0x14]
neg cl
sbb ecx, ecx
push 0
and ecx, 0xfffffffe
push 0
add ecx, 4
push ecx
push dword [esi + 0x10]
call eax
mov dword [esi + 4], eax
cmp dword [esi + 4], 0
jne 0x4527bb
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49857c], eax
mov dword [ebp + 0x34], esp
jmp 0x4526e1
mov eax, dword [ebp + 0x30]
mov eax, dword [eax]
test eax, eax
jne 0x452803
push str.GetFileSize
push 0x48ef14
call edi
push eax
call ebx
test eax, eax
je 0x4527e3
push 0
push dword [esi + 0xc]
call eax
mov ecx, dword [ebp + 0x30]
mov dword [ecx], eax
mov eax, dword [ebp + 0x30]
mov eax, dword [eax]
cmp eax, 0xffffffff
jne 0x452803
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49857c], eax
mov dword [ebp + 0x34], esp
jmp 0x4526e1
mov dword [esi + 0x18], eax
mov byte [esi + 8], 1
mov bl, 1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.00402424
mov ecx, dword [ebp - 0xc]
pop edi
mov al, bl
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 0x30