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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5b0b25
mov eax, dword fs:[0]
push eax
sub esp, 0xc8
mov eax, dword [0x616040]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push esi
push edi
mov eax, dword [0x616040]
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 [0x621ea8]
mov edi, dword [0x621ea4]
sub ecx, edi
mov esi, dword [0x617470]
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 0x56b43c
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 0x56b44b
mov eax, dword [eax]
push dword [0x621aa0]
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 0x56ba9e
lea esp, [esp]
mov esi, eax
test eax, eax
je 0x56bb02
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 0x56b529
cmp ecx, dword [esi - 0x10]
jne 0x56b529
lea ebx, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x56b562
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x56bafd
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.00560ba0
mov ebx, eax
test ebx, ebx
je 0x56bad4
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.0x56b6a7.4504
jmp dword [eax*4 + 0x56bb08]
fstp st(3)
fstp st(2)
fld qword [0x5ee9c8]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5ee9d8]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5ee9e8]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5eea00]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5eea10]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5eea20]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5eea30]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fld qword [0x5eea40]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b975
fstp st(3)
fstp st(2)
fild dword [ebp + 0xc]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fdiv qword [0x5eea78]
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
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 0x56b7b8
fstp st(0)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
fstp st(1)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
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 0x56b7e3
cmp edx, ebx
jl 0x56b7e9
cmp eax, ecx
jle 0x56b854
cmp edx, ebx
jle 0x56b854
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 0x56b83f
fstp st(0)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
fstp st(1)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
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 0x56b8aa
fstp st(0)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
fstp st(1)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b975
fld qword [0x5eea38]
fmulp st(4)
fxch st(3)
call fcn.0052ea60
fld qword [0x5eea48]
mov esi, eax
fmulp st(3)
fxch st(2)
mov dword [esp + 0x1c], esi
call fcn.0052ea60
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
cmp ecx, edx
jge 0x56b8f9
cmp esi, eax
jl 0x56b8ff
cmp ecx, edx
jle 0x56b938
cmp esi, eax
jle 0x56b938
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 0x56b81d
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 0x56b888
fstp st(3)
fstp st(2)
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(2)
call fcn.0052ea60
fild dword [esp + 0x3c]
mov ebx, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(1)
call fcn.0052ea60
fild dword [esp + 0x50]
mov esi, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fdivrp st(2)
fxch st(1)
call fcn.0052ea60
fild dword [esp + 0x68]
mov dword [esp + 0x14], eax
fstp qword [esp + 0x84]
fdivr qword [esp + 0x84]
call fcn.0052ea60
cmp dword [esp + 0x1c], 0
jne 0x56b9fb
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 0x56ba57
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 0x56ba87
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 0x56b4f0
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 0x56baf9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
jmp 0x56baae
call fcn.00402c80
call fcn.0041527d
nop
scasb al, byte es:[edi]
mov dh, 86
add cl, al
mov dh, 0x56
add ah, dl
mov dh, 0x56
add bh, ah
mov dh, 0x56
add byte [ecx - 0x47], dh
push esi
add dl, bh
mov dh, 0x56
add byte [0x200056b7], cl
mov bh, 0x56
add byte [ebx], dh
mov bh, 0x56
add byte [esi - 0x49], ah
push esi
add byte [esi - 0x49], al
push esi
add byte [edi - 0x3affa948], bh
mov bh, 0x56
add ah, cl
int3