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

Disassembly:
sub esp, 0x8c
lea eax, [esp + 0x50]
push ebx
mov ebx, ecx
push ebp
push esi
mov ecx, dword [ebx + 0x1c]
push edi
push eax
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov edi, dword [esp + 0xa0]
mov edx, dword [ebx + 0x88]
mov esi, dword [ebx + 0x6c]
mov eax, dword [ebx + 0x8c]
mov ecx, dword [edi]
mov ebp, dword [sym.imp.KERNEL32.dll_MulDiv]
push edx
add ecx, esi
push eax
push ecx
call ebp
dec eax
jns 0x4027ad
mov dword [esp + 0x24], 0
jmp 0x4027ca
mov edx, dword [ebx + 0x88]
mov ecx, dword [edi]
mov esi, dword [ebx + 0x6c]
mov eax, dword [ebx + 0x8c]
push edx
add ecx, esi
push eax
push ecx
call ebp
dec eax
mov dword [esp + 0x24], eax
mov edx, dword [ebx + 0x88]
mov ecx, dword [edi + 4]
mov esi, dword [ebx + 0x70]
mov eax, dword [ebx + 0x8c]
push edx
add ecx, esi
push eax
push ecx
call ebp
dec eax
jns 0x4027f0
mov dword [esp + 0x28], 0
jmp 0x40280e
mov edx, dword [ebx + 0x88]
mov ecx, dword [edi + 4]
mov esi, dword [ebx + 0x70]
mov eax, dword [ebx + 0x8c]
push edx
add ecx, esi
push eax
push ecx
call ebp
dec eax
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x402824
mov eax, dword [eax + 4]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x402826
xor esi, esi
mov edx, dword [ebx + 0x88]
mov ecx, dword [edi + 8]
mov eax, dword [ebx + 0x8c]
push edx
mov edx, dword [ebx + 0x6c]
push eax
add ecx, edx
push ecx
call ebp
inc eax
cmp esi, eax
jge 0x40285e
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x40285a
mov eax, dword [eax + 4]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x40287a
xor esi, esi
jmp 0x40287a
mov edx, dword [ebx + 0x88]
mov ecx, dword [edi + 8]
mov esi, dword [ebx + 0x6c]
mov eax, dword [ebx + 0x8c]
push edx
add ecx, esi
push eax
push ecx
call ebp
mov esi, eax
inc esi
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x402892
mov eax, dword [eax + 8]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x1c], eax
jmp 0x40289a
mov dword [esp + 0x1c], 0
mov edx, dword [ebx + 0x88]
mov ecx, dword [ebx + 0x70]
mov eax, dword [ebx + 0x8c]
push edx
mov edx, dword [edi + 0xc]
push eax
add ecx, edx
push ecx
call ebp
mov ecx, dword [esp + 0x1c]
inc eax
cmp ecx, eax
jge 0x4028d6
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x4028d2
mov eax, dword [eax + 8]
cdq
mov edi, eax
xor edi, edx
sub edi, edx
jmp 0x4028f2
xor edi, edi
jmp 0x4028f2
mov edx, dword [ebx + 0x88]
mov eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x70]
push edx
push eax
mov eax, dword [edi + 0xc]
add ecx, eax
push ecx
call ebp
mov edi, eax
inc edi
mov ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov eax, esi
sub eax, ecx
mov ecx, edi
sub ecx, ebp
mov dword [esp + 0x34], eax
test eax, eax
mov dword [esp + 0x38], ecx
jle 0x40323b
test ecx, ecx
jle 0x40323b
mov edx, dword [ebx + 0x8c]
mov eax, dword [ebx + 0x88]
mov ecx, dword [esp + 0x24]
mov ebp, dword [sym.imp.KERNEL32.dll_MulDiv]
push edx
push eax
push ecx
call ebp
mov edx, dword [ebx + 0x8c]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], eax
mov eax, dword [ebx + 0x88]
push edx
push eax
push ecx
call ebp
mov edx, dword [ebx + 0x8c]
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x88]
push edx
push eax
push esi
call ebp
mov ecx, dword [ebx + 0x8c]
mov edx, dword [ebx + 0x88]
push ecx
push edx
push edi
mov esi, eax
call ebp
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x4c]
mov ecx, dword [ebx + 0x88]
sub eax, edx
mov edx, dword [esp + 0x24]
sub esi, edi
mov edi, eax
mov eax, dword [ebx + 0x8c]
push eax
push ecx
push edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], edi
call ebp
mov edx, dword [ebx + 0x6c]
mov ebp, dword [esp + 0xa8]
sub eax, edx
mov edx, dword [esp + 0x28]
mov dword [ebp], eax
mov eax, dword [ebx + 0x8c]
mov ecx, dword [ebx + 0x88]
push eax
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov edx, dword [ebx + 0x70]
sub eax, edx
mov edx, dword [esp + 0x6c]
mov dword [ebp + 4], eax
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
add eax, esi
mov esi, dword [sym.imp.GDI32.dll_CreateRectRgn]
add ecx, edi
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [ebp + 0xc], ecx
mov ecx, dword [esp + 0x64]
push edx
mov edx, dword [esp + 0x64]
push eax
push ecx
push edx
call esi
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 4]
mov edi, eax
mov eax, dword [ebp + 0xc]
push eax
mov dword [esp + 0x60], edi
push ecx
mov eax, dword [ebp]
push edx
push eax
call esi
push 0
push 0
push 0
push 0
mov dword [esp + 0x54], eax
call esi
mov ecx, dword [esp + 0x44]
push 1
push edi
push ecx
push eax
mov dword [esp + 0x50], eax
call dword [sym.imp.GDI32.dll_CombineRgn]
mov eax, dword [esp + 0xa4]
test eax, eax
jne 0x402a47
xor esi, esi
xor eax, eax
jmp 0x402a53
mov edx, dword [esp + 0xa4]
xor esi, esi
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x40]
push ecx
push eax
call dword [sym.imp.GDI32.dll_SelectClipRgn]
mov dword [esp + 0x18], 1
call fcn.00433e10
cmp eax, 8
mov dword [esp + 0x48], eax
jne 0x402df8
mov edi, dword [esp + 0xa4]
cmp edi, esi
jne 0x402a88
xor eax, eax
jmp 0x402a8b
mov eax, dword [edi + 4]
mov edx, dword [ebx + 0xa8]
push esi
push edx
push eax
call dword [sym.imp.GDI32.dll_SelectPalette]
cmp edi, esi
jne 0x402aa2
xor eax, eax
jmp 0x402aa5
mov eax, dword [edi + 4]
push eax
call dword [sym.imp.GDI32.dll_RealizePalette]
mov ecx, dword [ebx + 0x64]
mov eax, dword [ecx + 4]
cmp eax, esi
je 0x402cee
xor edx, edx
mov dx, word [eax + 0xe]
cmp edx, 8
jle 0x402cee
push 0x428
call fcn.00447e47
mov edx, eax
add esp, 4
mov ecx, 0xa
xor eax, eax
mov edi, edx
mov dword [esp + 0x20], edx
rep stosd dword es:[edi], eax
lea ecx, [edx + 0x28]
mov word [ecx], ax
inc eax
add ecx, 2
cmp eax, 0x100
jl 0x402aea
mov eax, dword [esp + 0x10]
xor edi, edi
mov dword [edx + 4], eax
mov eax, 1
mov dword [edx + 8], eax
mov word [edx + 0xc], ax
mov eax, dword [esp + 0x14]
mov dword [edx], 0x28
cmp eax, esi
mov word [edx + 0xe], 8
jle 0x402ce0
mov eax, dword [esp + 0x24]
lea ecx, [eax + eax*2]
mov dword [esp + 0x3c], ecx
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x402b46
mov eax, dword [eax + 8]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x402b48
xor esi, esi
mov edx, dword [ebx + 0x88]
mov eax, dword [ebx + 0x8c]
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_MulDiv]
sub esi, dword [esp + 0x28]
sub esi, eax
dec esi
jns 0x402b70
mov dword [esp + 0x1c], 0
jmp 0x402ba8
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x402b86
mov eax, dword [eax + 8]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x402b88
xor esi, esi
mov ecx, dword [ebx + 0x88]
mov edx, dword [ebx + 0x8c]
push ecx
push edx
push edi
call dword [sym.imp.KERNEL32.dll_MulDiv]
sub esi, dword [esp + 0x28]
sub esi, eax
dec esi
mov dword [esp + 0x1c], esi
mov eax, dword [ebx + 0x64]
mov esi, dword [eax + 4]
test esi, esi
je 0x402bbc
mov eax, dword [esi + 4]
cdq
xor eax, edx
sub eax, edx
jmp 0x402bbe
xor eax, eax
test esi, esi
je 0x402bca
xor ecx, ecx
mov cx, word [esi + 0xe]
jmp 0x402bcc
xor ecx, ecx
imul ecx, eax
add ecx, 0x1f
mov edx, dword [ebx + 0x64]
sar ecx, 3
and ecx, 0xfffffffc
mov esi, dword [edx + 8]
imul ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
add ecx, esi
mov esi, dword [ebx + 0xa4]
mov edx, dword [edx + 4]
add ecx, eax
mov eax, ecx
mov ecx, dword [ebx + 0x8c]
cmp ecx, dword [ebx + 0x88]
je 0x402c69
test edx, edx
je 0x402c26
xor ecx, ecx
mov cx, word [edx + 0xe]
cmp ecx, 0x18
jne 0x402c26
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
push edx
push esi
push ecx
push eax
call fcn.00424490
jmp 0x402c4c
mov ecx, dword [ebx + 0x64]
mov edx, dword [ecx + 4]
test edx, edx
je 0x402c4f
xor ecx, ecx
mov cx, word [edx + 0xe]
cmp ecx, 0x10
jne 0x402c4f
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
push edx
push esi
push ecx
push eax
call fcn.004244e0
add esp, 0x10
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
mov ecx, dword [ebx + 0x94]
dec edx
push edx
lea edx, [edi + eax]
push 0
push edx
push esi
push esi
jmp 0x402c97
test edx, edx
je 0x402c80
xor ecx, ecx
mov cx, word [edx + 0xe]
cmp ecx, 0x18
jne 0x402c80
mov ecx, dword [ebx + 0x94]
jmp 0x402c86
mov ecx, dword [ebx + 0x98]
mov edx, dword [esp + 0x10]
dec edx
push edx
mov edx, dword [esp + 0x54]
add edx, edi
push 0
push edx
push esi
push eax
call dword [ecx]
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x402ca7
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
push 1
push ecx
mov ecx, dword [ebp + 4]
push esi
push 1
push 0
push 0
push 0
push 1
push edx
mov edx, dword [ebp]
add ecx, edi
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
mov eax, dword [esp + 0x14]
inc edi
cmp edi, eax
jl 0x402b30
mov edx, dword [esp + 0x20]
push edx
call fcn.00447e70
add esp, 4
jmp 0x403208
mov esi, dword [ecx + 4]
mov eax, dword [esi + 8]
test eax, eax
jle 0x402d28
mov eax, esi
test eax, eax
je 0x402d16
mov eax, dword [eax + 8]
mov edi, dword [esp + 0x38]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
sub eax, edi
sub eax, edx
mov edi, eax
jmp 0x402d2c
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x28]
xor eax, eax
sub eax, edi
sub eax, edx
mov edi, eax
jmp 0x402d2c
mov edi, dword [esp + 0x28]
mov eax, dword [ebx + 0x8c]
mov edx, dword [ebx + 0x88]
cmp eax, edx
jne 0x402d8f
mov eax, dword [ecx + 4]
test eax, eax
je 0x402d4d
mov eax, dword [eax + 8]
cdq
xor eax, edx
sub eax, edx
jmp 0x402d4f
xor eax, eax
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x402d5d
mov edx, dword [edx + 4]
mov ecx, dword [ecx + 8]
push 0
push esi
push ecx
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x34]
push 0
push edi
push eax
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [ebp + 4]
push eax
mov eax, dword [ebp]
push ecx
push eax
push edx
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
mov dword [esp + 0x18], eax
jmp 0x403208
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x402d9d
mov eax, dword [eax + 4]
push 3
push eax
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x402db4
mov eax, dword [eax + 4]
mov ebx, dword [ebx + 0x64]
push 0xcc0020
push 0
mov ecx, dword [ebx + 4]
mov edx, dword [ebx + 8]
push ecx
mov ecx, dword [esp + 0x44]
push edx
mov edx, dword [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x2c]
push edi
push ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [ebp + 4]
push ecx
mov ecx, dword [ebp]
push edx
push ecx
push eax
call dword [sym.imp.GDI32.dll_StretchDIBits]
mov dword [esp + 0x18], eax
jmp 0x403208
mov eax, dword [ebx + 0x64]
mov edx, dword [eax + 4]
cmp edx, esi
je 0x402e11
xor ecx, ecx
mov cx, word [edx + 0xe]
cmp ecx, 8
jg 0x402fbd
mov eax, dword [eax + 4]
cmp eax, esi
je 0x402e50
mov ecx, dword [eax + 0x20]
cmp ecx, esi
je 0x402e37
cmp ecx, 0x100
jbe 0x402e31
mov dword [esp + 0x18], 0x100
jmp 0x402e54
mov dword [esp + 0x18], ecx
jmp 0x402e54
mov ax, word [eax + 0xe]
cmp ax, 8
ja 0x402e50
mov edx, 1
mov cl, al
shl edx, cl
mov dword [esp + 0x18], edx
jmp 0x402e54
mov dword [esp + 0x18], esi
mov edx, dword [esp + 0x18]
lea esi, [edx*4 + 0x28]
push esi
call fcn.00447e47
mov edx, dword [ebx + 0x64]
mov ecx, esi
mov edi, eax
add esp, 4
mov esi, dword [edx + 4]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x20], eax
and ecx, 3
add eax, 0x28
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, dword [ebx + 0xa0]
push eax
call fcn.00424450
mov ecx, dword [ebx + 0x64]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 8]
test eax, eax
jle 0x402ed5
mov eax, edx
test eax, eax
je 0x402ec3
mov eax, dword [eax + 8]
mov esi, dword [esp + 0x38]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x28]
sub eax, esi
sub eax, edx
mov edi, eax
jmp 0x402ed9
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x28]
xor eax, eax
sub eax, esi
sub eax, edx
mov edi, eax
jmp 0x402ed9
mov edi, dword [esp + 0x28]
mov eax, dword [ebx + 0x8c]
mov edx, dword [ebx + 0x88]
cmp eax, edx
jne 0x402f49
mov eax, dword [ecx + 4]
test eax, eax
je 0x402efa
mov eax, dword [eax + 8]
cdq
xor eax, edx
sub eax, edx
jmp 0x402efc
xor eax, eax
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x402f0a
mov edx, dword [edx + 4]
mov esi, dword [esp + 0x20]
mov ecx, dword [ecx + 8]
push 0
push esi
push ecx
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x34]
push 0
push edi
push eax
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [ebp + 4]
push eax
mov eax, dword [ebp]
push ecx
push eax
push edx
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
push esi
mov dword [esp + 0x1c], eax
call fcn.00447e70
add esp, 4
jmp 0x403208
mov esi, dword [esp + 0xa4]
test esi, esi
jne 0x402f58
xor eax, eax
jmp 0x402f5b
mov eax, dword [esi + 4]
push 3
push eax
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
test esi, esi
jne 0x402f6c
xor eax, eax
jmp 0x402f6f
mov eax, dword [esi + 4]
mov ecx, dword [ebx + 0x64]
mov esi, dword [esp + 0x20]
push 0xcc0020
push 0
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0x40]
push esi
push edx
mov edx, dword [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x38]
push edx
mov edx, dword [esp + 0x2c]
push edi
push ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [ebp + 4]
push ecx
mov ecx, dword [ebp]
push edx
push ecx
push eax
call dword [sym.imp.GDI32.dll_StretchDIBits]
push esi
mov dword [esp + 0x1c], eax
call fcn.00447e70
add esp, 4
jmp 0x403208
mov ecx, dword [eax + 4]
cmp ecx, esi
je 0x402fcc
xor eax, eax
mov ax, word [ecx + 0xe]
jmp 0x402fce
xor eax, eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp ecx, esi
jle 0x403208
imul eax, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x403006
mov eax, dword [eax + 8]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x403008
xor esi, esi
mov edx, dword [ebx + 0x88]
mov eax, dword [ebx + 0x8c]
mov edi, dword [esp + 0x1c]
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_MulDiv]
sub esi, dword [esp + 0x28]
sub esi, eax
dec esi
jns 0x403034
mov dword [esp + 0x20], 0
jmp 0x40306c
mov eax, dword [ebx + 0x64]
mov eax, dword [eax + 4]
test eax, eax
je 0x40304a
mov eax, dword [eax + 8]
cdq
mov esi, eax
xor esi, edx
sub esi, edx
jmp 0x40304c
xor esi, esi
mov ecx, dword [ebx + 0x88]
mov edx, dword [ebx + 0x8c]
push ecx
push edx
push edi
call dword [sym.imp.KERNEL32.dll_MulDiv]
sub esi, dword [esp + 0x28]
sub esi, eax
dec esi
mov dword [esp + 0x20], esi
mov edi, dword [ebx + 0x64]
mov esi, dword [edi + 4]
test esi, esi
je 0x403080
mov eax, dword [esi + 4]
cdq
xor eax, edx
sub eax, edx
jmp 0x403082
xor eax, eax
test esi, esi
je 0x40308e
xor ecx, ecx
mov cx, word [esi + 0xe]
jmp 0x403090
xor ecx, ecx
imul ecx, eax
add ecx, 0x1f
mov esi, dword [edi + 8]
sar ecx, 3
and ecx, 0xfffffffc
mov edx, dword [esp + 0x3c]
imul ecx, dword [esp + 0x20]
mov eax, dword [ebx + 0x8c]
add ecx, esi
mov esi, dword [ebx + 0xa4]
add ecx, edx
mov edx, ecx
mov ecx, dword [ebx + 0x88]
cmp eax, ecx
je 0x403114
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x4030ec
xor eax, eax
mov ax, word [ecx + 0xe]
cmp eax, 0x18
jne 0x4030ec
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
push ecx
push esi
push eax
push edx
call fcn.00424490
add esp, 0x10
jmp 0x403135
mov edi, dword [edi + 4]
test edi, edi
je 0x403135
xor eax, eax
mov ax, word [edi + 0xe]
cmp eax, 0x10
jne 0x403135
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
push ecx
push esi
push eax
push edx
call fcn.004244e0
add esp, 0x10
jmp 0x403135
mov edi, dword [edi + 4]
test edi, edi
je 0x403137
xor eax, eax
mov ax, word [edi + 0xe]
cmp eax, 0x10
jne 0x403137
mov ecx, dword [esp + 0x10]
push ecx
push esi
push edx
call fcn.00424020
add esp, 0xc
mov edx, esi
mov eax, dword [ebx + 0x128]
test eax, eax
jne 0x40314d
cmp dword [ebx + 0x12c], 0x3ff00000
je 0x403161
mov eax, dword [esp + 0x10]
mov ecx, dword [ebx + 0xa0]
push eax
push esi
push edx
call fcn.00424380
mov edx, esi
cmp dword [esp + 0x48], 0x10
jne 0x403191
mov eax, dword [ebx + 0x124]
test eax, eax
je 0x403191
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x9c]
dec eax
push eax
mov eax, dword [esp + 0x54]
add edi, eax
push 0
push edi
push esi
push edx
call dword [ecx]
mov edx, esi
mov ecx, 0xb
xor eax, eax
lea edi, [esp + 0x70]
mov esi, 1
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x10]
test eax, eax
mov dword [esp + 0x70], 0x28
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], esi
mov word [esp + 0x7c], si
mov word [esp + 0x7e], 0x18
je 0x4031d1
mov eax, dword [eax + 4]
lea edi, [esp + 0x70]
push 0
push edi
push edx
push esi
push 0
mov edx, dword [ebp]
push 0
push 0
push esi
mov esi, dword [esp + 0x3c]
push ecx
mov ecx, dword [ebp + 4]
add ecx, esi
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
mov eax, dword [esp + 0x14]
inc esi
cmp esi, eax
mov dword [esp + 0x1c], esi
jl 0x402ff0
mov eax, dword [esp + 0x5c]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
mov ecx, dword [esp + 0x44]
push ecx
call esi
mov edx, dword [esp + 0x40]
push edx
call esi
mov ecx, dword [esp + 0x18]
xor eax, eax
pop edi
pop esi
test ecx, ecx
pop ebp
pop ebx
setne al
add esp, 0x8c
ret 0xc
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8c
ret 0xc