Function at 0x41cf20
Capabilities:
Capture screenshot

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x445af1
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xa8
mov eax, dword [0x455014]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x7c], edi
mov ecx, dword [edi + 0x84]
mov eax, 0x2e8ba2e9
sub ecx, dword [edi + 0x80]
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [ebp - 0x8c], ecx
je 0x41d70a
mov eax, dword [edi + 0x80]
xor esi, esi
add eax, 0xa4
mov dword [ebp - 0x74], eax
cmp ecx, esi
jbe 0x41d956
mov ecx, dword [eax + 4]
sub ecx, dword [eax]
mov eax, 0x2fa0be83
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
je 0x41d70a
mov eax, dword [edi + 0x2b8]
inc eax
cmp ecx, eax
jne 0x41d70a
mov eax, dword [ebp - 0x74]
inc esi
mov ecx, dword [ebp - 0x8c]
add eax, 0xb0
mov dword [ebp - 0x74], eax
cmp ecx, esi
ja 0x41cfa7
cmp dword [edi + 0x2bc], 1
ja 0x41cffd
mov ecx, edi
call fcn.00418aa0
jmp 0x41d70a
lea eax, [edi + 0x2d4]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.mfc140.dll_Ordinal_4865]
mov esi, eax
lea ecx, [ebp - 0x28]
xorps xmm0, xmm0
mov dword [ebp - 0x8c], esi
movups xmmword [ebp - 0x28], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_450]
xorps xmm0, xmm0
mov dword [ebp - 4], 0
movlpd qword [ebp - 0x40], xmm0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x40], vtable.CBitmap.0
lea eax, [ebp - 0x50]
mov byte [ebp - 4], 1
push eax
push dword [edi + 0x20]
movups xmmword [ebp - 0x50], xmm0
call dword [sym.imp.USER32.dll_GetClientRect]
test esi, esi
jne 0x41d06c
xor eax, eax
jmp 0x41d06f
mov eax, dword [esi + 4]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_2518]
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x50]
push ecx
push eax
push dword [esi + 4]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
lea ecx, [ebp - 0x40]
call dword [sym.imp.mfc140.dll_Ordinal_2520]
push dword [ebp - 0x3c]
push dword [ebp - 0x24]
call dword [sym.imp.mfc140.dll_Ordinal_13011]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x44]
sub edx, eax
push 0xcc0020
push ecx
push eax
mov eax, dword [ebp - 0x8c]
sub esi, ecx
push dword [eax + 4]
push esi
push edx
push 0
push 0
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_BitBlt]
lea eax, [ebp - 0x38]
xorps xmm0, xmm0
push eax
push dword [edi + 0x20]
movups xmmword [ebp - 0x38], xmm0
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [edi + 0x314]
mov eax, dword [ebp - 0x30]
mov ecx, dword [edi + 0x318]
sub eax, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x2c]
sub eax, ecx
movd xmm0, dword [ebp - 0x38]
mov dword [ebp - 0x94], eax
mov eax, dword [edi + 0x2bc]
dec eax
mov esi, dword [ebp - 0x34]
push dword [edi + 0x34c]
cvtdq2pd xmm0, xmm0
mov dword [ebp - 0x78], esi
movd xmm1, eax
shr eax, 0x1f
cvtdq2pd xmm1, xmm1
addsd xmm1, qword [eax*8 + 0x44d850]
mulsd xmm1, qword [edi + 0x2f0]
addsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x94]
add eax, ecx
lea ecx, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x18]
add eax, edx
push eax
cvttsd2si eax, xmm1
push esi
push eax
call dword [sym.imp.mfc140.dll_Ordinal_4639]
mov eax, dword [ebp - 0x30]
push dword [ebp - 0x34]
sub eax, dword [edi + 0x314]
push eax
lea eax, [ebp - 0x88]
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8770]
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x28]
sub eax, dword [edi + 0x318]
mov esi, dword [sym.imp.mfc140.dll_Ordinal_8326]
push eax
mov eax, dword [ebp - 0x30]
sub eax, dword [edi + 0x314]
push eax
call esi
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x28]
sub eax, dword [edi + 0x318]
push eax
push dword [ebp - 0x38]
call esi
push 0xc8c8c8
push 1
xorps xmm0, xmm0
lea ecx, [ebp - 0x70]
push 2
movlpd qword [ebp - 0x70], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_898]
lea eax, [ebp - 0x70]
mov byte [ebp - 4], 2
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_13027]
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0xac], eax
mov ecx, dword [ebp - 0x74]
add esi, 0x64
cmp esi, ecx
jl 0x41d1fb
cmp esi, dword [ebp - 0x18]
jg 0x41d22d
push dword [ebp - 0x78]
lea eax, [ebp - 0x88]
push esi
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8770]
push dword [ebp - 0x94]
lea ecx, [ebp - 0x28]
push esi
call dword [sym.imp.mfc140.dll_Ordinal_8326]
jmp 0x41d1f8
mov edi, dword [ebp - 0x78]
lea esi, [edi + 0x64]
cmp esi, edi
jge 0x41d23c
add esi, 0x64
jmp 0x41d233
mov eax, dword [ebp - 0x94]
cmp esi, eax
jg 0x41d26d
push esi
push ecx
lea eax, [ebp - 0x88]
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8770]
push esi
push dword [ebp - 0x18]
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8326]
mov ecx, dword [ebp - 0x74]
add esi, 0x64
jmp 0x41d233
lea ecx, [edi + 0xa]
add eax, 0xfffffff6
mov edi, dword [ebp - 0x7c]
mov dword [ebp - 0x9c], eax
mov eax, 0x2e8ba2e9
mov dword [ebp - 0xa4], ecx
mov esi, dword [edi + 0x84]
mov ecx, esi
sub ecx, dword [edi + 0x80]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x41d956
mov eax, dword [ebp - 0x9c]
xorps xmm4, xmm4
sub eax, dword [ebp - 0xa4]
movsd xmm0, qword [edi + 0x2f8]
comisd xmm0, xmm4
mov dword [ebp - 0xa8], 0
movsd xmm1, qword [edi + 0x300]
movaps xmm2, xmm0
movd xmm3, eax
subsd xmm2, xmm1
cvtdq2pd xmm3, xmm3
movsd qword [ebp - 0x98], xmm1
movsd qword [ebp - 0xb8], xmm2
movsd qword [ebp - 0x88], xmm3
jbe 0x41d3eb
comisd xmm4, xmm1
jbe 0x41d3eb
push 0
push 1
xorps xmm0, xmm0
lea ecx, [ebp - 0x60]
push 0
movlpd qword [ebp - 0x60], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_898]
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x41d337
push eax
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_SelectObject]
xorps xmm0, xmm0
movd xmm1, dword [ebp - 0x9c]
subsd xmm0, qword [ebp - 0x98]
cvtdq2pd xmm1, xmm1
lea eax, [ebp - 0x80]
lea ecx, [ebp - 0x28]
mulsd xmm0, qword [ebp - 0x88]
divsd xmm0, qword [ebp - 0xb8]
subsd xmm1, xmm0
cvttsd2si esi, xmm1
push esi
push 0
push eax
call dword [sym.imp.mfc140.dll_Ordinal_8770]
mov eax, dword [ebp - 0x18]
lea ecx, [ebp - 0x28]
push esi
add eax, 0x19
push eax
call dword [sym.imp.mfc140.dll_Ordinal_8326]
push 0x44a66c
lea ecx, [ebp - 0x78]
call dword [sym.imp.mfc140.dll_Ordinal_310]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x18]
add ecx, 0x1e
push dword [eax - 0xc]
push eax
mov eax, dword [ebp - 0x28]
push esi
push ecx
lea ecx, [ebp - 0x28]
call dword [eax + 0x64]
lea ecx, [ebp - 0x78]
call dword [sym.imp.mfc140.dll_Ordinal_1044]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x60], vtable.CPen.0
call fcn.0040e040
mov esi, dword [edi + 0x84]
movsd xmm1, qword [ebp - 0x98]
movsd xmm2, qword [ebp - 0xb8]
movsd xmm3, qword [ebp - 0x88]
sub esi, dword [edi + 0x80]
mov eax, 0x2e8ba2e9
imul esi
xor esi, esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x7c], eax
test eax, eax
jle 0x41d527
mov dword [ebp - 0x74], esi
mov ecx, dword [edi + 0x84]
mov eax, 0x2e8ba2e9
sub ecx, dword [edi + 0x80]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, esi
jbe 0x41d956
mov eax, dword [ebp - 0x74]
add eax, dword [edi + 0x80]
mov ecx, dword [eax + 0x88]
cmp ecx, 1
jne 0x41d4a3
movsd xmm0, qword [edi + 0x2f0]
sub esp, 0xe0
mov ecx, esp
movsd qword [esp + 0xd8], xmm0
movsd qword [esp + 0xd0], xmm3
movsd qword [esp + 0xc0], xmm2
movsd qword [esp + 0xb8], xmm1
push eax
call fcn.00406a40
movups xmm0, xmmword [ebp - 0xa8]
sub esp, 0x10
mov ecx, edi
mov eax, esp
push 1
movups xmmword [eax], xmm0
lea eax, [ebp - 0x28]
push eax
call fcn.0041aaf0
jmp 0x41d4fe
cmp ecx, 2
jne 0x41d4fe
movsd xmm0, qword [edi + 0x2f0]
sub esp, 0xe0
mov ecx, esp
movsd qword [esp + 0xd8], xmm0
movsd qword [esp + 0xd0], xmm3
movsd qword [esp + 0xc0], xmm2
movsd qword [esp + 0xb8], xmm1
push eax
call fcn.00406a40
movups xmm0, xmmword [ebp - 0xa8]
sub esp, 0x10
mov ecx, edi
mov eax, esp
push 1
movups xmmword [eax], xmm0
lea eax, [ebp - 0x28]
push eax
call fcn.0041b770
add dword [ebp - 0x74], 0xb0
inc esi
movsd xmm1, qword [ebp - 0x98]
movsd xmm2, qword [ebp - 0xb8]
movsd xmm3, qword [ebp - 0x88]
cmp esi, dword [ebp - 0x7c]
jl 0x41d412
mov eax, dword [edi + 0x31c]
lea ecx, [ebp - 0x58]
push 0x646464
push 1
mov dword [ebp - 0x74], eax
xorps xmm0, xmm0
mov eax, dword [edi + 0x320]
push 2
mov dword [ebp - 0x84], eax
movlpd qword [ebp - 0x58], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_898]
mov byte [ebp - 4], 5
mov eax, dword [edi + 0x2bc]
lea ecx, [eax - 2]
inc eax
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x7c], eax
cmp ecx, eax
jae 0x41d5d4
movsd xmm1, qword [edi + 0x2f0]
movaps xmm0, xmm1
movaps xmm2, xmm1
mulsd xmm0, qword [0x44d778]
addsd xmm2, qword [0x44d708]
cvttsd2si edx, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm0, xmm2
cvttsd2si esi, xmm0
test ecx, ecx
jne 0x41d5b4
lea eax, [edx + esi]
cmp dword [ebp - 0x74], eax
jl 0x41d728
mov eax, esi
sub eax, edx
cmp eax, dword [ebp - 0x74]
jl 0x41d5cb
lea eax, [edx + edx*2]
sub esi, eax
cmp dword [ebp - 0x74], esi
jge 0x41d82f
inc ecx
mov dword [ebp - 0x78], ecx
cmp ecx, dword [ebp - 0x7c]
jb 0x41d590
mov esi, dword [sym.imp.mfc140.dll_Ordinal_8326]
push 0
push 1
xorps xmm0, xmm0
lea ecx, [ebp - 0x68]
push 0
movlpd qword [ebp - 0x68], xmm0
call dword [sym.imp.mfc140.dll_Ordinal_898]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x41d606
push eax
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_SelectObject]
dec dword [ebp - 0x30]
cmp dword [edi + 0x318], 0
jle 0x41d615
dec dword [ebp - 0x2c]
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x28]
dec eax
push eax
lea eax, [ebp - 0x88]
push eax
call dword [sym.imp.mfc140.dll_Ordinal_8770]
push dword [ebp - 0x34]
lea ecx, [ebp - 0x28]
push dword [ebp - 0x30]
call esi
push dword [ebp - 0x2c]
lea ecx, [ebp - 0x28]
push dword [ebp - 0x30]
call esi
push dword [ebp - 0x2c]
lea ecx, [ebp - 0x28]
push dword [ebp - 0x38]
call esi
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x28]
dec eax
push eax
push dword [ebp - 0x38]
call esi
push dword [ebp - 0xac]
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_13027]
mov ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x50]
mov esi, dword [ebp - 0x8c]
push 0xcc0020
push 0
push 0
push dword [ebp - 0x24]
push ecx
push eax
push 0
push 0
push dword [esi + 4]
call dword [sym.imp.GDI32.dll_BitBlt]
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_3856]
push dword [esi + 4]
mov esi, dword [sym.imp.USER32.dll_ReleaseDC]
push dword [edi + 0x20]
call esi
push dword [ebp - 0x24]
push dword [edi + 0x20]
call esi
mov eax, dword [edi + 0x2cc]
lea ecx, [edi + 0x2cc]
call dword [eax + 0x1c]
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x68], vtable.CPen.0
call fcn.0040e040
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x58], vtable.CPen.0
call fcn.0040e040
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x70], vtable.CPen.0
call fcn.0040e040
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x40], vtable.CBitmap.0
call fcn.0040e040
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_1106]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00443559
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov eax, dword [ebp - 0x54]
test eax, eax
je 0x41d739
push eax
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_SelectObject]
push 0
push esi
lea eax, [ebp - 0x88]
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8770]
mov eax, dword [ebp - 0x9c]
lea ecx, [ebp - 0x28]
add eax, 0xa
push eax
push esi
call dword [sym.imp.mfc140.dll_Ordinal_8326]
mov eax, dword [edi + 0x2c0]
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x7c], eax
call dword [sym.imp.mfc140.dll_Ordinal_316]
mov byte [ebp - 4], 6
mov eax, 0x2e8ba2e9
mov ecx, dword [edi + 0x84]
sub ecx, dword [edi + 0x80]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x41d956
mov ecx, dword [edi + 0x80]
mov eax, dword [ecx + 0xa4]
mov ecx, dword [ecx + 0xa8]
sub ecx, eax
mov dword [ebp - 0x78], eax
mov eax, 0x2fa0be83
imul ecx
mov ecx, dword [ebp - 0x7c]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, ecx
jbe 0x41d95b
imul eax, ecx, 0x158
add eax, dword [ebp - 0x78]
push dword [eax]
lea eax, [ebp - 0x18]
push 0x449f80
push eax
call dword [sym.imp.mfc140.dll_Ordinal_4807]
add esp, 0xc
lea eax, [ebp - 0x18]
lea ecx, [edi + 0x334]
push eax
call dword [sym.imp.mfc140.dll_Ordinal_1526]
cmp dword [edi + 0x318], 0
jle 0x41d81d
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x9c]
add ecx, 0xc
push dword [eax - 0xc]
push eax
mov eax, dword [ebp - 0x28]
push ecx
push esi
lea ecx, [ebp - 0x28]
call dword [eax + 0x64]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 5
call dword [sym.imp.mfc140.dll_Ordinal_1044]
jmp 0x41d5d4
lea eax, [ecx - 1]
movd xmm0, eax
mov eax, dword [ebp - 0x54]
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm0, xmm2
cvttsd2si esi, xmm0
mov dword [ebp - 0x74], esi
test eax, eax
je 0x41d85a
push eax
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_SelectObject]
push 0
push esi
lea eax, [ebp - 0x88]
push eax
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc140.dll_Ordinal_8770]
mov eax, dword [ebp - 0x9c]
lea ecx, [ebp - 0x28]
add eax, 0xa
push eax
push esi
mov esi, dword [sym.imp.mfc140.dll_Ordinal_8326]
call esi
mov ecx, dword [ebp - 0x78]
mov eax, dword [edi + 0x2c0]
dec ecx
add eax, ecx
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x7c], eax
call dword [sym.imp.mfc140.dll_Ordinal_316]
mov byte [ebp - 4], 7
mov eax, 0x2e8ba2e9
mov ecx, dword [edi + 0x84]
sub ecx, dword [edi + 0x80]
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x41d960
mov ecx, dword [edi + 0x80]
mov eax, dword [ecx + 0xa4]
mov ecx, dword [ecx + 0xa8]
sub ecx, eax
mov dword [ebp - 0x78], eax
mov eax, 0x2fa0be83
imul ecx
mov ecx, dword [ebp - 0x7c]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, ecx
jbe 0x41d965
imul eax, ecx, 0x158
add eax, dword [ebp - 0x78]
push dword [eax]
lea eax, [ebp - 0x18]
push 0x449f80
push eax
call dword [sym.imp.mfc140.dll_Ordinal_4807]
add esp, 0xc
lea eax, [ebp - 0x18]
lea ecx, [edi + 0x334]
push eax
call dword [sym.imp.mfc140.dll_Ordinal_1526]
cmp dword [edi + 0x318], 0
jle 0x41d944
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x9c]
add ecx, 0xc
push dword [eax - 0xc]
push eax
mov eax, dword [ebp - 0x28]
push ecx
push dword [ebp - 0x74]
lea ecx, [ebp - 0x28]
call dword [eax + 0x64]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 5
call dword [sym.imp.mfc140.dll_Ordinal_1044]
jmp 0x41d5da
call fcn.004061e0
call fcn.004061e0
call fcn.004061e0
call fcn.004061e0
int3