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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x478fa5
mov eax, dword fs:[0]
push eax
sub esp, 0x320
mov eax, dword [0x4951c0]
xor eax, esp
mov dword [esp + 0x318], eax
push ebx
push esi
push edi
mov eax, dword [0x4951c0]
xor eax, esp
push eax
lea eax, [esp + 0x330]
mov dword fs:[0], eax
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x10]
mov ebx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], ebx
cmp eax, 0x63
jne 0x45f0fb
cmp dword [0x58fe48], 2
je 0x45f11c
cmp dword [0x58fa70], 0
je 0x45f0ec
cmp dword [0x543998], 0
jne 0x45f11c
call fcn.00401de0
test eax, eax
jne 0x45f11c
push esi
mov edx, edi
mov ecx, ebx
call fcn.004595e0
jmp 0x4613e0
cmp eax, 0xffffffff
jne 0x45f114
push 0x487d94
push 0x487db4
call fcn.00458fe0
add esp, 8
jmp 0x45f11c
test eax, eax
je 0x4613e0
mov eax, dword [0x4965ec]
mov edx, dword [0x4967f0]
xor ecx, ecx
cmp edi, ecx
je 0x45f146
mov ecx, dword [edi]
mov dword [esp + 0x30], ecx
mov ecx, dword [edi + 4]
mov dword [esp + 0x34], ecx
mov ecx, dword [edi + 8]
mov dword [esp + 0x5c], ecx
mov ecx, dword [edi + 0xc]
jmp 0x45f158
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], ecx
lea ecx, [eax - 1]
mov dword [esp + 0x5c], ecx
lea ecx, [edx - 1]
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x50], ecx
mov edi, dword [esp + 0x50]
sub edi, dword [esp + 0x34]
xor ecx, ecx
mov dword [0x53b79c], ecx
mov dword [0x53b798], ecx
mov dword [0x53b7a0], ecx
mov dword [0x53b7a4], ecx
mov ecx, dword [esp + 0x30]
inc edi
sub ebx, ecx
inc ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x3c], edi
mov edi, ebx
add edi, ecx
cmp edi, eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], ebx
jl 0x45f1a8
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
lea ecx, [edi + eax]
cmp ecx, edx
jl 0x45f1bf
sub edx, eax
mov edi, edx
mov dword [esp + 0x3c], edx
mov eax, dword [0x58fe48]
cmp eax, 1
jne 0x45f233
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
mov dword [ebp + 0xc], esi
mov eax, dword [ebp + 8]
cmp eax, 0x12
je 0x45f1e2
cmp eax, 0xf
jne 0x45f1fd
mov edx, dword [esp + 0x18]
cmp byte [edx], 0
jne 0x45f1fd
push 0x487dbc
push 0x487de8
call fcn.00458fe0
add esp, 8
cmp byte [0x4963e4], 0
je 0x45f248
cmp dword [0x543998], 0
jne 0x45f218
call fcn.00401de0
test eax, eax
je 0x45f248
cmp dword [0x58fa70], 0
jne 0x45f241
mov eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
mov esi, eax
mov dword [ebp + 0xc], esi
jmp 0x45f248
cmp eax, 2
jne 0x45f1d5
mov dword [ebp + 8], 1
jmp 0x45f1fd
mov dword [ebp + 8], 1
cmp dword [esp + 0x40], 1
jl 0x4613e0
cmp edi, 1
jl 0x4613e0
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
mov eax, dword [ebp + 8]
dec eax
mov dword [esp + 0x60], edi
mov dword [0x58faec], 0
cmp eax, 0x59
ja case.0x45f28e.19
movzx edx, byte [eax + 0x461458]
jmp dword [edx*4 + 0x461408]
mov ebx, dword [esp + 0x34]
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 0
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
lea esi, [eax + ecx]
cmp esi, dword [esp + 0x5c]
jg 0x45f329
jmp 0x45f2d0
cmp byte [0x58f9cb], 0
je 0x45f302
mov edx, dword [0x49ab6c]
cmp dword [edx + 0x514], 0
je 0x45f302
mov eax, dword [0x497848]
mov ecx, dword [esp + 0x20]
push eax
push ecx
push 1
push ebx
push esi
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f320
mov edx, dword [0x497848]
mov eax, dword [esp + 0x20]
push 0xcc0020
push ebx
push esi
push edx
push eax
push 1
push ebx
push esi
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
add esi, 0x10
cmp esi, dword [esp + 0x5c]
jle 0x45f2d0
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f345
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f360
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x10
mov dword [esp + 0x14], eax
jl 0x45f2b0
jmp case.0x45f28e.1
cmp byte [0x544540], 0
je case.0x45f28e.1
mov dword [0x58faec], 1
jmp case.0x45f28e.1
mov ebx, dword [esp + 0x34]
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 0xf
mov edi, edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
lea esi, [edx + eax]
cmp esi, dword [esp + 0x5c]
jg 0x45f42a
jmp 0x45f3d0
cmp byte [0x58f9cb], 0
je 0x45f403
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x45f403
mov edx, dword [0x497848]
mov eax, dword [esp + 0x20]
push edx
push eax
push 1
push ebx
push esi
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f421
mov ecx, dword [0x497848]
mov edx, dword [esp + 0x20]
push 0xcc0020
push ebx
push esi
push ecx
push edx
push 1
push ebx
push esi
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
add esi, 0x10
cmp esi, dword [esp + 0x5c]
jle 0x45f3d0
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f44a
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f465
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub dword [esp + 0x14], 1
jns 0x45f3b0
jmp case.0x45f28e.1
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 0
lea esp, [esp]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
lea esi, [ecx + edx]
cmp esi, dword [esp + 0x50]
mov dword [esp + 0x24], eax
jg 0x45f509
jmp 0x45f4b0
cmp byte [0x58f9cb], 0
je 0x45f4e2
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x45f4e2
mov ecx, dword [0x497848]
mov edx, dword [esp + 0x30]
push ecx
push 1
push ebx
push esi
push edx
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f500
mov eax, dword [esp + 0x30]
mov ecx, dword [0x497848]
push 0xcc0020
push esi
push eax
push ecx
push 1
push ebx
push esi
push eax
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
add esi, 0x10
cmp esi, dword [esp + 0x50]
jle 0x45f4b0
mov edx, dword [esp + 0x2c]
push edx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f529
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f544
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x10
mov dword [esp + 0x14], eax
jl 0x45f490
jmp case.0x45f28e.1
mov eax, esi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 0xf
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
lea esi, [eax + ecx]
cmp esi, dword [esp + 0x50]
jg 0x45f5e9
lea ecx, [ecx]
cmp byte [0x58f9cb], 0
je 0x45f5c2
mov edx, dword [0x49ab6c]
cmp dword [edx + 0x514], 0
je 0x45f5c2
mov eax, dword [0x497848]
mov ecx, dword [esp + 0x30]
push eax
push 1
push ebx
push esi
push ecx
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f5e0
mov eax, dword [esp + 0x30]
mov edx, dword [0x497848]
push 0xcc0020
push esi
push eax
push edx
push 1
push ebx
push esi
push eax
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
add esi, 0x10
cmp esi, dword [esp + 0x50]
jle 0x45f590
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f609
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f624
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub dword [esp + 0x14], 1
jns 0x45f572
jmp case.0x45f28e.1
mov ebx, dword [0x4965ec]
mov ecx, ebx
imul ebx, ebx, 0x492
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, 0x66666667
imul ebx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx - 1]
mov dword [esp + 0x58], edx
mov dword [esp + 0x14], 0
test edx, edx
jl case.0x45f28e.1
mov ebx, dword [esp + 0x34]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0x18
lea esp, [esp]
cmp esi, dword [esp + 0x30]
jl 0x45f70c
cmp esi, dword [esp + 0x5c]
jg 0x45f70c
cmp byte [0x58f9cb], 0
je 0x45f6ee
mov edx, dword [0x49ab6c]
cmp dword [edx + 0x514], 0
je 0x45f6ee
mov eax, dword [0x497848]
mov ecx, dword [esp + 0x20]
push eax
push ecx
push 1
push ebx
push esi
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f70c
mov edx, dword [0x497848]
mov eax, dword [esp + 0x20]
push 0xcc0020
push ebx
push esi
push edx
push eax
push 1
push ebx
push esi
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45f6b0
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f736
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f751
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
add eax, 0x18
cmp eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
jle 0x45f696
jmp case.0x45f28e.1
mov ebx, dword [0x4965ec]
mov ecx, ebx
imul ebx, ebx, 0x492
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, 0x66666667
imul ebx
sar edx, 8
mov eax, edx
shr eax, 0x1f
lea edx, [edx + eax - 1]
mov dword [esp + 0x14], edx
test edx, edx
jl case.0x45f28e.1
mov ebx, dword [esp + 0x34]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0x18
jmp 0x45f7e0
cmp esi, dword [esp + 0x30]
jl 0x45f83d
cmp esi, dword [esp + 0x5c]
jg 0x45f83d
cmp byte [0x58f9cb], 0
je 0x45f81f
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x45f81f
mov edx, dword [0x497848]
mov eax, dword [esp + 0x20]
push edx
push eax
push 1
push ebx
push esi
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f83d
mov ecx, dword [0x497848]
mov edx, dword [esp + 0x20]
push 0xcc0020
push ebx
push esi
push ecx
push edx
push 1
push ebx
push esi
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45f7e0
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f867
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f882
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub dword [esp + 0x14], 0x18
jns 0x45f7c5
jmp case.0x45f28e.1
mov ebx, dword [0x4967f0]
mov ecx, ebx
imul ebx, esi
imul ecx, ecx, 0x3f2
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx - 1]
mov dword [esp + 0x20], edx
mov eax, 0x88888889
imul ebx
add edx, ebx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x30c30c31
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x20], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 0
jl case.0x45f28e.1
mov ebx, dword [esp + 0x30]
jmp 0x45f900
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0x18
cmp esi, dword [esp + 0x34]
jl 0x45f971
cmp esi, dword [esp + 0x50]
jg 0x45f971
cmp byte [0x58f9cb], 0
je 0x45f954
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x45f954
mov ecx, dword [0x497848]
mov edx, dword [esp + 0x28]
push ecx
push 1
push edx
push esi
push ebx
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45f971
mov eax, dword [0x497848]
mov ecx, dword [esp + 0x28]
push 0xcc0020
push esi
push ebx
push eax
push 1
push ecx
push esi
push ebx
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45f916
mov edx, dword [esp + 0x2c]
push edx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45f99b
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45f9b6
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
add eax, 0x18
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
jle 0x45f900
jmp case.0x45f28e.1
mov ebx, dword [0x4967f0]
mov ecx, ebx
imul ebx, ebx, 0x3f2
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x30c30c31
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, 0x88888889
imul ebx
add edx, ebx
sar edx, 8
mov eax, edx
shr eax, 0x1f
lea edx, [edx + eax - 1]
mov dword [esp + 0x14], edx
test edx, edx
jl case.0x45f28e.1
mov ebx, dword [esp + 0x30]
mov edi, edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 0x18
cmp esi, dword [esp + 0x34]
jl 0x45faa3
cmp esi, dword [esp + 0x50]
jg 0x45faa3
cmp byte [0x58f9cb], 0
je 0x45fa85
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x45fa85
mov edx, dword [0x497848]
mov eax, dword [esp + 0x28]
push edx
push 1
push eax
push esi
push ebx
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45faa3
mov ecx, dword [0x497848]
mov edx, dword [esp + 0x28]
push 0xcc0020
push esi
push ebx
push ecx
push 1
push edx
push esi
push ebx
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
sub esi, 0x17
sub dword [esp + 0x18], 1
jne 0x45fa46
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45facd
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jae 0x45fae8
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub dword [esp + 0x14], 0x18
jns 0x45fa30
jmp case.0x45f28e.1
push 8
lea ecx, [esp + 0x7c]
push ecx
call dword [sym.imp.WINMM.dll_timeGetDevCaps]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + 0x40]
mov ecx, dword [0x4967f0]
mov dword [esp + 0x70], edx
mov eax, esi
cdq
and edx, 0xff
add eax, edx
sar eax, 8
mov dword [esp + 0x64], eax
lea eax, [edi + edi*2]
cdq
push 0
sub eax, edx
mov edx, dword [0x4965ec]
push 0
mov esi, eax
mov eax, dword [0x496b50]
push eax
push ecx
push edx
push 0
sar esi, 1
push 0
mov eax, 0x497df8
mov dword [esp + 0x44], 1
mov dword [esp + 0x3c], 0
mov dword [esp + 0xa4], esi
call fcn.00403520
mov ecx, dword [0x496b94]
mov eax, dword [0x49788c]
mov edx, dword [0x498054]
mov dword [esp + 0x44], eax
mov ebx, dword [0x4967f0]
sub ebx, dword [esp + 0x34]
mov dword [esp + 0x48], ecx
mov ecx, dword [0x4965ec]
mov dword [esp + 0x14], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x30]
sar eax, 2
add eax, eax
add eax, eax
dec ebx
imul ebx, eax
lea edx, [edx + edx*2]
add ebx, edx
lea eax, [eax + esi*2]
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x74], eax
cmp edi, ecx
jne 0x45fbea
mov ecx, dword [0x4967f0]
mov dword [esp + 0x18], 1
cmp dword [esp + 0x3c], ecx
je 0x45fbf2
mov dword [esp + 0x18], 0
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edi, dword [esp + 0x28]
xor edx, edx
cmp dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
sete dl
shl edi, 8
mov eax, 0x4ab488
sub eax, edi
cmp dword [esp + 0x18], 0
mov dword [esp + 0x38], edi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x20], edx
je 0x45fc98
mov ecx, dword [0x4967f0]
imul ecx, dword [0x4965ec]
lea ecx, [ecx + ecx*2]
cmp edx, ecx
jge 0x45fd12
mov edx, dword [esp + 0x48]
sub ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
sub esi, edx
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x14]
dec ecx
sub esi, edx
shr ecx, 1
add eax, edx
inc ecx
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x1c], ecx
lea esp, [esp]
mov ecx, dword [esp + 0x58]
movzx edx, byte [ecx + eax]
movzx ecx, byte [eax]
mov dl, byte [edx + edi + 0x49b588]
add dl, byte [ecx + esi]
mov ecx, dword [esp + 0x68]
mov byte [ecx + eax], dl
add eax, 2
sub dword [esp + 0x1c], 1
jne 0x45fc70
jmp 0x45fd12
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
lea eax, [ebx + edx]
mov edx, dword [esp + 0x20]
add ecx, ebx
add esi, ebx
add eax, edx
add ecx, edx
add esi, edx
cmp dword [esp + 0x3c], 0
jle 0x45fd12
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x88]
test edx, edx
jle 0x45fd01
mov dword [esp + 0x1c], edx
movzx edx, byte [ecx]
movzx ebx, byte [esi]
mov dl, byte [edx + edi + 0x49b588]
mov edi, dword [esp + 0x4c]
add dl, byte [ebx + edi]
mov edi, dword [esp + 0x38]
mov byte [eax], dl
add eax, 2
add ecx, 2
add esi, 2
sub dword [esp + 0x1c], 1
jne 0x45fcd3
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x74]
sub eax, edx
sub ecx, edx
sub esi, edx
sub dword [esp + 0x54], 1
jne 0x45fcc4
cmp byte [0x58f9cb], 0
je 0x45fd53
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x45fd53
mov ecx, dword [0x498010]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x6c]
push ecx
push edx
push eax
call fcn.00421f60
add esp, 0x18
jmp 0x45fd83
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
mov edx, dword [0x498010]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x54]
push edx
push ecx
push eax
mov eax, dword [esp + 0x80]
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov edi, dword [esp + 0x28]
cmp edi, 0xff
je case.0x45f28e.1
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45fdb3
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
mov eax, dword [esp + 0x70]
sub ecx, dword [esp + 0x24]
cmp eax, 9
jle 0x45fdd1
cmp ecx, eax
jne 0x45fdd1
mov ecx, 5
mov eax, ecx
shl eax, 8
xor edx, edx
div dword [ebp + 0xc]
mov esi, eax
cmp esi, 1
jae 0x45fdf8
mov eax, dword [esp + 0x64]
mov esi, 1
cmp ecx, eax
jae 0x45fdf8
sub eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
add edi, esi
cmp edi, 0xff
mov dword [esp + 0x28], edi
jl 0x45fbf2
mov dword [esp + 0x28], 0xff
jmp 0x45fbf2
mov ebx, dword [0x4965ec]
mov ecx, ebx
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
add esi, edx
mov edx, dword [0x4967f0]
mov dword [esp + 0x80], ebx
add ebx, 0xfffffff8
cmp ebx, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x84], edx
jl case.0x45f28e.1
lea ecx, [ecx]
call dword [sym.imp.WINMM.dll_timeGetTime]
push 0
push 0
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x80]
push eax
mov ecx, eax
push ecx
push 0
push 8
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
cmp byte [0x58f9cb], 0
je 0x45feca
mov edx, dword [0x49ab6c]
cmp dword [edx + 0x514], 0
je 0x45feca
mov eax, dword [0x497848]
mov ecx, dword [0x4967f0]
push eax
push ecx
push 8
push 0
push 0
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x45feec
mov edx, dword [0x497848]
mov eax, dword [0x4967f0]
push 0xcc0020
push 0
push ebx
push edx
push eax
push 8
push 0
push 0
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x45ff0c
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
cmp eax, esi
jae 0x45ff25
mov edx, esi
sub edx, eax
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub ebx, 8
jns 0x45fe70
jmp case.0x45f28e.1
mov ebx, dword [0x4965ec]
mov ecx, ebx
imul ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
mov ecx, dword [0x4967f0]
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
mov dword [esp + 0x80], ebx
add ebx, 0xfffffff9
add esi, edx
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x14], eax
test ebx, ebx
jle case.0x45f28e.1
lea ecx, [ecx]
call dword [sym.imp.WINMM.dll_timeGetTime]
push 0
push 0
lea edx, [esp + 0x80]
push edx
mov ebx, eax
mov eax, edx
push eax
push 0
push 0xfffffffffffffff8
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
cmp byte [0x58f9cb], 0
je 0x45fff0
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x45fff0
mov edx, dword [0x497848]
mov eax, dword [0x4967f0]
mov ecx, dword [0x4965ec]
push edx
push eax
push 8
push 0
add ecx, 0xfffffff8
push ecx
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x46001e
mov edx, dword [esp + 0x14]
mov eax, dword [0x497848]
mov ecx, dword [0x4967f0]
push 0xcc0020
push 0
push edx
mov edx, dword [0x4965ec]
push eax
push ecx
push 8
push 0
add edx, 0xfffffff8
push edx
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x46003e
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, ebx
cmp eax, esi
jae 0x460055
mov ecx, esi
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
mov edx, dword [0x4965ec]
add eax, 8
add edx, 0xfffffff9
cmp eax, edx
mov dword [esp + 0x14], eax
jl 0x45ff90
jmp case.0x45f28e.1
mov ebx, dword [0x4967f0]
mov ecx, ebx
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
mov ecx, dword [0x4965ec]
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
mov dword [esp + 0x84], ebx
add ebx, 0xfffffffa
add esi, edx
cmp ebx, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ecx
jl case.0x45f28e.1
mov edi, edi
call dword [sym.imp.WINMM.dll_timeGetTime]
push 0
push 0
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x30], eax
mov eax, edx
push eax
push 6
push 0
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
cmp byte [0x58f9cb], 0
je 0x46012a
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x46012a
mov edx, dword [0x497848]
mov eax, dword [0x4965ec]
push edx
push 6
push eax
push 0
push 0
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x46014d
mov ecx, dword [0x497848]
mov edx, dword [0x4965ec]
push 0xcc0020
push ebx
push 0
push ecx
push 6
push edx
push 0
push 0
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
mov eax, dword [esp + 0x2c]
push eax
call fcn.00402780
cmp dword [0x58faec], 0
je 0x46016d
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
cmp eax, esi
jae 0x460186
mov ecx, esi
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub ebx, 6
jns 0x4600d0
jmp case.0x45f28e.1
mov ebx, dword [0x4967f0]
mov ecx, ebx
imul ecx, esi
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x66666667
imul ecx
sar edx, 5
mov esi, edx
shr esi, 0x1f
xor eax, eax
add esi, edx
mov edx, dword [0x4965ec]
mov dword [esp + 0x84], ebx
add ebx, 0xfffffffa
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
mov dword [esp + 0x14], eax
js case.0x45f28e.1
mov edi, edi
call dword [sym.imp.WINMM.dll_timeGetTime]
push 0
push 0
mov ebx, eax
lea eax, [esp + 0x80]
push eax
mov ecx, eax
push ecx
push 0xfffffffffffffffa
push 0
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
cmp byte [0x58f9cb], 0
je 0x460250
mov edx, dword [0x49ab6c]
cmp dword [edx + 0x514], 0
je 0x460250
mov eax, dword [0x497848]
mov ecx, dword [0x4965ec]
mov edx, dword [0x4967f0]
push eax
push 6
push ecx
add edx, 0xfffffffa
push edx
push 0
push edi
call fcn.00421f60
add esp, 0x18
jmp 0x46027e
mov eax, dword [esp + 0x14]
mov ecx, dword [0x497848]
mov edx, dword [0x4965ec]
push 0xcc0020
push eax
mov eax, dword [0x4967f0]
push 0
push ecx
push 6
push edx
add eax, 0xfffffffa
push eax
push 0
push edi
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x46029e
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, ebx
cmp eax, esi
jae 0x4602b5
mov edx, esi
sub edx, eax
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4967f0]
add eax, 6
add ecx, 0xfffffffa
cmp eax, ecx
mov dword [esp + 0x14], eax
jle 0x4601f0
jmp case.0x45f28e.1
lea ecx, [esp + 0x8c]
call fcn.00401100
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
push edx
lea eax, [esp + 0x90]
xor edi, edi
push eax
mov dword [esp + 0x340], edi
call fcn.00402010
lea ecx, [esp + 0x8c]
mov dword [esp + 0x304], 3
call fcn.00401ff0
cmp dword [0x4965ec], edi
mov ebx, dword [esp + 0x2f4]
mov dword [esp + 0x64], eax
jle 0x46038c
mov eax, dword [0x4967f0]
xor esi, esi
test eax, eax
jle 0x460380
mov eax, dword [esp + 0x2f0]
cdq
idiv dword [esp + 0x310]
cmp dword [esp + 0x304], 1
jne 0x460354
cdq
sub eax, edx
sar eax, 1
mov ecx, dword [esp + 0x2a4]
mov edx, dword [esp + 0x2f4]
push 0
push 0
push ecx
push edx
push eax
push esi
push edi
mov eax, 0x497df8
call fcn.00403520
mov eax, dword [0x4967f0]
add esi, ebx
cmp esi, eax
jl 0x460336
add edi, dword [esp + 0x64]
cmp edi, dword [0x4965ec]
jl 0x460330
lea ecx, [esp + 0x8c]
call fcn.00401160
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x498054]
cdq
and edx, 0xff
add eax, edx
mov edx, dword [0x496b94]
mov ebx, eax
mov eax, dword [0x49788c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], ecx
mov ecx, dword [0x4965ec]
mov dword [esp + 0x4c], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov esi, dword [esp + 0x30]
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [0x4967f0]
sar eax, 2
mov edi, edx
sub edi, dword [esp + 0x34]
add eax, eax
dec edi
add eax, eax
imul edi, eax
sar ebx, 8
lea esi, [esi + esi*2]
add edi, esi
cmp ebx, 1
mov dword [esp + 0x28], 1
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], ebx
jge 0x460425
mov dword [esp + 0x1c], 1
mov esi, dword [esp + 0x40]
lea ebx, [eax + esi*2]
add ebx, esi
mov dword [esp + 0x18], ebx
cmp esi, ecx
jne 0x460444
mov dword [esp + 0x54], 1
cmp dword [esp + 0x3c], edx
je 0x460450
mov dword [esp + 0x54], 0
lea esp, [esp]
call dword [sym.imp.WINMM.dll_timeGetTime]
cmp dword [esp + 0x54], 0
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
je 0x4604c9
mov edx, dword [0x4967f0]
imul edx, dword [0x4965ec]
test edx, edx
jle 0x460535
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x28]
lea ebx, [ebx]
movzx ebx, byte [esi]
cmp ebx, edx
jg 0x4604b3
movzx ebx, byte [ecx]
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
inc eax
inc ecx
mov byte [esi], 0xff
jmp 0x4604b9
add eax, 3
add ecx, 3
add esi, 3
sub dword [esp + 0x38], 1
jne 0x460490
mov ebx, dword [esp + 0x18]
jmp 0x460535
add eax, edi
add ecx, edi
cmp dword [esp + 0x3c], 0
mov edx, esi
lea esi, [edi + edx]
jle 0x460535
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x460528
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x28]
movzx ebx, byte [esi]
cmp ebx, edx
jg 0x460514
movzx ebx, byte [ecx]
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
movzx ebx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], bl
inc eax
inc ecx
mov byte [esi], 0xff
jmp 0x46051a
add eax, 3
add ecx, 3
add esi, 3
sub dword [esp + 0x38], 1
jne 0x4604f1
mov ebx, dword [esp + 0x18]
sub eax, ebx
sub ecx, ebx
sub esi, ebx
sub dword [esp + 0x20], 1
jne 0x4604e1
cmp byte [0x58f9cb], 0
je 0x460576
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x460576
mov ecx, dword [0x496b50]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x6c]
push ecx
push edx
push eax
call fcn.00421f60
add esp, 0x18
jmp 0x4605a6
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
mov edx, dword [0x496b50]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x54]
push edx
push ecx
push eax
mov eax, dword [esp + 0x80]
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x4605c6
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
sub ecx, dword [esp + 0x24]
xor edx, edx
mov eax, ecx
div dword [esp + 0x1c]
mov esi, eax
cmp esi, 1
jae 0x4605f9
mov esi, 1
cmp ecx, dword [esp + 0x14]
jae 0x4605f9
mov edx, dword [esp + 0x14]
sub edx, ecx
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x28]
add eax, esi
cmp eax, 0xff
mov dword [esp + 0x28], eax
jl 0x460450
jmp case.0x45f28e.1
mov ecx, dword [0x4965ec]
mov eax, 0x66666667
imul esi
sar edx, 2
mov edi, edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
shr edi, 0x1f
add edi, edx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
and edx, 3
add eax, edx
mov edx, dword [0x4967f0]
sar eax, 2
add eax, eax
push 0
add eax, eax
push 0
mov dword [esp + 0x6c], eax
mov eax, dword [0x496b50]
push eax
push edx
push ecx
push 0
push 0
mov eax, 0x497df8
mov dword [esp + 0x60], edi
call fcn.00403520
cmp dword [0x4965ec], 0x280
mov eax, dword [0x498054]
mov esi, dword [0x496b94]
mov dword [esp + 0x54], eax
jl 0x460697
mov eax, 0xa0
jmp 0x4606a3
lea ecx, [edi + edi]
mov eax, 0x50
mov dword [esp + 0x44], ecx
mov edi, 5
cmp eax, edi
mov dword [esp + 0x5c], eax
mov dword [esp + 0x50], edi
jl 0x4608c2
mov eax, dword [esp + 0x64]
mov edx, dword [0x4965ec]
mov ebx, edi
imul ebx, eax
lea ecx, [edi + edi*2]
lea edx, [edx + edx*2]
sub ebx, edx
sub eax, ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x88], eax
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [esp + 0x24], eax
mov eax, dword [0x4967f0]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x18], ecx
jle 0x460807
mov edx, edi
neg edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x20], eax
mov edx, ecx
jmp 0x460710
add edx, edi
cmp edx, eax
mov dword [esp + 0x1c], edx
jl 0x460724
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], eax
jmp 0x460728
mov dword [esp + 0x38], edi
mov edx, dword [0x4965ec]
xor eax, eax
test edx, edx
jle 0x4607e6
mov dword [esp + 0x28], edx
lea esp, [esp]
add eax, edi
cmp eax, edx
mov dword [esp + 0x58], eax
jle 0x460754
mov edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
jmp 0x460758
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x54]
movzx edx, byte [edi + ecx]
movzx edi, byte [edi + ecx + 1]
mov ebx, dword [esp + 0x70]
mov eax, ecx
inc ecx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x54]
movzx edi, byte [edi + ecx + 1]
inc ecx
add ebx, 0xfffffffe
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0x38]
add ecx, ebx
test edi, edi
jle 0x4607c4
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x18]
test edi, edi
jle 0x4607b6
movzx ebx, byte [esp + 0x74]
mov byte [eax + esi], dl
inc eax
mov byte [eax + esi], bl
movzx ebx, byte [esp + 0x6c]
inc eax
mov byte [eax + esi], bl
inc eax
sub edi, 1
jne 0x460797
mov edi, dword [esp + 0x18]
add eax, dword [esp + 0x88]
sub dword [esp + 0x4c], 1
jne 0x460793
mov edx, dword [esp + 0x48]
add dword [esp + 0x28], edx
mov eax, dword [esp + 0x58]
mov edx, dword [0x4965ec]
cmp eax, edx
mov edi, dword [esp + 0x50]
jl 0x460740
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x48]
add dword [esp + 0x20], edx
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, dword [0x4967f0]
add ecx, ebx
cmp edx, eax
jl 0x460710
cmp byte [0x58f9cb], 0
je 0x460840
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x460840
mov edx, dword [0x496b50]
mov ecx, dword [esp + 0x60]
push edx
push eax
mov eax, dword [0x4965ec]
push eax
push 0
push 0
push ecx
call fcn.00421f60
add esp, 0x18
jmp 0x460866
mov edx, dword [0x496b50]
mov ecx, dword [esp + 0x60]
push 0xcc0020
push 0
push 0
push edx
push eax
mov eax, dword [0x4965ec]
push eax
push 0
push 0
push ecx
call dword [sym.imp.GDI32.dll_BitBlt]
mov edx, dword [esp + 0x2c]
push edx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x460882
cmp byte [0x4963e4], 0
jne 0x4608af
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
jae 0x46089d
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
add edi, edi
cmp edi, dword [esp + 0x5c]
mov dword [esp + 0x50], edi
jle 0x4606b8
jmp 0x4608c2
cmp byte [0x544540], 0
je 0x4608c2
mov dword [0x58faec], 1
cmp dword [ebp + 8], 1
je 0x4608d4
mov eax, dword [0x496910]
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [0x4967f0]
mov edx, dword [0x4965ec]
push ecx
xor ebx, ebx
xor ecx, ecx
call fcn.0044e920
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x10]
add esp, 4
push edx
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
jmp 0x4613e0
mov edi, dword [0x4967f0]
mov ecx, dword [0x4965ec]
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
lea eax, [edi - 1]
mov dword [esp + 0x50], eax
lea edx, [ecx - 1]
mov dword [esp + 0x5c], edx
mov eax, 0x66666667
imul esi
sar edx, 2
mov ebx, edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
shr ebx, 0x1f
add ebx, edx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, 3
cdq
push 0
and edx, 3
add eax, edx
mov edx, dword [0x496b50]
push 0
push edx
sar eax, 2
push edi
add eax, eax
push ecx
add eax, eax
push 0
mov dword [esp + 0x7c], eax
push 0
mov eax, 0x497df8
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], edi
mov dword [esp + 0x60], ebx
call fcn.00403520
mov ecx, dword [0x4965ec]
cmp ecx, 0x280
mov eax, dword [0x49788c]
mov esi, dword [0x496b94]
mov dword [esp + 0x54], eax
jl 0x4609ac
mov edi, 0xa0
jmp 0x4609b8
lea edx, [ebx + ebx]
mov edi, 0x50
mov dword [esp + 0x44], edx
cmp edi, 5
mov dword [esp + 0x1c], edi
jl case.0x45f28e.1
jmp 0x4609d6
mov ecx, dword [0x4965ec]
mov eax, dword [esp + 0x64]
mov ebx, edi
imul ebx, eax
lea edx, [edi + edi*2]
lea ecx, [ecx + ecx*2]
sub ebx, ecx
sub eax, edx
mov dword [esp + 0x70], edx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x88], eax
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [esp + 0x24], eax
mov eax, dword [0x4967f0]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x18], ecx
jle 0x460b17
mov edx, edi
neg edx
mov dword [esp + 0x48], edx
mov dword [esp + 0x20], eax
mov edx, ecx
add edx, edi
cmp edx, eax
mov dword [esp + 0x14], edx
jl 0x460a37
mov edx, dword [esp + 0x20]
mov dword [esp + 0x38], edx
jmp 0x460a3b
mov dword [esp + 0x38], edi
mov edx, dword [0x4965ec]
xor eax, eax
test edx, edx
jle 0x460af6
mov dword [esp + 0x28], edx
nop
add eax, edi
cmp eax, edx
mov dword [esp + 0x58], eax
jle 0x460a64
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jmp 0x460a68
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x54]
movzx edx, byte [edi + ecx]
movzx edi, byte [edi + ecx + 1]
mov ebx, dword [esp + 0x70]
mov eax, ecx
inc ecx
mov dword [esp + 0x74], edi
mov edi, dword [esp + 0x54]
movzx edi, byte [edi + ecx + 1]
inc ecx
add ebx, 0xfffffffe
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0x38]
add ecx, ebx
test edi, edi
jle 0x460ad4
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x18]
test edi, edi
jle 0x460ac6
movzx ebx, byte [esp + 0x74]
mov byte [eax + esi], dl
inc eax
mov byte [eax + esi], bl
movzx ebx, byte [esp + 0x6c]
inc eax
mov byte [eax + esi], bl
inc eax
sub edi, 1
jne 0x460aa7
mov edi, dword [esp + 0x18]
add eax, dword [esp + 0x88]
sub dword [esp + 0x4c], 1
jne 0x460aa3
mov edx, dword [esp + 0x48]
add dword [esp + 0x28], edx
mov eax, dword [esp + 0x58]
mov edx, dword [0x4965ec]
cmp eax, edx
mov edi, dword [esp + 0x1c]
jl 0x460a50
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
add dword [esp + 0x20], edx
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, dword [0x4967f0]
add ecx, ebx
cmp edx, eax
jl 0x460a23
cmp byte [0x58f9cb], 0
je 0x460b50
mov ecx, dword [0x49ab6c]
cmp dword [ecx + 0x514], 0
je 0x460b50
mov edx, dword [0x496b50]
mov ecx, dword [esp + 0x60]
push edx
push eax
mov eax, dword [0x4965ec]
push eax
push 0
push 0
push ecx
call fcn.00421f60
add esp, 0x18
jmp 0x460b76
mov edx, dword [0x496b50]
mov ecx, dword [esp + 0x60]
push 0xcc0020
push 0
push 0
push edx
push eax
mov eax, dword [0x4965ec]
push eax
push 0
push 0
push ecx
call dword [sym.imp.GDI32.dll_BitBlt]
mov edx, dword [esp + 0x2c]
push edx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x460b96
cmp byte [0x4963e4], 0
jne 0x45f377
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
jae 0x460bb1
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sar edi, 1
cmp edi, 5
mov dword [esp + 0x1c], edi
jge 0x4609d0
jmp case.0x45f28e.1
lea ecx, [esp + 0x8c]
call fcn.00401100
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x90]
push ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x340], 1
call fcn.00402010
lea ecx, [esp + 0x8c]
mov dword [esp + 0x304], 3
call fcn.00401ff0
mov ebx, dword [esp + 0x2f4]
xor edi, edi
cmp dword [0x4965ec], edi
mov dword [esp + 0x64], eax
jle 0x460c7f
mov eax, dword [0x4967f0]
xor esi, esi
test eax, eax
jle 0x460c73
mov eax, dword [esp + 0x2f0]
cdq
idiv dword [esp + 0x310]
cmp dword [esp + 0x304], 1
jne 0x460c47
cdq
sub eax, edx
sar eax, 1
mov edx, dword [esp + 0x2a4]
mov ecx, dword [esp + 0x2f4]
push 0
push 0
push edx
push ecx
push eax
push esi
push edi
mov eax, 0x497df8
call fcn.00403520
mov eax, dword [0x4967f0]
add esi, ebx
cmp esi, eax
jl 0x460c29
add edi, dword [esp + 0x64]
cmp edi, dword [0x4965ec]
jl 0x460c23
lea ecx, [esp + 0x8c]
call fcn.00401160
lea ecx, [esp + 0x8c]
call fcn.00401100
mov dword [esp + 0x338], 2
mov edx, dword [0x4967f0]
imul edx, dword [0x4965ec]
push edx
call fcn.00407ea1
mov esi, dword [0x4967f0]
mov edi, dword [0x4965ec]
mov ecx, eax
mov eax, esi
imul eax, edi
add esp, 4
mov dword [esp + 0x58], ecx
test eax, eax
jle 0x460cdf
push eax
push 0
push ecx
call fcn.004112a0
add esp, 0xc
push esi
push edi
lea eax, [esp + 0x94]
call fcn.004023a0
mov eax, dword [0x496b50]
mov ecx, dword [0x4967f0]
mov edx, dword [0x4965ec]
push 0
push 0
push eax
push ecx
push edx
push 0
push 0
lea eax, [esp + 0xa8]
call fcn.00403520
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x498054]
cdq
and edx, 0x1ff
add eax, edx
mov edx, dword [0x496b94]
sar eax, 9
mov dword [esp + 0x70], eax
mov eax, dword [0x49788c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], ecx
mov ecx, dword [0x4965ec]
mov dword [esp + 0x4c], edx
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 7]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov edi, dword [esp + 0x30]
add eax, 3
cdq
mov esi, dword [esp + 0x2e8]
and edx, 3
add eax, edx
mov edx, dword [0x4967f0]
sar eax, 2
add eax, eax
mov ebx, edx
sub ebx, dword [esp + 0x34]
add eax, eax
dec ebx
imul ebx, eax
lea edi, [edi + edi*2]
add ebx, edi
mov edi, dword [esp + 0x40]
lea eax, [eax + edi*2]
add eax, edi
mov dword [esp + 0x18], 1
mov dword [esp + 0x74], esi
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x64], eax
cmp edi, ecx
jne 0x460dbd
mov dword [esp + 0x54], 1
cmp dword [esp + 0x3c], edx
je 0x460dc5
mov dword [esp + 0x54], 0
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
jmp 0x460dd0
call edi
cmp dword [esp + 0x54], 0
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edi
je 0x460ef0
mov edx, dword [0x4967f0]
imul edx, dword [0x4965ec]
test edx, edx
jle 0x46100a
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x1c]
movzx ebx, byte [edx]
mov edx, dword [esp + 0x18]
sub edx, ebx
cmp byte [edi], 1
je 0x460ecd
cmp edx, 0xfe
jle 0x460e4f
movzx edx, byte [ecx]
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc ecx
mov byte [edi], 1
jmp 0x460ed3
lea ebx, [edx - 1]
cmp ebx, 0xfd
ja 0x460ecd
movzx ebx, byte [ecx]
shl edx, 8
mov dword [esp + 0x20], edx
mov edi, 0x4ab488
sub edi, edx
movzx edx, byte [esi]
movzx edx, byte [edx + edi]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x20]
add dl, byte [ebx + edi + 0x49b588]
mov ebx, dword [esp + 0x14]
mov byte [eax], dl
movzx edx, byte [esi + 1]
movzx edx, byte [edx + ebx]
movzx edi, byte [ecx + 1]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x49b588]
mov ebx, dword [esp + 0x14]
inc esi
inc ecx
mov byte [eax + 1], dl
movzx edx, byte [esi + 1]
movzx edi, byte [ecx + 1]
movzx edx, byte [edx + ebx]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x49b588]
mov edi, dword [esp + 0x28]
inc eax
inc esi
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc esi
inc ecx
jmp 0x460ed6
add eax, 3
add ecx, 3
add esi, 3
add dword [esp + 0x1c], 3
inc edi
sub dword [esp + 0x38], 1
mov dword [esp + 0x28], edi
jne 0x460e12
jmp 0x46100a
add eax, ebx
add ecx, ebx
add esi, ebx
add ebx, edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x1c], ebx
test edx, edx
jle 0x46100a
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x40]
test edx, edx
jle 0x460fef
mov dword [esp + 0x38], edx
lea esp, [esp]
movzx ebx, byte [ebx]
mov edx, dword [esp + 0x18]
sub edx, ebx
cmp byte [edi], 1
je 0x460fcb
cmp edx, 0xfe
jle 0x460f56
movzx edx, byte [ecx]
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
movzx edx, byte [ecx + 1]
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc ecx
mov byte [edi], 1
jmp 0x460fd1
ja 0x460fcb
movzx ebx, byte [ecx]
shl edx, 8
mov dword [esp + 0x20], edx
mov edi, 0x4ab488
sub edi, edx
movzx edx, byte [esi]
movzx edx, byte [edx + edi]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x20]
add dl, byte [ebx + edi + 0x49b588]
mov ebx, dword [esp + 0x14]
mov byte [eax], dl
movzx edx, byte [esi + 1]
movzx edx, byte [edx + ebx]
movzx edi, byte [ecx + 1]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x49b588]
mov ebx, dword [esp + 0x14]
inc esi
inc ecx
mov byte [eax + 1], dl
movzx edx, byte [esi + 1]
movzx edi, byte [ecx + 1]
movzx edx, byte [edx + ebx]
mov ebx, dword [esp + 0x20]
add dl, byte [edi + ebx + 0x49b588]
mov edi, dword [esp + 0x28]
inc eax
inc esi
inc ecx
inc eax
mov byte [eax], dl
inc eax
inc esi
inc ecx
jmp 0x460fd4
add eax, 3
add ecx, 3
add esi, 3
mov ebx, dword [esp + 0x1c]
add ebx, 3
inc edi
sub dword [esp + 0x38], 1
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], edi
jne 0x460f20
mov edx, dword [esp + 0x64]
sub ebx, edx
sub eax, edx
sub ecx, edx
sub esi, edx
sub dword [esp + 0x68], 1
mov dword [esp + 0x1c], ebx
jne 0x460f0c
cmp byte [0x58f9cb], 0
je 0x46105a
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x46105a
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov esi, dword [0x496b50]
push 0
call ebx
push 1
mov edi, eax
call ebx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
push 0xcc0020
push eax
mov eax, dword [esp + 0x3c]
push edi
push esi
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x78]
push eax
push ecx
push edx
jmp 0x461084
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
mov edx, dword [0x496b50]
push 0xcc0020
push ecx
push eax
push edx
mov edx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0x54]
push edx
push ecx
push eax
mov eax, dword [esp + 0x80]
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x4610a6
cmp byte [0x4963e4], 0
jne 0x4610f9
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
call edi
mov ecx, eax
sub ecx, dword [esp + 0x24]
xor edx, edx
mov eax, ecx
shl eax, 9
div dword [ebp + 0xc]
mov esi, eax
cmp esi, 1
jae 0x4610db
mov eax, dword [esp + 0x70]
mov esi, 1
cmp ecx, eax
jae 0x4610db
sub eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x18]
add eax, esi
cmp eax, 0x200
mov dword [esp + 0x18], eax
jge 0x46110c
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x6c]
jmp 0x460dd0
cmp byte [0x544540], 0
je 0x46110c
mov dword [0x58faec], 1
mov edx, dword [esp + 0x58]
push edx
call fcn.0040809e
add esp, 4
lea eax, [esp + 0x8c]
call fcn.00401200
cmp dword [esp + 0x2e0], 0
je case.0x45f28e.1
mov eax, dword [esp + 0x2ec]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [esp + 0x2e0]
push ecx
call fcn.00407f4f
add esp, 4
jmp case.0x45f28e.1
mov ecx, dword [0x4965ec]
mov eax, 0x66666667
imul esi
mov eax, dword [0x4967f0]
sar edx, 2
push 0
mov ebx, edx
push 0
shr ebx, 0x1f
add ebx, edx
mov edx, dword [0x496b50]
push edx
push eax
push ecx
push 0
push 0
mov eax, 0x497df8
call fcn.00403520
mov dword [esp + 0x58], 0xa
call dword [sym.imp.WINMM.dll_timeGetTime]
xor esi, esi
cmp dword [0x4967f0], esi
mov dword [esp + 0x24], eax
jle 0x4611ea
lea esp, [esp]
mov edx, dword [esp + 0x2c]
push edx
call fcn.00402780
cmp dword [0x58faec], 0
je 0x4611cc
cmp byte [0x4963e4], 0
jne 0x4611d7
inc esi
cmp esi, dword [0x4967f0]
jl 0x4611b0
jmp 0x4611ea
cmp byte [0x544540], 0
je 0x4611ea
mov dword [0x58faec], 1
cmp byte [0x58f9cb], 0
je 0x461248
mov eax, dword [0x49ab6c]
cmp dword [eax + 0x514], 0
je 0x461248
mov ecx, dword [0x496b50]
mov edx, dword [0x4967f0]
mov eax, dword [0x4965ec]
push ecx
push edx
push eax
push 0
push 0
push edi
call fcn.00421f60
mov ecx, dword [0x496b50]
mov edx, dword [0x4967f0]
mov eax, dword [0x4965ec]
push ecx
mov ecx, dword [0x498010]
push edx
push eax
push 0
push 0
push ecx
call fcn.00421f60
add esp, 0x30
jmp 0x46129c
mov edx, dword [0x496b50]
mov eax, dword [0x4967f0]
mov ecx, dword [0x4965ec]
mov esi, dword [sym.imp.GDI32.dll_BitBlt]
push 0xcc0020
push 0
push 0
push edx
push eax
push ecx
push 0
push 0
push edi
call esi
mov edx, dword [0x496b50]
mov eax, dword [0x4967f0]
mov ecx, dword [0x4965ec]
push 0xcc0020
push 0
push 0
push edx
mov edx, dword [0x498010]
push eax
push ecx
push 0
push 0
push edx
call esi
call dword [sym.imp.WINMM.dll_timeGetTime]
sub eax, dword [esp + 0x24]
cmp eax, ebx
jae 0x4612b5
mov ecx, ebx
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
sub dword [esp + 0x58], 1
jne 0x461195
mov edx, dword [0x496910]
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x4967f0]
mov edx, dword [0x4965ec]
push eax
xor ebx, ebx
xor ecx, ecx
call fcn.0044e920
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x10]
add esp, 4
push edi
push edx
call dword [sym.imp.USER32.dll_ReleaseDC]
jmp 0x4613e0
push 0x487df0
push 0x487e30
call fcn.00458fe0
add esp, 8
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x10]
push eax
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [0x544540], 0
jne 0x461331
mov dword [0x58faec], 0
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov edx, dword [0x497848]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
push edi
push esi
push edx
push eax
push ecx
push edi
push esi
mov eax, 0x496938
call fcn.00403520
mov al, byte [0x58f9cb]
mov ecx, dword [0x49ab6c]
test al, al
je 0x461376
cmp dword [ecx + 0x514], 0
je 0x461376
push 0
push 0
jmp 0x4613b4
mov edx, dword [esp + 0x5c]
inc edx
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x50]
inc edx
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], edi
mov dword [esp + 0x84], edx
test al, al
je 0x4613ad
cmp dword [ecx + 0x514], 0
je 0x4613ad
mov eax, dword [ebx + 0x10]
push 0
push 0
push eax
jmp 0x4613b8
push 0
lea ecx, [esp + 0x7c]
push ecx
mov edx, dword [ebx + 0x10]
push edx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [0x49ab6c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.USER32.dll_UpdateWindow]
cmp dword [ebp + 8], 1
je 0x4613e0
mov edx, dword [0x496910]
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esp + 0x330]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x318]
xor ecx, esp
call fcn.00407f40
mov esp, ebp
pop ebp
ret 0xc