Function at 0x451f1f
Capabilities:
Link many functions at runtime

Disassembly:
mov eax, 0x4746a8
call fcn.00453e8c
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 [0x49730c], eax
mov al, byte [ebp + 0x34]
push 0x48e85c
push 0x48dca4
mov byte [esi + 0x14], al
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebx
test eax, eax
je 0x451fa4
mov ecx, dword [ebp + 0x10]
mov dword [ebp + 0x34], 0x475650
test ecx, ecx
je 0x451f74
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 0x451ff3
push 0x48e850
push 0x48dca4
call edi
push eax
call ebx
test eax, eax
mov dword [ebp - 0x10], eax
je 0x451ff6
lea ecx, [ebp + 8]
call fcn.0040b4ac
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 0x452036
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49730c], eax
mov dword [ebp + 0x34], esp
mov ecx, esp
lea eax, [ebp + 8]
push 0
push eax
mov dword [ecx], 0x475628
mov dword [ecx + 0x20], 0x475620
call fcn.00403c6a
call fcn.0043a69e
add esp, 0x28
xor bl, bl
jmp 0x452138
push 0x48f794
push 0x48dca4
call edi
push eax
call ebx
xor ecx, ecx
cmp eax, ecx
jne 0x452060
push 0x48f780
push 0x48dca4
call edi
push eax
call ebx
xor ecx, ecx
cmp eax, ecx
je 0x45207d
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 0x452099
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49730c], eax
mov dword [ebp + 0x34], esp
jmp 0x45200d
push 0x48f770
push 0x48dca4
call edi
push eax
call ebx
test eax, eax
je 0x4520cb
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 0x4520e7
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49730c], eax
mov dword [ebp + 0x34], esp
jmp 0x45200d
mov eax, dword [ebp + 0x30]
mov eax, dword [eax]
test eax, eax
jne 0x45212f
push 0x48f764
push 0x48dca4
call edi
push eax
call ebx
test eax, eax
je 0x45210f
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 0x45212f
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0x28
mov dword [0x49730c], eax
mov dword [ebp + 0x34], esp
jmp 0x45200d
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