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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x57aabe
mov eax, dword fs:[0]
push eax
sub esp, 0xb8
mov eax, dword [0x5d52e0]
xor eax, esp
mov dword [esp + 0xb0], eax
push ebx
push esi
push edi
mov eax, dword [0x5d52e0]
xor eax, esp
push eax
lea eax, [esp + 0xc8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, dword [0x5dd980]
mov dword [esp + 0x4c], ecx
mov ecx, dword [0x5dd984]
sub ecx, esi
mov dword [esp + 0x18], eax
mov eax, 0x92492493
imul ecx
mov eax, dword [0x5d69ec]
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ecx, eax
ja 0x54b83f
push str.invalid_vector_T__subscript
call fcn.0051b845
lea edx, [eax*8]
sub edx, eax
cmp dword [esi + edx*4 + 0x14], 8
lea eax, [esi + edx*4]
jb 0x54b854
mov eax, dword [eax]
mov ecx, dword [0x5dd5b8]
push ecx
xor ebx, ebx
push ebx
push eax
push ebx
call dword [sym.imp.GDI32.dll_CreateDCW]
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, eax
push 0x6e
push esi
call edi
push 0x6f
push esi
mov dword [esp + 0x28], eax
call edi
push 0x70
push esi
mov dword [esp + 0x2c], eax
call edi
push 0x71
push esi
mov dword [esp + 0x6c], eax
call edi
push 0x58
push esi
mov dword [esp + 0x60], eax
call edi
push 0x5a
push esi
mov dword [esp + 0x5c], eax
call edi
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
push esi
mov dword [esp + 0x64], eax
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x70], 0x14
mov dword [esp + 0x74], str.ScanToCopy
call dword [sym.imp.GDI32.dll_StartDocW]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], ebx
cmp ecx, ebx
jg 0x54b927
push esi
call dword [sym.imp.GDI32.dll_EndDoc]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov al, 1
mov ecx, dword [esp + 0xc8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [esp + 0x60]
cmp eax, ebx
je 0x54bdc6
mov ecx, dword [eax]
mov edi, dword [eax + 8]
mov dword [esp + 0x60], ecx
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub edi, 0x10
call eax
cmp dword [edi + 0xc], ebx
lea ecx, [edi + 0xc]
jl 0x54b95c
cmp eax, dword [edi]
jne 0x54b95c
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x54b99d
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov dword [esp + 0x18], eax
cmp eax, ebx
je 0x54bdcb
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov ecx, dword [edi + 4]
lea edx, [ecx + ecx + 2]
push edx
add edi, 0x10
push edi
lea ecx, [ecx + ecx + 2]
push ecx
add eax, 0x10
push eax
call fcn.004ffad4
mov edi, dword [esp + 0x28]
add esp, 0x10
add edi, 0x10
mov dword [esp + 0x18], edi
push esi
mov dword [esp + 0xd4], ebx
call dword [sym.imp.GDI32.dll_StartPage]
mov ecx, dword [esp + 0x4c]
push 0x4b0
push 1
lea edx, [esp + 0x34]
push edx
push edi
push ebx
call fcn.00550ad0
mov edi, eax
cmp edi, ebx
je 0x54bdd0
push 0x2c
lea eax, [esp + 0x80]
push ebx
push eax
call fcn.00503ac0
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
add esp, 0xc
push ebx
mov dword [esp + 0x88], edx
lea edx, [esp + 0x80]
push edx
push edi
mov eax, 1
mov word [esp + 0x94], ax
push 4
mov eax, edx
mov dword [esp + 0x90], ecx
mov cx, word [esp + 0x40]
push eax
push esi
mov dword [esp + 0x94], 0x28
mov word [esp + 0xa2], cx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb8], ebx
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
push edi
mov dword [esp + 0x2c], eax
call fcn.0040c6ec
add esp, 4
push esi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [esp + 0x28]
mov edi, eax
push ecx
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
fild dword [esp + 0x54]
fild dword [esp + 0x3c]
mov eax, dword [ebp + 0xc]
add eax, 0xffffee6c
fld st(1)
mov dword [esp + 0x14], ebx
fdiv st(1)
fild dword [esp + 0x5c]
fld st(0)
fdivrp st(3)
cmp eax, 0xc
ja case.0x54baac.4504
jmp dword [eax*4 + 0x54be04]
fstp st(3)
fstp st(2)
fld qword [0x5ae130]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae1a8]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae1a0]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae198]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae190]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae188]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae180]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fld qword [0x5ae138]
fmul st(2), st(0)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fild dword [ebp + 0x10]
fdiv qword [0x5ae0b8]
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fstp st(3)
fstp st(2)
fild dword [esp + 0x20]
fild dword [esp + 0x34]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x24]
fild dword [esp + 0x38]
fmul st(3)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x54bb95
fstp st(0)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fstp st(1)
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
mov eax, dword [esp + 0x34]
fstp st(3)
mov ecx, dword [esp + 0x38]
fstp st(2)
cmp eax, ecx
jge 0x54bbbe
mov edx, dword [esp + 0x20]
cmp edx, dword [esp + 0x24]
jl 0x54bbca
cmp eax, ecx
jle 0x54bc0d
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x20], eax
jle 0x54bc0d
fild dword [esp + 0x20]
fild dword [esp + 0x34]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x24]
fild dword [esp + 0x38]
fmul st(3)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x54bbfc
fstp st(0)
mov dword [esp + 0x14], ebx
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fstp st(1)
mov dword [esp + 0x14], ebx
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fild dword [esp + 0x20]
fild dword [esp + 0x38]
fmul st(2)
fdivp st(1)
fild dword [esp + 0x24]
fild dword [esp + 0x34]
fmul st(4)
fdivp st(1)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x54bc40
fstp st(0)
mov dword [esp + 0x14], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fstp st(1)
mov dword [esp + 0x14], 1
fld st(0)
fmulp st(3)
fmulp st(1)
jmp 0x54bcbe
fxch st(3)
fmul qword [0x5ae178]
call fcn.00505d50
fxch st(2)
fmul qword [0x5ae128]
mov dword [esp + 0x14], eax
call fcn.00505d50
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
cmp ecx, edx
jge 0x54bc88
cmp dword [esp + 0x14], eax
jl 0x54bc90
cmp ecx, edx
jle 0x54bca5
cmp dword [esp + 0x14], eax
jle 0x54bca5
fild dword [esp + 0x14]
fild dword [esp + 0x34]
fmul st(3)
fdivp st(1)
fild dword [esp + 0x1c]
jmp 0x54bbda
fild dword [esp + 0x14]
fild dword [esp + 0x38]
fmul st(2)
fdivp st(1)
fild dword [esp + 0x1c]
jmp 0x54bc1d
fstp st(3)
fstp st(2)
fild dword [esp + 0x34]
fmul st(2)
call fcn.00505d50
fild dword [esp + 0x38]
mov dword [esp + 0x44], eax
fmul st(1)
call fcn.00505d50
fild dword [esp + 0x64]
mov dword [esp + 0x1c], eax
fdivrp st(2)
fxch st(1)
call fcn.00505d50
fidivr dword [esp + 0x58]
mov dword [esp + 0x28], eax
call fcn.00505d50
cmp dword [esp + 0x14], ebx
jne 0x54bd27
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
push 0xcc0020
push ecx
mov ecx, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x38]
push eax
push edi
push ecx
push edx
push ebx
push ebx
push esi
call dword [sym.imp.GDI32.dll_StretchBlt]
jmp 0x54bd7c
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
push ebx
push ebx
push ebx
push edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xc4], ecx
mov ecx, dword [esp + 0x44]
push ecx
push eax
push edx
push edi
lea eax, [esp + 0xc8]
push eax
push esi
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xe0], ebx
mov dword [esp + 0xe4], ebx
call dword [sym.imp.GDI32.dll_PlgBlt]
push esi
call dword [sym.imp.GDI32.dll_EndPage]
mov dword [esp + 0xd0], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54bdae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x48], eax
cmp eax, dword [esp + 0x50]
jl 0x54b923
jmp 0x54b8ed
call fcn.0040d0ac
call fcn.00401ae0
mov dword [esp + 0xd0], 0xffffffff
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x54bdfb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
jmp 0x54b8fd