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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x50
mov ebp, ecx
mov ebx, dword [esp + 0x64]
movsx eax, byte [0x87260c]
test eax, eax
jne 0x45efeb
mov edx, dword [ebx + 0x20]
sub edx, dword [ebx + 0x10]
add edx, 1
mov dword [esp + 0x4c], edx
mov edi, dword [ebx + 0x28]
sub edi, dword [ebx + 0x18]
add edi, 1
mov ecx, dword [0x8723c4]
mov eax, dword [0x8723c8]
test edx, edx
jle 0x45efeb
test edi, edi
jle 0x45efeb
test ecx, ecx
jle 0x45efeb
test eax, eax
jle 0x45efeb
mov esi, dword [ebp]
test esi, esi
jne 0x45ede1
movsx edx, byte [0x871ff8]
test edx, edx
je 0x45ede1
movsx edx, byte [0x871ffc]
test edx, edx
je 0x45ede1
cmp byte [0x8722f4], 1
je 0x45eff5
cmp byte [0x8722f8], 1
je 0x45eff5
xor eax, eax
mov dword [0x872270], eax
mov dword [0x872274], eax
mov eax, dword [ebx + 0xc0]
call fcn.0045f5fc
test eax, eax
je 0x45edd7
movsx eax, byte [0x871ff8]
test eax, eax
je 0x45edc4
push 0x87cb3c
push 0x8782b0
call fcn.00409070
add esp, 8
xor eax, eax
mov byte [0x872040], al
mov byte [0x59b768], 1
mov byte [0x871ff8], al
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov edx, dword [ebx + 0x88]
mov dword [ebp + 0x2c4], edx
mov edx, dword [ebx + 0x8c]
neg edx
mov dword [ebp + 0x2c8], edx
test esi, esi
jne 0x45ee1c
movsx edx, byte [0x8722f4]
cmp edx, 1
je 0x45f028
cmp byte [0x8722f8], 1
je 0x45f028
test esi, esi
jne 0x45ee31
xor edx, edx
mov dword [0x872270], edx
mov dword [0x872274], edx
mov esi, dword [ebp]
test esi, esi
jle 0x45f371
mov esi, dword [ebx + 0x8c]
mov dword [esp + 0x44], edi
mov edi, dword [ebx + 0x10]
mov dword [esp + 0x38], edi
mov eax, dword [0x872270]
add eax, dword [ebx + 0x70]
add eax, edi
mov dword [esp + 0x3c], eax
mov ecx, dword [0x872274]
add ecx, dword [ebx + 0x78]
add ecx, dword [ebx + 0x18]
dec esi
sub esi, dword [ebx + 0x28]
cdq
mov dword [0x871e78], eax
mov dword [0x871e7c], edx
mov eax, ecx
cdq
mov dword [0x871e80], ecx
mov dword [0x871e84], edx
mov eax, edi
cdq
mov dword [0x871e88], edi
mov dword [0x871e8c], edx
mov eax, esi
cdq
mov dword [0x871e90], esi
mov dword [0x871e94], edx
push dword [ebp + 0x2a4]
mov edi, dword [esp + 0x48]
mov dword [esp + 0x4c], ecx
call dword [sym.imp.USER32.dll_GetDC]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x40], eax
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x45ef2e
test ecx, ecx
jle 0x45ef2e
mov eax, dword [ebx + 0x8c]
mov dword [esp + 0x34], eax
lea edx, [edi + ecx]
cmp edx, eax
jl 0x45ef2e
mov dword [esp + 0x30], ebp
mov esi, eax
mov dword [esp + 0x44], esi
mov ecx, dword [ebx + 0x10]
lea edi, [ebp + 0x2c0]
mov edx, dword [0x872270]
add edx, dword [ebx + 0x70]
add edx, ecx
mov eax, dword [0x872274]
add eax, dword [ebx + 0x78]
xor ebp, ebp
push 0xcc0020
push ebp
push edi
push dword [ebx + 0xc0]
push esi
mov edi, dword [esp + 0x60]
push edi
push ebp
push ecx
push esi
push edi
push eax
push edx
mov eax, dword [esp + 0x70]
push eax
mov edi, esi
mov ebp, dword [esp + 0x64]
call dword [sym.imp.GDI32.dll_StretchDIBits]
jmp 0x45ef61
lea edx, [ebp + 0x2c0]
push 0xcc0020
push 0
push edx
push dword [ebx + 0xc0]
push edi
mov edx, dword [esp + 0x60]
push edx
push esi
mov esi, dword [esp + 0x54]
push esi
push edi
push edx
push ecx
mov edx, dword [esp + 0x68]
push edx
mov edx, dword [esp + 0x70]
push edx
call dword [sym.imp.GDI32.dll_StretchDIBits]
mov esi, dword [esp + 0x4c]
mov eax, esi
imul eax, edi
add eax, eax
add eax, eax
cdq
mov dword [0x871e20], eax
mov dword [0x871e24], edx
mov ecx, dword [0x872274]
mov eax, dword [0x872274]
cdq
add ecx, dword [ebx + 0x78]
adc edx, dword [ebx + 0x7c]
add ecx, dword [ebx + 0x18]
adc edx, dword [ebx + 0x1c]
mov dword [0x871e28], ecx
mov dword [0x871e2c], edx
mov eax, dword [ebx + 0x8c]
cdq
sub eax, dword [ebx + 0x28]
sbb edx, dword [ebx + 0x2c]
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [0x871e30], eax
mov dword [0x871e34], edx
mov eax, esi
cdq
mov dword [0x871e98], esi
mov dword [0x871e9c], edx
mov eax, edi
cdq
mov dword [0x871ea0], edi
mov dword [0x871ea4], edx
mov ebx, dword [esp + 0x40]
push ebx
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov edx, dword [0x8723b4]
sub edx, ecx
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
sar edx, 1
mov dword [0x872270], edx
mov ebp, dword [0x8723b8]
sub ebp, eax
mov eax, ebp
shr eax, 0x1f
add ebp, eax
sar ebp, 1
mov dword [0x872274], ebp
jmp 0x45ed98
mov esi, dword [ebx + 0x88]
mov dword [esp + 0x38], esi
mov edi, dword [ebx + 0x8c]
mov dword [esp + 0x34], edi
mov edi, dword [0x8723b4]
sub edi, ecx
mov esi, edi
shr esi, 0x1f
add edi, esi
sar edi, 1
mov dword [0x872270], edi
mov edi, dword [0x8723b8]
sub edi, eax
mov esi, edi
shr esi, 0x1f
add edi, esi
sar edi, 1
mov dword [0x872274], edi
movsx esi, byte [0x59b764]
test esi, esi
je 0x45f082
cmp byte [0x59b768], 1
je 0x45f1dd
test edx, edx
jne 0x45f093
cmp byte [0x8722f8], 1
je 0x45f1dd
test esi, esi
je 0x45f16f
movsx edx, byte [0x59b768]
test edx, edx
jne 0x45f16f
mov dword [esp + 0x30], ebp
mov dword [ebp + 0x2c4], ecx
mov edi, eax
neg edi
mov dword [ebp + 0x2c8], edi
xor ebp, ebp
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x38]
lea edx, [esi - 1]
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x34]
lea edx, [edi - 1]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x87223c]
mov edx, dword [ebx + 0xc0]
xor ecx, ecx
mov ebp, dword [esp + 0x30]
call fcn.004610b0
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push 3
push ebx
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov eax, dword [0x8723c4]
mov edi, dword [0x8723c8]
lea edx, [ebp + 0x2c0]
xor esi, esi
push 0xcc0020
push esi
push edx
push dword [0x87223c]
push edi
push eax
push esi
push esi
push edi
push eax
push dword [0x872274]
push dword [0x872270]
push ebx
call dword [sym.imp.GDI32.dll_StretchDIBits]
push ebx
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
push 3
push esi
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
lea edx, [ebp + 0x2c0]
xor eax, eax
push 0xcc0020
push eax
push edx
push dword [ebx + 0xc0]
mov ebx, dword [esp + 0x44]
push ebx
mov edi, dword [esp + 0x4c]
push edi
push eax
push eax
push dword [0x8723c8]
push dword [0x8723c4]
push dword [0x872274]
push dword [0x872270]
push esi
call dword [sym.imp.GDI32.dll_StretchDIBits]
push esi
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov dword [ebp + 0x2c4], ecx
mov edx, eax
neg edx
mov dword [ebp + 0x2c8], edx
movzx esi, byte [0x5b8614]
test esi, esi
je 0x45f297
movzx edx, byte [0x59b04c]
test edx, edx
je 0x45f297
mov dword [esp + 0x30], ebp
lea edx, [ecx + ecx]
add edx, edx
sub edx, ecx
lea edx, [ecx + edx*8]
add edx, edx
add edx, edx
lea ecx, [eax + eax]
add ecx, ecx
sub ecx, eax
lea edi, [eax + ecx*8]
add edi, edi
add edi, edi
mov esi, dword [esp + 0x38]
lea eax, [esi + esi]
add eax, eax
sub eax, esi
lea eax, [esi + eax*8]
add eax, eax
lea ebx, [eax + eax - 0x64]
mov ebp, dword [esp + 0x34]
lea eax, [ebp + ebp]
add eax, eax
sub eax, ebp
lea eax, [ebp + eax*8]
add eax, eax
lea eax, [eax + eax - 0x64]
xor ecx, ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edi
mov eax, dword [0x87223c]
mov edx, dword [esp + 0x64]
mov edx, dword [edx + 0xc0]
xor ecx, ecx
mov ebp, dword [esp + 0x30]
call fcn.00462044
jmp 0x45f30a
mov dword [esp + 0x30], ebp
lea esi, [ecx + ecx]
add esi, esi
sub esi, ecx
lea ebp, [ecx + esi*8]
add ebp, ebp
add ebp, ebp
lea edi, [eax + eax]
add edi, edi
sub edi, eax
lea ebx, [eax + edi*8]
add ebx, ebx
add ebx, ebx
mov edx, dword [esp + 0x38]
lea eax, [edx + edx]
add eax, eax
sub eax, edx
lea eax, [edx + eax*8]
add eax, eax
lea ecx, [eax + eax - 0x64]
mov eax, dword [esp + 0x34]
lea esi, [eax + eax]
add esi, esi
sub esi, eax
lea esi, [eax + esi*8]
add esi, esi
lea esi, [esi + esi - 0x64]
xor edi, edi
push ebx
push ebp
push eax
push edx
push edi
push edi
push esi
push ecx
push edi
push edi
mov eax, dword [esp + 0x8c]
push dword [eax + 0xc0]
push dword [0x87223c]
mov ebp, dword [esp + 0x60]
call fcn.0046145c
add esp, 0x30
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push 3
push ebx
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov eax, dword [0x8723c4]
mov edi, dword [0x8723c8]
lea edx, [ebp + 0x2c0]
xor esi, esi
push 0xcc0020
push esi
push edx
push dword [0x87223c]
push edi
push eax
push esi
push esi
push edi
push eax
push dword [0x872274]
push dword [0x872270]
push ebx
call dword [sym.imp.GDI32.dll_StretchDIBits]
push ebx
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov edx, dword [ebx + 0x88]
cmp edx, ecx
jne 0x45f38b
mov esi, dword [ebx + 0x8c]
cmp esi, eax
je 0x45ee3f
jmp 0x45f391
mov esi, dword [ebx + 0x8c]
mov dword [ebp + 0x2c4], ecx
mov edi, eax
neg edi
mov dword [ebp + 0x2c8], edi
cmp byte [0x59b768], 1
jne 0x45f539
movsx edi, byte [0x872314]
test edi, edi
jne 0x45f4cc
movzx edi, byte [0x5b8614]
test edi, edi
je 0x45f45c
movzx edi, byte [0x59b04c]
test edi, edi
je 0x45f45c
mov dword [esp + 0x30], ebp
xor ebp, ebp
mov dword [esp + 0xc], ebp
lea edi, [edx + edx]
add edi, edi
sub edi, edx
lea edi, [edx + edi*8]
add edi, edi
lea edi, [edi + edi - 0x64]
mov dword [esp + 0x10], edi
lea edi, [esi + esi]
add edi, edi
sub edi, esi
lea edi, [esi + edi*8]
add edi, edi
lea edi, [edi + edi - 0x64]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], esi
lea esi, [ecx + ecx]
add esi, esi
sub esi, ecx
lea edx, [ecx + esi*8]
add edx, edx
add edx, edx
mov dword [esp + 0x28], edx
lea edx, [eax + eax]
add edx, edx
sub edx, eax
lea eax, [eax + edx*8]
add eax, eax
add eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [0x87223c]
mov edx, dword [ebx + 0xc0]
xor ecx, ecx
mov ebp, dword [esp + 0x30]
call fcn.00462044
jmp 0x45f57f
mov dword [esp + 0x30], ebp
lea edi, [edx + edx]
add edi, edi
sub edi, edx
lea ebx, [edx + edi*8]
add ebx, ebx
lea ebp, [ebx + ebx - 0x64]
lea ebx, [esi + esi]
add ebx, ebx
sub ebx, esi
lea ebx, [esi + ebx*8]
add ebx, ebx
lea ebx, [ebx + ebx - 0x64]
lea edi, [ecx + ecx]
add edi, edi
sub edi, ecx
lea ecx, [ecx + edi*8]
add ecx, ecx
add ecx, ecx
lea edi, [eax + eax]
add edi, edi
sub edi, eax
lea edi, [eax + edi*8]
add edi, edi
add edi, edi
push edi
push ecx
push esi
push edx
xor eax, eax
push eax
push eax
push ebx
push ebp
push eax
push eax
mov ebx, dword [esp + 0x8c]
push dword [ebx + 0xc0]
push dword [0x87223c]
mov ebp, dword [esp + 0x60]
call fcn.0046145c
add esp, 0x30
jmp 0x45f57f
mov dword [esp + 0x30], ebp
lea edi, [edx + edx]
add edi, edi
sub edi, edx
lea ebx, [edx + edi*8]
add ebx, ebx
lea ebp, [ebx + ebx - 0x64]
lea ebx, [esi + esi]
add ebx, ebx
sub ebx, esi
lea ebx, [esi + ebx*8]
add ebx, ebx
lea ebx, [ebx + ebx - 0x64]
lea edi, [ecx + ecx]
add edi, edi
sub edi, ecx
lea ecx, [ecx + edi*8]
add ecx, ecx
add ecx, ecx
lea edi, [eax + eax]
add edi, edi
sub edi, eax
lea edi, [eax + edi*8]
add edi, edi
add edi, edi
push edi
push ecx
push esi
push edx
xor eax, eax
push eax
push eax
push ebx
push ebp
push eax
push eax
mov ebx, dword [esp + 0x8c]
push dword [ebx + 0xc0]
push dword [0x87223c]
mov ebp, dword [esp + 0x60]
call fcn.004604c8
add esp, 0x30
jmp 0x45f57f
mov dword [esp + 0x30], ebp
xor ebp, ebp
mov dword [esp + 0xc], ebp
lea edi, [edx - 1]
mov dword [esp + 0x10], edi
lea edi, [esi - 1]
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x87223c]
mov edx, dword [ebx + 0xc0]
xor ecx, ecx
mov ebp, dword [esp + 0x30]
call fcn.004610b0
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
mov esi, dword [0x872270]
add esi, dword [ebx + 0x70]
mov edx, dword [0x872274]
add edx, dword [ebx + 0x78]
mov dword [esp + 0x34], edx
push 3
push edi
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov ecx, dword [0x8723c4]
mov eax, dword [0x8723c8]
lea edx, [ebp + 0x2c0]
xor ebx, ebx
push 0xcc0020
push ebx
push edx
push dword [0x87223c]
push eax
push ecx
push ebx
push ebx
push eax
push ecx
mov edx, dword [esp + 0x5c]
push edx
push esi
push edi
call dword [sym.imp.GDI32.dll_StretchDIBits]
push edi
push dword [ebp + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x50
pop ebx
pop ebp
pop esi
pop edi
ret 4