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

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x4c
mov esi, ecx
movsx eax, byte [0x87275c]
test eax, eax
jne 0x45ec84
mov edx, dword [esp + 0x60]
mov ebp, dword [edx + 0x20]
sub ebp, dword [edx + 0x10]
add ebp, 1
mov ebx, dword [edx + 0x28]
sub ebx, dword [edx + 0x18]
add ebx, 1
mov ecx, dword [0x872514]
mov eax, dword [0x872518]
test ebp, ebp
jle 0x45ec84
test ebx, ebx
jle 0x45ec84
test ecx, ecx
jle 0x45ec84
test eax, eax
jle 0x45ec84
mov edi, dword [esi]
test edi, edi
jne 0x45ea55
movsx edx, byte [0x872158]
test edx, edx
je 0x45ea55
cmp byte [0x872444], 1
je 0x45ec8e
cmp byte [0x872448], 1
je 0x45ec8e
xor eax, eax
mov dword [0x8723c0], eax
mov dword [0x8723c4], eax
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0xc0]
call fcn.0045f290
test eax, eax
je 0x45ea4b
movsx eax, byte [0x872158]
test eax, eax
je 0x45ea38
push 0x87cbc4
push 0x8782b0
call fcn.00409114
add esp, 8
xor eax, eax
mov byte [0x8721a0], al
mov byte [0x59b748], 1
mov byte [0x872158], al
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x60]
mov edx, dword [eax + 0x88]
mov dword [esi + 0x2c4], edx
mov edx, dword [eax + 0x8c]
neg edx
mov dword [esi + 0x2c8], edx
test edi, edi
mov eax, dword [esp + 0x48]
jne 0x45ea9c
movsx edx, byte [0x872444]
cmp edx, 1
je 0x45ecc1
cmp byte [0x872448], 1
je 0x45ecc1
test edi, edi
jne 0x45eab0
xor edx, edx
mov dword [0x8723c0], edx
mov dword [0x8723c4], edx
mov edi, dword [esi]
test edi, edi
jle 0x45f00a
mov edx, dword [esp + 0x60]
mov edi, dword [edx + 0x8c]
mov dword [esp + 0x3c], ebx
mov edx, dword [esp + 0x60]
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x38], ecx
mov eax, dword [0x8723c0]
add eax, dword [edx + 0x70]
add eax, ecx
mov dword [esp + 0x40], eax
mov ebx, dword [0x8723c4]
add ebx, dword [edx + 0x78]
add ebx, dword [edx + 0x18]
mov dword [esp + 0x48], ebx
dec edi
sub edi, dword [edx + 0x28]
cdq
mov dword [0x871fd8], eax
mov dword [0x871fdc], edx
mov eax, ebx
cdq
mov dword [0x871fe0], ebx
mov dword [0x871fe4], edx
mov eax, ecx
cdq
mov dword [0x871fe8], ecx
mov dword [0x871fec], edx
mov eax, edi
cdq
mov dword [0x871ff0], edi
mov dword [0x871ff4], edx
push dword [esi + 0x2a4]
mov ebx, dword [esp + 0x40]
call dword [sym.imp.USER32.dll_GetDC]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x40]
test edx, edx
jne 0x45ebc3
mov edx, dword [esp + 0x48]
test edx, edx
jle 0x45ebc3
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0x8c]
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x48]
lea edx, [ebx + edx]
cmp edx, eax
jl 0x45ebc3
mov dword [esp + 0x30], esi
mov ebx, eax
mov dword [esp + 0x3c], ebx
mov edx, dword [esp + 0x60]
mov ecx, dword [edx + 0x10]
lea esi, [esi + 0x2c0]
mov edi, dword [0x8723c0]
add edi, dword [edx + 0x70]
add edi, ecx
mov dword [esp + 0x48], edi
mov eax, dword [0x8723c4]
add eax, dword [edx + 0x78]
xor edi, edi
push 0xcc0020
push edi
push esi
push dword [edx + 0xc0]
push ebx
push ebp
push edi
push ecx
push ebx
push ebp
push eax
mov edx, dword [esp + 0x74]
push edx
mov edx, dword [esp + 0x74]
push edx
mov esi, dword [esp + 0x64]
call dword [sym.imp.GDI32.dll_StretchDIBits]
jmp 0x45ebfa
lea edx, [esi + 0x2c0]
push 0xcc0020
push 0
push edx
mov edx, dword [esp + 0x6c]
push dword [edx + 0xc0]
push ebx
push ebp
push edi
mov edi, dword [esp + 0x54]
push edi
push ebx
push ebp
mov edx, dword [esp + 0x70]
push edx
mov edx, dword [esp + 0x6c]
push edx
mov edx, dword [esp + 0x74]
push edx
call dword [sym.imp.GDI32.dll_StretchDIBits]
mov eax, ebp
imul eax, ebx
add eax, eax
add eax, eax
cdq
mov dword [0x871f80], eax
mov dword [0x871f84], edx
mov ecx, dword [0x8723c4]
mov eax, dword [0x8723c4]
cdq
mov edi, dword [esp + 0x60]
add ecx, dword [edi + 0x78]
adc edx, dword [edi + 0x7c]
add ecx, dword [edi + 0x18]
adc edx, dword [edi + 0x1c]
mov dword [0x871f88], ecx
mov dword [0x871f8c], edx
mov eax, dword [edi + 0x8c]
cdq
sub eax, dword [edi + 0x28]
sbb edx, dword [edi + 0x2c]
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [0x871f90], eax
mov dword [0x871f94], edx
mov eax, ebp
cdq
mov dword [0x871ff8], ebp
mov dword [0x871ffc], edx
mov eax, ebx
cdq
mov dword [0x872000], ebx
mov dword [0x872004], edx
mov ebx, dword [esp + 0x44]
push ebx
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov edx, dword [0x872504]
sub edx, ecx
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
sar edx, 1
mov dword [0x8723c0], edx
mov ebx, dword [0x872508]
sub ebx, eax
mov eax, ebx
shr eax, 0x1f
add ebx, eax
sar ebx, 1
mov dword [0x8723c4], ebx
jmp 0x45ea08
mov ebp, dword [esp + 0x60]
mov ebx, dword [ebp + 0x88]
mov dword [esp + 0x38], ebx
mov edi, dword [ebp + 0x8c]
mov dword [esp + 0x34], edi
mov ebp, dword [0x872504]
sub ebp, ecx
mov ebx, ebp
shr ebx, 0x1f
add ebp, ebx
sar ebp, 1
mov dword [0x8723c0], ebp
mov ebp, dword [0x872508]
sub ebp, eax
mov ebx, ebp
shr ebx, 0x1f
add ebp, ebx
sar ebp, 1
mov dword [0x8723c4], ebp
movsx ebx, byte [0x59b744]
test ebx, ebx
je 0x45ed1f
cmp byte [0x59b748], 1
je 0x45ee76
test edx, edx
jne 0x45ed30
cmp byte [0x872448], 1
je 0x45ee76
test ebx, ebx
je 0x45ee08
movsx edx, byte [0x59b748]
test edx, edx
jne 0x45ee08
mov dword [esi + 0x2c4], ecx
mov edi, eax
neg edi
mov dword [esi + 0x2c8], edi
xor ebx, ebx
mov dword [esp + 0xc], ebx
mov ebp, dword [esp + 0x38]
lea edx, [ebp - 1]
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x34]
lea edx, [edi - 1]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x87238c]
mov edx, dword [esp + 0x60]
mov edx, dword [edx + 0xc0]
xor ecx, ecx
call fcn.00460d88
push dword [esi + 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 [0x872514]
mov edi, dword [0x872518]
lea edx, [esi + 0x2c0]
xor ebp, ebp
push 0xcc0020
push ebp
push edx
push dword [0x87238c]
push edi
push eax
push ebp
push ebp
push edi
push eax
push dword [0x8723c4]
push dword [0x8723c0]
push ebx
call dword [sym.imp.GDI32.dll_StretchDIBits]
push ebx
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push 3
push ebx
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
lea edx, [esi + 0x2c0]
xor eax, eax
push 0xcc0020
push eax
push edx
mov ebp, dword [esp + 0x6c]
push dword [ebp + 0xc0]
push edi
mov edx, dword [esp + 0x4c]
push edx
push eax
push eax
push dword [0x872518]
push dword [0x872514]
push dword [0x8723c4]
push dword [0x8723c0]
push ebx
call dword [sym.imp.GDI32.dll_StretchDIBits]
push ebx
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov dword [esi + 0x2c4], ecx
mov edx, eax
neg edx
mov dword [esi + 0x2c8], edx
movzx ebx, byte [0x5b85d4]
test ebx, ebx
je 0x45ef30
movzx edx, byte [0x59b04c]
test edx, edx
je 0x45ef30
mov dword [esp + 0x30], esi
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 [0x87238c]
mov edx, dword [esp + 0x60]
mov edx, dword [edx + 0xc0]
xor ecx, ecx
mov esi, dword [esp + 0x30]
call fcn.00461d1c
jmp 0x45efa3
mov dword [esp + 0x30], esi
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 + 0x88]
push dword [eax + 0xc0]
push dword [0x87238c]
mov esi, dword [esp + 0x60]
call fcn.00461134
add esp, 0x30
push dword [esi + 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 [0x872514]
mov edi, dword [0x872518]
lea edx, [esi + 0x2c0]
xor ebp, ebp
push 0xcc0020
push ebp
push edx
push dword [0x87238c]
push edi
push eax
push ebp
push ebp
push edi
push eax
push dword [0x8723c4]
push dword [0x8723c0]
push ebx
call dword [sym.imp.GDI32.dll_StretchDIBits]
push ebx
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4
mov edx, dword [esp + 0x60]
mov edx, dword [edx + 0x88]
cmp edx, ecx
jne 0x45f02c
mov edi, dword [esp + 0x60]
mov edi, dword [edi + 0x8c]
cmp edi, eax
je 0x45eac2
jmp 0x45f036
mov ebx, dword [esp + 0x60]
mov edi, dword [ebx + 0x8c]
mov dword [esi + 0x2c4], ecx
mov ebx, eax
neg ebx
mov dword [esi + 0x2c8], ebx
cmp byte [0x59b748], 1
jne 0x45f1d6
movsx ebx, byte [0x872464]
test ebx, ebx
jne 0x45f169
movzx ebx, byte [0x5b85d4]
test ebx, ebx
je 0x45f0f9
movzx ebx, byte [0x59b04c]
test ebx, ebx
je 0x45f0f9
xor ebx, ebx
mov dword [esp + 0xc], ebx
lea ebp, [edx + edx]
add ebp, ebp
sub ebp, edx
lea ebp, [edx + ebp*8]
add ebp, ebp
lea ebp, [ebp + ebp - 0x64]
mov dword [esp + 0x10], ebp
lea ebp, [edi + edi]
add ebp, ebp
sub ebp, edi
lea ebp, [edi + ebp*8]
add ebp, ebp
lea ebp, [ebp + ebp - 0x64]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
lea edi, [ecx + ecx]
add edi, edi
sub edi, ecx
lea edx, [ecx + edi*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 [0x87238c]
mov edx, dword [esp + 0x60]
mov edx, dword [edx + 0xc0]
xor ecx, ecx
call fcn.00461d1c
jmp 0x45f218
mov dword [esp + 0x30], esi
lea esi, [edx + edx]
add esi, esi
sub esi, edx
lea ebx, [edx + esi*8]
add ebx, ebx
lea ebp, [ebx + ebx - 0x64]
lea ebx, [edi + edi]
add ebx, ebx
sub ebx, edi
lea ebx, [edi + ebx*8]
add ebx, ebx
lea ebx, [ebx + ebx - 0x64]
lea esi, [ecx + ecx]
add esi, esi
sub esi, ecx
lea ecx, [ecx + esi*8]
add ecx, ecx
add ecx, ecx
lea esi, [eax + eax]
add esi, esi
sub esi, eax
lea esi, [eax + esi*8]
add esi, esi
add esi, esi
push esi
push ecx
push edi
push edx
xor eax, eax
push eax
push eax
push ebx
push ebp
push eax
push eax
mov edx, dword [esp + 0x88]
push dword [edx + 0xc0]
push dword [0x87238c]
mov esi, dword [esp + 0x60]
call fcn.00461134
add esp, 0x30
jmp 0x45f218
mov dword [esp + 0x30], esi
lea esi, [edx + edx]
add esi, esi
sub esi, edx
lea ebx, [edx + esi*8]
add ebx, ebx
lea ebp, [ebx + ebx - 0x64]
lea ebx, [edi + edi]
add ebx, ebx
sub ebx, edi
lea ebx, [edi + ebx*8]
add ebx, ebx
lea ebx, [ebx + ebx - 0x64]
lea esi, [ecx + ecx]
add esi, esi
sub esi, ecx
lea ecx, [ecx + esi*8]
add ecx, ecx
add ecx, ecx
lea esi, [eax + eax]
add esi, esi
sub esi, eax
lea esi, [eax + esi*8]
add esi, esi
add esi, esi
push esi
push ecx
push edi
push edx
xor eax, eax
push eax
push eax
push ebx
push ebp
push eax
push eax
mov edx, dword [esp + 0x88]
push dword [edx + 0xc0]
push dword [0x87238c]
mov esi, dword [esp + 0x60]
call fcn.004601a0
add esp, 0x30
jmp 0x45f218
xor ebx, ebx
mov dword [esp + 0xc], ebx
lea ebp, [edx - 1]
mov dword [esp + 0x10], ebp
lea ebp, [edi - 1]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [0x87238c]
mov edi, dword [esp + 0x60]
mov edx, dword [edi + 0xc0]
xor ecx, ecx
call fcn.00460d88
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
mov ebp, dword [0x8723c0]
mov edx, dword [esp + 0x60]
add ebp, dword [edx + 0x70]
mov ebx, dword [0x8723c4]
add ebx, dword [edx + 0x78]
push 3
push edi
call dword [sym.imp.GDI32.dll_SetStretchBltMode]
mov ecx, dword [0x872518]
lea eax, [esi + 0x2c0]
xor edx, edx
push 0xcc0020
push edx
push eax
push dword [0x87238c]
push ecx
mov eax, dword [0x872514]
push eax
push edx
push edx
push ecx
push eax
push ebx
push ebp
push edi
call dword [sym.imp.GDI32.dll_StretchDIBits]
push edi
push dword [esi + 0x2a4]
call dword [sym.imp.USER32.dll_ReleaseDC]
add esp, 0x4c
pop ebx
pop ebp
pop esi
pop edi
ret 4