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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5b0ef5
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 0x56b3fc
push str.invalid_vector_T__subscript
call fcn.00546d68
lea eax, [esi + esi*2]
cmp dword [edi + eax*8 + 0x14], 8
lea eax, [edi + eax*8]
jb 0x56b40b
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 0x56ba5e
lea esp, [esp]
mov esi, eax
test eax, eax
je 0x56bac2
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 0x56b4e9
cmp ecx, dword [esi - 0x10]
jne 0x56b4e9
lea ebx, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x56b522
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x56babd
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.00528d25
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.00560b60
mov ebx, eax
test ebx, ebx
je 0x56ba94
push 0x2c
lea eax, [esp + 0x90]
push 0
push eax
call fcn.0052d150
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.0040d533
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.0x56b667.4504
jmp dword [eax*4 + 0x56bac8]
fstp st(3)
fstp st(2)
fld qword [0x5ee9d0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5ee9e0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5ee9f0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5eea08]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5eea18]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5eea28]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5eea38]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fld qword [0x5eea48]
fmul st(2), st(0)
fmulp st(1)
jmp 0x56b935
fstp st(3)
fstp st(2)
fild dword [ebp + 0xc]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fdiv qword [0x5eea80]
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
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 0x56b778
fstp st(0)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
fstp st(1)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
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 0x56b7a3
cmp edx, ebx
jl 0x56b7a9
cmp eax, ecx
jle 0x56b814
cmp edx, ebx
jle 0x56b814
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 0x56b7ff
fstp st(0)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
fstp st(1)
mov dword [esp + 0x1c], 0
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
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 0x56b86a
fstp st(0)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
fstp st(1)
mov dword [esp + 0x1c], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x56b935
fld qword [0x5eea40]
fmulp st(4)
fxch st(3)
call fcn.0052eaa0
fld qword [0x5eea50]
mov esi, eax
fmulp st(3)
fxch st(2)
mov dword [esp + 0x1c], esi
call fcn.0052eaa0
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
cmp ecx, edx
jge 0x56b8b9
cmp esi, eax
jl 0x56b8bf
cmp ecx, edx
jle 0x56b8f8
cmp esi, eax
jle 0x56b8f8
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 0x56b7dd
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 0x56b848
fstp st(3)
fstp st(2)
fild dword [esp + 0x38]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(2)
call fcn.0052eaa0
fild dword [esp + 0x3c]
mov ebx, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul st(1)
call fcn.0052eaa0
fild dword [esp + 0x50]
mov esi, eax
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fdivrp st(2)
fxch st(1)
call fcn.0052eaa0
fild dword [esp + 0x68]
mov dword [esp + 0x14], eax
fstp qword [esp + 0x84]
fdivr qword [esp + 0x84]
call fcn.0052eaa0
cmp dword [esp + 0x1c], 0
jne 0x56b9bb
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 0x56ba17
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 0x56ba47
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 0x56b4b0
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.00527e5c
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 0x56bab9
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
jmp 0x56ba6e
call fcn.00402c80
call fcn.004154e4
nop
outsb dx, byte [esi]
mov dh, 86
add byte [ecx - 0x6bffa94a], al
mov dh, 0x56
add byte [edi + 0x310056b6], ah
mov ecx, 0xb6ba0056
push esi
add ch, cl
mov dh, 0x56
add al, ah
mov dh, 0x56
add bl, dh
mov dh, 0x56
add byte [esi], ah
mov bh, 0x56
add byte [esi], al
mov bh, 0x56
add byte [edi - 0x48], bh
push esi
add byte [ebp - 0x33ffa949], al
int3