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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5ae8c5
mov eax, dword fs:[0]
push eax
sub esp, 0xc8
mov eax, dword [0x614040]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push esi
push edi
mov eax, dword [0x614040]
xor eax, esp
push eax
lea eax, [esp + 0xd8]
mov dword fs:[0], eax
mov ebx, edx
mov eax, dword [ebp + 0x10]
mov ecx, dword [0x61fea4]
mov edi, dword [0x61fea0]
sub ecx, edi
mov esi, dword [0x615470]
mov dword [esp + 0x60], eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, esi
ja 0x56a64c
push str.invalid_vector_T__subscript
call fcn.00546d3a
lea eax, [esi + esi*2]
cmp dword [edi + eax*8 + 0x14], 8
lea eax, [edi + eax*8]
jb 0x56a65b
mov eax, dword [eax]
push dword [0x61fa9c]
push 0
push eax
push 0
call dword [sym.imp.GDI32.dll_CreateDCW]
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edi, eax
push 0x6e
push edi
call esi
push 0x6f
push edi
mov dword [esp + 0x30], eax
call esi
push 0x70
push edi
mov dword [esp + 0x34], eax
call esi
push 0x71
push edi
mov dword [esp + 0x58], eax
call esi
push 0x58
push edi
mov dword [esp + 0x70], eax
call esi
push 0x5a
push edi
mov dword [esp + 0x74], eax
call esi
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
lea eax, [esp + 0x70]
push eax
push edi
mov dword [esp + 0x78], 0x14
mov dword [esp + 0x7c], str.ScanToCopy
call dword [sym.imp.GDI32.dll_StartDocW]
mov ecx, dword [ebx + 0xc]
mov eax, dword [ebx + 4]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x48], 0
test ecx, ecx
jle 0x56acae
lea esp, [esp]
mov esi, eax
test eax, eax
je 0x56ad12
mov esi, dword [esi + 8]
mov eax, dword [eax]
mov dword [esp + 0x54], eax
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x56a739
cmp ecx, dword [esi - 0x10]
jne 0x56a739
lea ebx, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x56a772
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x56ad0d
mov ecx, dword [esi - 0xc]
mov dword [ebx + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.00528cf5
add esp, 0x10
lea esi, [ebx + 0x10]
mov dword [esp + 0x64], esi
push edi
mov dword [esp + 0xe4], 0
call dword [sym.imp.GDI32.dll_StartPage]
push ecx
push 0x4b0
push 1
lea eax, [esp + 0x3c]
push eax
push esi
push dword [esp + 0x74]
push 0
call fcn.00560730
mov ebx, eax
test ebx, ebx
je 0x56ace4
push 0x2c
lea eax, [esp + 0x90]
push 0
push eax
call fcn.0052d120
mov eax, dword [esp + 0x44]
add esp, 0xc
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x94], eax
mov eax, 1
mov word [esp + 0x98], ax
mov ax, word [esp + 0x34]
push 0
mov word [esp + 0x9e], ax
lea eax, [esp + 0x90]
push eax
push ebx
push 4
push eax
push edi
mov dword [esp + 0xa4], 0x28
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
push ebx
mov esi, eax
call fcn.0040d50c
add esp, 4
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push esi
push eax
mov dword [esp + 0x54], eax
call dword [sym.imp.GDI32.dll_SelectObject]
fild dword [esp + 0x6c]
mov eax, dword [ebp + 8]
add eax, 0xffffee6c
mov dword [esp + 0x1c], 0
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x40]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fld st(1)
fdiv st(1)
fild dword [esp + 0x58]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fld st(0)
fdivrp st(3)
cmp eax, 0xc
ja case.0x56a8b7.4504
jmp dword [eax*4 + 0x56ad18]
fstp st(3)
fstp st(2)
fld qword [0x5ec7d0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec7e0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec7f0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec808]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec818]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec828]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec838]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fld qword [0x5ec848]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fild dword [ebp + 0xc]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fdiv qword [0x5ec880]
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fstp st(3)
fstp st(2)
fild dword [esp + 0x28]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x2c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x3c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(3)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x56a9c8
fstp st(0)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fstp st(1)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
mov eax, dword [esp + 0x38]
fstp st(3)
mov ecx, dword [esp + 0x3c]
fstp st(2)
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
cmp eax, ecx
jge 0x56a9f3
cmp edx, ebx
jl 0x56a9f9
cmp eax, ecx
jle 0x56aa64
cmp edx, ebx
jle 0x56aa64
fild dword [esp + 0x28]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x2c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x3c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(3)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x56aa4f
fstp st(0)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fstp st(1)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fild dword [esp + 0x28]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x3c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(2)
fdivp st(1)
fild dword [esp + 0x2c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(4)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x56aaba
fstp st(0)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fstp st(1)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56ab85
fld qword [0x5ec840]
fmulp st(4)
fxch st(3)
call fcn.0052ea70
fld qword [0x5ec850]
mov esi, eax
fmulp st(3)
fxch st(2)
mov dword [esp + 0x1c], esi
call fcn.0052ea70
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
cmp ecx, edx
jge 0x56ab09
cmp esi, eax
jl 0x56ab0f
cmp ecx, edx
jle 0x56ab48
cmp esi, eax
jle 0x56ab48
fild dword [esp + 0x1c]
fstp qword [esp + 0x1c]
fld qword [esp + 0x1c]
fild dword [esp + 0x38]
fstp qword [esp + 0x1c]
fld qword [esp + 0x1c]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x14]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x3c]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
jmp 0x56aa2d
fild dword [esp + 0x1c]
fstp qword [esp + 0x1c]
fld qword [esp + 0x1c]
fild dword [esp + 0x3c]
fstp qword [esp + 0x1c]
fld qword [esp + 0x1c]
fmul st(2)
fdivp st(1)
fild dword [esp + 0x14]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
jmp 0x56aa98
fstp st(3)
fstp st(2)
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(2)
call fcn.0052ea70
fild dword [esp + 0x3c]
mov ebx, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(1)
call fcn.0052ea70
fild dword [esp + 0x50]
mov esi, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fdivrp st(2)
fxch st(1)
call fcn.0052ea70
fild dword [esp + 0x68]
mov dword [esp + 0x14], eax
fstp qword [esp + 0x84]
fdivr qword [esp + 0x84]
call fcn.0052ea70
cmp dword [esp + 0x1c], 0
jne 0x56ac0b
push 0xcc0020
push dword [esp + 0x40]
push dword [esp + 0x40]
push eax
push dword [esp + 0x24]
push dword [esp + 0x60]
push esi
push ebx
push 0
push 0
push edi
call dword [sym.imp.GDI32.dll_StretchBlt]
jmp 0x56ac67
push 0
push 0
push 0
push dword [esp + 0x48]
mov dword [esp + 0xc8], esi
push dword [esp + 0x48]
mov dword [esp + 0xd0], 0
push eax
push dword [esp + 0x2c]
lea eax, [esp + 0xd4]
mov dword [esp + 0xdc], esi
push dword [esp + 0x68]
mov dword [esp + 0xe4], ebx
push eax
push edi
mov dword [esp + 0xf0], 0
mov dword [esp + 0xf4], 0
call dword [sym.imp.GDI32.dll_PlgBlt]
push edi
call dword [sym.imp.GDI32.dll_EndPage]
mov dword [esp + 0xe0], 0xffffffff
or ecx, 0xffffffff
mov edx, dword [esp + 0x64]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x56ac97
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
inc ecx
mov dword [esp + 0x48], ecx
cmp ecx, dword [esp + 0x5c]
jl 0x56a700
push edi
call dword [sym.imp.GDI32.dll_EndDoc]
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov al, 1
mov ecx, dword [esp + 0xd8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.00527e2c
mov esp, ebp
pop ebp
ret 0xc
add esi, 0xfffffff0
mov dword [esp + 0xe0], 0xffffffff
or ecx, 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x56ad09
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
jmp 0x56acbe
call fcn.00402c80
call fcn.004152f4
nop
mov esi, 0xd10056a8
test al, 86
add ah, ah
test al, 0x56
add bh, dh
test al, 0x56
add byte [ecx + 0xa0056ab], al
test eax, 0xa91d0056
push esi
add byte [eax], dh
test eax, 0xa9430056
push esi
add byte [esi - 0x57], dh
push esi
add byte [esi - 0x57], dl
push esi
add bh, cl
stosb byte es:[edi], al
push esi
add ch, dl
test eax, 0xcccc0056
int3