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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x90
push ebx
push ebp
mov ebp, dword [sym.imp.USER32.dll_SetRect]
push esi
push edi
mov eax, 0xa
push 0xa0
mov dword [esp + 0x90], eax
mov dword [esp + 0x98], eax
push 0x90
push 0x90
lea eax, [esp + 0x34]
xor ebx, ebx
mov ecx, 0xc
push 0x80
push eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], 0x1c
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
call ebp
xor edi, edi
xor esi, esi
cmp esi, ebx
jl 0x40bc6f
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
mov ecx, esi
sub ecx, eax
add ecx, edx
cmp ecx, 0x280
jg 0x40bc6f
cmp edi, ebx
jl 0x40bc6f
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
mov edx, edi
sub edx, eax
add edx, ecx
cmp edx, 0x1e0
jg 0x40bc6f
mov eax, dword [0x4baf38]
lea edx, [esp + 0x28]
push 0x11
push edx
mov edx, dword [0x4baf3c]
mov ecx, dword [eax]
push edx
push edi
push esi
push eax
call dword [ecx + 0x1c]
add esi, 0x10
cmp esi, 0x280
jl 0x40bc20
add edi, 0x10
cmp edi, 0x1e0
jl 0x40bc1e
cmp dword [0x4baf20], ebx
jne 0x40bf30
push 1
push 0x10
mov dword [0x49d280], 1
mov dword [0x4baf28], ebx
mov dword [0x4b8eec], ebx
mov dword [0x4b8fc0], 0x9999999a
mov dword [0x4b8fc4], 0xbfc99999
call fcn.0040de80
or ecx, 0xffffffff
mov edi, 0x41b684
xor eax, eax
lea edx, [esp + 0x7c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [0x41ce48], 0
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x7e]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [0x41ce4c], 0x40977000
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, 0x41b680
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x80]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x41b67c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x82]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x41b678
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x41b674
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
lea edx, [esp + 0x86]
rep movsb byte es:[edi], byte [esi]
mov edi, 0x41b67c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x98
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x8c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push 0x28
rep movsb byte es:[edi], byte [esi]
mov edi, str.GIKNAR
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x90
mov eax, ecx
mov esi, edi
mov edi, edx
push 0x20
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 0x4a15f0
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call ebp
push 0x98
push 0x30
push 0x90
push 0x28
push 0x4a1600
call ebp
mov edx, dword [0x4b8eec]
lea edi, [esp + 0x7c]
push edi
mov esi, edx
call fcn.004046a0
mov edx, dword [0x4b8eec]
add esp, 4
cmp esi, edx
jge 0x40bede
fld qword [0x419420]
fsin
lea eax, [esi + esi*2]
mov ecx, edx
shl eax, 4
add eax, 0x4a1638
sub ecx, esi
fld qword [0x419420]
fcos
fld qword [esp + 0x38]
fmul qword [0x419300]
fld st(0)
fsin
fstp qword [esp + 0x20]
fcos
fld qword [eax - 8]
fld qword [eax]
fld st(1)
fmul st(4)
fld st(1)
fmul st(6)
add eax, 0x30
dec ecx
fsubp st(1)
fstp qword [eax - 0x38]
fmul st(3)
fxch st(1)
fmul st(4)
faddp st(1)
fsub qword [0x419418]
fst qword [eax - 0x30]
mov esi, dword [eax - 0x40]
mov ebp, dword [eax - 0x3c]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ebp
fld qword [esp + 0x18]
fmul st(2)
fld qword [esp + 0x20]
fmul st(2)
fsubp st(1)
fstp qword [eax - 0x40]
fld qword [esp + 0x18]
fmul qword [esp + 0x20]
fld st(2)
fmul st(2)
faddp st(1)
fstp qword [eax - 0x30]
fstp st(0)
fld qword [eax - 0x38]
fsub qword [0x419410]
fstp qword [eax - 0x38]
jne 0x40be71
fstp st(0)
fstp st(0)
fstp st(0)
cmp ebx, 6
je 0x40bf15
lea ecx, [edi + 2]
push ecx
call fcn.004028e0
push edi
mov esi, eax
call fcn.004028e0
add esp, 8
add esi, eax
mov dword [esp + 0x14], esi
mov edx, dword [0x4b8eec]
fild dword [esp + 0x14]
fmul qword [0x419408]
fadd qword [esp + 0x38]
fstp qword [esp + 0x38]
inc ebx
add edi, 2
cmp ebx, 7
jl 0x40be25
mov dword [0x4baf20], 1
xor ebx, ebx
jmp 0x40bf36
mov edx, dword [0x4b8eec]
fld qword [0x4b8fc0]
fmul qword [0x419230]
cmp edx, ebx
fdiv qword [0x49d278]
fmul qword [0x419300]
fld st(0)
fsin
fstp qword [esp + 0x20]
fcos
fstp qword [esp + 0x38]
jle 0x40bf96
mov eax, 0x4a1638
mov ecx, edx
fld qword [eax - 0x10]
fld qword [eax]
fld st(1)
fmul qword [esp + 0x38]
fld qword [esp + 0x20]
fmul st(2)
add eax, 0x30
dec ecx
fsubp st(1)
fstp qword [eax - 0x40]
fxch st(1)
fmul qword [esp + 0x20]
fld qword [esp + 0x38]
fmul st(2)
faddp st(1)
fstp qword [eax - 0x30]
fstp st(0)
jne 0x40bf67
xor eax, eax
cmp edx, ebx
jle 0x40bfab
mov ecx, 0x4b8fdc
mov dword [ecx], eax
inc eax
add ecx, 4
cmp eax, edx
jl 0x40bfa1
dec edx
push edx
push ebx
call fcn.00404940
mov eax, dword [0x4b8eec]
add esp, 8
cmp eax, ebx
mov dword [esp + 0x14], ebx
jle 0x40c07f
mov ebp, 0x4b8fdc
mov eax, dword [ebp]
fld qword [0x41ce48]
lea esi, [eax + eax*2]
shl esi, 4
fadd qword [esi + 0x4a1638]
fld qword [esi + 0x4a1630]
fmul qword [0x419360]
mov edi, dword [esi + 0x4a1650]
shl edi, 4
fdiv st(1)
add edi, 0x4a15f0
call fcn.0041028c
fld qword [esi + 0x4a1628]
fmul qword [0x419358]
mov ebx, 0xffffff78
sub ebx, eax
fdiv st(1)
call fcn.0041028c
mov ecx, 0x1bc
sub ecx, eax
fstp st(0)
js 0x40c065
mov edx, dword [edi + 8]
mov eax, dword [edi]
sub edx, eax
add edx, ecx
cmp edx, 0x280
jg 0x40c065
test ebx, ebx
jl 0x40c065
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 4]
sub eax, edx
add eax, ebx
cmp eax, 0x1e0
jg 0x40c065
mov esi, dword [0x4baf3c]
mov eax, dword [0x4baf38]
push 0x11
push edi
mov edx, dword [eax]
push esi
push ebx
push ecx
push eax
call dword [edx + 0x1c]
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4b8eec]
inc eax
add ebp, 4
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x40bfcc
cmp dword [0x49d280], 1
jne 0x40c598
push 0x2000
push 0
push 0
push 0
push str.DATA
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.USER32.dll_LoadImageA]
mov esi, eax
push 0
mov dword [esp + 0x24], esi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push esi
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.GDI32.dll_SelectObject]
push 0xa0
mov dword [esp + 0x3c], eax
push 0xc0
push 0x90
lea eax, [esp + 0x34]
push 0xb0
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov edi, 0x10
mov esi, 0x10
test esi, esi
jl 0x40c141
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
mov ecx, esi
sub ecx, ebx
add ecx, edx
cmp ecx, 0x280
jg 0x40c141
test edi, edi
jl 0x40c141
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
mov edx, edi
sub edx, ebx
add edx, ecx
cmp edx, 0x1e0
jg 0x40c141
mov eax, dword [0x4baf38]
lea edx, [esp + 0x28]
push 0x11
push edx
mov edx, dword [0x4baf3c]
mov ecx, dword [eax]
push edx
push edi
push esi
push eax
call dword [ecx + 0x1c]
add esi, 0x10
cmp esi, 0x100
jl 0x40c0f2
add edi, 0x10
cmp edi, 0xe0
jl 0x40c0ed
mov ebx, dword [sym.imp.GDI32.dll_GetPixel]
xor ebp, ebp
mov dword [esp + 0x18], 0x10
xor edi, edi
mov esi, 0x10
mov ecx, dword [0x4baf28]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*2]
lea edx, [ebp + eax*8]
lea eax, [eax + edx + 1]
push eax
mov eax, ecx
cdq
mov ecx, 0xa
idiv ecx
mov eax, dword [esp + 0x18]
shl edx, 4
lea edx, [edx + edi + 1]
push edx
push eax
call ebx
cmp eax, 0xffff
ja 0x40c21d
je 0x40c216
cmp eax, 0x8000
ja 0x40c1f9
je 0x40c1ef
sub eax, 0
je 0x40c1e5
sub eax, 0x80
je 0x40c1db
sub eax, 0x7f
jne 0x40c2f0
mov eax, 4
jmp 0x40c279
mov eax, 8
jmp 0x40c279
mov eax, 7
jmp 0x40c279
mov eax, 0xa
jmp 0x40c279
cmp eax, 0x8080
je 0x40c212
cmp eax, 0xff00
jne 0x40c2f0
mov eax, 0xb
jmp 0x40c279
xor eax, eax
jmp 0x40c279
mov eax, 1
jmp 0x40c279
cmp eax, 0xff0000
ja 0x40c25b
je 0x40c254
cmp eax, 0x800000
je 0x40c24d
cmp eax, 0x808080
je 0x40c246
cmp eax, 0xc0c0c0
jne 0x40c2f0
mov eax, 0xc
jmp 0x40c279
mov eax, 3
jmp 0x40c279
mov eax, 9
jmp 0x40c279
mov eax, 2
jmp 0x40c279
cmp eax, 0xff00ff
je 0x40c274
cmp eax, 0xffff00
jne 0x40c2f0
mov eax, 6
jmp 0x40c279
mov eax, 5
lea ecx, [eax + 0x10]
add eax, 0xf
shl ecx, 4
push 0xb0
push ecx
shl eax, 4
push 0xa8
lea edx, [esp + 0x34]
push eax
push edx
call dword [sym.imp.USER32.dll_SetRect]
test esi, esi
jl 0x40c2f0
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
mov eax, esi
sub eax, ecx
add eax, edx
cmp eax, 0x280
jg 0x40c2f0
mov eax, dword [esp + 0x18]
test eax, eax
jl 0x40c2f0
mov edx, dword [esp + 0x34]
mov ecx, eax
sub ecx, dword [esp + 0x2c]
add ecx, edx
cmp ecx, 0x1e0
jg 0x40c2f0
mov eax, dword [0x4baf38]
lea ecx, [esp + 0x28]
push 0x11
push ecx
mov ecx, dword [0x4baf3c]
mov edx, dword [eax]
push ecx
mov ecx, dword [esp + 0x24]
push ecx
push esi
push eax
call dword [edx + 0x1c]
add esi, 0x10
inc edi
cmp esi, 0x100
jl 0x40c16e
mov eax, dword [esp + 0x18]
inc ebp
add eax, 8
cmp eax, 0xe0
mov dword [esp + 0x18], eax
jl 0x40c167
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
push edx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [0x49d280], 1
jne 0x40c598
push 1
push str.RANK
push 0xf0
push 0x50
call fcn.004026c0
push 1
push str.TIME
push 0xf0
push 0x90
call fcn.004026c0
push 1
push str.NAME
push 0xf0
push 0x110
call fcn.004026c0
push 1
push str.DATE
push 0xf0
push 0x180
call fcn.004026c0
add esp, 0x40
xor ebx, ebx
mov dword [esp + 0x6c], 2
mov ebp, 0x100
mov edx, dword [0x4baf28]
xor ecx, ecx
lea eax, [ebx + 1]
mov esi, dword [edx*4 + 0x4b8ef4]
mov dword [esp + 0x14], eax
cmp esi, ebx
push eax
setne cl
dec ecx
lea eax, [esp + 0x44]
and ecx, 2
push str._2.2d
mov edi, ecx
push eax
mov dword [esp + 0x24], edi
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x4c]
push edi
push ecx
push ebp
push 0x5a
call fcn.004026c0
mov eax, dword [0x4baf28]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*2]
shl eax, 5
mov ecx, dword [eax + 0x41d488]
mov eax, 0x45e7b273
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add edx, eax
mov esi, edx
lea eax, [esi + esi*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 5
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [esi + esi*2]
mov esi, ecx
lea eax, [eax + eax*4]
lea edx, [edx + eax*4]
mov eax, 0x45e7b273
imul edx, edx, 0x3e8
sub esi, edx
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 5
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x45e7b273
mov dword [esp + 0x3c], edx
imul ecx
sar edx, 0xe
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov eax, 0x66666667
mov ecx, edx
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [esp + 0x5c]
push edx
mov edx, dword [esp + 0x40]
push edx
push ecx
push str._2.2dm_2.2ds_2.2d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x70]
push edi
push ecx
push ebp
push 0x90
call fcn.004026c0
mov eax, dword [0x4baf28]
or ecx, 0xffffffff
add esp, 0x40
lea edx, [eax + eax*4]
xor eax, eax
lea edi, [ebx + edx*2]
lea edx, [esp + 0x40]
shl edi, 5
add edi, 0x41d4a0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x40]
push esi
push ecx
push ebp
push 0x110
call fcn.004026c0
mov eax, dword [0x4baf28]
lea edx, [eax + eax*4]
lea eax, [ebx + edx*2]
shl eax, 5
mov ecx, dword [eax + 0x41d49c]
mov edx, dword [eax + 0x41d498]
push ecx
mov ecx, dword [eax + 0x41d494]
push edx
mov edx, dword [eax + 0x41d490]
mov eax, dword [eax + 0x41d48c]
push ecx
push edx
push eax
lea ecx, [esp + 0x64]
push str._4.4d__2.2d__2.2d__2.2d:_2.2d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x6c]
push esi
push edx
push ebp
push 0x180
call fcn.004026c0
mov ebx, dword [esp + 0x50]
add ebp, 0x10
add esp, 0x3c
cmp ebp, 0x1a0
jl 0x40c3ad
jmp 0x40c7a4
push 1
push str.RANK
push 0xf0
push 0x50
call fcn.004026c0
push 1
push str.TIME
push 0xf0
push 0x90
call fcn.004026c0
push 1
push str.NAME
push 0xf0
push 0x110
call fcn.004026c0
push 1
push str.DATE
push 0xf0
push 0x180
call fcn.004026c0
add esp, 0x40
xor eax, eax
mov dword [esp + 0x68], 2
mov ebp, 0x100
mov ebx, 0x428f78
mov edx, dword [0x49d298]
xor ecx, ecx
cmp edx, eax
lea edx, [esp + 0x40]
setne cl
dec ecx
and ecx, 2
inc eax
push eax
mov edi, ecx
push str._2.2d
push edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x4c]
push edi
push eax
push ebp
push 0x5a
call fcn.004026c0
mov ecx, dword [ebx]
mov eax, 0x45e7b273
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add edx, eax
mov esi, edx
lea eax, [esi + esi*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 5
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [esi + esi*2]
mov esi, ecx
lea eax, [eax + eax*4]
lea edx, [edx + eax*4]
mov eax, 0x45e7b273
imul edx, edx, 0x3e8
sub esi, edx
imul ecx
sar edx, 0xe
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [edx + edx*2]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea edx, [eax + eax*4]
shl edx, 5
mov eax, edx
mov edx, ecx
sub edx, eax
mov eax, 0x10624dd3
imul edx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x45e7b273
mov dword [esp + 0x3c], edx
imul ecx
sar edx, 0xe
mov ecx, edx
mov eax, 0x66666667
shr ecx, 0x1f
add edx, ecx
mov ecx, edx
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [esp + 0x5c]
push edx
mov edx, dword [esp + 0x40]
push edx
push ecx
push str._2.2dm_2.2ds_2.2d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea ecx, [esp + 0x70]
push edi
push ecx
push ebp
push 0x90
call fcn.004026c0
lea edi, [ebx + 0x18]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x40
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x40]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x18]
lea ecx, [esp + 0x40]
push esi
push ecx
push ebp
push 0x110
call fcn.004026c0
mov edx, dword [ebx + 0x14]
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0xc]
push edx
mov edx, dword [ebx + 8]
push eax
mov eax, dword [ebx + 4]
push ecx
push edx
push eax
lea ecx, [esp + 0x64]
push str._4.4d__2.2d__2.2d__2.2d:_2.2d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x6c]
push esi
push edx
push ebp
push 0x180
call fcn.004026c0
mov eax, dword [esp + 0x50]
add ebp, 0x10
add esp, 0x3c
add ebx, 0x20
cmp ebp, 0x1a0
jl 0x40c604
lea eax, [esp + 0x60]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
xor ebx, ebx
xor esi, esi
mov edi, 0x40
mov ebp, 1
mov eax, dword [esp + esi*4 + 0x8c]
mov ecx, dword [esp + 0x64]
mov edx, eax
shl edx, 4
cmp edx, ecx
jge case.default.0x40c83a
inc eax
shl eax, 4
cmp ecx, eax
jge case.default.0x40c83a
cmp esi, ebx
je 0x40c7e9
cmp esi, ebp
jne 0x40c7fd
mov eax, dword [esp + 0x60]
cmp eax, 0x100
jle 0x40c801
cmp eax, 0x280
jl 0x40c820
jmp 0x40c801
mov eax, dword [esp + 0x60]
cmp esi, 2
je 0x40c80b
cmp esi, 3
jne 0x40c817
cmp eax, 0x10
jle 0x40c817
cmp eax, 0x100
jl 0x40c820
cmp esi, 4
jne case.default.0x40c83a
mov eax, dword [0x4290d0]
mov dword [esp + esi*4 + 0x68], ebp
cmp eax, ebx
je case.default.0x40c83a
cmp esi, 4
ja case.default.0x40c83a
jmp dword [esi*4 + 0x40cbb4]
push 0xc
call fcn.0040df10
push ebx
push 0xc
call fcn.0040de80
mov dword [0x49d280], ebx
mov dword [0x4290d0], ebx
jmp case.default.0x40c83a
push 0xc
call fcn.0040df10
push ebx
push 0xc
call fcn.0040de80
mov dword [0x49d280], ebp
mov dword [0x4290d0], ebx
jmp case.default.0x40c83a
cmp dword [0x49d280], ebp
jne case.default.0x40c83a
push 0xc
call fcn.0040df10
push ebx
push 0xc
call fcn.0040de80
mov eax, dword [0x4baf28]
dec eax
mov dword [0x4baf28], eax
jns 0x40c8b3
mov dword [0x4baf28], 0x31
mov dword [0x4290d0], ebx
jmp case.default.0x40c83a
cmp dword [0x49d280], ebp
jne case.default.0x40c83a
push 0xc
call fcn.0040df10
push ebx
push 0xc
call fcn.0040de80
mov eax, dword [0x4baf28]
inc eax
cmp eax, 0x31
mov dword [0x4baf28], eax
jle 0x40c8e8
mov dword [0x4baf28], ebx
mov dword [0x4290d0], ebx
jmp case.default.0x40c83a
push 0xe
call fcn.0040df10
push ebx
push 0xe
call fcn.0040de80
push 0x10
mov dword [0x4baf28], ebx
mov dword [0x49d280], ebx
mov dword [0x4baf20], ebx
mov dword [0x421308], edi
call fcn.0040df10
inc esi
cmp esi, 5
jl 0x40c7bd
mov edi, str.TOTAL_TIME
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x40]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x68]
push ecx
push edx
push 0xa0
push eax
call fcn.004028e0
mov ecx, 0x380
add esp, 4
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
mov edi, str.STAGE_TIME
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x40]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x40]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x6c]
push ecx
push edx
push 0xc0
push eax
call fcn.004028e0
mov ecx, 0x380
add esp, 4
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
mov eax, dword [0x49d280]
add esp, 0x10
cmp eax, ebp
jne 0x40cae1
mov edi, str.PREVIOUS
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x40]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x70]
push ecx
push edx
push 0xa0
push eax
call fcn.004028e0
mov ecx, 0x110
add esp, 4
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
mov edx, dword [0x4baf28]
lea eax, [esp + 0x50]
inc edx
push edx
push 0x41b4b4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x1c
lea ecx, [esp + 0x40]
lea edx, [esp + 0x40]
push 2
push ecx
push 0xb0
push edx
call fcn.004028e0
mov ecx, 0x110
add esp, 4
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
mov edi, str.NEXT
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x40]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x40]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x74]
push ecx
push edx
push 0xc0
push eax
call fcn.004028e0
add esp, 4
mov ecx, 0x110
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
add esp, 0x10
mov edi, str.EXIT
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x40]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x40]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x78]
push ecx
push edx
push 0x1c0
push eax
call fcn.004028e0
mov ecx, 0x280
add esp, 4
sub ecx, eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.004026c0
add esp, 0x10
lea edx, [esp + 0x28]
push 0xa0
push 0x80
push 0x90
push 0x70
push edx
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [esp + 0x60]
cmp eax, ebx
jl 0x40cbaa
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
sub ecx, edi
add ecx, eax
cmp ecx, 0x280
jg 0x40cbaa
mov edx, dword [esp + 0x64]
cmp edx, ebx
jl 0x40cbaa
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
sub ecx, ebx
add ecx, edx
cmp ecx, 0x1e0
jg 0x40cbaa
mov ecx, dword [0x4baf38]
lea edi, [esp + 0x28]
push 0x11
push edi
mov edi, dword [0x4baf3c]
mov esi, dword [ecx]
push edi
push edx
push eax
push ecx
call dword [esi + 0x1c]
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret