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

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x58
mov rax, qword [r8 + 8]
mov r10, qword [rcx + 8]
xor ebx, ebx
movzx r15d, byte [rax + 0x11]
mov eax, dword [rax]
mov rdi, r9
mov rbp, r8
mov rsi, rdx
mov r14, rcx
cmp dword [r10], eax
je 0x14001ce27
lea rcx, str.Only_works_with_same_format_surfaces
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
jmp fcn.140028e70
test rdx, rdx
je 0x14001ce66
mov ecx, dword [rdx]
test ecx, ecx
js 0x14001ce4e
mov edx, dword [rdx + 4]
test edx, edx
js 0x14001ce4e
add ecx, dword [rsi + 8]
cmp ecx, dword [r14 + 0x10]
jg 0x14001ce4e
mov eax, dword [rsi + 0xc]
lea ecx, [rdx + rax]
cmp ecx, dword [r14 + 0x14]
jle 0x14001ce7e
lea rcx, str.Invalid_source_blit_rectangle
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
jmp fcn.140028e70
mov eax, dword [rcx + 0x10]
mov qword [rsp + 0x30], rbx
lea rsi, [rsp + 0x30]
mov dword [rsp + 0x38], eax
mov eax, dword [rcx + 0x14]
mov dword [rsp + 0x3c], eax
test r9, r9
je 0x14001cec1
mov ecx, dword [r9]
test ecx, ecx
js 0x14001cea9
mov edx, dword [r9 + 4]
test edx, edx
js 0x14001cea9
add ecx, dword [r9 + 8]
cmp ecx, dword [r8 + 0x10]
jg 0x14001cea9
mov eax, dword [r9 + 0xc]
lea ecx, [rdx + rax]
cmp ecx, dword [r8 + 0x14]
jle 0x14001cedb
lea rcx, str.Invalid_destination_blit_rectangle
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
jmp fcn.140028e70
mov eax, dword [r8 + 0x10]
mov qword [rsp + 0x40], rbx
lea rdi, [rsp + 0x40]
mov dword [rsp + 0x48], eax
mov eax, dword [r8 + 0x14]
mov dword [rsp + 0x4c], eax
test byte [r8], 2
mov qword [rsp + 0x98], r12
mov dword [rsp + 0xa0], ebx
mov r12d, ebx
je 0x14001cf1e
mov rcx, r8
call fcn.14001bf60
test eax, eax
jns 0x14001cf10
lea rcx, str.Unable_to_lock_destination_surface
call fcn.140028e70
jmp 0x14001d0a1
mov r12d, 1
mov dword [rsp + 0xa0], r12d
test byte [r14], 2
mov dword [rsp + 0x20], ebx
je 0x14001cf5a
mov rcx, r14
call fcn.14001bf60
test eax, eax
jns 0x14001cf52
test r12d, r12d
je 0x14001cf41
mov rcx, rbp
call fcn.14001bfa0
lea rcx, str.Unable_to_lock_source_surface
call fcn.140028e70
jmp 0x14001d0a1
mov dword [rsp + 0x20], 1
mov ecx, dword [rdi + 0xc]
mov eax, dword [rsi + 0xc]
mov r12d, dword [rdi + 4]
shl eax, 0x10
mov qword [rsp + 0x50], r13
mov r13d, 0x10000
cdq
idiv ecx
mov dword [rsp + 0x24], eax
mov eax, dword [rsi + 4]
mov dword [rsp + 0x90], eax
lea eax, [rcx + r12]
mov dword [rsp + 0x28], eax
cmp r12d, eax
jge 0x14001d079
nop word [rax + rax]
mov eax, dword [rdi]
mov ecx, dword [rbp + 0x18]
imul ecx, r12d
imul eax, r15d
movsxd r8, ecx
cdqe
add r8, rax
add r8, qword [rbp + 0x20]
cmp r13d, 0x10000
jl 0x14001d011
mov ebx, dword [rsp + 0x90]
mov eax, dword [rsi]
mov r9d, dword [r14 + 0x18]
imul eax, r15d
mov r11, qword [r14 + 0x20]
movsxd r10, eax
mov edx, r13d
shr rdx, 0x10
mov ecx, r9d
mov eax, edx
neg eax
shl eax, 0x10
add r13d, eax
imul ecx, ebx
add ebx, edx
mov dword [rsp + 0x90], ebx
nop word [rax + rax]
movsxd rbx, ecx
add ecx, r9d
add rbx, r11
add rbx, r10
dec rdx
jne 0x14001d000
mov ecx, r15d
dec ecx
je 0x14001d057
dec ecx
je 0x14001d046
dec ecx
je 0x14001d035
dec ecx
jne 0x14001d066
mov r9d, dword [rdi + 8]
mov edx, dword [rsi + 8]
mov rcx, rbx
call fcn.14001ccf0
jmp 0x14001d066
mov r9d, dword [rdi + 8]
mov edx, dword [rsi + 8]
mov rcx, rbx
call fcn.14001cd50
jmp 0x14001d066
mov r9d, dword [rdi + 8]
mov edx, dword [rsi + 8]
mov rcx, rbx
call fcn.14001cc80
jmp 0x14001d066
mov r9d, dword [rdi + 8]
mov edx, dword [rsi + 8]
mov rcx, rbx
call fcn.14001cc20
add r13d, dword [rsp + 0x24]
inc r12d
cmp r12d, dword [rsp + 0x28]
jl 0x14001cfa0
cmp dword [rsp + 0xa0], 0
mov r13, qword [rsp + 0x50]
je 0x14001d090
mov rcx, rbp
call fcn.14001bfa0
cmp dword [rsp + 0x20], 0
je 0x14001d09f
mov rcx, r14
call fcn.14001bfa0
xor eax, eax
mov r12, qword [rsp + 0x98]
add rsp, 0x58
pop r15
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret