#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*/ deCopy(unsigned long, int /*<<< orphan*/, unsigned long,
                          unsigned long, unsigned long, unsigned long,
                          unsigned long, unsigned long, int /*<<< orphan*/,
                          unsigned long, unsigned long, int /*<<< orphan*/,
                          unsigned char);
void deCopyModify(unsigned long nbpp, unsigned long nSrcBase,
                  unsigned long nSrcWidth, unsigned long nSrcX,
                  unsigned long nSrcY, unsigned long nDestBase,
                  unsigned long nDestWidth, unsigned long nDestX,
                  unsigned long nDestY, unsigned long nWidth,
                  unsigned long nHeight, unsigned char nROP2) {
  deCopy(nDestBase, 0, nbpp, nDestX, nDestY, nWidth, nHeight, nSrcBase, 0,
         nSrcX, nSrcY, 0, nROP2);
}


x86 assembly (clang, -O0):
<deCopyModify>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0x68,%rsp
mov    0x38(%rbp),%al
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    0x20(%rbp),%r8
mov    0x28(%rbp),%r9
mov    0x30(%rbp),%rbx
mov    -0x18(%rbp),%r11
mov    -0x28(%rbp),%r10
mov    -0x30(%rbp),%rax
xor    %esi,%esi
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
movl   $0x0,0x10(%rsp)
mov    %r10,0x18(%rsp)
mov    %rax,0x20(%rsp)
movl   $0x0,0x28(%rsp)
movzbl 0x38(%rbp),%eax
mov    %eax,0x30(%rsp)
call   1030 <deCopy@plt>
add    $0x68,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<deCopyModify>:
push   %r14
push   %rbx
push   %rax
mov    %r9,%rbx
mov    %r8,%r14
mov    %rcx,%r10
mov    %rsi,%r11
mov    %rdi,%rdx
mov    0x28(%rsp),%rcx
mov    0x30(%rsp),%r8
mov    0x38(%rsp),%r9
movzbl 0x48(%rsp),%eax
sub    $0x8,%rsp
mov    %rbx,%rdi
xor    %esi,%esi
push   %rax
push   $0x0
push   %r14
push   %r10
push   $0x0
push   %r11
push   0x78(%rsp)
call   1030 <deCopy@plt>
add    $0x48,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @deCopyModify(i64 %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5, i64 %6, i64 %7, i64 %8, i64 %9, i64 %10, i8 zeroext %11) {
%13 = alloca i64
%14 = alloca i64
%15 = alloca i64
%16 = alloca i64
%17 = alloca i64
%18 = alloca i64
%19 = alloca i64
%20 = alloca i64
%21 = alloca i64
%22 = alloca i64
%23 = alloca i64
%24 = alloca i8
store i64 %0, i64* %13
store i64 %1, i64* %14
store i64 %2, i64* %15
store i64 %3, i64* %16
store i64 %4, i64* %17
store i64 %5, i64* %18
store i64 %6, i64* %19
store i64 %7, i64* %20
store i64 %8, i64* %21
store i64 %9, i64* %22
store i64 %10, i64* %23
store i8 %11, i8* %24
%25 = load i64, i64* %18
%26 = load i64, i64* %13
%27 = load i64, i64* %20
%28 = load i64, i64* %21
%29 = load i64, i64* %22
%30 = load i64, i64* %23
%31 = load i64, i64* %14
%32 = load i64, i64* %16
%33 = load i64, i64* %17
%34 = load i8, i8* %24
%35 = call i32 @deCopy(i64 %25, i32 0, i64 %26, i64 %27, i64 %28, i64 %29, i64 %30, i64 %31, i32 0, i64 %32, i64 %33, i32 0, i8 zeroext %34)
ret void
}

LLVM IR (-O2):
define void @deCopyModify(i64 %0, i64 %1, i64 %2, i64 %3, i64 %4, i64 %5, i64 %6, i64 %7, i64 %8, i64 %9, i64 %10, i8 zeroext %11) {
%13 = tail call i32 @deCopy(i64 %5, i32 0, i64 %0, i64 %7, i64 %8, i64 %9, i64 %10, i64 %1, i32 0, i64 %3, i64 %4, i32 0, i8 zeroext %11)
ret void
}