Function at 0x140164350
Capabilities:
Encode data using xor

Disassembly:
push rdi
mov eax, 0x19b0
call fcn.1403066b0
sub rsp, rax
movaps xmmword [rsp + 0x1920], xmm10
movaps xmmword [rsp + 0x1910], xmm11
movaps xmmword [rsp + 0x1900], xmm12
mov rax, qword [0x140377790]
xor rax, rsp
mov qword [rsp + 0x18f0], rax
movaps xmm12, xmm3
movaps xmm11, xmm2
movaps xmm10, xmm1
call fcn.1401a0ec0
mov rdi, rax
test rax, rax
jne 0x1401643ad
lea eax, [rdi + 1]
jmp 0x1401651a1
mov edx, dword [rax + 0x23a20]
mov qword [rsp + 0x19a8], rbx
mov qword [rsp + 0x19a0], rbp
mov qword [rsp + 0x1998], rsi
xor esi, esi
mov qword [rsp + 0x1990], r12
mov qword [rsp + 0x1988], r13
mov r13, qword [rax + 8]
mov qword [rsp + 0x1980], r14
mov qword [rsp + 0x1978], r15
lea rcx, [rax + 0x23a10]
mov dword [rax + 0x24d4c], esi
movaps xmmword [rsp + 0x1960], xmm6
movaps xmmword [rsp + 0x1950], xmm7
movaps xmmword [rsp + 0x1940], xmm8
mov dword [rax + 0x24d50], esi
mov dword [rax + 0x24d54], esi
mov dword [rax + 0x24d58], esi
movaps xmmword [rsp + 0x1930], xmm9
mov dword [rax + 0x24d5c], esi
mov dword [rax + 0x24d60], esi
mov dword [rax + 0x24d64], esi
mov dword [rax + 0x24d68], esi
mov dword [rax + 0x24d6c], esi
mov dword [rax + 0x24d70], esi
mov dword [rax + 0x24d74], esi
mov dword [rax + 0x24d78], 0x3f800000
mov dword [rax + 0x24d88], esi
mov dword [rax + 0x24d8c], esi
mov dword [rax + 0x24d90], esi
mov dword [rax + 0x24d94], esi
mov dword [rax + 0x24d98], esi
mov dword [rax + 0x24d9c], esi
mov dword [rax + 0x24da0], esi
mov dword [rax + 0x24da8], esi
mov dword [rax + 0x24db0], esi
mov dword [rax + 0x37b3c], esi
mov dword [rax + 0x37b40], esi
mov dword [rax + 0x37b1c], esi
mov dword [rax + 0x37b28], esi
mov dword [rax + 0x24db8], esi
mov dword [rax + 0x24dbc], esi
call fcn.1401a1310
movss xmm7, dword [0x140339240]
movsd xmm4, qword [0x140339420]
movsd xmm3, qword [0x140339328]
movd xmm2, dword [rdi + 0x23a24]
movsxd rax, dword [rdi + 0x23b84]
movss xmm1, dword [rdi + 0x23b88]
movss dword [rdi + 0x23a0c], xmm0
cvtps2pd xmm2, xmm2
mulss xmm1, xmm7
mulss xmm1, xmm1
imul rax, rax, 0x70
mulsd xmm2, qword [rax + rdi + 0x23a98]
unpcklps xmm1, xmm1
mov dword [rdi + 0x24dc0], esi
mov dword [rdi + 0x24dc4], esi
mov dword [rdi + 0x24ec4], esi
mov dword [rdi + 0x24ec8], esi
lea rax, [rdi + 0x24f6c]
cvtps2pd xmm0, xmm1
movss xmm1, dword [rdi + 0x23b9c]
mulsd xmm0, xmm4
mulss xmm1, xmm7
mulsd xmm0, xmm3
mulss xmm1, xmm1
divsd xmm2, xmm0
unpcklps xmm1, xmm1
cvtsd2ss xmm0, xmm2
movss dword [rdi + 0x23b8c], xmm0
movss xmm0, dword [rdi + 0x23b98]
mulss xmm0, dword [rdi + 0x23b90]
unpcklps xmm0, xmm0
cvtps2pd xmm2, xmm0
cvtps2pd xmm0, xmm1
mulsd xmm0, xmm4
mulsd xmm0, xmm3
divsd xmm2, xmm0
cvtsd2ss xmm0, xmm2
movss dword [rdi + 0x23ba0], xmm0
mov r14d, 3
mov rcx, r14
nop
mov dword [rax - 0xc], esi
mov dword [rax], esi
mov dword [rax + 0xc], esi
add rax, 4
sub rcx, 1
jne 0x1401645a0
mov edx, esi
mov dword [rdi + 0x24264], esi
mov dword [rdi + 0x24234], esi
cmp dword [rdi + 0x2413c], edx
mov dword [rdi + 0x24238], esi
jle 0x140164607
lea rcx, [rdi + 0x24168]
movsxd rax, dword [rcx]
inc edx
add rcx, 4
movd xmm1, dword [rdi + rax*8 + 0x23e1c]
movd xmm0, dword [rdi + rax*8 + 0x23e20]
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [rcx + 0x24], xmm1
cmp edx, dword [rdi + 0x2413c]
jl 0x1401645d5
mov dword [rdi + 0x24298], esi
mov dword [rdi + 0x2429c], esi
mov dword [rdi + 0x242a8], esi
mov qword [rdi + 0x242fc], rsi
mov dword [rdi + 0x24304], esi
mov rcx, rdi
mov dword [rdi + 0x24310], esi
mov dword [rdi + 0x24308], 0x7f7fffff
mov dword [rdi + 0x2430c], 0xff7fffff
mov dword [rdi + 0x24320], esi
mov dword [rdi + 0x24318], 0x7f7fffff
mov dword [rdi + 0x2431c], 0xff7fffff
call fcn.14015ab20
mov rcx, rdi
call fcn.14015adb0
call fcn.14015b060
mov ebx, esi
mov edx, ebx
mov rcx, rdi
call fcn.1401640c0
inc ebx
cmp ebx, 4
jl 0x140164671
mov r15d, 2
lea rax, [rdi + 0x24c60]
mov rcx, r15
nop word [rax + rax]
mov dword [rax - 8], esi
mov dword [rax], esi
add rax, 4
sub rcx, 1
jne 0x1401646a0
mov r8d, esi
mov edx, r8d
mov rcx, rdi
call fcn.140164310
inc r8d
cmp r8d, 4
jl 0x1401646b2
lea rbx, [rdi + 0x25324]
lea rsi, [rdi + 0x2533c]
mov rbp, r15
nop word [rax + rax]
mov edx, dword [rdi + 0x254bc]
lea rcx, [rdi + 0x254ac]
call fcn.1401a1310
mov edx, dword [rbx]
lea rcx, [rsi - 0x28]
movss dword [rbx + 8], xmm0
call fcn.1401a1310
mov edx, dword [rbx + 0x28]
mov rcx, rsi
movss dword [rbx + 4], xmm0
call fcn.1401a1310
xor eax, eax
mov dword [rbx + 0x30], eax
mov dword [rbx + 0xb4], eax
mov dword [rbx + 0xb8], eax
movss dword [rbx + 0x2c], xmm0
add rbx, 0xcc
add rsi, 0xcc
sub rbp, 1
jne 0x1401646e0
xorps xmm8, xmm8
lea rcx, [rdi + 0x37b60]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea rcx, [rdi + 0x37b70]
xor ebx, ebx
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
mov dword [rdi + 0x37b6c], ebx
call fcn.140250780
lea rcx, [rdi + 0x37b7c]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea rcx, [rdi + 0x37b88]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea rcx, [rdi + 0x37b94]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea rcx, [rsp + 0x170]
mov dword [rdi + 0x37ba4], ebx
mov dword [rdi + 0x37ba8], ebx
call fcn.14024ee30
mov rax, rbx
movss dword [rsp + 0x1e8], xmm8
movss xmm0, dword [rdi + 0x25010]
movss dword [rsp + 0x1b0], xmm0
movss xmm1, dword [rdi + 0x250f4]
movss dword [rsp + 0x1b4], xmm1
movss xmm0, dword [rdi + 0x251d8]
movss dword [rsp + 0x1b8], xmm0
movss xmm1, dword [rdi + 0x252bc]
movss dword [rsp + 0x1bc], xmm1
nop word [rax + rax]
mov dword [rsp + rax*4 + 0x1c0], ebx
mov dword [rsp + rax*4 + 0x1c8], ebx
inc rax
cmp rax, r15
jl 0x140164830
movss dword [rsp + 0x1d0], xmm8
movss dword [rsp + 0x1d4], xmm8
mov rax, rbx
nop dword [rax]
mov dword [rsp + rax*4 + 0x1d8], ebx
mov dword [rsp + rax*4 + 0x1e0], ebx
inc rax
cmp rax, r15
jl 0x140164860
lea r8, [rsp + 0x170]
lea rdx, [rsp + 0x290]
mov rcx, rdi
call fcn.140154e70
lea rbx, [rsp + 0xc0]
lea rsi, [rsp + 0x3ac]
movss xmm6, dword [0x1403392e0]
lea rbp, [rdi + 0x25510]
mov r12d, 4
nop word [rax + rax]
mov rax, qword [rbp]
movaps xmm3, xmm8
movaps xmm1, xmm8
mov rcx, rbx
movss xmm2, dword [rax + 0x38]
xorps xmm2, xmm6
call fcn.140250780
mov r8, rbx
mov rdx, rsi
mov rcx, rbx
call fcn.14024f820
add rsi, 0xbc
add rbx, 0xc
add rbp, 0x868
sub r12, 1
jne 0x1401648c0
movss xmm0, dword [rsp + 0xcc]
movss xmm1, dword [rsp + 0xd0]
lea r8, [rsp + 0xb0]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x30]
addss xmm0, dword [rsp + 0xc0]
addss xmm1, dword [rsp + 0xc4]
mulss xmm0, xmm7
mulss xmm1, xmm7
movss dword [rsp + 0x60], xmm0
movss xmm0, dword [rsp + 0xd4]
movss dword [rsp + 0x64], xmm1
addss xmm0, dword [rsp + 0xc8]
movss xmm1, dword [rsp + 0xe4]
addss xmm1, dword [rsp + 0xd8]
mulss xmm0, xmm7
movss dword [rsp + 0x68], xmm0
movss xmm0, dword [rsp + 0xe8]
mulss xmm1, xmm7
addss xmm0, dword [rsp + 0xdc]
movss dword [rsp + 0xb0], xmm1
movss xmm1, dword [rsp + 0xec]
mulss xmm0, xmm7
addss xmm1, dword [rsp + 0xe0]
movss dword [rsp + 0xb4], xmm0
mulss xmm1, xmm7
movss dword [rsp + 0xb8], xmm1
call fcn.140250750
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.1402506a0
lea rcx, [rsp + 0x50]
movss xmm9, dword [0x140339228]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm9
call fcn.140250780
lea r8, [rsp + 0x50]
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x40]
call fcn.140250580
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x40]
call fcn.1402506a0
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x50]
call fcn.140250580
lea rcx, [rsp + 0xf0]
call fcn.14024ee30
lea rcx, [rsp + 0xf0]
movss xmm1, dword [rsp + 0x58]
movss xmm0, dword [rsp + 0x54]
movss xmm5, dword [rsp + 0x50]
movss xmm3, dword [rsp + 0x68]
movss xmm2, dword [rsp + 0x64]
movss dword [rsp + 0x110], xmm1
movss xmm1, dword [rsp + 0x44]
movss dword [rsp + 0x100], xmm0
movss xmm0, dword [rsp + 0x40]
movss dword [rsp + 0x104], xmm1
movss xmm1, dword [rsp + 0x30]
movss dword [rsp + 0xf4], xmm0
movss xmm0, dword [rsp + 0x48]
movss dword [rsp + 0xf8], xmm1
movss xmm1, dword [rsp + 0x38]
movss dword [rsp + 0x114], xmm0
movss xmm0, dword [rsp + 0x34]
movss dword [rsp + 0x118], xmm1
movss xmm1, dword [rsp + 0x60]
movss dword [rsp + 0xf0], xmm5
movss dword [rsp + 0x108], xmm0
call fcn.14024f800
lea rdx, [rsp + 0xf0]
lea rcx, [rsp + 0xf0]
call fcn.14024f1f0
lea r11, [rsp + 0x240]
movss xmm3, dword [rsp + 0x19e0]
mov qword [rsp + 0x28], r11
movaps xmm2, xmm11
mov dword [rsp + 0x20], r12d
movaps xmm1, xmm10
mov rcx, r13
call fcn.14019d410
movss xmm3, dword [rsp + 0x254]
movss xmm2, dword [rsp + 0x250]
lea rcx, [rsp + 0x40]
movss xmm1, dword [rsp + 0x24c]
call fcn.140250780
lea rcx, [rsp + 0x50]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm9
call fcn.140250780
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x30]
call fcn.140250580
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.1402506a0
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x50]
call fcn.140250580
lea rcx, [rsp + 0x130]
call fcn.14024ee30
lea rcx, [rsp + 0x130]
movss xmm0, dword [rsp + 0x54]
movss xmm2, dword [rsp + 0x44]
movss xmm1, dword [rsp + 0x58]
movaps xmm3, xmm11
movss xmm5, dword [rsp + 0x50]
movss dword [rsp + 0x140], xmm0
movss xmm0, dword [rsp + 0x40]
movss dword [rsp + 0x144], xmm2
movss xmm2, dword [rsp + 0x30]
movss dword [rsp + 0x134], xmm0
movss xmm0, dword [rsp + 0x48]
movss dword [rsp + 0x138], xmm2
movss xmm2, dword [rsp + 0x38]
movss dword [rsp + 0x154], xmm0
movss xmm0, dword [rsp + 0x34]
movss dword [rsp + 0x158], xmm2
movss xmm2, dword [rsp + 0x244]
movss dword [rsp + 0x150], xmm1
movss dword [rsp + 0x148], xmm0
movaps xmm1, xmm10
movss dword [rsp + 0x130], xmm5
call fcn.14024f800
lea rcx, [rsp + 0x200]
call fcn.14024ee30
lea rcx, [rsp + 0x200]
movaps xmm1, xmm12
call fcn.14024f640
lea rcx, [rsp + 0x200]
movss xmm2, dword [0x14033944c]
movaps xmm3, xmm8
movaps xmm1, xmm8
call fcn.14024f800
lea r8, [rsp + 0x200]
lea rdx, [rsp + 0x130]
lea rcx, [rsp + 0x200]
call fcn.14024ee80
lea r8, [rsp + 0xf0]
lea rdx, [rsp + 0x200]
lea rcx, [rdi + 0x24cc0]
call fcn.14024ee80
lea rdx, [rdi + 0x24cc0]
lea rcx, [rdi + 0x24c80]
call fcn.14024f090
lea rcx, [rdi + 0x24d00]
lea rdx, [rdi + 0x24cc0]
call fcn.14024f090
mov rcx, rdi
call fcn.140154560
xor r13d, r13d
mov ebx, r13d
nop
mov edx, ebx
mov rcx, rdi
call fcn.140154d30
inc ebx
cmp ebx, 4
jl 0x140164cf0
lea rcx, [rdi + 0x24a60]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea rcx, [rdi + 0x24a6c]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
mov edx, dword [rdi + 0x238f0]
lea rcx, [rdi + 0x238e0]
call fcn.1401a1310
mov edx, dword [rdi + 0x23908]
lea rcx, [rdi + 0x238f8]
movaps xmm7, xmm0
call fcn.1401a1310
lea rcx, [rdi + 0x24a78]
movaps xmm6, xmm0
call fcn.14024ee30
lea rcx, [rdi + 0x24a78]
addss xmm7, dword [rdi + 0x22f1c]
addss xmm6, dword [rdi + 0x22f18]
movss xmm1, dword [rdi + 0x22f14]
movaps xmm3, xmm7
movaps xmm2, xmm6
call fcn.14024f800
lea r8, [rdi + 0x24a78]
lea rdx, [rdi + 0x24cc0]
lea rcx, [rdi + 0x24a78]
call fcn.14024ee80
mov rcx, qword [rdi + 0x24ab8]
lea rdx, [rdi + 0x24a78]
xor r8d, r8d
call fcn.140199600
mov dword [rdi + 0x24ac0], r13d
mov dword [rdi + 0x24ac4], r13d
movaps xmm7, xmmword [rsp + 0x1950]
movaps xmm6, xmmword [rsp + 0x1960]
mov dword [rdi + 0x24ac8], r13d
mov dword [rdi + 0x24ad8], r13d
mov dword [rdi + 0x24ae8], r13d
mov qword [rdi + 0x24af8], r13
lea rbx, [rdi + 0x37ea8]
lea rsi, [rdi + 0x37ec0]
mov ebp, 5
nop
cmp dword [rbx - 8], r13d
je 0x140164f22
mov eax, dword [rbx - 4]
test eax, eax
je 0x140164eaf
cmp eax, r14d
jne 0x140164f22
lea rcx, [rsp + 0x80]
movaps xmm3, xmm8
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
mov r11, qword [rbx + 0x10]
mov ecx, r13d
cmp dword [rbx], ecx
jle 0x140164e86
nop word [rax + rax]
lea rdx, [rsp + 0x80]
inc ecx
add r11, 0xc
mov eax, dword [rdx]
mov dword [r11 - 0xc], eax
mov eax, dword [rdx + 4]
mov dword [r11 - 8], eax
mov eax, dword [rdx + 8]
mov dword [r11 - 4], eax
cmp ecx, dword [rbx]
jl 0x140164e60
movss xmm3, dword [rsp + 0x88]
movss xmm2, dword [rsp + 0x84]
movss xmm1, dword [rsp + 0x80]
mov rcx, rsi
mov dword [rbx + 8], r13d
call fcn.140250780
jmp 0x140164f22
movss xmm1, dword [rdi + 0x24cc8]
movss xmm2, dword [rdi + 0x24cd8]
movss xmm3, dword [rdi + 0x24ce8]
mov rcx, qword [rbx + 0x10]
mov edx, r13d
cmp dword [rbx], edx
movss dword [rsp + 0x90], xmm1
movss dword [rsp + 0x94], xmm2
movss dword [rsp + 0x98], xmm3
jle 0x140164f16
nop dword [rax]
lea r8, [rsp + 0x90]
inc edx
add rcx, 0xc
mov eax, dword [r8]
mov dword [rcx - 0xc], eax
mov eax, dword [r8 + 4]
mov dword [rcx - 8], eax
mov eax, dword [r8 + 8]
mov dword [rcx - 4], eax
cmp edx, dword [rbx]
jl 0x140164ef0
mov rcx, rsi
mov dword [rbx + 8], r13d
call fcn.140250780
add rsi, 0x30
add rbx, 0x30
sub rbp, 1
jne 0x140164e10
mov rcx, rdi
call fcn.140163180
lea rsi, [rdi + 0x24b40]
lea rbp, [rdi + 0x24c80]
mov rbx, rsi
lea r12, [rdi + 0x24b14]
mov r13, r14
nop word [rax + rax]
mov rcx, qword [rbx]
mov r8, r12
mov rdx, rbp
call fcn.140199600
add rbp, 0x40
add r12, 0xc
add rbx, 8
sub r13, 1
jne 0x140164f60
mov r13, qword [rsp + 0x1988]
lea rbx, [rdi + 0x24c18]
lea rbp, [rdi + 0x22ea4]
nop word [rax + rax]
lea rcx, [rsp + 0x70]
movaps xmm3, xmm9
movaps xmm2, xmm8
movaps xmm1, xmm8
call fcn.140250780
lea r8, [rsp + 0x70]
lea rdx, [rdi + 0x24cc0]
lea rcx, [rsp + 0x70]
call fcn.14024f8c0
lea rdx, [rdi + 0x24cc0]
lea rcx, [rsp + 0xa0]
mov r8, rbp
call fcn.14024f820
mov rcx, qword [rbx]
movss xmm3, dword [rsp + 0x78]
movss xmm2, dword [rsp + 0x74]
movss xmm1, dword [rsp + 0x70]
call fcn.140297a30
mov rcx, qword [rbx]
movss xmm3, dword [rsp + 0xa8]
movss xmm2, dword [rsp + 0xa4]
movss xmm1, dword [rsp + 0xa0]
call fcn.1402979f0
add rbp, 0xc
add rbx, 8
sub r15, 1
jne 0x140164fa0
lea rdx, [rdi + 0x24b20]
lea rcx, [rdi + 0x23060]
call fcn.140199f70
lea rdx, [rdi + 0x24c80]
lea rcx, [rdi + 0x23310]
call fcn.14019ae40
lea rdx, [rdi + 0x24b14]
lea rcx, [rdi + 0x23310]
call fcn.14019b0c0
mov rcx, rdi
call fcn.14015b790
mov rcx, qword [rdi + 0x24b38]
call fcn.140294790
mov r15, qword [rsp + 0x1978]
mov r12, qword [rsp + 0x1990]
movaps xmm9, xmmword [rsp + 0x1930]
movaps xmm8, xmmword [rsp + 0x1940]
xor ebp, ebp
cmp dword [rdi + 0x23318], ebp
jle 0x14016514d
xor ebx, ebx
mov rcx, qword [rdi + 0x23320]
cmp dword [rbx + rcx + 0xa0], 0
je 0x140165138
cmp dword [rbx + rcx + 0x610], 0
je 0x140165103
mov rcx, qword [rbx + rcx + 0xc0]
call fcn.1402947a0
mov rcx, qword [rdi + 0x23320]
mov rcx, qword [rbx + rcx + 0x370]
call fcn.140294790
mov rcx, qword [rdi + 0x23320]
mov rcx, qword [rbx + rcx + 0x608]
call fcn.1402934b0
jmp 0x140165138
mov rcx, qword [rbx + rcx + 0xc0]
call fcn.140294790
mov rcx, qword [rdi + 0x23320]
mov rcx, qword [rbx + rcx + 0x370]
call fcn.1402947a0
mov rcx, qword [rdi + 0x23320]
mov rcx, qword [rbx + rcx + 0x608]
call fcn.1402934d0
inc ebp
add rbx, 0x6e0
cmp ebp, dword [rdi + 0x23318]
jl 0x1401650b1
mov rbp, qword [rsp + 0x19a0]
mov rbx, qword [rsp + 0x19a8]
nop dword [rax]
mov rcx, qword [rsi]
call fcn.1402934b0
add rsi, 8
sub r14, 1
jne 0x140165160
mov rcx, qword [rdi + 0x24ab8]
call fcn.1402934b0
mov rsi, qword [rsp + 0x1998]
mov dword [rdi + 0x37fa0], r14d
mov r14, qword [rsp + 0x1980]
mov dword [rdi + 0x37f90], 1
xor eax, eax
mov rcx, qword [rsp + 0x18f0]
xor rcx, rsp
call fcn.140291ec0
movaps xmm10, xmmword [rsp + 0x1920]
movaps xmm11, xmmword [rsp + 0x1910]
movaps xmm12, xmmword [rsp + 0x1900]
add rsp, 0x19b0
pop rdi
ret