Function at 0x180039560
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov rdx, qword [rcx + 8]
xor r15d, r15d
movsxd rax, dword [rcx + 0x10]
mov r10, rcx
mov r14d, dword [rcx]
mov rbx, r9
mov rdi, qword [rcx + 0x20]
mov esi, r15d
mov rcx, qword [rcx + 0x30]
mov r11d, dword [rsp + 0xf8]
mov r13d, dword [rsp + 0xd0]
mov dword [rsp + 0x40], eax
mov qword [rsp + 0x50], rcx
mov rcx, rax
mov rax, qword [rdx + 0x40]
mov qword [rsp + 0x58], rdx
mov dword [rsp + 0x30], r15d
mov dword [rsp + 0x38], r14d
movsx edx, word [rax + rcx*2]
mov eax, dword [rsp + 0xf0]
lea ebp, [rdx + rax*8]
test r11d, r11d
je 0x180039610
cmp r13d, 2
jne 0x180039610
mov rax, qword [rsp + 0xd8]
lea r8d, [r13*2 - 1]
mov ecx, ebp
sar ecx, 1
sub ecx, 0x10
mov eax, dword [rax]
mov r9d, eax
mov dword [rsp + 0xf0], eax
jmp 0x180039645
mov rax, qword [rsp + 0xd8]
lea r8d, [r13*2 - 1]
mov ecx, ebp
sar ecx, 1
sub ecx, 4
mov eax, dword [rax]
mov r9d, eax
mov dword [rsp + 0xf0], eax
test r11d, r11d
je 0x180039648
mov dword [rsp + 0xf0], eax
cmp r13d, 2
jne 0x180039648
dec r8d
mov eax, r8d
mov r12d, 1
imul eax, ecx
add eax, r9d
sub r9d, ebp
cdq
idiv r8d
lea edx, [r9 - 0x20]
cmp edx, eax
lea r8, [0x180000000]
cmovge edx, eax
mov eax, 0x40
cmp edx, eax
cmovg edx, eax
cmp edx, 4
jge 0x180039682
mov ebp, r12d
jmp 0x1800396a3
mov eax, edx
mov ecx, reloc.WS2_32.dll_ntohl
sar eax, 3
sub cl, al
mov eax, edx
and eax, 7
movsx ebp, word [r8 + rax*2 + 0xb8118]
sar ebp, cl
inc ebp
and ebp, 0xfffffffe
test r11d, r11d
je 0x1800396b4
mov eax, dword [rsp + 0x40]
cmp eax, dword [r10 + 0x14]
cmovge ebp, r12d
test r14d, r14d
je 0x1800396e1
mov rcx, qword [rsp + 0xc0]
mov r9d, r13d
mov r8d, r11d
mov rdx, rbx
call fcn.1800499f0
mov r10, qword [rsp + 0xb0]
mov esi, eax
mov r11d, dword [rsp + 0xf8]
mov r14d, dword [rdi + 0x20]
lea r13, [0x180000000]
bsr r9d, r14d
mov edx, r14d
lea ecx, [r9 - 0xf]
shr edx, cl
lea eax, [r9*8 + 8]
mov r8d, edx
mov ecx, r15d
shr r8d, 0xc
mov r9d, 0x2055
sub r8d, 8
cmp edx, dword [r13 + r8*4 + 0xb96b0]
mov edx, dword [rdi + 0x18]
mov r13d, dword [rsp + 0xd0]
seta cl
shl edx, 3
sub edx, ecx
sub edx, eax
sub edx, r8d
mov dword [rsp + 0x48], edx
cmp ebp, r12d
je 0x180039e30
mov r8d, dword [rsp + 0x38]
test r8d, r8d
je 0x1800399d5
test r11d, r11d
je 0x1800397aa
mov r9d, dword [r10 + 0x40]
test r9d, r9d
je 0x1800397a4
mov eax, 0x7fff
cmp esi, 0x2000
jg 0x180039770
mov eax, 0xffff8001
cdq
mov ecx, ebp
idiv ebp
imul ecx, esi
lea esi, [rbp - 1]
add ecx, eax
mov eax, r15d
sar ecx, 0xe
test ecx, ecx
cmovns eax, ecx
cmp esi, eax
jl 0x180039794
test ecx, ecx
mov esi, ecx
cmovs esi, r15d
test r9d, r9d
js 0x1800399da
inc esi
jmp 0x1800399da
mov r9d, 0x2055
imul esi, ebp
add esi, 0x2000
sar esi, 0xe
test r11d, r11d
jne 0x1800399da
cmp dword [r10 + 0x48], r15d
je 0x180039977
test esi, esi
jle 0x180039977
cmp esi, ebp
jge 0x180039977
mov r11d, 0x4000
xor edx, edx
mov ecx, r11d
mov eax, esi
shl eax, 0xe
div ebp
sub cx, ax
movsx r8d, ax
movsx r10d, cx
mov ecx, r11d
imul r8d, r8d
imul r10d, r10d
add r8d, 0x1000
sar r8d, 0xd
add r10d, 0x1000
movsx edx, r8w
imul eax, edx, 0x272
sar r10d, 0xd
sub ecx, eax
sar ecx, 0xf
lea eax, [r9 + rcx]
mov ecx, 0x1de3
cwde
imul eax, edx
add eax, r11d
sar eax, 0xf
sub ax, cx
mov ecx, r11d
movsx ebx, ax
mov eax, 0xffff8000
imul ebx, edx
movsx edx, r10w
add ebx, r11d
sar ebx, 0xf
sub bx, r8w
add bx, ax
imul eax, edx, 0x272
movsx r9d, bx
sub ecx, eax
mov eax, 0x2055
sar ecx, 0xf
add ax, cx
mov ecx, 0x1de3
cwde
imul eax, edx
add eax, r11d
sar eax, 0xf
sub ax, cx
movsx r8d, ax
mov eax, 0xffff8000
imul r8d, edx
add r8d, r11d
sar r8d, 0xf
sub r8w, r10w
add r8w, ax
mov eax, reloc.WS2_32.dll_ntohs
movsx ecx, r8w
bsr r11d, ecx
mov ecx, eax
bsr r10d, r9d
inc r11d
inc r10d
sub ecx, r10d
shl bx, cl
mov ecx, eax
sub ecx, r11d
movsx edx, bx
shl r8w, cl
mov ebx, 0x4000
movsx r9d, r8w
mov ecx, ebx
imul eax, edx, 0xa25
sub ecx, eax
mov eax, 0x1efc
sar ecx, 0xf
add cx, ax
movsx r8d, cx
imul r8d, edx
add r8d, ebx
sar r8d, 0xf
imul eax, r9d, 0xa25
sub r11w, r10w
mov ecx, ebx
sub ecx, eax
mov eax, 0x1efc
sar ecx, 0xf
add cx, ax
mov eax, 0x800
cwde
movsx edx, cx
imul edx, r9d
movsx ecx, r11w
imul ecx, eax
add edx, ebx
sar edx, 0xf
sub dx, r8w
add dx, cx
movsx ecx, r13w
movsx r8d, dx
mov edx, 0x80
movsx eax, dx
imul eax, ecx
sub ax, dx
cwde
imul r8d, eax
mov eax, dword [rsp + 0xf0]
add r8d, ebx
sar r8d, 0xf
cmp r8d, eax
jle 0x1800399c9
mov esi, ebp
mov rbx, qword [rsp + 0xc8]
mov r11d, dword [rsp + 0xf8]
mov r8d, dword [rsp + 0x38]
cmp dword [rsp + 0xe8], r12d
jg 0x180039dab
test r11d, r11d
jne 0x180039dab
mov r11d, ebp
sar r11d, 1
lea r10d, [r11 + 1]
mov r9d, r10d
imul r9d, r10d
test r8d, r8d
je 0x180039c6a
mov eax, ebp
sub eax, esi
cmp esi, r11d
jg 0x180039b5b
lea r8d, [rsi + 1]
imul r8d, esi
lea r10d, [rsi + 1]
sar r8d, 1
jmp 0x180039b6f
neg eax
cmp r8d, eax
jge 0x180039962
mov esi, r15d
jmp 0x180039962
test r11d, r11d
je 0x180039977
cmp r13d, 2
jle 0x180039977
mov eax, ebp
cdq
sub eax, edx
sar eax, 1
mov r11d, eax
lea ecx, [rax + 1]
lea r10d, [rcx + rcx*2]
lea r9d, [r10 + rax]
test r8d, r8d
je 0x180039a93
sub r10d, eax
cmp esi, eax
jg 0x180039a0f
lea r8d, [rsi + rsi*2]
lea ecx, [r8 + 3]
jmp 0x180039a17
lea ecx, [r10 + rsi]
lea r8d, [rcx - 1]
xor edx, edx
mov eax, r14d
div r9d
mov edx, r14d
test r8d, r8d
je 0x180039a3c
sub r9d, r8d
sub ecx, r8d
imul r9d, eax
sub edx, r9d
add dword [rdi + 0x24], edx
imul ecx, eax
jmp 0x180039a48
sub r9d, ecx
mov ecx, edx
imul r9d, eax
sub ecx, r9d
mov dword [rdi + 0x20], ecx
cmp ecx, 0x800000
ja 0x180039b40
nop word [rax + rax]
mov edx, dword [rdi + 0x24]
mov rcx, rdi
shr edx, 0x17
call fcn.180044520
mov ecx, dword [rdi + 0x24]
shl dword [rdi + 0x20], 8
and ecx, 0x7fffff
add dword [rdi + 0x18], 8
shl ecx, 8
cmp dword [rdi + 0x20], 0x800000
mov dword [rdi + 0x24], ecx
jbe 0x180039a60
jmp 0x180039b40
xor edx, edx
mov eax, r14d
div r9d
xor edx, edx
mov ecx, eax
mov dword [rsp + 0xd0], eax
mov dword [rdi + 0x28], eax
mov eax, dword [rdi + 0x24]
mov dword [rsp + 0xf0], eax
div ecx
mov edx, r9d
mov ecx, r15d
sub edx, eax
dec edx
lea r8d, [rax + 1]
cmp r9d, r8d
cmovb ecx, edx
mov edx, r9d
sub edx, ecx
sub edx, eax
dec edx
cmp edx, r10d
jge 0x180039ae7
mov eax, 0x55555556
imul edx
mov esi, edx
shr esi, 0x1f
add esi, edx
jmp 0x180039af0
sub edx, r10d
lea esi, [rdx + 1]
add esi, r11d
sub r10d, r11d
cmp esi, r11d
jg 0x180039b00
lea ecx, [rsi + rsi*2]
lea eax, [rcx + 3]
jmp 0x180039b07
lea eax, [r10 + rsi]
lea ecx, [rax - 1]
mov r8d, dword [rsp + 0xd0]
sub r9d, eax
mov edx, dword [rsp + 0xf0]
imul r9d, r8d
sub edx, r9d
mov dword [rdi + 0x24], edx
test ecx, ecx
je 0x180039b2f
sub eax, ecx
imul eax, r8d
jmp 0x180039b35
sub r14d, r9d
mov eax, r14d
mov rcx, rdi
mov dword [rdi + 0x20], eax
call fcn.180044300
shl esi, 0xe
xor edx, edx
mov eax, esi
div ebp
mov esi, eax
cmp dword [rsp + 0x38], r15d
je 0x180039be9
jmp 0x180039dcb
lea ecx, [rax + 2]
mov r8d, r9d
lea r10d, [rax + 1]
inc eax
imul ecx, eax
sar ecx, 1
sub r8d, ecx
xor edx, edx
mov eax, r14d
div r9d
mov ecx, r14d
test r8d, r8d
je 0x180039b92
sub r9d, r8d
imul r9d, eax
sub ecx, r9d
add dword [rdi + 0x24], ecx
imul r10d, eax
jmp 0x180039ba2
sub r9d, r10d
mov r10d, ecx
sub r9d, r8d
imul r9d, eax
sub r10d, r9d
mov dword [rdi + 0x20], r10d
cmp r10d, 0x800000
ja 0x180039bde
nop
mov edx, dword [rdi + 0x24]
mov rcx, rdi
shr edx, 0x17
call fcn.180044520
mov ecx, dword [rdi + 0x24]
shl dword [rdi + 0x20], 8
and ecx, 0x7fffff
add dword [rdi + 0x18], 8
shl ecx, 8
cmp dword [rdi + 0x20], 0x800000
mov dword [rdi + 0x24], ecx
jbe 0x180039bb0
shl esi, 0xe
xor edx, edx
mov eax, esi
div ebp
mov esi, eax
mov ebp, dword [rsp + 0x30]
mov edx, dword [rdi + 0x20]
lea r10, [0x180000000]
mov edi, dword [rdi + 0x18]
bsr eax, edx
lea ecx, [rax - 0xf]
shr edx, cl
lea eax, [rax*8 + 8]
mov r8d, edx
mov ecx, r15d
shr r8d, 0xc
sub r8d, 8
cmp edx, dword [r10 + r8*4 + 0xb96b0]
seta cl
shl edi, 3
sub edi, ecx
sub edi, eax
mov rax, qword [rsp + 0xd8]
sub edi, r8d
sub edi, dword [rsp + 0x48]
sub dword [rax], edi
test esi, esi
jne 0x18003a0d1
mov rax, qword [rsp + 0x100]
mov r14d, 0x7fff
mov ecx, dword [rsp + 0xe0]
shl r12d, cl
dec r12d
and dword [rax], r12d
mov eax, 0xffffc000
jmp 0x18003a26e
xor edx, edx
mov eax, r14d
div r9d
xor edx, edx
mov ecx, r15d
mov esi, eax
mov dword [rdi + 0x28], eax
mov eax, dword [rdi + 0x24]
mov dword [rsp + 0xf8], eax
div esi
mov edx, r9d
sub edx, eax
dec edx
lea r8d, [rax + 1]
cmp r9d, r8d
cmovb ecx, edx
imul r10d, r11d
mov edx, r9d
mov r11d, r15d
sub edx, ecx
sub edx, eax
dec edx
sar r10d, 1
cmp edx, r10d
mov r10d, r12d
jge 0x180039d0d
lea r8d, [rdx*8 + 1]
bsr ecx, r8d
sar ecx, 1
shl r10d, cl
nop word [rax + rax]
lea edx, [r10 + r11*2]
shl edx, cl
lea eax, [r10 + r11]
cmp edx, r8d
cmova eax, r11d
shr r10d, 1
mov r11d, eax
mov eax, r8d
sub eax, edx
cmp edx, r8d
cmova eax, r8d
sub ecx, r12d
mov r8d, eax
jns 0x180039cd0
lea ebx, [r11 - 1]
shr ebx, 1
lea edx, [rbx + 1]
mov ecx, edx
imul ecx, ebx
sar ecx, 1
jmp 0x180039d6e
mov eax, r9d
sub eax, edx
lea r8d, [rax*8 - 7]
bsr ecx, r8d
sar ecx, 1
shl r10d, cl
lea edx, [r10 + r11*2]
shl edx, cl
lea eax, [r10 + r11]
cmp edx, r8d
cmova eax, r11d
shr r10d, 1
mov r11d, eax
mov eax, r8d
sub eax, edx
cmp edx, r8d
cmova eax, r8d
sub ecx, r12d
mov r8d, eax
jns 0x180039d23
lea ebx, [rbp*2 + 2]
mov eax, ebp
sub ebx, r11d
mov ecx, r9d
shr ebx, 1
sub eax, ebx
lea edx, [rax + 1]
add eax, 2
imul eax, edx
sar eax, 1
sub ecx, eax
mov eax, dword [rsp + 0xf8]
sub r9d, ecx
sub r9d, edx
imul r9d, esi
sub eax, r9d
mov dword [rdi + 0x24], eax
test ecx, ecx
je 0x180039d8e
imul esi, edx
jmp 0x180039d94
mov esi, r14d
sub esi, r9d
mov rcx, rdi
mov dword [rdi + 0x20], esi
call fcn.180044300
shl ebx, 0xe
xor edx, edx
mov eax, ebx
jmp 0x180039be5
lea edx, [rbp + 1]
mov rcx, rdi
test r8d, r8d
je 0x180039e21
mov r8d, edx
mov edx, esi
call fcn.1800445d0
shl esi, 0xe
xor edx, edx
mov eax, esi
div ebp
mov esi, eax
cmp dword [rsp + 0xf8], r15d
je 0x180039be9
test esi, esi
jne 0x180039e09
mov eax, dword [rsp + 0x40]
mov r8, rbx
mov r9, qword [rsp + 0x50]
mov rdx, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0x58]
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], eax
call fcn.1800385a0
jmp 0x180039be9
mov rcx, qword [rsp + 0xc0]
mov r8d, r13d
mov rdx, rbx
call fcn.1800387d0
jmp 0x180039be9
call fcn.1800443a0
shl eax, 0xe
xor edx, edx
jmp 0x180039be5
test r11d, r11d
je 0x180039be9
mov ebp, dword [rsp + 0x38]
test ebp, ebp
je 0x180039fcd
cmp esi, 0x2000
jle 0x180039f9d
cmp dword [r10 + 0x44], r15d
jne 0x180039f9d
mov dword [rsp + 0x30], r12d
mov edx, r15d
test r13d, r13d
jle 0x180039fa2
mov dword [rsp + 0x30], r12d
cmp r13d, 2
jb 0x180039f29
movdqa xmm2, xmmword [0x1800c23f0]
mov dword [rsp + 0x30], r12d
cmp r13d, 0x10
jb 0x180039ef5
mov eax, r13d
mov dword [rsp + 0x30], r12d
and eax, 0xfffffff0
mov rcx, r15
movsxd r8, eax
lea rax, [rbx + 0x20]
nop dword [rax]
nop word [rax + rax]
movups xmm0, xmmword [rax - 0x20]
add edx, 0x10
lea rax, [rax + 0x40]
add rcx, 0x10
xorps xmm0, xmm2
movups xmmword [rax - 0x60], xmm0
movups xmm0, xmmword [rax - 0x50]
xorps xmm0, xmm2
movups xmmword [rax - 0x50], xmm0
movups xmm1, xmmword [rax - 0x40]
xorps xmm1, xmm2
movups xmmword [rax - 0x40], xmm1
movups xmm0, xmmword [rax - 0x30]
xorps xmm0, xmm2
movups xmmword [rax - 0x30], xmm0
cmp rcx, r8
jl 0x180039eb0
mov eax, r13d
and al, 0xf
cmp al, 2
jb 0x180039f29
mov eax, r13d
movsxd rcx, edx
and eax, 0xfffffffe
movsxd r8, eax
nop dword [rax]
nop word [rax + rax]
movsd xmm0, qword [rbx + rcx*4]
add edx, 2
xorps xmm0, xmm2
movsd qword [rbx + rcx*4], xmm0
add rcx, 2
cmp rcx, r8
jl 0x180039f10
cmp edx, r13d
jge 0x180039fa2
movaps xmm2, xmmword [0x1800c23f0]
mov eax, r13d
sub eax, edx
movsxd r9, edx
cmp eax, 4
jl 0x180039f7a
mov eax, r13d
lea rcx, [rbx + 8]
sub eax, edx
lea rcx, [rcx + r9*4]
sub eax, 4
shr eax, 2
inc eax
mov r8d, eax
lea edx, [rdx + rax*4]
lea r9, [r9 + rax*4]
movups xmm0, xmmword [rcx - 8]
lea rcx, [rcx + 0x10]
xorps xmm0, xmm2
movups xmmword [rcx - 0x18], xmm0
sub r8, r12
jne 0x180039f61
cmp edx, r13d
jge 0x180039fa2
mov eax, r13d
lea rcx, [rbx + r9*4]
sub eax, edx
movsxd rdx, eax
movss xmm0, dword [rcx]
lea rcx, [rcx + 4]
xorps xmm0, xmm2
movss dword [rcx - 4], xmm0
sub rdx, r12
jne 0x180039f86
jmp 0x180039fa2
mov dword [rsp + 0x30], r15d
mov eax, dword [rsp + 0x40]
mov r8, rbx
mov r9, qword [rsp + 0x50]
mov rdx, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0x58]
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], eax
call fcn.1800385a0
mov r14d, dword [rdi + 0x20]
mov rax, qword [rsp + 0xd8]
mov rbx, qword [rsp + 0xb0]
cmp dword [rax], 0x10
jle 0x18003a0ba
cmp dword [rbx + 0x28], 0x10
jle 0x18003a0ba
mov eax, r14d
shr eax, 2
test ebp, ebp
je 0x18003a062
mov ebp, dword [rsp + 0x30]
sub r14d, eax
test ebp, ebp
je 0x18003a00b
add dword [rdi + 0x24], r14d
test ebp, ebp
cmovne r14d, eax
mov dword [rdi + 0x20], r14d
cmp r14d, 0x800000
ja 0x18003a0bd
mov edx, dword [rdi + 0x24]
mov rcx, rdi
shr edx, 0x17
call fcn.180044520
mov ecx, dword [rdi + 0x24]
shl dword [rdi + 0x20], 8
and ecx, 0x7fffff
add dword [rdi + 0x18], 8
shl ecx, 8
cmp dword [rdi + 0x20], 0x800000
mov dword [rdi + 0x24], ecx
jbe 0x18003a020
cmp dword [rbx + 0x44], r15d
mov eax, r15d
mov esi, r15d
cmove eax, ebp
mov ebp, eax
jmp 0x180039bed
mov ecx, dword [rdi + 0x24]
mov ebp, r15d
cmp ecx, eax
setb bpl
jb 0x18003a098
sub ecx, eax
sub r14d, eax
mov dword [rdi + 0x24], ecx
mov rcx, rdi
mov dword [rdi + 0x20], r14d
call fcn.180044300
cmp dword [rbx + 0x44], r15d
mov eax, r15d
mov esi, r15d
cmove eax, ebp
mov ebp, eax
jmp 0x180039bed
mov rcx, rdi
mov dword [rdi + 0x20], eax
mov r14d, eax
call fcn.180044300
cmp dword [rbx + 0x44], r15d
mov eax, r15d
mov esi, r15d
cmove eax, ebp
mov ebp, eax
jmp 0x180039bed
mov ebp, r15d
cmp dword [rbx + 0x44], r15d
mov eax, r15d
mov esi, r15d
cmove eax, ebp
mov ebp, eax
jmp 0x180039bed
cmp esi, 0x4000
jne 0x18003a104
mov ecx, dword [rsp + 0xe0]
mov r14d, r15d
mov rax, qword [rsp + 0x100]
mov r15d, 0x7fff
shl r12d, cl
dec r12d
shl r12d, cl
and dword [rax], r12d
mov eax, esi
jmp 0x18003a26e
mov r12d, 0x4000
movsx r8d, si
imul r8d, r8d
mov ecx, r12d
mov r10d, 0x2055
mov r11d, 0x1de3
mov r15d, 0xffff8000
add r8d, 0x1000
sar r8d, 0xd
movsx edx, r8w
imul eax, edx, 0x272
sub ecx, eax
sar ecx, 0xf
lea eax, [r10 + rcx]
mov ecx, r12d
cwde
imul eax, edx
add eax, r12d
sar eax, 0xf
sub ax, r11w
movsx ebx, ax
mov eax, r12d
sub ax, si
imul ebx, edx
movsx r9d, ax
imul r9d, r9d
add ebx, r12d
sar ebx, 0xf
sub bx, r8w
add r9d, 0x1000
sar r9d, 0xd
add bx, r15w
movsx edx, r9w
imul eax, edx, 0x272
movsx r14d, bx
sub ecx, eax
sar ecx, 0xf
lea eax, [r10 + rcx]
cwde
imul eax, edx
bsr r10d, r14d
add eax, r12d
sar eax, 0xf
inc r10d
sub ax, r11w
movsx r8d, ax
mov eax, reloc.WS2_32.dll_ntohs
imul r8d, edx
mov ecx, eax
sub eax, r10d
add r8d, r12d
sar r8d, 0xf
sub r8w, r9w
add r8w, r15w
movsx r15d, r8w
bsr r11d, r15d
inc r11d
sub ecx, r11d
shl r8w, cl
movzx ecx, al
shl bx, cl
mov ecx, r12d
movsx edx, r8w
imul eax, edx, 0xa25
movsx r8d, bx
mov ebx, 0x1efc
sub ecx, eax
imul eax, r8d, 0xa25
sar ecx, 0xf
add cx, bx
movsx r9d, cx
mov ecx, r12d
imul r9d, edx
sub ecx, eax
sar ecx, 0xf
add r9d, r12d
lea eax, [rbx + rcx]
sar r9d, 0xf
cwde
imul eax, r8d
add eax, r12d
sar eax, 0xf
sub r11w, r10w
sub r9w, ax
movsx ecx, r11w
mov r8d, 0x80
mov eax, 0x800
cwde
imul ecx, eax
movsx eax, r8w
add r9w, cx
movsx ecx, r13w
imul eax, ecx
movsx edx, r9w
sub ax, r8w
cwde
imul eax, edx
add eax, r12d
sar eax, 0xf
mov rcx, qword [rsp + 0xb8]
mov dword [rcx], ebp
mov dword [rcx + 4], r14d
mov dword [rcx + 8], r15d
mov dword [rcx + 0xc], eax
mov dword [rcx + 0x10], esi
mov dword [rcx + 0x14], edi
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret