Function at 0x180011dc0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
lea rbp, [rax - 0x38]
sub rsp, 0x110
xor ebx, ebx
mov qword [rax - 0x30], r13
mov r13, rcx
mov qword [rax - 0x38], r14
mov r14, r8
mov qword [rax - 0x40], r15
mov qword [rsp + 0x78], rbx
mov qword [rbp - 0x80], rbx
mov qword [rbp - 0x40], rbx
cmp qword [rcx], rbx
jne 0x180011e0c
mov r15d, ebx
mov qword [rsp + 0x58], rbx
jmp 0x180011e6a
lea rcx, [rbp - 0x68]
mov qword [rbp - 0x68], rbx
call qword [0x1800a8830]
mov rcx, qword [r13]
lea rdx, [rbp - 0x68]
call qword [0x1800a8760]
mov rcx, qword [rbp - 0x68]
lea r8, [rbp - 0x40]
lea rdx, [rbp - 0x50]
mov qword [rbp - 0x50], rbx
call qword [0x1800a8678]
mov rcx, qword [rbp - 0x50]
call fcn.1800359bc
mov rdx, qword [rbp - 0x50]
mov r8, rax
mov rcx, qword [rbp - 0x68]
mov r15, rax
mov qword [rsp + 0x58], rax
call qword [0x1800a87d0]
lea rcx, [rbp - 0x68]
call qword [0x1800a8810]
mov qword [rbp - 0x58], rbx
cmp qword [r14], rbx
jne 0x180011e7d
mov rsi, rbx
mov qword [rsp + 0x70], rbx
jmp 0x180011eda
lea rcx, [rbp - 0x60]
mov qword [rbp - 0x60], rbx
call qword [0x1800a8830]
mov rcx, qword [r14]
lea rdx, [rbp - 0x60]
call qword [0x1800a8760]
mov rcx, qword [rbp - 0x60]
lea r8, [rbp - 0x58]
lea rdx, [rbp - 0x48]
mov qword [rbp - 0x48], rbx
call qword [0x1800a8678]
mov rcx, qword [rbp - 0x48]
call fcn.1800359bc
mov rdx, qword [rbp - 0x48]
mov r8, rax
mov rcx, qword [rbp - 0x60]
mov rsi, rax
mov qword [rsp + 0x70], rax
call qword [0x1800a87d0]
lea rcx, [rbp - 0x60]
call qword [0x1800a8810]
mov r9d, dword [r13 + 8]
mov r10d, dword [r14 + 8]
cmp r9d, r10d
jne 0x180012596
mov eax, dword [r13 + 0xc]
cmp eax, dword [r14 + 0xc]
jne 0x180012596
mov rcx, qword [rbp + 0x60]
lea r8, [rbp + 0x58]
lea rdx, [rbp + 0x48]
mov dword [rbp + 0x48], r9d
mov dword [rbp + 0x58], eax
call fcn.18000f3f0
mov edi, dword [rbp + 0x48]
mov rbx, rax
mov r12d, dword [rbp + 0x58]
mov qword [rbp + 0x50], rax
mov rax, qword [rbp - 0x40]
cmp rax, 0x18
jne 0x180012260
mov rax, qword [rbp - 0x58]
cmp rax, 0x18
jne 0x1800120ba
mov ecx, dword [r13 + 8]
lea eax, [rdi + rdi*2]
mov dword [rbp + 0x58], ecx
mov ecx, dword [r14 + 8]
imul eax, r12d
mov dword [rbp + 0x48], ecx
mov qword [rbp - 0x80], 0x18
movsxd rcx, eax
call fcn.1800359bc
xor r14d, r14d
mov qword [rsp + 0x78], rax
mov r13, rax
test r12d, r12d
jle 0x18001258b
lea eax, [rdi + rdi*2]
cdqe
mov qword [rbp + 0x40], rax
nop dword [rax]
mov ecx, dword [rbp + 0x58]
imul ecx, r14d
lea eax, [rcx + rcx*2]
movsxd rcx, eax
mov eax, dword [rbp + 0x48]
add rcx, r15
imul eax, r14d
lea eax, [rax + rax*2]
movsxd r11, eax
add r11, rsi
test edi, edi
jle 0x18001209e
sub r11, rcx
lea r10, [rcx + 1]
mov rsi, r13
mov r15, rdi
sub rsi, rcx
nop dword [rax + rax]
movzx eax, byte [rbx]
mov r9d, 0xff
movzx ecx, byte [r11 + r10 - 1]
lea r10, [r10 + 3]
imul ecx, eax
sub r9d, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 4]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rsi + r10 - 4], r8b
movzx eax, byte [rbx]
movzx ecx, byte [r11 + r10 - 3]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 3]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rsi + r10 - 3], r8b
movzx eax, byte [rbx]
inc rbx
movzx ecx, byte [r11 + r10 - 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 2]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rsi + r10 - 2], r8b
sub r15, 1
jne 0x180011fc0
mov r15, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x70]
add r13, qword [rbp + 0x40]
inc r14d
cmp r14d, r12d
jl 0x180011f80
mov r14, qword [rbp + 0x50]
mov rcx, r14
jmp 0x180012eab
cmp rax, 0x20
jne 0x18001258b
mov eax, dword [r13 + 8]
lea esi, [rdi*4]
mov dword [rbp + 0x58], eax
mov eax, dword [r14 + 8]
mov dword [rbp + 0x48], eax
mov eax, esi
imul eax, r12d
mov qword [rbp - 0x80], 0x20
movsxd rcx, eax
call fcn.1800359bc
xor r14d, r14d
mov qword [rsp + 0x78], rax
mov r13, rax
test r12d, r12d
jle 0x18001258b
movsxd rax, esi
mov qword [rbp + 0x40], rax
nop word [rax + rax]
mov eax, dword [rbp + 0x58]
imul eax, r14d
lea eax, [rax + rax*2]
movsxd rsi, eax
mov eax, dword [rbp + 0x48]
add rsi, 2
imul eax, r14d
shl eax, 2
movsxd r11, eax
add r11, qword [rsp + 0x70]
test edi, edi
jle 0x180012244
add rsi, r15
lea r10, [r13 + 1]
sub r11, r13
mov r15, rdi
nop dword [rax + rax]
movzx eax, byte [rbx]
mov r9d, 0xff
movzx ecx, byte [r10 + r11 - 1]
lea r10, [r10 + 4]
imul ecx, eax
lea rsi, [rsi + 3]
sub r9d, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rsi - 5]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r10 - 5], r8b
movzx eax, byte [rbx]
movzx ecx, byte [r10 + r11 - 4]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rsi - 4]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r10 - 4], r8b
movzx eax, byte [rbx]
movzx ecx, byte [r10 + r11 - 3]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rsi - 3]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r10 - 3], r8b
movzx eax, byte [rbx]
inc rbx
movzx ecx, byte [r10 + r11 - 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
shr edx, 7
add dl, r9b
mov byte [r10 - 2], dl
sub r15, 1
jne 0x180012150
mov r15, qword [rsp + 0x58]
add r13, qword [rbp + 0x40]
inc r14d
cmp r14d, r12d
jl 0x180012110
mov r14, qword [rbp + 0x50]
mov rcx, r14
jmp 0x180012eab
cmp rax, 0x20
jne 0x18001258b
mov rax, qword [rbp - 0x58]
cmp rax, 0x18
jne 0x180012421
mov eax, dword [r13 + 8]
lea esi, [rdi*4]
mov r14d, dword [r14 + 8]
mov dword [rbp + 0x48], eax
mov eax, esi
imul eax, r12d
mov dword [rbp + 0x40], r14d
mov qword [rbp - 0x80], 0x20
movsxd rcx, eax
call fcn.1800359bc
xor r15d, r15d
mov qword [rsp + 0x78], rax
mov r13, rax
test r12d, r12d
jle 0x18001258b
movsxd rax, esi
mov qword [rbp - 0x70], rax
nop
mov eax, dword [rbp + 0x48]
imul eax, r15d
shl eax, 2
movsxd rsi, eax
mov eax, r14d
add rsi, qword [rsp + 0x58]
imul eax, r15d
lea eax, [rax + rax*2]
movsxd r14, eax
add r14, 2
test edi, edi
jle 0x180012401
add r14, qword [rsp + 0x70]
lea r11, [r13 + 1]
sub rsi, r13
mov r12, rdi
nop word [rax + rax]
movzx r9d, byte [rbx]
mov r10d, 0xff
movzx ecx, byte [rsi + r11 - 1]
lea r11, [r11 + 4]
sub r10d, r9d
lea r14, [r14 + 3]
imul ecx, r10d
mov eax, 0x80808081
imul ecx
lea r8d, [rcx + rdx]
movzx ecx, byte [r14 - 5]
sar r8d, 7
imul ecx, r9d
mov eax, r8d
shr eax, 0x1f
add r8d, eax
mov eax, 0x80808081
mul ecx
mov eax, 0x80808081
shr edx, 7
add r8b, dl
mov byte [r11 - 5], r8b
movzx ecx, byte [rsi + r11 - 4]
imul ecx, r10d
imul ecx
lea r8d, [rcx + rdx]
movzx ecx, byte [r14 - 4]
sar r8d, 7
mov eax, r8d
shr eax, 0x1f
add r8d, eax
movzx eax, byte [rbx]
imul ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, 0x80808081
shr edx, 7
add r8b, dl
mov byte [r11 - 4], r8b
movzx ecx, byte [rsi + r11 - 3]
imul ecx, r10d
imul ecx
lea r8d, [rcx + rdx]
movzx ecx, byte [rbx]
sar r8d, 7
mov eax, r8d
shr eax, 0x1f
add r8d, eax
movzx eax, byte [r14 - 3]
imul ecx, eax
mov eax, 0x80808081
mul ecx
mov eax, 0x80808081
shr edx, 7
add r8b, dl
mov byte [r11 - 3], r8b
movzx ecx, byte [rsi + r11 - 2]
imul ecx, r10d
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add dl, byte [rbx]
inc rbx
mov byte [r11 - 2], dl
sub r12, 1
jne 0x180012300
mov r12d, dword [rbp + 0x58]
add r13, qword [rbp - 0x70]
inc r15d
mov r14d, dword [rbp + 0x40]
cmp r15d, r12d
jl 0x1800122c0
mov r14, qword [rbp + 0x50]
mov rcx, r14
jmp 0x180012eab
cmp rax, 0x20
jne 0x18001258b
mov qword [rbp - 0x80], rax
mov eax, r12d
imul eax, edi
shl eax, 2
movsxd rbx, eax
mov rcx, rbx
call fcn.1800359bc
mov r14, qword [rbp + 0x50]
mov qword [rsp + 0x78], rax
test rbx, rbx
jle 0x18001258e
sub rsi, r15
lea r10, [r15 + 1]
mov r11, rax
sub r11, r15
dec rbx
shr rbx, 2
inc rbx
nop dword [rax]
movzx eax, byte [r14]
mov r9d, 0xff
movzx ecx, byte [r10 + rsi - 1]
lea r10, [r10 + 4]
imul ecx, eax
sub r9d, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 5]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r11 + r10 - 5], r8b
movzx ecx, byte [rsi + r10 - 4]
movzx eax, byte [r14]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 4]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r11 + r10 - 4], r8b
movzx ecx, byte [rsi + r10 - 3]
movzx eax, byte [r14]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 3]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r11 + r10 - 3], r8b
movzx ecx, byte [rsi + r10 - 2]
movzx eax, byte [r14]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r10 - 2]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r9d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r11 + r10 - 2], r8b
sub rbx, 1
jne 0x180012470
mov rcx, r14
jmp 0x180012eab
mov r14, rbx
mov rcx, r14
jmp 0x180012eab
mov ecx, dword [r13 + 0xc]
cmp r9d, r10d
mov edx, dword [r14 + 0xc]
mov r8d, r10d
cmovg r8d, r9d
mov eax, edx
cmp ecx, edx
mov dword [rbp + 0x48], r8d
cmovg eax, ecx
mov dword [rbp + 0x58], eax
lea ebx, [r8 - 1]
lea r8, [rbp + 0x58]
mov dword [rbp + 0x40], ebx
lea r15d, [rax - 1]
lea eax, [r9 - 1]
mov dword [rsp + 0x64], r15d
mov dword [rbp + 0x50], eax
lea eax, [rcx - 1]
mov rcx, qword [rbp + 0x60]
mov dword [rsp + 0x68], eax
lea eax, [r10 - 1]
mov dword [rsp + 0x60], eax
lea eax, [rdx - 1]
lea rdx, [rbp + 0x48]
mov dword [rsp + 0x6c], eax
call fcn.18000f3f0
mov rcx, qword [rbp - 0x40]
mov rsi, rax
mov edi, dword [rbp + 0x48]
mov r12d, dword [rbp + 0x58]
mov qword [rbp - 0x20], rax
cmp rcx, 0x18
jne 0x180012a31
mov rcx, qword [rbp - 0x58]
cmp rcx, 0x18
jne 0x18001281d
mov r13d, dword [r13 + 8]
lea eax, [rdi + rdi*2]
mov r14d, dword [r14 + 8]
imul eax, r12d
mov qword [rbp - 0x80], rcx
mov dword [rsp + 0x38], r13d
mov dword [rsp + 0x3c], r14d
movsxd rcx, eax
call fcn.1800359bc
mov qword [rsp + 0x78], rax
mov rdx, rax
test r12d, r12d
jle 0x180012ea7
xor r9d, r9d
mov qword [rsp + 0x48], r12
lea ecx, [rdi + rdi*2]
mov dword [rsp + 0x34], r9d
xor eax, eax
movsxd rcx, ecx
lea r8, [rdx + 2]
mov dword [rsp + 0x30], eax
mov qword [rbp - 0x78], rcx
mov r10d, r12d
mov qword [rsp + 0x40], r8
nop dword [rax]
cdq
idiv r15d
imul eax, r13d
lea eax, [rax + rax*2]
movsxd rcx, eax
mov eax, r9d
add rcx, qword [rsp + 0x58]
cdq
idiv r15d
mov qword [rbp - 0x70], rcx
imul eax, r14d
lea eax, [rax + rax*2]
movsxd rcx, eax
add rcx, qword [rsp + 0x70]
test edi, edi
jle 0x1800127ea
mov eax, edi
xor r13d, r13d
mov rdi, qword [rbp - 0x70]
xor r12d, r12d
mov qword [rsp + 0x50], rax
mov r14, r8
mov r15, rcx
nop dword [rax]
movzx r9d, byte [rsi]
lea r14, [r14 + 3]
mov eax, r12d
mov r11d, 0xff
add r12d, dword [rbp + 0x50]
cdq
idiv ebx
sub r11d, r9d
lea ecx, [rax + rax*2]
mov eax, r13d
add r13d, dword [rsp + 0x60]
cdq
idiv dword [rbp + 0x40]
movsxd rbx, ecx
lea ecx, [rax + rax*2]
mov eax, 0x80808081
movsxd r10, ecx
movzx ecx, byte [rbx + rdi]
imul ecx, r11d
imul ecx
lea r8d, [rcx + rdx]
movzx ecx, byte [r10 + r15]
sar r8d, 7
imul ecx, r9d
mov eax, r8d
shr eax, 0x1f
add r8d, eax
mov eax, 0x80808081
mul ecx
shr edx, 7
add r8b, dl
mov byte [r14 - 5], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + r15 + 1]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rbx + rdi + 1]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r14 - 4], r8b
movzx eax, byte [rsi]
inc rsi
movzx ecx, byte [r10 + r15 + 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rbx + rdi + 2]
mov eax, 0x80808081
mov ebx, dword [rbp + 0x40]
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
sub qword [rsp + 0x50], 1
mov byte [r14 - 3], r8b
jne 0x1800126d0
mov edi, dword [rbp + 0x48]
mov r15d, dword [rsp + 0x64]
mov r8, qword [rsp + 0x40]
mov r9d, dword [rsp + 0x34]
mov r10, qword [rsp + 0x48]
mov r13d, dword [rsp + 0x38]
mov r14d, dword [rsp + 0x3c]
mov eax, dword [rsp + 0x30]
add eax, dword [rsp + 0x68]
add r8, qword [rbp - 0x78]
add r9d, dword [rsp + 0x6c]
sub r10, 1
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x48], r10
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x34], r9d
jne 0x180012680
jmp 0x180012ea3
cmp rcx, 0x20
jne 0x180012ea7
mov eax, dword [r14 + 8]
lea ebx, [rdi*4]
mov r13d, dword [r13 + 8]
mov dword [rsp + 0x3c], eax
mov eax, ebx
imul eax, r12d
mov qword [rbp - 0x80], rcx
mov dword [rsp + 0x38], r13d
movsxd rcx, eax
call fcn.1800359bc
mov qword [rsp + 0x78], rax
mov r14, rax
test r12d, r12d
jle 0x180012ea7
movsxd rcx, ebx
xor r8d, r8d
mov qword [rbp - 0x78], rcx
xor eax, eax
lea rcx, [r14 + 2]
mov qword [rsp + 0x50], r12
mov r9, r12
mov qword [rsp + 0x40], rcx
mov r12d, dword [rbp + 0x40]
mov dword [rsp + 0x30], r8d
mov dword [rsp + 0x34], eax
nop dword [rax]
cdq
idiv r15d
imul eax, r13d
lea eax, [rax + rax*2]
movsxd r14, eax
mov eax, r8d
add r14, qword [rsp + 0x58]
cdq
idiv r15d
imul eax, dword [rsp + 0x3c]
shl eax, 2
movsxd r13, eax
add r13, qword [rsp + 0x70]
test edi, edi
jle 0x1800129f9
mov eax, edi
xor r15d, r15d
mov qword [rsp + 0x48], rax
mov edi, r15d
mov rbx, rcx
mov eax, edi
lea rbx, [rbx + 4]
cdq
add edi, dword [rbp + 0x50]
idiv r12d
mov r11d, 0xff
lea ecx, [rax + rax*2]
mov eax, r15d
add r15d, dword [rsp + 0x60]
cdq
idiv r12d
movsxd r9, ecx
shl eax, 2
movsxd r10, eax
movzx eax, byte [rsi]
add r10, r13
sub r11d, eax
movzx ecx, byte [r10]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r9 + r14]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rbx - 6], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + 1]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r9 + r14 + 1]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rbx - 5], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r9 + r14 + 2]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rbx - 4], r8b
movzx eax, byte [rsi]
inc rsi
movzx ecx, byte [r10 + 3]
imul ecx, eax
mov eax, 0x80808081
mul ecx
shr edx, 7
add dl, r11b
sub qword [rsp + 0x48], 1
mov byte [rbx - 3], dl
jne 0x1800128d2
mov edi, dword [rbp + 0x48]
mov r15d, dword [rsp + 0x64]
mov rcx, qword [rsp + 0x40]
mov r8d, dword [rsp + 0x30]
mov r9, qword [rsp + 0x50]
mov eax, dword [rsp + 0x34]
add eax, dword [rsp + 0x68]
add rcx, qword [rbp - 0x78]
add r8d, dword [rsp + 0x6c]
mov r13d, dword [rsp + 0x38]
sub r9, 1
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x30], r8d
jne 0x180012890
jmp 0x180012ea3
cmp rcx, 0x20
jne 0x180012ea7
mov rax, qword [rbp - 0x58]
cmp rax, 0x18
jne 0x180012c64
mov eax, dword [r14 + 8]
lea ebx, [rdi*4]
mov r13d, dword [r13 + 8]
mov dword [rsp + 0x3c], eax
mov eax, ebx
imul eax, r12d
mov qword [rbp - 0x80], rcx
mov dword [rsp + 0x38], r13d
movsxd rcx, eax
call fcn.1800359bc
mov qword [rsp + 0x78], rax
mov r14, rax
test r12d, r12d
jle 0x180012ea7
movsxd rcx, ebx
xor r8d, r8d
mov qword [rbp - 0x78], rcx
xor eax, eax
lea rcx, [r14 + 2]
mov qword [rsp + 0x50], r12
mov r9, r12
mov qword [rsp + 0x40], rcx
mov r12d, dword [rbp + 0x40]
mov dword [rsp + 0x30], r8d
mov dword [rsp + 0x34], eax
nop
cdq
idiv r15d
imul eax, r13d
shl eax, 2
movsxd r14, eax
mov eax, r8d
add r14, qword [rsp + 0x58]
cdq
idiv r15d
imul eax, dword [rsp + 0x3c]
lea eax, [rax + rax*2]
movsxd r13, eax
add r13, qword [rsp + 0x70]
test edi, edi
jle 0x180012c2c
mov eax, edi
xor r15d, r15d
mov qword [rsp + 0x48], rax
mov edi, r15d
mov rbx, rcx
nop dword [rax]
nop word [rax + rax]
mov eax, edi
mov r10d, 0xff
cdq
add edi, dword [rbp + 0x50]
idiv r12d
shl eax, 2
movsxd r11, eax
mov eax, r15d
cdq
add r11, r14
idiv r12d
lea ecx, [rax + rax*2]
movzx eax, byte [rsi]
sub r10d, eax
movsxd r9, ecx
movzx ecx, byte [r9 + r13]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r11]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r10d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rbx - 2], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r9 + r13 + 1]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r11 + 1]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r10d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [rbx - 1], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r9 + r13 + 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [r11 + 2]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r10d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x80808081
add r8b, dl
mov byte [rbx], r8b
movzx ecx, byte [r11 + 3]
imul ecx, r10d
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add dl, byte [rsi]
inc rsi
add r15d, dword [rsp + 0x60]
mov byte [rbx + 1], dl
sub qword [rsp + 0x48], 1
lea rbx, [rbx + 4]
jne 0x180012b00
mov edi, dword [rbp + 0x48]
mov r15d, dword [rsp + 0x64]
mov rcx, qword [rsp + 0x40]
mov r8d, dword [rsp + 0x30]
mov r9, qword [rsp + 0x50]
mov eax, dword [rsp + 0x34]
add eax, dword [rsp + 0x68]
add rcx, qword [rbp - 0x78]
add r8d, dword [rsp + 0x6c]
mov r13d, dword [rsp + 0x38]
sub r9, 1
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x30], r8d
jne 0x180012ab0
jmp 0x180012ea3
cmp rax, 0x20
jne 0x180012ea7
mov ecx, dword [r14 + 8]
lea eax, [rdi*4]
mov r13d, dword [r13 + 8]
imul eax, r12d
mov dword [rsp + 0x3c], ecx
mov dword [rsp + 0x50], r13d
mov qword [rbp - 0x80], 0x20
movsxd rcx, eax
call fcn.1800359bc
mov qword [rsp + 0x78], rax
mov r14, rax
test r12d, r12d
jle 0x180012ea7
xor r8d, r8d
mov qword [rbp - 0x70], r12
lea ecx, [rdi*4]
mov dword [rsp + 0x30], r8d
movsxd rcx, ecx
xor eax, eax
mov qword [rbp - 0x78], rcx
mov r9, r12
mov r12, qword [rsp + 0x58]
lea rcx, [r14 + 2]
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x34], eax
nop dword [rax]
cdq
idiv r15d
imul eax, r13d
shl eax, 2
movsxd r14, eax
mov eax, r8d
cdq
add r14, r12
idiv r15d
imul eax, dword [rsp + 0x3c]
shl eax, 2
movsxd r13, eax
add r13, qword [rsp + 0x70]
test edi, edi
jle 0x180012e71
mov eax, edi
xor r15d, r15d
mov qword [rsp + 0x48], rax
mov edi, r15d
mov r12, rcx
movzx r9d, byte [rsi]
mov eax, r15d
cdq
mov r11d, 0xff
idiv ebx
sub r11d, r9d
shl eax, 2
movsxd rbx, eax
mov eax, edi
cdq
add rbx, r14
idiv dword [rbp + 0x40]
movzx ecx, byte [rbx]
shl eax, 2
movsxd r10, eax
mov eax, 0x80808081
imul ecx, r11d
add r10, r13
imul ecx
lea r8d, [rcx + rdx]
movzx ecx, byte [r10]
imul ecx, r9d
sar r8d, 7
mov eax, r8d
shr eax, 0x1f
add r8d, eax
mov eax, 0x80808081
mul ecx
shr edx, 7
add r8b, dl
mov byte [r12 - 2], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + 1]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rbx + 1]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r12 - 1], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + 2]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rbx + 2]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
add r8b, dl
mov byte [r12], r8b
movzx eax, byte [rsi]
movzx ecx, byte [r10 + 3]
imul ecx, eax
mov eax, 0x80808081
mul ecx
movzx ecx, byte [rbx + 3]
mov eax, 0x80808081
mov r8d, edx
imul ecx, r11d
shr r8d, 7
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
add r15d, dword [rbp + 0x50]
lea r12, [r12 + 4]
add edi, dword [rsp + 0x60]
inc rsi
mov ebx, dword [rbp + 0x40]
shr eax, 0x1f
add edx, eax
add r8b, dl
sub qword [rsp + 0x48], 1
mov byte [r12 - 3], r8b
jne 0x180012d20
mov edi, dword [rbp + 0x48]
mov r15d, dword [rsp + 0x64]
mov r12, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x40]
mov r8d, dword [rsp + 0x30]
mov r9, qword [rbp - 0x70]
mov eax, dword [rsp + 0x34]
add eax, dword [rsp + 0x68]
add rcx, qword [rbp - 0x78]
add r8d, dword [rsp + 0x6c]
mov r13d, dword [rsp + 0x50]
sub r9, 1
mov qword [rbp - 0x70], r9
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x30], r8d
jne 0x180012ce0
mov r12d, dword [rbp + 0x58]
mov rcx, qword [rbp - 0x20]
call fcn.1800359b4
mov rcx, qword [rsp + 0x58]
call fcn.1800359b4
mov rcx, qword [rsp + 0x70]
call fcn.1800359b4
xor esi, esi
lea rcx, [rbp - 0x38]
mov qword [rbp - 0x38], rsi
call qword [0x1800a8830]
mov rbx, qword [rsp + 0x78]
mov r9, qword [rbp - 0x80]
mov rcx, qword [rbp - 0x38]
mov qword [rsp + 0x28], rbx
movsxd r8, r12d
movsxd rdx, edi
mov qword [rsp + 0x20], rsi
call qword [0x1800a8820]
mov rdx, qword [rbp - 0x38]
lea rcx, [rbp - 0x30]
mov qword [rbp - 0x30], rsi
call qword [0x1800a86b0]
mov r15, qword [rsp + 0xf8]
mov r14, qword [rsp + 0x100]
mov r13, qword [rsp + 0x108]
test rbx, rbx
je 0x180012f2e
mov rcx, rbx
call fcn.1800359b4
mov ecx, 0x28
call fcn.18003559c
mov qword [rbp + 0x58], rax
mov rcx, qword [rbp - 0x30]
mov qword [rax], rcx
mov dword [rax + 8], edi
mov dword [rax + 0xc], r12d
mov qword [rax + 0x10], rsi
mov dword [rax + 0x18], 0x3f800000
mov qword [rax + 0x1c], 0x3f800000
mov byte [rax + 0x24], sil
add rsp, 0x110
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret