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

Disassembly:
push 0xffffffffffffffff
push 0x5cb8d7
mov eax, dword fs:[0]
push eax
sub esp, 0x1bc
mov eax, dword [0x61a654]
xor eax, esp
mov dword [esp + 0x1b8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x61a654]
xor eax, esp
push eax
lea eax, [esp + 0x1d0]
mov dword fs:[0], eax
mov edi, dword [esp + 0x1e0]
mov esi, ecx
lea ebp, [esi + 0x3c]
push ebp
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebp
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov ecx, esi
mov dword [esp + 0x1d8], 0
mov byte [esi + 0xccc], 0
call fcn.004acd90
mov eax, dword [0x621f04]
push 0
test eax, eax
je 0x4b15c0
push 0x5dfbb0
lea ebx, [esi + 0x5c]
push ebx
push 0
call eax
push str.DirectDrawCreateEx
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
jne 0x4b15af
mov eax, dword [ebx]
mov edx, dword [eax]
lea ecx, [esi + 0x58]
push ecx
push 0x5dfba0
push eax
mov eax, dword [edx]
call eax
push str.QueryrInterface_IID_IDirectDraw
push eax
mov ecx, esi
mov dword [esp + 0x24], eax
call fcn.004a38c0
test al, al
je 0x4b15d0
push ebp
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 2
jmp 0x4b24a1
lea eax, [esi + 0x58]
push eax
push 0
call dword [0x621f00]
mov dword [esp + 0x1c], eax
push edi
mov ecx, esi
call fcn.004accc0
test al, al
je 0x4b15f5
mov ecx, dword [esi + 0x34]
cmp byte [ecx + 0xba], 0
je 0x4b15f5
mov ecx, dword [esi + 0x2c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x160]
call eax
lea ecx, [esp + 0x120]
push ecx
push edi
call dword [sym.imp.USER32.dll_GetClientRect]
lea edx, [esp + 0x130]
push edx
push 0xffffffffffffffff
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov eax, dword [esi + 0x2c]
mov dword [esi + 0xcd0], edi
mov ecx, dword [eax + 0xc0]
mov dword [esi + 0x6c], ecx
mov eax, dword [eax + 0xc4]
mov edx, ecx
push eax
lea edi, [esi + 0x74]
push edx
mov ecx, edi
mov dword [esi + 0x70], eax
call fcn.00468e00
mov ecx, dword [esp + 0x1a0]
mov eax, dword [esp + 0x19c]
push ecx
mov dword [esi + 0x80], ecx
lea ebp, [esi + 0x84]
push eax
mov ecx, ebp
mov dword [esi + 0x7c], eax
call fcn.00468e00
mov eax, dword [esi + 0x70]
mov edx, dword [edi]
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0x94], eax
mov eax, dword [edi + 4]
mov dword [esi + 0x9c], eax
xor eax, eax
mov dword [esi + 0x98], edx
mov edx, dword [esi + 0x70]
xor ebx, ebx
mov dword [esi + 0xa0], ebx
mov dword [esi + 0xa4], eax
mov eax, dword [esi + 0x2c]
mov dword [esi + 0xa8], ecx
mov dword [esi + 0x90], ecx
add eax, 0x66c
mov dword [esi + 0xac], edx
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov bl, byte [esp + 0x1e4]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov ecx, dword [esi + 0x2c]
mov edx, dword [ecx + 0xc8]
mov eax, dword [esi + 0x78]
mov ecx, dword [edi]
push eax
mov eax, dword [esi + 0x6c]
push ecx
mov dword [esi + 0xb0], edx
mov edx, dword [esi + 0x70]
push edx
push eax
push str.Application_requests__4lu_x__4lu___2d:_2d__n
mov byte [esi + 0xcd4], bl
mov byte [esi + 0xd20], 0
call fcn.004755b0
mov ecx, dword [esp + 0x30]
add esp, 0x14
push str.DirectDrawCreate
push ecx
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1723
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 2
jmp 0x4b24a1
test bl, bl
je 0x4b1aa1
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax + 0x684]
mov edx, dword [eax + 0x680]
push ecx
push edx
push str.Hack_aspect_is_____________________2d:_2d__n
call fcn.004755b0
mov ebp, dword [esi + 0x2c]
add esp, 0xc
cmp byte [ebp + 0x67c], 0
je 0x4b18f1
add ebp, 0x680
push ebp
mov ecx, edi
call fcn.004849f0
test al, al
je 0x4b18f1
mov eax, dword [esi + 0x70]
mov byte [esi + 0x8c], 1
imul eax, dword [ebp]
cdq
idiv dword [ebp + 4]
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x70]
mov dword [esi + 0x94], eax
mov ecx, dword [ebp]
mov dword [esi + 0x98], ecx
mov edx, dword [ebp + 4]
mov ebp, dword [esp + 0x18]
lea eax, [esp + 0xb4]
push eax
push ebp
mov dword [esi + 0x9c], edx
call dword [sym.imp.USER32.dll_GetWindowInfo]
lea ecx, [esp + 0x28]
push ecx
push ebp
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x20]
push ecx
push ebp
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], eax
call dword [sym.imp.USER32.dll_ClientToScreen]
mov ebx, dword [esi + 0x90]
mov ecx, dword [esp + 0x20]
mov eax, ebx
sub eax, dword [esi + 0x6c]
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov eax, dword [esi + 0x94]
sub eax, dword [esi + 0x70]
add ebx, ecx
cdq
sub eax, edx
mov edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x28], ecx
mov ecx, dword [esi + 0x94]
sar edx, 1
sub eax, edx
add ecx, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xdc]
push eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xdc]
push 0
push ecx
lea edx, [esp + 0x34]
push edx
mov dword [esp + 0x40], ebx
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
sub ecx, eax
push 0
push ecx
mov ecx, dword [esp + 0x30]
sub edx, ecx
push edx
xor edx, edx
test eax, eax
setl dl
dec edx
and edx, eax
xor eax, eax
test ecx, ecx
setl al
push edx
dec eax
and eax, ecx
push eax
push ebp
call dword [sym.imp.USER32.dll_MoveWindow]
mov ecx, dword [esi + 0x2c]
cmp byte [ecx + 0x668], 0
je 0x4b18c0
mov eax, dword [esi + 0x90]
mov edx, dword [esi + 0x98]
mov ecx, dword [esi + 0x94]
mov dword [esi + 0x6c], eax
mov dword [edi], edx
mov edx, dword [esi + 0x9c]
mov dword [esi + 0xa8], eax
xor eax, eax
mov dword [esi + 0x70], ecx
mov dword [edi + 4], edx
mov dword [esi + 0xac], ecx
mov dword [esi + 0xa0], eax
mov dword [esi + 0xa4], eax
jmp 0x4b18f5
mov eax, dword [esi + 0x70]
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0xac], eax
mov eax, dword [esi + 0x90]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esi + 0xa8], ecx
mov dword [esi + 0xa0], eax
mov dword [esi + 0xa4], 0
jmp 0x4b18f5
mov ebp, dword [esp + 0x18]
mov ecx, dword [esi + 0x9c]
mov edx, dword [esi + 0x98]
mov eax, dword [esi + 0x94]
push ecx
mov ecx, dword [esi + 0x90]
push edx
push eax
push ecx
push str.Window_is_____________4lu_x__4lu___2d:_2d__n
call fcn.004755b0
mov eax, dword [esi + 0x58]
mov edx, dword [eax]
add esp, 0x14
push 8
push ebp
push eax
mov eax, dword [edx + 0x50]
call eax
push 0x7c
lea ecx, [esp + 0x3c]
push 0
push ecx
call fcn.005a06a0
add esp, 0xc
cmp byte [esi + 0x38], 0
mov dword [esp + 0x38], 0x7c
mov dword [esp + 0x3c], 1
mov dword [esp + 0xa0], 0x200
je 0x4b1969
mov dword [esp + 0xa0], 0x2200
push 0
lea ebx, [esi + 0x60]
push ebx
lea edx, [esp + 0x40]
push edx
mov ecx, esi
mov dword [esp + 0x58], 1
call fcn.00484a40
cmp eax, 0x88760091
jne 0x4b199f
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 6
jmp 0x4b24a1
push str.CreateSurface_Windowed_Primary
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b19c5
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 3
jmp 0x4b24a1
push 0x7c
lea edx, [esp + 0x3c]
push 0
push edx
call fcn.005a06a0
add esp, 0xc
cmp byte [esi + 0x38], 0
mov dword [esp + 0x38], 0x7c
mov dword [esp + 0x3c], 7
mov dword [esp + 0xa0], 0x840
je 0x4b1a02
mov dword [esp + 0xa0], 0x6040
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x70]
push 0
lea edx, [esi + 0x68]
mov dword [esp + 0x48], eax
push edx
lea eax, [esp + 0x40]
mov dword [esp + 0x48], ecx
push eax
mov ecx, esi
call fcn.00484a40
push str.CreateSurface_Windowed_DrawSurface
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
jne 0x4b19b0
mov eax, dword [esi + 0x58]
mov edx, dword [eax]
mov edx, dword [edx + 0x10]
push 0
lea ecx, [esp + 0x20]
push ecx
push 0
push eax
call edx
push str.CreateClipper_Windowed
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1a71
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 1
jmp 0x4b24a1
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x20]
push ebp
push 0
push eax
call edx
test eax, eax
jl 0x4b1a93
mov eax, dword [ebx]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x70]
call eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
jmp 0x4b1de5
mov eax, dword [esi + 0x88]
mov ecx, dword [ebp]
mov edx, dword [esi + 0x80]
push eax
mov eax, dword [esi + 0x7c]
push ecx
push edx
push eax
push str.Desktop_is____________4lu_x__4lu___2d:_2d__n
call fcn.004755b0
add esp, 0x14
cmp byte [esi + 0x38], 0
je 0x4b1b71
push ebp
mov ecx, edi
call fcn.004849f0
test al, al
je 0x4b1b71
mov edx, dword [ebp]
mov ebx, dword [esi + 0x7c]
mov ecx, dword [esi + 0x80]
mov eax, dword [ebp + 4]
mov dword [esi + 0x98], edx
mov edx, dword [esi + 0x2c]
mov byte [esi + 0x8c], 1
mov dword [esi + 0x90], ebx
mov dword [esi + 0x94], ecx
mov dword [esi + 0x9c], eax
cmp byte [edx + 0x668], 0
je 0x4b1b3e
mov eax, dword [ebp]
mov edx, dword [ebp + 4]
mov dword [edi], eax
imul eax, dword [esi + 0x70]
mov dword [edi + 4], edx
cdq
idiv dword [edi + 4]
mov dword [esi + 0xa8], ebx
mov dword [esi + 0x6c], eax
xor eax, eax
mov dword [esi + 0xa4], eax
jmp 0x4b1b65
mov eax, dword [esi + 0x6c]
imul eax, ecx
cdq
idiv dword [esi + 0x70]
mov dword [esi + 0xa4], 0
mov dword [esi + 0xa8], eax
mov eax, ebx
sub eax, dword [esi + 0xa8]
cdq
sub eax, edx
sar eax, 1
mov dword [esi + 0xa0], eax
mov dword [esi + 0xac], ecx
mov eax, dword [esi + 0x9c]
mov ecx, dword [esi + 0x98]
mov edx, dword [esi + 0x94]
push eax
mov eax, dword [esi + 0x90]
push ecx
push edx
push eax
push str.Display_is____________4lu_x__4lu___2d:_2d__n
call fcn.004755b0
mov eax, dword [esi + 0x58]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x50]
add esp, 0x14
push 0x11
push ebx
push eax
call edx
push str.SetCooperativeLevel_FullScreen
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1bd2
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 4
jmp 0x4b24a1
mov edx, dword [esi + 0xb0]
mov eax, dword [esi + 0x58]
mov ecx, dword [eax]
push edx
mov edx, dword [esi + 0x94]
push edx
mov edx, dword [esi + 0x90]
push edx
push eax
mov eax, dword [ecx + 0x54]
call eax
push str.SetDisplayMode_FullScreen
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1c18
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 5
jmp 0x4b24a1
push 0x7c
lea edx, [esp + 0x3c]
push 0
push edx
call fcn.005a06a0
add esp, 0xc
cmp byte [esi + 0x38], 0
mov dword [esp + 0x38], 0x7c
mov dword [esp + 0x3c], 0x21
mov dword [esp + 0xa0], 0x218
mov dword [esp + 0x4c], 1
je 0x4b1c5d
mov dword [esp + 0xa0], 0x2218
push 0
lea eax, [esi + 0x60]
push eax
lea eax, [esp + 0x40]
push eax
mov ecx, esi
call fcn.00484a40
push str.CreateSurface_FullScreen_Primary
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
jne 0x4b19b0
mov eax, dword [esi + 0x60]
lea ebp, [esi + 0x64]
push ebp
lea ecx, [esp + 0x24]
mov dword [esp + 0x24], 4
mov edx, dword [eax]
mov edx, dword [edx + 0x30]
push ecx
push eax
call edx
push str.GetAttachedSurface
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1cc6
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 3
jmp 0x4b24a1
cmp byte [esi + 0x8c], 0
je 0x4b1ce5
mov ecx, dword [esi + 0x60]
push ecx
mov ecx, esi
call fcn.00484c40
mov edx, dword [ebp]
push edx
mov ecx, esi
call fcn.00484c40
push 0x7c
lea eax, [esp + 0x3c]
push 0
push eax
call fcn.005a06a0
add esp, 0xc
cmp byte [esi + 0x38], 0
mov dword [esp + 0x38], 0x7c
mov dword [esp + 0x3c], 7
mov dword [esp + 0xa0], 0x840
je 0x4b1d22
mov dword [esp + 0xa0], 0x6040
mov ecx, dword [esi + 0x6c]
mov edx, dword [esi + 0x70]
push 0
mov dword [esp + 0x48], ecx
lea eax, [esi + 0x68]
push eax
lea ecx, [esp + 0x40]
push ecx
mov ecx, esi
mov dword [esp + 0x4c], edx
call fcn.00484a40
push str.CreateSurface_FullScreen_DrawSurface
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1d68
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 3
jmp 0x4b24a1
mov eax, dword [esi + 0x58]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x20]
push edx
push 0
push eax
mov eax, dword [ecx + 0x10]
call eax
push str.CreateClipper_FullScreen
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
je 0x4b1da2
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 1
jmp 0x4b24a1
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
push ebx
push 0
push eax
mov eax, dword [edx + 0x20]
call eax
test eax, eax
jl 0x4b1dc5
mov eax, dword [esi + 0x60]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x70]
call eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esi + 0x2c]
cmp byte [eax + 0x39d], 0
jne 0x4b1de8
mov eax, dword [esi + 0x58]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x28]
push eax
call edx
mov eax, dword [esi + 0x78]
mov ecx, dword [edi]
mov edx, dword [esi + 0x70]
push eax
mov eax, dword [esi + 0x6c]
push ecx
push edx
push eax
push str.Draw_buffer_is________4lu_x__4lu___2d:_2d__n
call fcn.004755b0
mov eax, dword [esi + 0x58]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x3c]
add esp, 0x14
lea edi, [esi + 0xb4]
push edi
push eax
call edx
test eax, eax
jl 0x4b1e1f
cmp dword [edi], 0x3c
jae 0x4b1e2f
mov eax, dword [esi + 0x2c]
mov byte [eax + 0x649], 1
mov dword [edi], 0x3c
mov eax, dword [edi]
cmp eax, 0x3c
jae 0x4b1e48
mov ecx, dword [esi + 0x2c]
mov byte [ecx + 0x649], 1
mov dword [edi], 0x3c
jmp 0x4b1e5d
cmp eax, 0x64
jbe 0x4b1e5d
mov edx, dword [esi + 0x2c]
mov byte [edx + 0x649], 1
mov dword [edi], 0x64
xor edx, edx
mov eax, 0x3e8
div dword [edi]
push 0x7c
push 0
mov dword [esi + 0xb8], eax
lea eax, [esp + 0x40]
push eax
call fcn.005a06a0
mov ecx, dword [esi + 0xd04]
mov edx, dword [esi + 0xd08]
add esp, 0xc
push 0
lea edi, [esi + 0xd24]
push edi
lea eax, [esp + 0x40]
mov dword [esp + 0x4c], ecx
push eax
mov ecx, esi
mov dword [esp + 0x44], 0x7c
mov dword [esp + 0x48], 7
mov dword [esp + 0xac], 0x840
mov dword [esp + 0x4c], edx
call fcn.00484a40
push str.CreateSurface_OldCursorArea
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
jne 0x4b19b0
push 0
lea ebp, [esi + 0xd28]
push ebp
lea edx, [esp + 0x40]
push edx
mov ecx, esi
call fcn.00484a40
push str.CreateSurface_NewCursorArea
push eax
mov ecx, esi
call fcn.004a38c0
test al, al
jne 0x4b1cb1
push 0xec
call fcn.0059e72d
add esp, 4
mov dword [esp + 0x20], eax
mov byte [esp + 0x1d8], 1
test eax, eax
je 0x4b1f27
push esi
mov ecx, eax
call fcn.004ad040
jmp 0x4b1f29
xor eax, eax
mov ecx, dword [edi]
mov dword [esi + 0xd2c], eax
mov edx, dword [eax]
mov edx, dword [edx + 0xc4]
push ecx
mov ecx, eax
mov byte [esp + 0x1dc], 0
call edx
mov ecx, dword [esi + 0xd2c]
mov eax, dword [ecx]
mov edx, dword [eax + 0x80]
push 0
push 0
call edx
push 0xec
call fcn.0059e72d
add esp, 4
mov dword [esp + 0x20], eax
mov byte [esp + 0x1d8], 2
test eax, eax
je 0x4b1f81
push esi
mov ecx, eax
call fcn.004ad040
jmp 0x4b1f83
xor eax, eax
mov ecx, dword [ebp]
mov dword [esi + 0xd30], eax
mov edx, dword [eax]
mov edx, dword [edx + 0xc4]
push ecx
mov ecx, eax
mov byte [esp + 0x1dc], 0
call edx
mov ecx, dword [esi + 0xd30]
mov eax, dword [ecx]
mov edx, dword [eax + 0x80]
push 0
push 0
call edx
mov edi, dword [esi + 0x60]
test edi, edi
je 0x4b242f
push 0x6c
lea eax, [esp + 0xb8]
push 0
push eax
call fcn.005a06a0
add esp, 0xc
lea edx, [esp + 0xb4]
mov dword [esp + 0xb4], 0x6c
mov dword [esp + 0xb8], 0x1006
mov ecx, dword [edi]
mov eax, dword [ecx + 0x58]
push edx
push edi
call eax
mov eax, dword [esp + 0x108]
cmp eax, 0x10
je 0x4b2020
cmp eax, 0x20
je 0x4b2020
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 6
jmp 0x4b24a1
mov edi, dword [esp + 0x110]
mov ebp, dword [esp + 0x114]
mov dword [esi + 4], eax
mov eax, dword [esp + 0x10c]
mov dword [esi + 8], eax
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], ebp
mov ecx, 0x20
mov edx, eax
shr edx, cl
test dl, 1
je 0x4b2052
mov dword [esi + 0x20], ecx
mov edx, edi
shr edx, cl
test dl, 1
je 0x4b205e
mov dword [esi + 0x24], ecx
mov edx, ebp
shr edx, cl
test dl, 1
je 0x4b206a
mov dword [esi + 0x28], ecx
sub ecx, 1
jns 0x4b2046
mov ebx, dword [esi + 0x28]
mov edi, dword [esi + 0x24]
mov edx, dword [esi + 0x20]
mov eax, 2
add ebx, eax
add edi, eax
add edx, eax
mov dword [esp + 0x18], 8
jmp 0x4b2090
lea ecx, [edx - 2]
cmp ecx, 0x20
jge 0x4b20aa
mov ebp, dword [esi + 8]
lea ecx, [edx - 2]
shr ebp, cl
test ebp, ebp
je 0x4b20aa
lea ecx, [eax - 1]
mov dword [esi + 0x14], ecx
lea ecx, [edi - 2]
cmp ecx, 0x20
jge 0x4b20c4
mov ebp, dword [esi + 0xc]
lea ecx, [edi - 2]
shr ebp, cl
test ebp, ebp
je 0x4b20c4
lea ecx, [eax - 1]
mov dword [esi + 0x18], ecx
lea ecx, [ebx - 2]
cmp ecx, 0x20
jge 0x4b20de
mov ebp, dword [esi + 0x10]
lea ecx, [ebx - 2]
shr ebp, cl
test ebp, ebp
je 0x4b20de
lea ecx, [eax - 1]
mov dword [esi + 0x1c], ecx
lea ecx, [edx - 1]
cmp ecx, 0x20
jge 0x4b20f5
mov ebp, dword [esi + 8]
lea ecx, [edx - 1]
shr ebp, cl
test ebp, ebp
je 0x4b20f5
mov dword [esi + 0x14], eax
lea ecx, [edi - 1]
cmp ecx, 0x20
jge 0x4b210c
mov ebp, dword [esi + 0xc]
lea ecx, [edi - 1]
shr ebp, cl
test ebp, ebp
je 0x4b210c
mov dword [esi + 0x18], eax
lea ecx, [ebx - 1]
cmp ecx, 0x20
jge 0x4b2123
mov ebp, dword [esi + 0x10]
lea ecx, [ebx - 1]
shr ebp, cl
test ebp, ebp
je 0x4b2123
mov dword [esi + 0x1c], eax
cmp edx, 0x20
jge 0x4b2139
mov ebp, dword [esi + 8]
mov ecx, edx
shr ebp, cl
test ebp, ebp
je 0x4b2139
lea ecx, [eax + 1]
mov dword [esi + 0x14], ecx
cmp edi, 0x20
jge 0x4b214f
mov ebp, dword [esi + 0xc]
mov ecx, edi
shr ebp, cl
test ebp, ebp
je 0x4b214f
lea ecx, [eax + 1]
mov dword [esi + 0x18], ecx
cmp ebx, 0x20
jge 0x4b2165
mov ebp, dword [esi + 0x10]
mov ecx, ebx
shr ebp, cl
test ebp, ebp
je 0x4b2165
lea ecx, [eax + 1]
mov dword [esi + 0x1c], ecx
lea ecx, [edx + 1]
cmp ecx, 0x20
jge 0x4b217c
mov ebp, dword [esi + 8]
shr ebp, cl
test ebp, ebp
je 0x4b217c
lea ecx, [eax + 2]
mov dword [esi + 0x14], ecx
lea ecx, [edi + 1]
cmp ecx, 0x20
jge 0x4b2193
mov ebp, dword [esi + 0xc]
shr ebp, cl
test ebp, ebp
je 0x4b2193
lea ecx, [eax + 2]
mov dword [esi + 0x18], ecx
lea ecx, [ebx + 1]
cmp ecx, 0x20
jge 0x4b21aa
mov ebp, dword [esi + 0x10]
shr ebp, cl
test ebp, ebp
je 0x4b21aa
lea ecx, [eax + 2]
mov dword [esi + 0x1c], ecx
add eax, 4
add edx, 4
add edi, 4
add ebx, 4
sub dword [esp + 0x18], 1
jne 0x4b2090
mov edx, dword [esi + 0xc0]
push edx
call fcn.005a2f45
mov eax, dword [esi + 0xc4]
push eax
call fcn.005a2f45
mov ecx, dword [esi + 0xc8]
push ecx
call fcn.005a2f45
mov ecx, dword [esi + 0x14]
mov edi, 1
shl edi, cl
mov ecx, dword [esi + 0x18]
mov ebp, 1
shl ebp, cl
mov ecx, dword [esi + 0x1c]
mov eax, 1
shl eax, cl
dec edi
xor ecx, ecx
lea ebx, [edi + edi + 1]
dec eax
mov dword [esp + 0x24], eax
mov eax, ebx
mov edx, 4
dec ebp
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0059d93d
mov dword [esi + 0xc0], eax
xor ecx, ecx
lea eax, [ebp + ebp + 1]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0059d93d
mov dword [esi + 0xc4], eax
mov eax, dword [esp + 0x2c]
xor ecx, ecx
lea eax, [eax + eax + 1]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0059d93d
mov dword [esi + 0xc8], eax
add esp, 0x18
xor eax, eax
test ebx, ebx
jle 0x4b2296
lea esp, [esp]
cmp eax, edi
mov ecx, eax
jl 0x4b2288
mov ecx, edi
mov edx, dword [esi + 0xc0]
mov dword [edx + eax*4], ecx
inc eax
cmp eax, ebx
jl 0x4b2280
lea edx, [ebp + ebp + 1]
xor eax, eax
test edx, edx
jle 0x4b22b6
cmp eax, ebp
mov ecx, eax
jl 0x4b22a8
mov ecx, ebp
mov edi, dword [esi + 0xc4]
mov dword [edi + eax*4], ecx
inc eax
cmp eax, edx
jl 0x4b22a0
mov edi, dword [esp + 0x18]
lea edx, [edi + edi + 1]
xor eax, eax
test edx, edx
jle 0x4b22da
cmp eax, edi
mov ecx, eax
jl 0x4b22cc
mov ecx, edi
mov ebx, dword [esi + 0xc8]
mov dword [ebx + eax*4], ecx
inc eax
cmp eax, edx
jl 0x4b22c4
mov edi, 2
lea ecx, [esi + 0x4cc]
mov dword [esp + 0x18], 0x40
lea ecx, [ecx]
mov ebx, dword [esi + 8]
lea ebp, [edi - 2]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx - 0x400], edx
mov ebx, dword [esi + 0xc]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx], edx
mov ebx, dword [esi + 0x10]
imul ebp, ebx
mov eax, 0x80808081
mul ebp
shr edx, 7
and edx, ebx
mov dword [ecx + 0x400], edx
mov ebx, dword [esi + 8]
lea ebp, [edi - 1]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx - 0x3fc], edx
mov ebx, dword [esi + 0xc]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx + 4], edx
mov ebx, dword [esi + 0x10]
imul ebp, ebx
mov eax, 0x80808081
mul ebp
shr edx, 7
and edx, ebx
mov dword [ecx + 0x404], edx
mov ebx, dword [esi + 8]
mov edx, ebx
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx - 0x3f8], edx
mov ebx, dword [esi + 0xc]
mov edx, ebx
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx + 8], edx
mov ebx, dword [esi + 0x10]
mov edx, ebx
imul edx, edi
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx + 0x408], edx
mov ebx, dword [esi + 8]
lea ebp, [edi + 1]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx - 0x3f4], edx
mov ebx, dword [esi + 0xc]
mov edx, ebp
imul edx, ebx
mov eax, 0x80808081
mul edx
shr edx, 7
and edx, ebx
mov dword [ecx + 0xc], edx
mov ebx, dword [esi + 0x10]
imul ebp, ebx
mov eax, 0x80808081
mul ebp
shr edx, 7
and edx, ebx
mov dword [ecx + 0x40c], edx
add ecx, 0x10
add edi, 4
sub dword [esp + 0x18], 1
jne 0x4b22f0
movzx eax, byte [esi + 0xcfc]
push eax
mov ecx, esi
call fcn.004ada60
cmp byte [esi + 0x38], 0
je 0x4b2487
mov ecx, dword [esi + 0x30]
push esi
call fcn.004a4860
test al, al
jne 0x4b2487
push 0xf
add esi, 0xd34
push str.3D_init_error:
mov ecx, esi
call fcn.00401590
push 0xffffffffffffffff
push 0
push 0x617e94
mov ecx, esi
call fcn.004288a0
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
mov eax, 7
jmp 0x4b24a1
mov edx, dword [esp + 0x14]
inc dword [esi + 0xd00]
push edx
mov byte [esi + 0xccc], 1
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
xor eax, eax
mov ecx, dword [esp + 0x1d0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x1b8]
xor ecx, esp
call fcn.0059e619
add esp, 0x1c8
ret 8