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

Disassembly:
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
sub esp, 0xb4
push ebx
mov ebx, dword [esp + 0xc8]
push ebp
mov ebp, dword [esp + 0xc0]
cmp dword [ebp + 4], 0
push esi
push edi
mov edi, dword [esp + 0xcc]
je 0x451ccb
test edi, edi
je 0x451ccb
test eax, eax
je 0x451ccb
test ecx, ecx
je 0x451ccb
cmp byte [ebp + 0x182], 0
je 0x451ccb
test eax, eax
jge 0x4512a4
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xd8], eax
test ecx, ecx
jge 0x4512b2
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xdc], ecx
cmp dword [ebp + 0x14c], 0
push edi
setge byte [esp + 0x1e]
cmp dword [ebp + 0x1bc], 0
setne byte [esp + 0x1f]
call dword [sym.imp.GDI32.dll_SaveDC]
test eax, eax
mov dword [esp + 0xa8], eax
je 0x451ccb
lea edx, [esp + 0xac]
push edx
push edi
call dword [sym.imp.GDI32.dll_GetClipBox]
mov ecx, dword [esp + 0xb0]
cmp ecx, ebx
mov eax, ecx
jg 0x4512fe
mov eax, ebx
mov esi, dword [esp + 0xb8]
cmp esi, eax
jge 0x45130f
mov dword [esp + 0x58], esi
jmp 0x45131b
cmp ecx, ebx
mov dword [esp + 0x58], ecx
jg 0x45131b
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0xac]
mov edx, dword [esp + 0xd0]
cmp ebx, edx
mov eax, ebx
jg 0x451331
mov eax, edx
mov ecx, dword [esp + 0xb4]
cmp ecx, eax
jge 0x451342
mov dword [esp + 0x54], ecx
jmp 0x45134e
cmp ebx, edx
mov dword [esp + 0x54], ebx
jg 0x45134e
mov dword [esp + 0x54], edx
mov eax, dword [esp + 0xd8]
add eax, edx
cmp ecx, eax
mov edx, ecx
jl 0x45135f
mov edx, eax
cmp ebx, edx
jg 0x45136b
cmp ecx, eax
mov ebx, ecx
jl 0x45136b
mov ebx, eax
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xdc]
lea eax, [ecx + edx]
cmp esi, eax
mov ecx, esi
jl 0x451384
mov ecx, eax
mov edx, dword [esp + 0xb0]
cmp edx, ecx
jle 0x451395
mov dword [esp + 0x60], edx
jmp 0x4513a1
cmp esi, eax
mov dword [esp + 0x60], esi
jl 0x4513a1
mov dword [esp + 0x60], eax
mov esi, dword [esp + 0x60]
sub ebx, dword [esp + 0x54]
sub esi, dword [esp + 0x58]
cmp byte [esp + 0x1a], 0
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], esi
jne 0x45169d
cmp byte [esp + 0x1b], 0
jne 0x45169d
cmp byte [ebp + 0x181], 0
jne 0x45169d
mov eax, dword [esp + 0xd8]
cmp eax, dword [ebp + 0xc]
jne 0x451436
mov ecx, dword [esp + 0xdc]
cmp ecx, dword [ebp + 0x10]
jne 0x451436
push 3
push edi
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov edx, dword [ebp + 4]
mov eax, dword [ebp + 0x34]
mov ecx, dword [esp + 0xd8]
push 0
push edx
mov edx, dword [esp + 0xdc]
push eax
mov eax, dword [esp + 0xe8]
push eax
push 0
push 0
push 0
push eax
mov eax, dword [esp + 0xf0]
push ecx
push edx
push eax
push edi
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
jmp 0x451caa
xor eax, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
push edi
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x70], 0x28
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], esi
mov word [esp + 0x7c], 1
mov word [esp + 0x7e], 0x18
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push 0
push 0
lea ecx, [esp + 0x2c]
push ecx
push 0
lea edx, [esp + 0x7c]
push edx
mov esi, eax
push edi
mov dword [esp + 0x64], esi
call dword [sym.imp.GDI32.dll_CreateDIBSection]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
cmp dword [esp + 0x24], 0
mov dword [esp + 0x3c], eax
je 0x45165a
fild dword [ebp + 0xc]
mov eax, dword [esp + 0x2c]
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x1f]
fidiv dword [esp + 0xd8]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add eax, eax
add eax, eax
cmp dword [esp + 0x30], 0
mov dword [esp + 0x1c], eax
fstp dword [esp + 0x68]
fild dword [ebp + 0x10]
fidiv dword [esp + 0xdc]
fstp dword [esp + 0x64]
jle 0x45165a
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0xd4]
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x44], eax
fild dword [ebp + 0x10]
push ecx
fild dword [esp + 0x24]
fmul dword [esp + 0x68]
fsubp st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fstp dword [esp]
call fcn.00450bc0
add esp, 4
call fcn.0049dc50
mov ebx, dword [ebp + 0x30]
mov edx, dword [esp + 0x14]
xor ecx, ecx
test eax, eax
setl cl
xor esi, esi
mov dword [esp + 0x48], esi
sub ecx, 1
and eax, ecx
imul ebx, eax
add ebx, dword [ebp + 0x34]
cmp dword [esp + 0x2c], esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea edi, [edx + eax]
jle 0x45163f
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0xd0]
mov dword [esp + 0x50], eax
lea esp, [esp]
mov ecx, dword [esp + 0x50]
add ecx, esi
mov dword [esp + 0x38], ecx
fild dword [esp + 0x38]
push ecx
fmul dword [esp + 0x6c]
fstp dword [esp + 0x3c]
fld dword [esp + 0x3c]
fstp dword [esp]
call fcn.00450bc0
add esp, 4
call fcn.0049dc50
xor ecx, ecx
test eax, eax
setl cl
sub ecx, 1
and ecx, eax
cmp dword [ebp + 0x28], 0
je 0x45160f
mov esi, dword [esp + 0x28]
mov eax, ebp
call fcn.004533e0
mov ecx, ebp
push eax
lea eax, [esp + 0xa0]
call fcn.00453380
mov edx, dword [eax]
mov esi, dword [esp + 0x48]
mov dword [esp + 0x34], edx
mov al, byte [esp + 0x36]
mov dl, byte [esp + 0x35]
mov cl, byte [esp + 0x34]
jmp 0x45161f
lea eax, [ebx + ecx*2]
add eax, ecx
mov cl, byte [eax]
mov dl, byte [eax + 1]
add eax, 1
mov al, byte [eax + 1]
mov byte [edi], cl
add edi, 1
mov byte [edi], dl
add edi, 1
add esi, 1
mov byte [edi], al
add edi, 1
cmp esi, dword [esp + 0x2c]
mov dword [esp + 0x48], esi
jl 0x4515a0
mov ecx, dword [esp + 0x1c]
add dword [esp + 0x14], ecx
mov eax, 1
sub dword [esp + 0x20], eax
sub dword [esp + 0x44], eax
jne 0x451530
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
push 0
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x3c]
push eax
push 0
push 0
push 0
push eax
mov eax, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0xf0]
push edx
push eax
push ecx
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x4c]
push edx
jmp 0x451c8e
lea eax, [esp + 0x38]
mov ecx, ebp
mov byte [esp + 0x14], 0
mov byte [esp + 0x15], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
call fcn.00451ce0
mov eax, dword [ebp + 0x14c]
mov dword [esp + 0x68], eax
xor eax, eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
push edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x70], 0x28
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], esi
mov word [esp + 0x7c], 1
mov word [esp + 0x7e], 0x18
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push 0
push 0
lea ecx, [esp + 0x4c]
push ecx
push 0
lea edx, [esp + 0x7c]
push edx
push edi
mov dword [esp + 0x60], eax
call dword [sym.imp.GDI32.dll_CreateDIBSection]
push eax
mov eax, dword [esp + 0x4c]
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
push 0xcc0020
push ecx
push edx
push edi
push esi
push ebx
push 0
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x64]
push 0
push eax
call dword [sym.imp.GDI32.dll_BitBlt]
mov esi, dword [esp + 0x44]
test esi, esi
je 0x451c51
mov eax, dword [esp + 0x2c]
lea eax, [eax + eax*2]
lea eax, [eax*8 + 0x1f]
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add eax, eax
add eax, eax
mov dword [esp + 0x64], eax
mov eax, dword [ebp + 0xc]
cmp dword [esp + 0xd8], eax
mov dword [esp + 0x28], eax
jne 0x4519be
mov eax, dword [ebp + 0x10]
cmp dword [esp + 0xdc], eax
jne 0x4519be
sub eax, dword [esp + 0x60]
add eax, dword [esp + 0xd4]
cmp dword [esp + 0x30], 0
mov edx, eax
mov dword [esp + 0x40], edx
jle 0x451c51
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], ecx
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x50]
imul eax, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x24]
lea edi, [eax + esi]
mov eax, dword [ebp + 0x30]
imul eax, edx
mov dword [esp + 0x20], ecx
lea ecx, [ecx + ecx*2]
add eax, ecx
add eax, dword [ebp + 0x34]
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x3c], eax
jle 0x45199f
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
cmp byte [esp + 0x1b], 0
je 0x45185c
mov ecx, dword [ebp + 0x1bc]
add ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
mov al, byte [ecx + eax]
jmp 0x45185e
or al, 0xff
movzx ebx, byte [ebp + 0x180]
add ebx, 1
movzx ecx, al
imul ebx, ecx
sar ebx, 8
cmp dword [ebp + 0x28], 0
je 0x4518be
mov ecx, dword [esp + 0x20]
mov esi, edx
mov eax, ebp
call fcn.004533e0
movzx eax, al
mov dword [esp + 0x34], eax
push eax
lea eax, [esp + 0x9c]
mov ecx, ebp
call fcn.00453380
cmp byte [ebp + 0x181], 0
mov eax, dword [eax]
mov dword [esp + 0x14], eax
je 0x4518e8
mov edx, eax
shr edx, 0x18
movzx ecx, bl
add edx, 1
imul edx, ecx
sar edx, 8
mov bl, dl
jmp 0x4518e8
mov eax, dword [esp + 0x3c]
movzx edx, byte [eax]
mov cl, byte [eax + 1]
add eax, 1
add eax, 1
mov byte [esp + 0x14], dl
movzx edx, byte [eax]
add eax, 1
mov byte [esp + 0x15], cl
mov byte [esp + 0x16], dl
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
cmp dword [ebp + 0x28], 0
je 0x4518f8
mov eax, dword [esp + 0x68]
cmp dword [esp + 0x34], eax
jmp 0x4518fc
cmp eax, dword [esp + 0x38]
jne 0x451905
cmp byte [esp + 0x1a], 0
jne 0x451981
test bl, bl
je 0x451981
cmp bl, 0xff
jne 0x45192b
mov cl, byte [esp + 0x14]
mov dl, byte [esp + 0x15]
mov al, byte [esp + 0x16]
mov byte [edi], cl
add edi, 1
mov byte [edi], dl
add edi, 1
mov byte [edi], al
add edi, 1
jmp 0x451984
movzx ecx, byte [edi]
movzx edx, byte [esp + 0x14]
mov al, bl
not al
movzx eax, al
imul ecx, eax
movzx esi, bl
imul edx, esi
add ecx, edx
movzx edx, byte [esp + 0x15]
sar ecx, 8
imul edx, esi
mov byte [edi], cl
movzx ecx, byte [edi + 1]
add edi, 1
imul ecx, eax
add ecx, edx
movzx edx, byte [esp + 0x16]
sar ecx, 8
imul edx, esi
mov byte [edi], cl
movzx ecx, byte [edi + 1]
add edi, 1
imul ecx, eax
add ecx, edx
sar ecx, 8
mov byte [edi], cl
add edi, 1
jmp 0x451984
add edi, 3
mov edx, dword [esp + 0x40]
mov eax, 1
add dword [esp + 0x20], eax
sub dword [esp + 0x1c], eax
jne 0x451842
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x64]
add dword [esp + 0x24], eax
add edx, 1
sub dword [esp + 0x28], 1
mov dword [esp + 0x40], edx
jne 0x451804
jmp 0x451c51
cmp dword [esp + 0x30], 0
fild dword [esp + 0x28]
fidiv dword [esp + 0xd8]
fstp dword [esp + 0xa4]
fild dword [ebp + 0x10]
fidiv dword [esp + 0xdc]
fstp dword [esp + 0xa0]
jle 0x451c51
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], eax
mov dword [esp + 0x3c], ecx
fild dword [ebp + 0x10]
push ecx
fild dword [esp + 0x28]
fmul dword [esp + 0xa4]
fsubp st(1)
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fstp dword [esp]
call fcn.00450bc0
add esp, 4
call fcn.0049dc50
xor ecx, ecx
test eax, eax
setl cl
mov edx, dword [esp + 0x20]
lea edi, [edx + esi]
mov dword [esp + 0x40], 0
sub ecx, 1
and ecx, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x30]
imul eax, ecx
add eax, dword [ebp + 0x34]
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x98], eax
jle 0x451c36
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0xd0]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x50]
add eax, ecx
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
sub esp, 8
fmul dword [esp + 0xac]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fstp qword [esp]
call fcn.0049dd00
fstp dword [esp + 0x24]
add esp, 8
fld dword [esp + 0x1c]
call fcn.0049dc50
xor ecx, ecx
test eax, eax
setl cl
sub ecx, 1
and ecx, eax
cmp byte [esp + 0x1b], 0
mov dword [esp + 0x1c], ecx
je 0x451aeb
mov edx, dword [ebp + 0x1bc]
mov eax, dword [esp + 0x4c]
add edx, ecx
mov al, byte [edx + eax]
jmp 0x451aed
or al, 0xff
movzx ebx, byte [ebp + 0x180]
add ebx, 1
movzx edx, al
imul ebx, edx
sar ebx, 8
cmp dword [ebp + 0x28], 0
je 0x451b5a
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov eax, ebp
call fcn.004533e0
mov ecx, dword [esp + 0x1c]
movzx eax, al
mov dword [esp + 0x34], eax
mov eax, ebp
call fcn.004533e0
mov ecx, ebp
push eax
lea eax, [esp + 0xc0]
call fcn.00453380
cmp byte [ebp + 0x181], 0
mov eax, dword [eax]
mov dword [esp + 0x14], eax
je 0x451b81
mov ecx, eax
shr ecx, 0x18
movzx edx, bl
add ecx, 1
imul ecx, edx
sar ecx, 8
mov bl, cl
jmp 0x451b81
mov eax, dword [esp + 0x98]
lea eax, [eax + ecx*2]
add eax, ecx
mov cl, byte [eax]
mov dl, byte [eax + 1]
add eax, 1
mov al, byte [eax + 1]
mov byte [esp + 0x14], cl
mov byte [esp + 0x15], dl
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x14]
cmp dword [ebp + 0x28], 0
je 0x451b91
mov ecx, dword [esp + 0x68]
cmp dword [esp + 0x34], ecx
jmp 0x451b95
cmp eax, dword [esp + 0x38]
jne 0x451b9e
cmp byte [esp + 0x1a], 0
jne 0x451c1a
test bl, bl
je 0x451c1a
cmp bl, 0xff
jne 0x451bc4
mov dl, byte [esp + 0x14]
mov al, byte [esp + 0x15]
mov cl, byte [esp + 0x16]
mov byte [edi], dl
add edi, 1
mov byte [edi], al
add edi, 1
mov byte [edi], cl
add edi, 1
jmp 0x451c1d
movzx edx, byte [edi]
movzx ecx, byte [esp + 0x14]
mov al, bl
not al
movzx eax, al
imul edx, eax
movzx esi, bl
imul ecx, esi
add edx, ecx
movzx ecx, byte [esp + 0x15]
sar edx, 8
imul ecx, esi
mov byte [edi], dl
movzx edx, byte [edi + 1]
add edi, 1
imul edx, eax
add edx, ecx
sar edx, 8
mov byte [edi], dl
movzx edx, byte [edi + 1]
add edi, 1
imul edx, eax
movzx eax, byte [esp + 0x16]
imul eax, esi
add edx, eax
sar edx, 8
mov byte [edi], dl
add edi, 1
jmp 0x451c1d
add edi, 3
mov eax, dword [esp + 0x40]
add eax, 1
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x40], eax
jl 0x451a87
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x64]
add dword [esp + 0x20], ecx
mov eax, 1
sub dword [esp + 0x24], eax
sub dword [esp + 0x3c], eax
jne 0x451a0b
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x58]
push 0
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x5c]
push esi
push eax
push 0
push 0
push 0
push eax
mov eax, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0xf0]
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_SetDIBitsToDevice]
mov ecx, dword [esp + 0x9c]
mov esi, dword [esp + 0x48]
push ecx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xa8]
push edx
push edi
call dword [sym.imp.GDI32.dll_RestoreDC]
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret 0x18
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xb4
ret 0x18