#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ drawPoly3TEx8(short, short, short, short, short, short,
                                 short, short, short, short, short, short,
                                 short, short);
void drawPoly4TEx8_TRI(short x1, short y1, short x2, short y2, short x3,
                       short y3, short x4, short y4, short tx1, short ty1,
                       short tx2, short ty2, short tx3, short ty3, short tx4,
                       short ty4, short clX, short clY) {
  drawPoly3TEx8(x2, y2, x3, y3, x4, y4, tx2, ty2, tx3, ty3, tx4, ty4, clX, clY);
  drawPoly3TEx8(x1, y1, x2, y2, x4, y4, tx1, ty1, tx2, ty2, tx4, ty4, clX, clY);
}


x86 assembly (clang, -O0):
<drawPoly4TEx8_TRI>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x60,%rsp
mov    %r8d,-0x3c(%rbp)
mov    %ecx,%eax
mov    -0x3c(%rbp),%ecx
mov    %eax,-0x38(%rbp)
mov    %edx,%eax
mov    -0x38(%rbp),%edx
mov    %eax,-0x34(%rbp)
mov    %esi,%eax
mov    -0x34(%rbp),%esi
mov    %eax,-0x30(%rbp)
mov    %edi,%r8d
mov    -0x30(%rbp),%edi
mov    %r9w,%ax
mov    0x68(%rbp),%r9w
mov    0x60(%rbp),%r9w
mov    0x58(%rbp),%r9w
mov    0x50(%rbp),%r9w
mov    0x48(%rbp),%r9w
mov    0x40(%rbp),%r9w
mov    0x38(%rbp),%r9w
mov    0x30(%rbp),%r9w
mov    0x28(%rbp),%r9w
mov    0x20(%rbp),%r9w
mov    0x18(%rbp),%r9w
mov    0x10(%rbp),%r9w
mov    %r8w,-0x22(%rbp)
mov    %di,-0x24(%rbp)
mov    %si,-0x26(%rbp)
mov    %dx,-0x28(%rbp)
mov    %cx,-0x2a(%rbp)
mov    %ax,-0x2c(%rbp)
mov    -0x26(%rbp),%di
mov    -0x28(%rbp),%si
mov    -0x2a(%rbp),%dx
mov    -0x2c(%rbp),%cx
mov    0x10(%rbp),%r8w
mov    0x18(%rbp),%r9w
mov    0x30(%rbp),%r12w
mov    0x38(%rbp),%r15w
mov    0x40(%rbp),%r14w
mov    0x48(%rbp),%bx
mov    0x50(%rbp),%r11w
mov    0x58(%rbp),%r10w
mov    0x60(%rbp),%ax
movswl %di,%edi
movswl %si,%esi
movswl %dx,%edx
movswl %cx,%ecx
movswl %r8w,%r8d
movswl %r9w,%r9d
movswl %r12w,%r12d
mov    %r12d,(%rsp)
movswl %r15w,%r15d
mov    %r15d,0x8(%rsp)
movswl %r14w,%r14d
mov    %r14d,0x10(%rsp)
movswl %bx,%ebx
mov    %ebx,0x18(%rsp)
movswl %r11w,%r11d
mov    %r11d,0x20(%rsp)
movswl %r10w,%r10d
mov    %r10d,0x28(%rsp)
cwtl
mov    %eax,0x30(%rsp)
movswl 0x68(%rbp),%eax
mov    %eax,0x38(%rsp)
call   1030 <drawPoly3TEx8@plt>
mov    -0x22(%rbp),%di
mov    -0x24(%rbp),%si
mov    -0x26(%rbp),%dx
mov    -0x28(%rbp),%cx
mov    0x10(%rbp),%r8w
mov    0x18(%rbp),%r9w
mov    0x20(%rbp),%r12w
mov    0x28(%rbp),%r15w
mov    0x30(%rbp),%r14w
mov    0x38(%rbp),%bx
mov    0x50(%rbp),%r11w
mov    0x58(%rbp),%r10w
mov    0x60(%rbp),%ax
movswl %di,%edi
movswl %si,%esi
movswl %dx,%edx
movswl %cx,%ecx
movswl %r8w,%r8d
movswl %r9w,%r9d
movswl %r12w,%r12d
mov    %r12d,(%rsp)
movswl %r15w,%r15d
mov    %r15d,0x8(%rsp)
movswl %r14w,%r14d
mov    %r14d,0x10(%rsp)
movswl %bx,%ebx
mov    %ebx,0x18(%rsp)
movswl %r11w,%r11d
mov    %r11d,0x20(%rsp)
movswl %r10w,%r10d
mov    %r10d,0x28(%rsp)
cwtl
mov    %eax,0x30(%rsp)
movswl 0x68(%rbp),%eax
mov    %eax,0x38(%rsp)
call   1030 <drawPoly3TEx8@plt>
add    $0x60,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<drawPoly4TEx8_TRI>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9d,%r10d
mov    %ecx,0x14(%rsp)
mov    %edx,0x10(%rsp)
mov    %esi,0x1c(%rsp)
mov    %edi,0x18(%rsp)
movswl 0x90(%rsp),%eax
mov    %rax,0x40(%rsp)
movswl 0x98(%rsp),%eax
mov    %rax,0x38(%rsp)
movswl 0x80(%rsp),%r13d
movswl 0x88(%rsp),%r9d
mov    %r9d,0xc(%rsp)
movswl 0xa0(%rsp),%eax
mov    %rax,0x28(%rsp)
movswl 0xa8(%rsp),%ebx
mov    %rbx,0x20(%rsp)
movswl 0xb0(%rsp),%esi
mov    %rsi,0x30(%rsp)
movswl 0xb8(%rsp),%r11d
movswl 0xc0(%rsp),%r12d
movswl 0xc8(%rsp),%ebp
movswl 0xd0(%rsp),%r14d
movswl 0xd8(%rsp),%r15d
mov    %edx,%edi
mov    %ecx,%esi
mov    %r8d,%edx
mov    %r10d,%ecx
mov    %r13d,%r8d
push   %r15
push   %r14
push   %rbp
push   %r12
push   %r11
push   0x58(%rsp)
push   %rbx
push   %rax
call   1030 <drawPoly3TEx8@plt>
add    $0x40,%rsp
mov    0x18(%rsp),%edi
mov    0x1c(%rsp),%esi
mov    0x10(%rsp),%edx
mov    0x14(%rsp),%ecx
mov    %r13d,%r8d
mov    0xc(%rsp),%r9d
push   %r15
push   %r14
push   %rbp
push   %r12
push   0x40(%rsp)
push   0x50(%rsp)
push   0x68(%rsp)
push   0x78(%rsp)
call   1030 <drawPoly3TEx8@plt>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @drawPoly4TEx8_TRI(i16 signext %0, i16 signext %1, i16 signext %2, i16 signext %3, i16 signext %4, i16 signext %5, i16 signext %6, i16 signext %7, i16 signext %8, i16 signext %9, i16 signext %10, i16 signext %11, i16 signext %12, i16 signext %13, i16 signext %14, i16 signext %15, i16 signext %16, i16 signext %17) {
%19 = alloca i16
%20 = alloca i16
%21 = alloca i16
%22 = alloca i16
%23 = alloca i16
%24 = alloca i16
%25 = alloca i16
%26 = alloca i16
%27 = alloca i16
%28 = alloca i16
%29 = alloca i16
%30 = alloca i16
%31 = alloca i16
%32 = alloca i16
%33 = alloca i16
%34 = alloca i16
%35 = alloca i16
%36 = alloca i16
store i16 %0, i16* %19
store i16 %1, i16* %20
store i16 %2, i16* %21
store i16 %3, i16* %22
store i16 %4, i16* %23
store i16 %5, i16* %24
store i16 %6, i16* %25
store i16 %7, i16* %26
store i16 %8, i16* %27
store i16 %9, i16* %28
store i16 %10, i16* %29
store i16 %11, i16* %30
store i16 %12, i16* %31
store i16 %13, i16* %32
store i16 %14, i16* %33
store i16 %15, i16* %34
store i16 %16, i16* %35
store i16 %17, i16* %36
%37 = load i16, i16* %21
%38 = load i16, i16* %22
%39 = load i16, i16* %23
%40 = load i16, i16* %24
%41 = load i16, i16* %25
%42 = load i16, i16* %26
%43 = load i16, i16* %29
%44 = load i16, i16* %30
%45 = load i16, i16* %31
%46 = load i16, i16* %32
%47 = load i16, i16* %33
%48 = load i16, i16* %34
%49 = load i16, i16* %35
%50 = load i16, i16* %36
%51 = call i32 @drawPoly3TEx8(i16 signext %37, i16 signext %38, i16 signext %39, i16 signext %40, i16 signext %41, i16 signext %42, i16 signext %43, i16 signext %44, i16 signext %45, i16 signext %46, i16 signext %47, i16 signext %48, i16 signext %49, i16 signext %50)
%52 = load i16, i16* %19
%53 = load i16, i16* %20
%54 = load i16, i16* %21
%55 = load i16, i16* %22
%56 = load i16, i16* %25
%57 = load i16, i16* %26
%58 = load i16, i16* %27
%59 = load i16, i16* %28
%60 = load i16, i16* %29
%61 = load i16, i16* %30
%62 = load i16, i16* %33
%63 = load i16, i16* %34
%64 = load i16, i16* %35
%65 = load i16, i16* %36
%66 = call i32 @drawPoly3TEx8(i16 signext %52, i16 signext %53, i16 signext %54, i16 signext %55, i16 signext %56, i16 signext %57, i16 signext %58, i16 signext %59, i16 signext %60, i16 signext %61, i16 signext %62, i16 signext %63, i16 signext %64, i16 signext %65)
ret void
}

LLVM IR (-O2):
define void @drawPoly4TEx8_TRI(i16 signext %0, i16 signext %1, i16 signext %2, i16 signext %3, i16 signext %4, i16 signext %5, i16 signext %6, i16 signext %7, i16 signext %8, i16 signext %9, i16 signext %10, i16 signext %11, i16 signext %12, i16 signext %13, i16 signext %14, i16 signext %15, i16 signext %16, i16 signext %17) {
%19 = tail call i32 @drawPoly3TEx8(i16 signext %2, i16 signext %3, i16 signext %4, i16 signext %5, i16 signext %6, i16 signext %7, i16 signext %10, i16 signext %11, i16 signext %12, i16 signext %13, i16 signext %14, i16 signext %15, i16 signext %16, i16 signext %17)
%20 = tail call i32 @drawPoly3TEx8(i16 signext %0, i16 signext %1, i16 signext %2, i16 signext %3, i16 signext %6, i16 signext %7, i16 signext %8, i16 signext %9, i16 signext %10, i16 signext %11, i16 signext %14, i16 signext %15, i16 signext %16, i16 signext %17)
ret void
}