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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x74
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi]
mov edx, dword [eax + 0x34]
push edi
mov dword [esp + 0x18], ecx
push 2
mov ecx, esi
call edx
mov eax, dword [esi]
mov edx, dword [eax + 0x34]
push 7
mov ecx, esi
call edx
cmp dword [esi + 0xc], 0
je 0x425e45
mov eax, dword [esi + 8]
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x6e
push eax
call edi
mov ecx, dword [esi + 8]
push 0x6f
push ecx
mov dword [esp + 0x48], eax
call edi
mov edx, dword [esi + 8]
push 8
push edx
mov dword [esp + 0x4c], eax
call edi
mov eax, dword [esi + 8]
push 0xa
push eax
call edi
mov ecx, dword [esi + 8]
push 4
push ecx
call edi
mov edx, dword [esi + 8]
push 6
push edx
mov ebx, eax
call edi
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 8]
push 0x58
push eax
call edi
mov ecx, dword [esi + 8]
push 0x5a
push ecx
mov dword [esp + 0x40], eax
call edi
mov edx, dword [esi + 8]
push 0x70
push edx
mov dword [esp + 0x44], eax
call edi
mov dword [esp + 0x48], eax
mov eax, dword [esi + 8]
push 0x71
push eax
call edi
mov ecx, dword [esi + 8]
push 2
push ecx
mov dword [esp + 0x54], eax
call edi
fild dword [esp + 0x38]
fst qword [esp + 0x60]
fild dword [esp + 0x40]
fld qword [0x4a77e0]
fmul st(1), st(0)
fxch st(1)
fdivrp st(2)
fxch st(1)
call fcn.004853a0
fild dword [esp + 0x3c]
mov edi, eax
fst qword [esp + 0x68]
fild dword [esp + 0x44]
fmulp st(2)
fdivp st(1)
call fcn.004853a0
mov ecx, eax
test ebx, ebx
jle 0x425e45
mov eax, dword [esp + 0x5c]
test eax, eax
jle 0x425e45
lea eax, [eax + eax*4]
add eax, eax
lea edx, [ebx + ebx*4]
add edx, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0xc], edx
mov dl, byte [eax + 0x100]
cmp dl, 2
jne 0x4259ee
mov edx, dword [eax + 0x12c]
mov ebx, dword [eax + 0x128]
mov dword [esp + 0x1c], edx
jmp 0x425a5b
mov eax, 0x51eb851f
cmp dl, 1
jne 0x425a17
lea edx, [edi - 0x136]
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ebx, 0xc8
lea edx, [ecx - 0x136]
jmp 0x425a34
lea edx, [edi - 0x19a]
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ebx, 0xfa
lea edx, [ecx - 0x19a]
imul eax, eax, 0x64
mov dword [esp + 0xc], eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x64
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
lea edx, [ebx + ebx]
sub edi, edx
mov edx, dword [esp + 0x1c]
add edx, edx
sub ecx, edx
mov edx, dword [eax]
mov edx, dword [edx + 0x14]
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x70]
push ecx
mov ecx, eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], edi
call edx
mov eax, dword [esp + 0x78]
sub eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x7c]
sub ecx, dword [esp + 0x74]
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
mov dword [esp + 0x2c], ecx
fst qword [esp + 0x50]
fild dword [esp + 0x2c]
fst qword [esp + 0x58]
fld1
fcom st(2)
fnstsw ax
test ah, 1
je 0x425e3f
fcomp st(1)
fnstsw ax
test ah, 1
je 0x425e41
mov eax, dword [esp + 0x18]
fld st(1)
mov cl, byte [eax + 0x100]
fdiv st(1)
fld st(1)
fdiv st(3)
cmp cl, 1
jne 0x425aeb
fild dword [esp + 0xc]
fst qword [esp + 0x30]
fild dword [esp + 0x10]
jmp 0x425b10
cmp cl, 2
jne 0x425b02
fild dword [eax + 0x118]
fst qword [esp + 0x30]
fild dword [eax + 0x11c]
jmp 0x425b10
fld qword [0x4a63d8]
fld st(0)
fst qword [esp + 0x30]
fxch st(1)
fst qword [esp + 0x40]
fxch st(5)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x425b2d
fstp st(1)
fstp st(3)
fstp st(0)
fmul st(2)
fst qword [esp + 0x30]
jmp 0x425b4a
fstp st(3)
fxch st(3)
fcomp st(2)
fnstsw ax
test ah, 0x41
jne 0x425b7e
fstp st(3)
fld st(1)
fmulp st(3)
fxch st(2)
fst qword [esp + 0x40]
fxch st(2)
fxch st(1)
cmp cl, 2
je 0x425ba4
fild dword [esp + 0xc]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x425b69
fild dword [esp + 0x10]
fcomp st(4)
fnstsw ax
test ah, 5
jp 0x425ba2
fdiv st(1)
fild dword [esp + 0x10]
fdiv st(4)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x425b8a
fstp st(0)
jmp 0x425b8c
fstp st(2)
fstp st(1)
fld st(1)
fst qword [esp + 0x30]
jmp 0x425b4a
fstp st(1)
fld st(0)
fmulp st(2)
fxch st(1)
fst qword [esp + 0x30]
fxch st(1)
fmulp st(3)
fxch st(2)
fstp qword [esp + 0x40]
jmp 0x425ba6
fstp st(3)
fstp st(2)
fmul qword [0x4a77e0]
fdivrp st(1)
call fcn.004853a0
mov edx, dword [esi]
mov edx, dword [edx + 0x48]
mov ebx, eax
push ebx
push ebx
lea eax, [esp + 0x18]
push eax
mov ecx, esi
mov dword [esp + 0x38], ebx
call edx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov eax, dword [esi]
push ecx
push edx
mov edx, dword [eax + 0x40]
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
call edx
fld qword [0x4a77d8]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x10], eax
movzx eax, byte [ecx + 0x101]
mov dword [esp + 0xc], edi
cmp eax, 2
jne 0x425c1b
fild dword [esp + 0x24]
fld qword [esp + 0x30]
fsub st(1), st(0)
fxch st(1)
fmul qword [esp + 0x50]
fdivrp st(1)
jmp 0x425c36
cmp eax, 1
jne 0x425c41
fild dword [esp + 0x24]
fld qword [esp + 0x30]
fsub st(1), st(0)
fxch st(1)
fmul qword [esp + 0x50]
fxch st(1)
fmul st(2)
fdivp st(1)
call fcn.004853a0
sub edi, eax
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x18]
movzx eax, byte [edx + 0x102]
cmp eax, 2
jne 0x425c76
fstp st(0)
fild dword [esp + 0x28]
fld qword [esp + 0x40]
fsub st(1), st(0)
fxch st(1)
fmul qword [esp + 0x58]
fdivrp st(1)
call fcn.004853a0
mov ecx, dword [esp + 0x74]
sub ecx, eax
mov dword [esp + 0x10], ecx
jmp 0x425c93
cmp eax, 1
jne 0x425c91
fild dword [esp + 0x28]
fld qword [esp + 0x40]
fsub st(1), st(0)
fxch st(1)
fmul qword [esp + 0x58]
fxch st(1)
fmulp st(2)
jmp 0x425c63
fstp st(0)
push 0x4b330c
mov ecx, esi
call fcn.00463e12
test eax, eax
je 0x425d8b
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x28]
cmp eax, 0x64
je 0x425cc9
cmp eax, 0x12c
je 0x425d8b
cmp eax, 0xc8
je 0x425d8b
fild dword [esp + 0x2c]
fild dword [esp + 0x20]
fld qword [0x4a77e0]
fdiv st(1), st(0)
fild dword [esp + 0x48]
fdiv qword [esp + 0x60]
fsubp st(2)
fxch st(1)
fmul st(2)
call fcn.004853a0
fidivr dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
sub edi, eax
mov dword [esp + 0xc], edi
fild dword [esp + 0x4c]
fdiv qword [esp + 0x68]
fsubp st(1)
fmulp st(1)
call fcn.004853a0
mov ecx, dword [esp + 0x10]
sub ecx, eax
cmp edi, 0x7fff
jle 0x425d23
mov dword [esp + 0xc], 0x7fff
jmp 0x425d33
cmp edi, 0xffff8001
jge 0x425d33
mov dword [esp + 0xc], 0xffff8001
cmp ecx, 0x7fff
jle 0x425d45
mov dword [esp + 0x10], 0x7fff
jmp 0x425d55
cmp ecx, 0xffff8001
jge 0x425d59
mov dword [esp + 0x10], 0xffff8001
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x70]
push edx
mov ecx, esi
call fcn.004661e2
mov eax, dword [esi]
mov edx, dword [eax + 0x38]
push 0
push 0
lea ecx, [esp + 0x70]
push ecx
mov ecx, esi
call edx
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fild dword [esp + 0x20]
fld qword [0x4a77e0]
fdiv st(1), st(0)
fxch st(1)
fmul qword [esp + 0x60]
call fcn.004853a0
fidivr dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0xc]
imul eax, dword [esp + 0x38]
fmul qword [esp + 0x68]
cdq
idiv ebx
sub edi, eax
sub edi, dword [esp + 0x48]
call fcn.004853a0
mov ebx, eax
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x3c]
cdq
idiv dword [esp + 0x2c]
sub ebx, eax
sub ebx, dword [esp + 0x4c]
cmp edi, 0x7fff
jle 0x425de8
mov edi, 0x7fff
jmp 0x425df5
cmp edi, 0xffff8001
jge 0x425df5
mov edi, 0xffff8001
cmp ebx, 0x7fff
jle 0x425e04
mov ebx, 0x7fff
jmp 0x425e11
cmp ebx, 0xffff8001
jge 0x425e11
mov ebx, 0xffff8001
push 0
push 0
lea eax, [esp + 0x70]
push eax
mov ecx, esi
call fcn.004661e2
mov edx, dword [esi]
mov edx, dword [edx + 0x38]
push ebx
push edi
lea eax, [esp + 0x70]
push eax
mov ecx, esi
call edx
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fstp st(0)
fstp st(0)
fstp st(0)
mov eax, dword [esi]
mov edx, dword [eax + 0x48]
push 0x3e8
push 0x3e8
lea ecx, [esp + 0x70]
push ecx
mov ecx, esi
call edx
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 4