Function at 0x5124b0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
mov edx, dword [0x70b418]
mov ecx, dword [0x70edd8]
push ebx
xor ebx, ebx
cmp edx, ebx
sete al
push ebp
cmp ecx, ebx
push esi
mov byte [esp + 0x30], al
mov eax, dword [0x70edd4]
sete cl
cmp eax, ebx
mov ebp, 0x320
mov esi, 0x3c
push edi
mov byte [esp + 0x13], 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 0x258
mov dword [esp + 0x30], esi
mov dword [0x70eda0], ebx
mov byte [0x70ed9c], cl
je 0x512511
mov byte [0x70ed9c], bl
cmp dword [0x70b430], ebx
jne 0x512539
cmp dword [0x70b434], ebx
jne 0x512539
cmp dword [0x7147cc], 0x3e8
jbe 0x512539
cmp dword [0x7147c8], 0x80
ja 0x51254a
mov ebp, 0x280
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], 0x1e0
push str._vidmode
lea edi, [esp + 0x1c]
call fcn.0053e1d0
add esp, 4
test al, al
je 0x5125bf
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x5125bf
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x28]
push edx
push str._d__d__d
push eax
mov dword [esp + 0x34], 0x320
mov dword [esp + 0x38], 0x258
mov dword [esp + 0x30], esi
call fcn.00621ba2
add esp, 0x14
sub eax, 2
je 0x5125a8
dec eax
jne 0x5125b8
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ecx
mov byte [0x70ed9d], 1
mov eax, dword [esp + 0x2c]
mov byte [0x695f39], bl
mov byte [0x695f3a], bl
mov byte [0x695f38], bl
mov ebx, ebp
call fcn.00511530
test al, al
je 0x512f55
mov eax, dword [0x713ac8]
mov edx, dword [0x737dc4]
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x20], edx
je 0x512600
mov dword [0x70eda4], eax
jmp 0x512615
push 0x1f
call dword [0x737e74]
cmp eax, ebp
mov dword [0x70eda4], eax
je 0x512f55
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov esi, eax
cmp esi, 1
mov dword [esp + 0x1c], esi
jb 0x512f55
mov al, byte [0x70ed9c]
test al, al
je 0x512671
push str._adapter
lea edi, [esp + 0x1c]
call fcn.0053e1d0
add esp, 4
test al, al
je 0x512671
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x14]
push edx
push 0x65a9e0
push eax
call fcn.00621ba2
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, esi
jbe 0x512675
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x60
ret
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
or ecx, 0xffffffff
cmp ecx, 0xffffffff
mov dword [esp + 0x18], ecx
je 0x51272c
cmp ecx, esi
jae 0x512d0e
mov ebx, ecx
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x5126ca
mov edi, edi
mov ecx, dword [0x713ac0]
mov eax, dword [ecx + esi*4]
cmp byte [eax], 0x2d
jne 0x5126c0
push eax
push str._useref
call fcn.006241cb
add esp, 8
test eax, eax
je 0x51273c
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x5126a0
mov ecx, 1
mov eax, dword [0x70eda4]
mov edx, dword [eax]
push 0x7b2940
push ecx
push ebx
push eax
mov dword [0x695f50], ecx
call dword [edx + 0x38]
mov edx, dword [0x70eda4]
mov ecx, ebx
call fcn.00578c50
cmp eax, ebp
je 0x512704
push ebp
push eax
push 0xffffffffffffffff
call fcn.0057a2d0
add esp, 0xc
mov eax, dword [0x714788]
or edi, 0xffffffff
cmp eax, ebp
je 0x51275c
cmp eax, 0x270f
je 0x51275a
cmp eax, 0x270d
je 0x51275a
cmp eax, 0x270e
jne 0x512743
mov edi, 0xffff0200
jmp 0x51275c
cmp eax, ebp
je 0x512ccd
lea ebx, [eax - 1]
jmp 0x512693
mov ecx, 2
jmp 0x5126cf
xor edx, edx
mov ecx, 0xa
div ecx
or eax, 0xffffff00
shl eax, 8
or eax, edx
mov edi, eax
jmp 0x51275c
xor edi, edi
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x51279a
jmp 0x512770
mov edx, dword [0x713ac0]
mov eax, dword [edx + esi*4]
cmp byte [eax], 0x2d
jne 0x512790
push eax
push str._useff
call fcn.006241cb
add esp, 8
test eax, eax
je 0x5127b2
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x512770
cmp dword [0x70b434], ebp
jne 0x5127b2
cmp dword [0x714784], ebp
jne 0x5127b2
cmp dword [0x71475c], ebp
je 0x5127ba
mov dword [0x714788], ebp
xor edi, edi
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x512802
mov eax, dword [0x713ac0]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x5127e4
push eax
push str._use00
call fcn.006241cb
add esp, 8
test eax, eax
je 0x5127f0
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x5127c5
jmp 0x512802
mov dword [0x714788], ebp
xor edi, edi
mov dword [0x7b29fc], 1
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x512847
lea ecx, [ecx]
mov ecx, dword [0x713ac0]
mov eax, dword [ecx + esi*4]
cmp byte [eax], 0x2d
jne 0x512830
push eax
push str._use11
call fcn.006241cb
add esp, 8
test eax, eax
je 0x51283c
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x512810
jmp 0x512847
mov dword [0x714788], ebp
mov edi, 0xffff0101
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x512889
mov edx, dword [0x713ac0]
mov eax, dword [edx + esi*4]
cmp byte [eax], 0x2d
jne 0x512872
push eax
push str._use14
call fcn.006241cb
add esp, 8
test eax, eax
je 0x51287e
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x512852
jmp 0x512889
mov dword [0x714788], ebp
mov edi, 0xffff0104
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x5128ca
mov eax, dword [0x713ac0]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x5128b3
push eax
push str._use20
call fcn.006241cb
add esp, 8
test eax, eax
je 0x5128bf
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x512894
jmp 0x5128ca
mov dword [0x714788], ebp
mov edi, 0xffff0200
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x51290e
jmp 0x5128e0
mov ecx, dword [0x713ac0]
mov eax, dword [ecx + esi*4]
cmp byte [eax], 0x2d
jne 0x512904
push eax
push str._use2a
call fcn.006241cb
add esp, 8
test eax, eax
je 0x512a36
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x5128e0
cmp edi, 0xffffffff
je 0x512930
mov edx, dword [0x7b2a0c]
mov eax, edi
and edx, 0xffff
and eax, 0xffff
cmp edx, eax
jbe 0x512930
mov dword [0x7b2a0c], edi
cmp dword [0x714768], ebp
je 0x512948
push ebp
push 0x70
push 0x93
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x714764], ebp
je 0x51295d
push ebp
push 0x70
push 0x67
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x714774], ebp
je 0x51297a
cmp dword [0x714764], ebp
jne 0x51297a
push ebp
push 0x72
push 0x69
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x71476c], ebp
je 0x51299f
cmp dword [0x714774], ebp
jne 0x51299f
cmp dword [0x714764], ebp
jne 0x51299f
push ebp
push 0x71
push 0x68
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x714778], ebp
je 0x5129b7
push ebp
push 0x72
push 0x8f
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x714770], ebp
je 0x5129d7
cmp dword [0x714778], ebp
jne 0x5129d7
push ebp
push 0x71
push 0x8e
call fcn.0057a2d0
add esp, 0xc
cmp dword [0x714790], ebp
je 0x5129ed
mov byte [0x695f39], 1
mov byte [0x695f3a], 1
cmp dword [0x714794], ebp
je 0x5129fc
mov byte [0x695f3a], 1
mov eax, dword [0x7147bc]
cmp eax, 0x1002
jne 0x512a46
mov eax, dword [0x7147b8]
cmp eax, 0x514c
je 0x512a2d
cmp eax, 0x514e
je 0x512a2d
cmp eax, 0x514f
je 0x512a2d
cmp eax, 0x4242
jne 0x512aad
mov byte [0x695f38], 1
jmp 0x512aad
mov dword [0x714788], ebp
mov edi, 0xffff0200
jmp 0x512913
cmp eax, 0x10de
jne 0x512aad
push str.NVCPL.dll
mov byte [0x695f38], 1
call dword [sym.imp.kernel32.dll_LoadLibraryA]
mov esi, eax
cmp esi, ebp
je 0x512aad
push str.NvCplGetDataInt
push esi
call dword [sym.imp.kernel32.dll_GetProcAddress]
cmp eax, ebp
je 0x512aa6
lea ecx, [esp + 0x24]
push ecx
push 4
mov dword [esp + 0x2c], ebp
call eax
add esp, 8
test eax, eax
je 0x512aa6
mov eax, dword [esp + 0x24]
cmp eax, 0xffffffff
je 0x512aa6
cmp eax, ebp
je 0x512aa6
push ebp
push 0x7e
push 0x8d
call fcn.0057a2d0
add esp, 0xc
push esi
call dword [sym.imp.kernel32.dll_FreeLibrary]
mov edx, dword [0x6e9668]
mov eax, dword [0x7147d0]
shl edx, 0x14
cmp eax, edx
jae 0x512acc
push ebp
push 0x75
push 0x6c
call fcn.0057a2d0
add esp, 0xc
mov edi, dword [sym.imp.user32.dll_GetDesktopWindow]
call edi
push eax
call dword [sym.imp.user32.dll_GetDC]
mov esi, eax
mov al, byte [0x70ed9c]
test al, al
jne 0x512b05
push 0xc
push esi
call dword [sym.imp.gdi32.dll_GetDeviceCaps]
cmp eax, 0x20
je 0x512b05
push 1
push 0x7e
push 0x83
call fcn.0057a2d0
add esp, 0xc
push esi
call edi
push eax
call dword [sym.imp.user32.dll_ReleaseDC]
mov eax, dword [0x70eda4]
mov ecx, dword [eax]
lea edx, [esp + 0x38]
push edx
push ebx
push eax
call dword [ecx + 0x20]
test eax, eax
jl 0x512cd3
mov al, byte [0x70ed9c]
test al, al
je 0x512b4c
mov eax, dword [esp + 0x20]
push 0x90080000
push 0xfffffffffffffff0
push eax
call dword [sym.imp.user32.dll_SetWindowLongA]
mov al, byte [0x70ed9c]
test al, al
jne 0x512baf
lea ecx, [esp + 0x58]
push ecx
call edi
push eax
call dword [sym.imp.user32.dll_GetWindowRect]
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x2c], eax
jae 0x512b6e
mov edx, dword [esp + 0x28]
cmp edx, dword [esp + 0x60]
jb 0x512b97
cmp eax, 0x258
jle 0x512b87
mov dword [esp + 0x28], 0x320
mov dword [esp + 0x2c], 0x258
jmp 0x512b97
mov dword [esp + 0x28], 0x280
mov dword [esp + 0x2c], 0x1e0
mov eax, dword [esp + 0x44]
cmp eax, 0x15
jl 0x512baa
cmp eax, 0x16
mov byte [esp + 0x13], 1
jle 0x512baf
mov byte [esp + 0x13], 0
push 0x7b20a0
lea eax, [esp + 0x2c]
call fcn.00511bc0
mov eax, dword [0x7b2a0c]
add esp, 4
cmp eax, 0xffff0101
setb al
mov cl, al
neg cl
mov dl, al
mov dword [esp + 0x54], 0x20
sbb ecx, ecx
and ecx, 0x40
add ecx, 0x40
neg dl
mov dword [esp + 0x48], ecx
sbb edx, edx
and edx, 0xffffffe0
add edx, 0x40
neg al
mov dword [esp + 0x4c], edx
sbb eax, eax
xor esi, esi
mov si, word [0x7b295e]
and eax, 0xffffffa0
add eax, 0x80
mov dword [esp + 0x50], eax
not esi
and esi, 1
cmp esi, 4
jge 0x512c8e
jmp 0x512c20
mov edx, dword [0x714760]
mov edi, dword [esp + esi*4 + 0x48]
neg edx
sbb edx, edx
and edx, 0x100
add edi, edx
mov edx, dword [0x70edd0]
mov eax, dword [0x70eda4]
neg edx
sbb edx, edx
mov ecx, dword [eax]
and edx, 2
add edi, edx
mov edx, dword [0x70edd4]
neg edx
push 0x70eda0
sbb edx, edx
push 0x7b20a0
and edx, 4
add edi, edx
mov edx, dword [esp + 0x28]
push edi
push edx
mov edx, dword [0x695f50]
push edx
push ebx
push eax
call dword [ecx + 0x40]
test eax, eax
jge 0x512c83
inc esi
cmp esi, 4
jl 0x512c20
jmp 0x512c8e
mov al, byte [esp + esi*4 + 0x48]
and al, 0x20
mov byte [0x695f30], al
cmp dword [0x70edd0], ebp
je 0x512ca5
mov dword [esp + 0x24], 0x7e
wait
fninit
fldcw word [esp + 0x24]
mov al, byte [esp + 0x13]
test al, al
je 0x512cb5
cmp dword [0x70eda0], ebp
jne 0x512cda
cmp dword [esp + 0x1c], 1
jbe 0x512cda
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov byte [esp + 0x13], 1
inc ecx
jmp 0x51267c
mov byte [esp + 0x13], 0
jmp 0x512d0e
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [0x7b2a70], ecx
mov ecx, dword [esp + 0x44]
mov dword [0x7b2a78], eax
mov eax, dword [esp + 0x2c]
mov dword [0x7b2a7c], ecx
mov ecx, dword [esp + 0x28]
mov dword [0x7b2a74], edx
call fcn.00511720
cmp dword [0x70eda0], ebp
je 0x512f3b
mov al, byte [esp + 0x13]
test al, al
je 0x512f3b
mov eax, dword [0x7b29d8]
push 0x15
cmp eax, 4
mov eax, dword [0x70eda4]
mov ecx, dword [eax]
sbb edx, edx
push 1
and edx, 0xfffffffe
push 1
add edx, 4
push 0x16
mov word [0x695f32], dx
mov edx, dword [0x695f50]
push edx
push ebx
push eax
mov dword [0x70edac], ebx
mov word [0x695f2e], 0x2c
call dword [ecx + 0x28]
test eax, eax
jge 0x512d72
mov byte [0x695f3a], 1
mov al, byte [0x70ed9c]
test al, al
je 0x512d8a
cmp dword [0x70eda0], ebp
je 0x512d8a
push ebp
call dword [sym.imp.user32.dll_ShowCursor]
mov byte [0x7b2920], 0
mov byte [0x70ed9e], 0
call fcn.00511cc0
cmp dword [0x70edd4], ebp
jne 0x512daf
mov eax, 1
call fcn.005113e0
cmp dword [0x7b2a0c], 0xffff0101
jae 0x512ddd
mov ax, word [0x695f32]
cmp ax, 2
mov word [0x695f32], ax
jl 0x512dd6
mov word [0x695f32], 2
mov byte [0x695f38], 1
mov eax, dword [0x713ac4]
xor esi, esi
cmp eax, ebp
jle 0x512e22
jmp 0x512df0
mov eax, dword [0x713ac0]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x512e0f
push eax
push str._usefxfile
call fcn.006241cb
add esp, 8
test eax, eax
je 0x512e1b
mov eax, dword [0x713ac4]
inc esi
cmp esi, eax
jl 0x512df0
jmp 0x512e22
mov byte [0x70edba], 1
call fcn.00512400
call fcn.0052b980
test al, al
je 0x512e7f
push 0x18000
push ebp
call dword [sym.imp.kernel32.dll_GlobalAlloc]
cmp eax, ebp
mov dword [0x70ed6c], eax
je 0x512e7f
call fcn.00517660
test al, al
je 0x512e7f
call fcn.00510dc0
test al, al
je 0x512e7f
call fcn.00510420
test al, al
je 0x512e7f
call fcn.00516e40
test al, al
je 0x512e7f
call fcn.005282d0
test al, al
je 0x512e7f
call fcn.00532800
test al, al
je 0x512e7f
mov bl, 1
jmp 0x512e81
xor bl, bl
call fcn.0051ddd0
mov eax, dword [0x6dc46c]
mov ecx, dword [0x6dc468]
push 4
lea edx, [esp + 0x28]
lea esi, [eax + ecx]
push edx
add eax, 0x78
push 0x6dc474
mov dword [esp + 0x30], 0x78
mov dword [0x6dc46c], eax
call fcn.004ce610
add esp, 0xc
mov dword [0x70ebf4], esi
call fcn.00444610
call fcn.00512ff0
test al, al
je 0x512ed1
call fcn.005136a0
test bl, bl
je 0x512f2c
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
mov eax, dword [0x70eda0]
lea ecx, [esp + 0x58]
push ecx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x60], ebp
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0x3f800000
mov edx, dword [eax]
push eax
call dword [edx + 0xbc]
test eax, eax
jge 0x512f16
xor bl, bl
mov byte [0x695ee0], 1
call fcn.00515180
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x60
ret
call fcn.00513f60
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x60
ret
push 1
push 0x82
push 0x81
mov dword [0x70eda0], ebp
call fcn.0057a2d0
add esp, 0xc
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x60
ret