Function at 0x43bd80
Capabilities:
Check for time delay via queryperformancecounter
Read file on windows
Write file on windows

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4822d7
push eax
mov dword fs:[0], esp
sub esp, 0x1f4
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov edi, esi
call fcn.0041c430
mov edx, dword [esi + 0x1eb8]
mov eax, dword [edx]
cmp eax, edx
je 0x43bdd9
fld qword [0x48a3d8]
fld qword [esi + 0x2048]
mov ecx, dword [eax + 8]
fmul st(1)
fsub qword [ecx + 0xb8]
fstp qword [ecx + 0xc0]
mov eax, dword [eax]
cmp eax, edx
jne 0x43bdba
fstp st(0)
mov edi, dword [esi + 0x1f58]
mov eax, dword [esi + 0x1f5c]
mov byte [esi + 0x1f74], 1
mov ebx, 0xfffffffc
cmp edi, eax
je 0x43be63
lea ebp, [edi + 4]
jmp 0x43be00
cmp byte [esi + 0x2021], 0
je 0x43be17
mov eax, dword [edi]
mov ecx, dword [eax + 0xa4]
cmp byte [ecx + 0x70], 0
jne 0x43be55
mov edx, dword [edi]
mov eax, dword [edx + 0x3c]
mov dword [esi + 0x208c], eax
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx]
call eax
test eax, eax
je 0x43be55
mov eax, dword [esi + 0x1f5c]
sub eax, ebp
sar eax, 2
test eax, eax
jle 0x43be4d
add eax, eax
add eax, eax
push eax
push ebp
push eax
push edi
call fcn.004640ef
add esp, 0x10
add dword [esi + 0x1f5c], ebx
jmp 0x43be5b
add edi, 4
add ebp, 4
cmp edi, dword [esi + 0x1f5c]
jne 0x43be00
mov byte [esi + 0x1f74], 0
mov ecx, dword [esi + 0x1f80]
sub ecx, dword [esi + 0x1f7c]
test ebx, ecx
je 0x43bee1
mov ecx, dword [esi + 0x1f80]
mov edi, dword [esp + 0x44]
mov edx, dword [esi + 0x1f7c]
mov eax, dword [esi + 0x1f5c]
push edi
push ecx
push edx
push eax
lea ecx, [esi + 0x1f54]
call fcn.00432910
mov ecx, dword [esi + 0x1f80]
mov edx, dword [esi + 0x1f7c]
mov eax, ecx
sub eax, edx
sar eax, 2
test eax, eax
jbe 0x43bee1
cmp edx, ecx
je 0x43bee1
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
lea ebp, [edx + edi]
test eax, eax
jle 0x43bedb
push edi
push ecx
push edi
push edx
call fcn.004640ef
add esp, 0x10
mov dword [esi + 0x1f80], ebp
mov eax, esi
call fcn.00421c90
push esi
call fcn.0041bd70
cmp byte [esi + 0x1ea0], 0
je 0x43befd
push esi
call fcn.0041b970
mov edi, dword [esi + 0x1f68]
mov byte [esi + 0x1f75], 1
cmp edi, dword [esi + 0x1f6c]
je 0x43bf79
lea ebp, [edi + 4]
cmp byte [esi + 0x2021], 0
je 0x43bf2c
mov ecx, dword [edi]
mov edx, dword [ecx + 0xa4]
cmp byte [edx + 0x70], 0
jne 0x43bf6b
mov eax, dword [edi]
mov ecx, dword [eax + 0x3c]
mov dword [esi + 0x208c], ecx
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
test eax, eax
je 0x43bf6b
mov eax, dword [esi + 0x1f6c]
sub eax, ebp
sar eax, 2
test eax, eax
jle 0x43bf63
add eax, eax
add eax, eax
push eax
push ebp
push eax
push edi
call fcn.004640ef
add esp, 0x10
add dword [esi + 0x1f6c], ebx
jmp 0x43bf71
add edi, 4
add ebp, 4
cmp edi, dword [esi + 0x1f6c]
jne 0x43bf15
mov byte [esi + 0x1f75], 0
mov ecx, dword [esi + 0x1f80]
sub ecx, dword [esi + 0x1f7c]
test ebx, ecx
je 0x43bff7
mov ecx, dword [esi + 0x1f80]
mov edi, dword [esp + 0x44]
mov edx, dword [esi + 0x1f7c]
mov eax, dword [esi + 0x1f6c]
push edi
push ecx
push edx
push eax
lea ecx, [esi + 0x1f64]
call fcn.00432910
mov ecx, dword [esi + 0x1f80]
mov edx, dword [esi + 0x1f7c]
mov eax, ecx
sub eax, edx
sar eax, 2
test eax, eax
jbe 0x43bff7
cmp edx, ecx
je 0x43bff7
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edi, [eax*4]
lea ebp, [edx + edi]
test eax, eax
jle 0x43bff1
push edi
push ecx
push edi
push edx
call fcn.004640ef
add esp, 0x10
mov dword [esi + 0x1f80], ebp
mov edi, esi
call fcn.0041bb80
mov ecx, dword [esi + 0x1fa0]
sub ecx, dword [esi + 0x1f9c]
test ebx, ecx
je 0x43c10e
mov eax, dword [esi + 0x1fa0]
mov ebx, dword [esi + 0x1f9c]
mov dword [esp + 0x4c], eax
cmp ebx, eax
je 0x43c0cc
lea ebx, [ebx]
mov edx, dword [esi]
mov edi, dword [ebx]
mov ebp, dword [esi + 0x20c]
mov eax, dword [edx + 0x98]
push 0
push 2
push 0xffffffffffffffff
mov ecx, esi
mov dword [esi + 0x20c], edi
call eax
mov dword [esi + 0x20c], ebp
call fcn.004356c0
mov eax, dword [edi + 0xd8]
test eax, eax
je 0x43c077
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [edi + 0xd8], 0
mov ecx, dword [esi + 0x1ef4]
mov eax, dword [esi + 0x1ef0]
cmp eax, ecx
je 0x43c0bf
cmp dword [eax], edi
je 0x43c092
add eax, 4
cmp eax, ecx
jne 0x43c087
cmp eax, ecx
je 0x43c0bf
mov ecx, dword [esi + 0x1ef4]
lea edx, [eax + 4]
sub ecx, edx
sar ecx, 2
test ecx, ecx
jle 0x43c0b8
add ecx, ecx
add ecx, ecx
push ecx
push edx
push ecx
push eax
call fcn.004640ef
add esp, 0x10
add dword [esi + 0x1ef4], 0xfffffffc
add ebx, 4
cmp ebx, dword [esp + 0x4c]
jne 0x43c030
mov ecx, dword [esi + 0x1fa0]
mov edi, dword [esi + 0x1f9c]
mov eax, ecx
sub eax, edi
sar eax, 2
test eax, eax
jbe 0x43c10e
cmp edi, ecx
je 0x43c10e
mov eax, ecx
sub eax, ecx
sar eax, 2
lea edx, [eax*4]
lea ebp, [edi + edx]
test eax, eax
jle 0x43c108
push edx
push ecx
push edx
push edi
call fcn.004640ef
add esp, 0x10
mov dword [esi + 0x1fa0], ebp
mov edi, esi
call fcn.0041bb00
cmp byte [esp + 0x214], 0
je 0x43c2a7
lea ebp, [esi + 0x1684]
mov eax, ebp
call fcn.00453e80
mov ebx, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea ecx, [esp + 0x4c]
push ecx
call ebx
mov eax, ebp
call fcn.00453e80
mov eax, dword [ebp + 8]
mov edx, dword [eax]
push 0
push 0
push 0
push 0
push eax
mov eax, dword [edx + 0x44]
call eax
lea ecx, [esp + 0x44]
mov edi, eax
push ecx
mov dword [ebp + 0x4b4], edi
mov byte [ebp + 0x465], 0
call ebx
mov edx, dword [esp + 0x44]
sub edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
sbb eax, dword [esp + 0x50]
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], eax
fild qword [esp + 0x34]
fild qword [esi + 0x118]
fdivp st(1)
fadd qword [esi + 0x130]
fstp qword [esi + 0x130]
cmp edi, 0x88760868
jne 0x43c200
cmp byte [esi + 0x1ee8], 0
jne 0x43c1bc
mov eax, esi
call fcn.00421180
mov byte [esi + 0x1ee8], 1
mov eax, dword [esi + 0x168c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
cmp eax, 0x88760869
jne 0x43c22a
mov edi, esi
mov byte [esi + 0x1ee8], 0
call fcn.00421620
mov edi, ebp
call fcn.00451270
call fcn.00421700
mov eax, dword [esi]
mov edx, dword [eax + 0x98]
xor ebx, ebx
push ebx
push 0x22
push 0xffffffffffffffff
mov ecx, esi
call edx
jmp 0x43c22c
test edi, edi
jge 0x43c223
push edi
lea eax, [esp + 0x18]
push eax
mov edx, str.Failed_to_present_the_screen
call fcn.0044e1c0
push 0x49ab24
lea ecx, [esp + 0x18]
push ecx
call fcn.00466bcb
mov edi, esi
call fcn.00421620
xor ebx, ebx
mov edi, dword [esi + 0x1ef0]
cmp edi, dword [esi + 0x1ef4]
je 0x43c263
lea ebx, [ebx]
mov eax, dword [edi]
mov ecx, dword [eax + 0xd8]
mov eax, dword [eax + 0x74]
mov edx, dword [ecx]
push ebx
push ebx
push eax
push ebx
push ebx
push ecx
mov ecx, dword [edx + 0xc]
call ecx
add edi, 4
cmp edi, dword [esi + 0x1ef4]
jne 0x43c240
mov ecx, dword [esi + 0x1ef4]
mov edi, dword [esi + 0x1ef0]
mov edx, ecx
sub edx, edi
sar edx, 2
test edx, edx
jbe 0x43c2a9
cmp edi, ecx
je 0x43c2a9
mov eax, ecx
sub eax, ecx
sar eax, 2
cmp eax, ebx
lea edx, [eax*4]
lea ebp, [edi + edx]
jle 0x43c29f
push edx
push ecx
push edx
push edi
call fcn.004640ef
add esp, 0x10
mov dword [esi + 0x1ef4], ebp
jmp 0x43c2a9
xor ebx, ebx
cmp byte [esi + 0x2c5], 0
mov ebp, vtable.bin.0
je 0x43c387
mov eax, dword [esi + 0x2c8]
push str._quicksave_
push eax
mov byte [esi + 0x2c5], 0
call fcn.004645fa
add esp, 8
cmp eax, ebx
sete al
test al, al
je 0x43c2f1
lea eax, [esi + 0x2cc]
push eax
push esi
call fcn.0041efe0
jmp 0x43c387
mov dword [esp + 0x14], ebp
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], 0x4a79b8
mov dword [esp + 0x20c], ebx
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.0041efe0
mov eax, dword [esi + 0x2c8]
push 0x488d40
push eax
call fcn.004650d6
mov edi, eax
add esp, 8
cmp edi, ebx
je 0x43c354
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push edi
push 1
push edx
push eax
call fcn.004652da
push edi
call fcn.004653d3
add esp, 0x14
mov dword [esp + 0x20c], 0xffffffff
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], ebp
cmp eax, ebx
je 0x43c387
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
cmp byte [esi + 0x2c4], 0
je 0x43c4bb
mov eax, dword [esi + 0x2c8]
push str._quicksave_
push eax
mov byte [esi + 0x2c4], 0
call fcn.004645fa
add esp, 8
cmp eax, ebx
sete al
test al, al
je 0x43c3ca
lea ecx, [esi + 0x2cc]
push ecx
push esi
call fcn.004202e0
jmp 0x43c4aa
mov dword [esp + 0x14], ebp
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], 0x4a79b8
mov dword [esp + 0x20c], 1
mov eax, dword [esi + 0x2c8]
push 0x4893f4
push eax
call fcn.004650d6
mov edi, eax
add esp, 8
cmp edi, ebx
je 0x43c46c
push 2
push ebx
push edi
call fcn.004657c5
add esp, 0xc
push edi
call fcn.004659e7
add esp, 4
push ebx
push ebx
push edi
mov ebp, eax
call fcn.004657c5
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 8]
add esp, 0xc
lea ecx, [esp + 0x14]
call eax
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
push 1
push ebp
lea ecx, [esp + 0x1c]
call eax
test al, al
je 0x43c45e
mov ecx, dword [esp + 0x20]
push edi
push 1
push ebp
push ecx
call fcn.0046571e
add esp, 0x10
push edi
call fcn.004653d3
add esp, 4
mov ebp, vtable.bin.0
lea edx, [esp + 0x14]
push edx
push esi
call fcn.004202e0
mov dword [esp + 0x20c], 0xffffffff
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], ebp
cmp eax, ebx
je 0x43c4aa
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov edx, dword [esi]
mov eax, dword [edx + 0x98]
push ebx
push 0x21
push 0xffffffffffffffff
mov ecx, esi
call eax
cmp byte [esi + 0x2e8], 0
je 0x43c968
mov al, byte [esi + 0x1f24]
mov byte [esi + 0x2e8], 0
mov byte [esp + 0x13], al
test al, al
jne 0x43c4e6
cmp dword [esi + 0x2f4], 1
jne 0x43c55a
mov ecx, dword [esi + 0x2ec]
mov edx, dword [esi + 0x2f0]
mov ebp, 0x186a0
xor edi, edi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x44], edx
mov ebx, ebp
lea eax, [esp + 0x64]
push eax
push edi
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
inc edi
test eax, eax
je 0x43c53e
mov ecx, dword [esp + 0xd0]
cmp ecx, dword [esp + 0x4c]
jl 0x43c503
mov eax, dword [esp + 0xd4]
cmp eax, dword [esp + 0x44]
jl 0x43c503
cmp ecx, ebp
jge 0x43c503
cmp eax, ebx
jge 0x43c503
mov ebp, ecx
mov ebx, eax
jmp 0x43c503
cmp ebp, 0x186a0
je 0x43c55a
cmp ebx, 0x186a0
je 0x43c55a
mov dword [esi + 0x2ec], ebp
mov dword [esi + 0x2f0], ebx
mov eax, dword [esi + 0x2f4]
cmp eax, 0xffffffff
mov ebx, dword [sym.imp.USER32.dll_SetRect]
jle 0x43c649
mov ecx, dword [esi + 0x17c4]
test eax, eax
setne al
xor edx, edx
test al, al
sete dl
mov byte [esi + 0x1f24], al
mov dword [ecx + 0x20], edx
cmp byte [esi + 0x1f24], 0
je 0x43c649
lea ecx, [esp + 0x64]
mov byte [esi + 0x115], 1
call fcn.0045b907
mov dword [esp + 0x20c], 2
mov eax, dword [esi + 0x1ff4]
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x68]
call fcn.0045cacd
push 0
push 0x80000000
push 0xc80000
lea ecx, [esp + 0x70]
call fcn.0045f5af
mov eax, dword [esi + 0x1c14]
mov ecx, dword [esi + 0x1c10]
push eax
push ecx
push 0
push 0
lea ecx, [esp + 0x44]
push ecx
call ebx
push 0
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x6c]
call fcn.0045b073
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x34]
push 6
push eax
push ecx
push 0
push 0
push 0
lea ecx, [esp + 0x7c]
call fcn.0045f61d
lea ecx, [esp + 0x64]
call fcn.0045cb09
mov byte [esi + 0x115], 0
mov dword [esp + 0x20c], 0xffffffff
lea ecx, [esp + 0x64]
call fcn.0045d1d9
mov eax, dword [esi + 0x2f0]
mov edx, dword [esi + 0x2ec]
mov dword [esi + 0x1c14], eax
mov eax, dword [esi + 0x1ea8]
mov dword [esi + 0x1c10], edx
cmp eax, dword [esi + 0x1eac]
je 0x43c691
nop
mov ecx, dword [eax]
mov edx, dword [esi + 0x1c10]
mov dword [ecx + 0x10], edx
mov ecx, dword [eax]
mov edx, dword [esi + 0x1c14]
add eax, 4
mov dword [ecx + 0x14], edx
cmp eax, dword [esi + 0x1eac]
jne 0x43c670
lea ecx, [esp + 0x104]
mov byte [esi + 0x115], 1
call fcn.0045b907
mov dword [esp + 0x20c], 3
mov eax, dword [esi + 0x1ff4]
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x108]
call fcn.0045cacd
mov eax, dword [esi + 0x1c14]
mov ecx, dword [esi + 0x1c10]
push eax
push ecx
push 0
push 0
lea ecx, [esp + 0x64]
push ecx
call ebx
push 0
lea edx, [esp + 0x58]
push edx
lea ecx, [esp + 0x10c]
call fcn.0045b073
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
sub ecx, dword [esp + 0x54]
push 6
push eax
push ecx
push 0
push 0
push 0
lea ecx, [esp + 0x11c]
call fcn.0045f61d
lea ecx, [esp + 0x104]
call fcn.0045cb09
mov eax, dword [esi + 0x1ff4]
mov edi, dword [sym.imp.USER32.dll_GetClientRect]
lea edx, [esp + 0x14]
mov byte [esi + 0x115], 0
mov eax, dword [eax]
push edx
push eax
call edi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
sub ecx, dword [esp + 0x14]
sub edx, dword [esp + 0x18]
mov eax, dword [esi + 0x17c4]
mov dword [esi + 0x1c24], ecx
mov dword [esi + 0x1c28], edx
cmp dword [eax + 0x20], 0
je 0x43c791
mov eax, dword [esi + 0x1ff4]
mov edx, dword [eax]
lea ecx, [esp + 0x34]
push ecx
push edx
call edi
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x34]
mov eax, dword [esi + 0x17c4]
mov dword [eax], ecx
mov edx, dword [esp + 0x40]
sub edx, dword [esp + 0x38]
jmp 0x43c79f
mov ecx, dword [esi + 0x1c10]
mov dword [eax], ecx
mov edx, dword [esi + 0x1c14]
mov eax, dword [esi + 0x17c4]
mov dword [eax + 4], edx
mov eax, dword [esi + 0x2f8]
cmp eax, 0xffffffff
jle 0x43c7c2
mov edi, dword [esi + 0x17c4]
inc eax
call fcn.0044e830
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x17c4]
mov dword [eax + 0xc], 1
mov eax, dword [esi + 0x17c4]
mov dword [eax + 8], 0x16
mov eax, esi
call fcn.00421180
lea edi, [esi + 0x1684]
call fcn.00451270
call fcn.00421700
mov ebp, dword [esi + 0x1e88]
cmp ebp, dword [esi + 0x1e8c]
je 0x43c838
mov eax, dword [ebp]
mov edi, dword [eax + 0x5c]
cmp edi, dword [eax + 0x60]
je 0x43c82d
lea esp, [esp]
mov ecx, dword [edi]
mov eax, dword [esi]
mov edx, dword [eax + 0x150]
push ecx
mov ecx, esi
call edx
mov eax, dword [ebp]
add edi, 4
add eax, 0x58
cmp edi, dword [eax + 8]
jne 0x43c810
add ebp, 4
cmp ebp, dword [esi + 0x1e8c]
jne 0x43c801
cmp byte [esi + 0x1f24], 0
jne 0x43c935
lea ecx, [esp + 0x64]
mov byte [esi + 0x115], 1
call fcn.0045b907
mov byte [esp + 0x20c], 4
mov eax, dword [esi + 0x1ff4]
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x68]
call fcn.0045cacd
cmp byte [esi + 0x1c2c], 0
je 0x43c88d
push 0
push 0xc80000
push 0x80000000
lea ecx, [esp + 0x70]
call fcn.0045f5af
mov eax, dword [esi + 0x1c14]
mov ecx, dword [esi + 0x1c10]
push eax
push ecx
push 0
push 0
lea ecx, [esp + 0x44]
push ecx
call ebx
push 0
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x6c]
call fcn.0045b073
cmp byte [esp + 0x13], 0
je 0x43c914
lea eax, [esp + 0x15c]
push eax
push 0xffffffffffffffff
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x1c8]
mov ebp, dword [esp + 0x40]
sub ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x1cc]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
shr edi, 1
sub edi, eax
mov eax, ebp
cdq
push 4
push ebp
sub eax, edx
push ecx
shr ebx, 1
sar eax, 1
sub ebx, eax
push ebx
push edi
push 0
lea ecx, [esp + 0x7c]
call fcn.0045f61d
lea ecx, [esp + 0x64]
call fcn.0045cb09
mov byte [esi + 0x115], 0
mov byte [esp + 0x20c], 3
lea ecx, [esp + 0x64]
call fcn.0045d1d9
mov edx, dword [esi]
mov eax, dword [edx + 0x98]
push 0
or edi, 0xffffffff
push 0x22
push edi
mov ecx, esi
mov dword [esi + 0x2f4], edi
mov dword [esi + 0x2f8], edi
call eax
mov dword [esp + 0x20c], edi
lea ecx, [esp + 0x104]
call fcn.0045d1d9
mov ecx, dword [esp + 0x204]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x200
ret 4