Function at 0x140017350
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub rsp, 0x28
cmp edx, 0x1d
je 0x140017385
cmp edx, 0x32
jne 0x140017396
cmp dword [rcx + 0x30], 1
jbe 0x140017379
cmp byte [rcx + 0x4d98], 0
jne 0x140017379
mov dl, r8b
add rsp, 0x28
jmp 0x14001bd50
mov dl, r8b
add rsp, 0x28
jmp 0x14001b114
cmp byte [rcx + 0x4d98], 0
jne 0x140017396
mov dl, r8b
call fcn.14001a100
add rsp, 0x28
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x40
cmp byte [rcx + 0x4da8], 0
mov rbx, rcx
mov byte [rcx + 0x4db8], 1
jne 0x14001b1a4
call fcn.14001973c
mov rcx, rbx
call fcn.1400198d0
test al, al
je 0x14001b921
lea rbp, [rbx + 0xd8]
mov rcx, rbx
lea rsi, [rbx + 8]
mov r8, rbp
mov rdx, rsi
call fcn.140018478
test al, al
je 0x14001b921
lea r9, [rbx + 0xec]
mov r8, rbp
mov rdx, rsi
mov rcx, rbx
call fcn.140018b64
test al, al
je 0x14001b921
cmp byte [rbx + 0xe88e], 0
jne 0x14001b1af
jmp 0x14001b921
lea rsi, [rcx + 8]
lea rbp, [rcx + 0xd8]
lea r12, [rbx + 0xc0]
mov rax, qword [rbx + 0xe940]
and qword [r12], rax
mov eax, dword [rbx + 0xd4]
cmp dword [rsi], eax
jl 0x14001b23b
mov ecx, dword [rbx + 0xe0]
mov edx, dword [rbp]
dec ecx
add edx, ecx
cmp dword [rsi], edx
jg 0x14001b1e9
jne 0x14001b22b
mov eax, dword [rbx + 0xdc]
cmp dword [rbx + 0xc], eax
jl 0x14001b22b
cmp byte [rbx + 0xe8], 0
jne 0x14001b919
mov r8, rbp
mov rdx, rsi
mov rcx, rbx
call fcn.140018478
test al, al
je 0x14001b921
lea r9, [rbx + 0xec]
mov r8, rbp
mov rdx, rsi
mov rcx, rbx
call fcn.140018b64
test al, al
je 0x14001b921
jmp 0x14001b1cb
mov rcx, rbx
call fcn.1400198d0
test al, al
je 0x14001b919
mov rcx, qword [rbx + 0x4b88]
mov rax, rcx
sub rax, qword [r12]
and rax, qword [rbx + 0xe940]
cmp rax, 0x1004
ja 0x14001b287
cmp rcx, qword [r12]
je 0x14001b287
mov rcx, rbx
call fcn.140019cf8
mov rax, qword [rbx + 0x4da0]
cmp qword [rbx + 0x4db0], rax
jg 0x14001b921
cmp byte [rbx + 0x4da8], 0
jne 0x14001bd43
movsxd rcx, dword [rsi]
mov rax, qword [rsi + 0x10]
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r10d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r10d
mov edx, eax
shr edx, cl
mov ecx, dword [rbx + 0x170]
and edx, 0xfffe
cmp edx, dword [rbx + rcx*4 + 0xf0]
jae 0x14001b2e9
mov eax, 0x10
sub eax, ecx
mov cl, al
shr rdx, cl
movzx ecx, byte [rdx + rbx + 0x174]
add ecx, r10d
mov eax, ecx
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
movzx eax, word [rbx + rdx*2 + 0x574]
jmp 0x14001b358
mov r9d, 0xf
inc ecx
cmp ecx, r9d
jae 0x14001b316
mov r8d, ecx
add r8, 0x3c
lea r8, [rbx + r8*4]
cmp edx, dword [r8]
jb 0x14001b313
inc ecx
add r8, 4
cmp ecx, r9d
jb 0x14001b301
jmp 0x14001b316
mov r9d, ecx
lea ecx, [r10 + r9]
mov eax, ecx
and ecx, 7
shr eax, 3
add dword [rsi], eax
lea eax, [r9 - 1]
mov dword [rsi + 4], ecx
mov ecx, 0x10
sub ecx, r9d
sub edx, dword [rbx + rax*4 + 0xf0]
mov eax, r9d
shr edx, cl
add edx, dword [rbx + rax*4 + 0x130]
cmp edx, dword [rbx + 0xec]
sbb eax, eax
and eax, edx
movzx eax, word [rbx + rax*2 + 0xd74]
mov r8d, dword [rsi]
movzx edi, ax
cmp edi, 0x100
jae 0x14001b3a7
cmp byte [rbx + 0x4d98], 0
je 0x14001b38f
mov rdx, qword [r12]
lea rcx, [rbx + 0x4b98]
lea rax, [rdx + 1]
mov qword [r12], rax
call fcn.1400163a8
mov byte [rax], dil
jmp 0x14001b1b6
mov rax, qword [r12]
mov rcx, qword [rbx + 0x4b90]
mov byte [rcx + rax], dil
inc qword [r12]
jmp 0x14001b1b6
cmp edi, 0x106
jb 0x14001b8e8
add edi, 0xfffffefa
cmp edi, 8
jae 0x14001b3c3
add edi, 2
jmp 0x14001b420
mov r14d, edi
and edi, 3
or edi, 4
shr r14d, 2
dec r14d
mov ecx, r14d
shl edi, cl
add edi, 2
test r14d, r14d
je 0x14001b420
mov rax, qword [rsi + 0x10]
movsxd rcx, r8d
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r8d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r8d
shr eax, cl
mov ecx, 0x10
sub ecx, r14d
movzx edx, ax
shr edx, cl
lea ecx, [r14 + r8]
mov eax, ecx
add edi, edx
shr eax, 3
add dword [rsi], eax
mov r8d, dword [rsi]
and ecx, 7
mov dword [rsi + 4], ecx
mov rax, qword [rsi + 0x10]
movsxd rcx, r8d
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r10d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r10d
mov edx, eax
shr edx, cl
mov ecx, dword [rbx + 0x105c]
and edx, 0xfffe
cmp edx, dword [rbx + rcx*4 + 0xfdc]
jae 0x14001b482
mov eax, 0x10
sub eax, ecx
mov cl, al
shr rdx, cl
movzx ecx, byte [rdx + rbx + 0x1060]
add ecx, r10d
mov eax, ecx
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
movzx eax, word [rbx + rdx*2 + 0x1460]
jmp 0x14001b4f4
mov r9d, 0xf
inc ecx
cmp ecx, r9d
jae 0x14001b4b2
mov r8d, ecx
add r8, 0x3f7
lea r8, [rbx + r8*4]
cmp edx, dword [r8]
jb 0x14001b4af
inc ecx
add r8, 4
cmp ecx, r9d
jb 0x14001b49d
jmp 0x14001b4b2
mov r9d, ecx
lea ecx, [r9 + r10]
mov eax, ecx
and ecx, 7
shr eax, 3
add dword [rsi], eax
lea eax, [r9 - 1]
mov dword [rsi + 4], ecx
mov ecx, 0x10
sub ecx, r9d
sub edx, dword [rbx + rax*4 + 0xfdc]
mov eax, r9d
shr edx, cl
add edx, dword [rbx + rax*4 + 0x101c]
cmp edx, dword [rbx + 0xfd8]
sbb eax, eax
and eax, edx
movzx eax, word [rbx + rax*2 + 0x1c60]
mov r8d, dword [rsi]
mov edx, r8d
movzx eax, ax
cmp eax, 4
jae 0x14001b50a
lea ebp, [rax + 1]
jmp 0x14001b6ab
mov r14d, eax
and eax, 1
shr r14d, 1
or eax, 2
dec r14d
mov ecx, r14d
shl eax, cl
lea r15d, [rax + 1]
mov ebp, r15d
test r14d, r14d
je 0x14001b6ab
cmp r14d, 4
jb 0x14001b66d
jbe 0x14001b592
mov rax, qword [rsi + 0x10]
movsxd rcx, r8d
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r8d, dword [rsi + 4]
movsxd r9, dword [rsi]
mov rcx, qword [rsi + 0x10]
movzx ebp, byte [r9 + rcx + 4]
mov ecx, 8
sub cl, r8b
shr ebp, cl
mov ecx, r8d
shl eax, cl
mov ecx, 0x24
sub ecx, r14d
or ebp, eax
shr ebp, cl
lea ecx, [r8 - 4]
add ecx, r14d
shl ebp, 4
mov edx, ecx
add ebp, r15d
shr edx, 3
add edx, r9d
and ecx, 7
mov dword [rsi], edx
mov dword [rsi + 4], ecx
mov rax, qword [rsi + 0x10]
movsxd rcx, edx
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r10d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r10d
mov edx, eax
shr edx, cl
mov ecx, dword [rbx + 0x1f48]
and edx, 0xfffe
cmp edx, dword [rbx + rcx*4 + 0x1ec8]
jae 0x14001b5f4
mov eax, 0x10
sub eax, ecx
mov cl, al
shr rdx, cl
movzx ecx, byte [rdx + rbx + 0x1f4c]
add ecx, r10d
mov eax, ecx
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
movzx eax, word [rbx + rdx*2 + 0x234c]
jmp 0x14001b666
mov r9d, 0xf
inc ecx
cmp ecx, r9d
jae 0x14001b624
mov r8d, ecx
add r8, 0x7b2
lea r8, [rbx + r8*4]
cmp edx, dword [r8]
jb 0x14001b621
inc ecx
add r8, 4
cmp ecx, r9d
jb 0x14001b60f
jmp 0x14001b624
mov r9d, ecx
lea ecx, [r9 + r10]
mov eax, ecx
and ecx, 7
shr eax, 3
add dword [rsi], eax
lea eax, [r9 - 1]
mov dword [rsi + 4], ecx
mov ecx, 0x10
sub ecx, r9d
sub edx, dword [rbx + rax*4 + 0x1ec8]
mov eax, r9d
shr edx, cl
add edx, dword [rbx + rax*4 + 0x1f08]
cmp edx, dword [rbx + 0x1ec4]
sbb eax, eax
and eax, edx
movzx eax, word [rbx + rax*2 + 0x2b4c]
movzx eax, ax
add ebp, eax
jmp 0x14001b6ab
mov rax, qword [rbx + 0x18]
movsxd rcx, r8d
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov edx, dword [rbx + 0xc]
mov r8d, 0x10
mov ecx, r8d
sub ecx, edx
shr eax, cl
mov ecx, r8d
sub ecx, r14d
movzx ebp, ax
shr ebp, cl
lea ecx, [rdx + r14]
mov eax, ecx
add ebp, r15d
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
cmp ebp, 0x100
jbe 0x14001b6c9
inc edi
cmp ebp, 0x2000
jbe 0x14001b6c9
inc edi
cmp ebp, 0x40000
jbe 0x14001b6c9
inc edi
mov eax, dword [rbx + 0xa8]
mov dword [rbx + 0xac], eax
mov eax, dword [rbx + 0xa4]
mov dword [rbx + 0xa8], eax
mov eax, dword [rbx + 0xa0]
mov dword [rbx + 0xa4], eax
mov dword [rbx + 0xa0], ebp
cmp byte [rbx + 0x4d98], 0
mov dword [rbx + 0xb4], edi
je 0x14001b727
mov r8d, ebp
mov rax, qword [rbx + 0xe940]
lea rcx, [rbx + 0x4b98]
mov r9, r12
mov qword [rsp + 0x20], rax
mov edx, edi
call fcn.140016d74
jmp 0x14001bd37
mov rdx, qword [r12]
mov eax, ebp
mov r8, rdx
sub r8, rax
mov rax, qword [rbx + 0xe938]
add rax, 0xffffffffffffeffc
cmp r8, rax
jae 0x14001b8a0
cmp rdx, rax
jae 0x14001b8a0
mov rax, qword [rbx + 0x4b90]
lea r14, [r8 + rax]
lea r15, [rdx + rax]
mov eax, edi
add rax, rdx
mov qword [r12], rax
cmp edi, 8
jb 0x14001b7f6
cmp ebp, edi
jae 0x14001b7ce
mov ecx, edi
shr rcx, 3
mov al, byte [r14]
add edi, 0xfffffff8
mov byte [r15], al
mov al, byte [r14 + 1]
mov byte [r15 + 1], al
mov al, byte [r14 + 2]
mov byte [r15 + 2], al
mov al, byte [r14 + 3]
mov byte [r15 + 3], al
mov al, byte [r14 + 4]
mov byte [r15 + 4], al
mov al, byte [r14 + 5]
mov byte [r15 + 5], al
mov al, byte [r14 + 6]
mov byte [r15 + 6], al
mov al, byte [r14 + 7]
add r14, 8
mov byte [r15 + 7], al
add r15, 8
sub rcx, 1
jne 0x14001b77d
jmp 0x14001b7f6
mov ebp, edi
shr rbp, 3
mov r8d, 8
mov rdx, r14
mov rcx, r15
call fcn.1400275c0
add r14, 8
add r15, 8
add edi, 0xfffffff8
sub rbp, 1
jne 0x14001b7d4
lea rbp, [rbx + 0xd8]
test edi, edi
je 0x14001b1b6
mov al, byte [r14]
lea rbp, [rbx + 0xd8]
mov byte [r15], al
cmp edi, 1
jbe 0x14001b1b6
mov al, byte [r14 + 1]
lea rbp, [rbx + 0xd8]
mov byte [r15 + 1], al
cmp edi, 2
jbe 0x14001b1b6
mov al, byte [r14 + 2]
lea rbp, [rbx + 0xd8]
mov byte [r15 + 2], al
cmp edi, 3
jbe 0x14001b1b6
mov al, byte [r14 + 3]
lea rbp, [rbx + 0xd8]
mov byte [r15 + 3], al
cmp edi, 4
jbe 0x14001b1b6
mov al, byte [r14 + 4]
lea rbp, [rbx + 0xd8]
mov byte [r15 + 4], al
cmp edi, 5
jbe 0x14001b1b6
mov al, byte [r14 + 5]
lea rbp, [rbx + 0xd8]
mov byte [r15 + 5], al
cmp edi, 6
jbe 0x14001b1b6
mov al, byte [r14 + 6]
mov byte [r15 + 6], al
jmp 0x14001bd37
lea rbp, [rbx + 0xd8]
test edi, edi
je 0x14001b1b6
mov rax, qword [rbx + 0xe940]
mov rcx, qword [rbx + 0x4b90]
and rax, r8
inc r8
mov al, byte [rax + rcx]
mov byte [rdx + rcx], al
mov rdx, qword [r12]
mov rax, qword [rbx + 0xe940]
inc rdx
and rdx, rax
mov qword [r12], rdx
add edi, 0xffffffff
jne 0x14001b8b6
jmp 0x14001bd37
cmp edi, 0x100
jne 0x14001b93f
lea r8, [rsp + 0x30]
mov rdx, rsi
mov rcx, rbx
call fcn.140018650
test al, al
je 0x14001b919
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.140016544
test al, al
jne 0x14001b1b6
mov rcx, rbx
call fcn.140019cf8
lea r11, [rsp + 0x40]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
cmp edi, 0x101
jne 0x14001baa0
mov edi, dword [rbx + 0xb4]
test edi, edi
je 0x14001b1b6
cmp byte [rbx + 0x4d98], 0
je 0x14001b98b
mov rax, qword [rbx + 0xe940]
lea rcx, [rbx + 0x4b98]
mov r8d, dword [rbx + 0xa0]
mov r9, r12
mov edx, edi
mov qword [rsp + 0x20], rax
call fcn.140016d74
jmp 0x14001b1b6
mov rdx, qword [r12]
mov ecx, dword [rbx + 0xa0]
mov r8, rdx
mov rax, qword [rbx + 0xe938]
sub r8, rcx
add rax, 0xffffffffffffeffc
cmp r8, rax
jae 0x14001ba67
cmp rdx, rax
jae 0x14001ba67
mov rax, qword [rbx + 0x4b90]
lea r14, [r8 + rax]
lea r15, [rdx + rax]
lea rax, [rdx + rdi]
mov qword [r12], rax
cmp edi, 8
jb 0x14001b7f6
cmp ecx, edi
jae 0x14001ba39
mov rcx, rdi
shr rcx, 3
mov al, byte [r14]
add edi, 0xfffffff8
mov byte [r15], al
mov al, byte [r14 + 1]
mov byte [r15 + 1], al
mov al, byte [r14 + 2]
mov byte [r15 + 2], al
mov al, byte [r14 + 3]
mov byte [r15 + 3], al
mov al, byte [r14 + 4]
mov byte [r15 + 4], al
mov al, byte [r14 + 5]
mov byte [r15 + 5], al
mov al, byte [r14 + 6]
mov byte [r15 + 6], al
mov al, byte [r14 + 7]
add r14, 8
mov byte [r15 + 7], al
add r15, 8
sub rcx, 1
jne 0x14001b9e5
jmp 0x14001b7f6
mov rbp, rdi
shr rbp, 3
mov r8d, 8
mov rdx, r14
mov rcx, r15
call fcn.1400275c0
add r14, 8
add r15, 8
add edi, 0xfffffff8
sub rbp, 1
jne 0x14001ba40
jmp 0x14001b7f6
mov rax, qword [rbx + 0xe940]
mov rcx, qword [rbx + 0x4b90]
and rax, r8
inc r8
mov al, byte [rax + rcx]
mov byte [rdx + rcx], al
mov rdx, qword [r12]
mov rax, qword [rbx + 0xe940]
inc rdx
and rdx, rax
mov qword [r12], rdx
add edi, 0xffffffff
jne 0x14001ba6e
jmp 0x14001b1b6
add edi, 0xfffffefe
lea rdx, [rbx + 0xa0]
lea rdx, [rdx + rdi*4]
mov r13d, dword [rdx]
je 0x14001bac8
sub edi, 1
mov ecx, dword [rbx + rdi*4 + 0xa0]
mov dword [rdx], ecx
lea rdx, [rdx - 4]
jne 0x14001bab6
mov rax, qword [rsi + 0x10]
mov dword [rbx + 0xa0], r13d
movsxd rcx, dword [rsi]
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r10d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r10d
mov edx, eax
shr edx, cl
mov ecx, dword [rbx + 0x2e34]
and edx, 0xfffe
cmp edx, dword [rbx + rcx*4 + 0x2db4]
jae 0x14001bb31
mov eax, 0x10
sub eax, ecx
mov cl, al
shr rdx, cl
movzx ecx, byte [rdx + rbx + 0x2e38]
add ecx, r10d
mov eax, ecx
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
movzx eax, word [rbx + rdx*2 + 0x3238]
jmp 0x14001bba3
mov r9d, 0xf
inc ecx
cmp ecx, r9d
jae 0x14001bb61
mov r8d, ecx
add r8, 0xb6d
lea r8, [rbx + r8*4]
cmp edx, dword [r8]
jb 0x14001bb5e
inc ecx
add r8, 4
cmp ecx, r9d
jb 0x14001bb4c
jmp 0x14001bb61
mov r9d, ecx
lea ecx, [r10 + r9]
mov eax, ecx
and ecx, 7
shr eax, 3
add dword [rsi], eax
lea eax, [r9 - 1]
mov dword [rsi + 4], ecx
mov ecx, 0x10
sub ecx, r9d
sub edx, dword [rbx + rax*4 + 0x2db4]
mov eax, r9d
shr edx, cl
add edx, dword [rbx + rax*4 + 0x2df4]
cmp edx, dword [rbx + 0x2db0]
sbb eax, eax
and eax, edx
movzx eax, word [rbx + rax*2 + 0x3a38]
mov r8d, dword [rsi]
movzx edi, ax
cmp edi, 8
jae 0x14001bbb3
add edi, 2
jmp 0x14001bc07
mov ebp, edi
and edi, 3
or edi, 4
shr ebp, 2
dec ebp
mov ecx, ebp
shl edi, cl
add edi, 2
test ebp, ebp
je 0x14001bc07
mov rax, qword [rsi + 0x10]
movsxd rcx, r8d
mov ecx, dword [rcx + rax]
call fcn.14002d2f4
mov r8d, dword [rsi + 4]
mov ecx, 0x10
sub ecx, r8d
shr eax, cl
mov ecx, 0x10
sub ecx, ebp
movzx edx, ax
shr edx, cl
lea ecx, [r8 + rbp]
mov eax, ecx
add edi, edx
shr eax, 3
add dword [rsi], eax
and ecx, 7
mov dword [rsi + 4], ecx
cmp byte [rbx + 0x4d98], 0
mov dword [rbx + 0xb4], edi
je 0x14001bc1e
mov r8d, r13d
jmp 0x14001b705
mov rdx, qword [r12]
mov rax, qword [rbx + 0xe938]
mov r8, rdx
sub r8, r13
add rax, 0xffffffffffffeffc
cmp r8, rax
jae 0x14001bcf4
cmp rdx, rax
jae 0x14001bcf4
mov rax, qword [rbx + 0x4b90]
lea r14, [r8 + rax]
lea r15, [rdx + rax]
mov eax, edi
add rax, rdx
mov qword [r12], rax
cmp edi, 8
jb 0x14001b7f6
cmp r13d, edi
jae 0x14001bcc7
mov ecx, edi
shr rcx, 3
mov al, byte [r14]
add edi, 0xfffffff8
mov byte [r15], al
mov al, byte [r14 + 1]
mov byte [r15 + 1], al
mov al, byte [r14 + 2]
mov byte [r15 + 2], al
mov al, byte [r14 + 3]
mov byte [r15 + 3], al
mov al, byte [r14 + 4]
mov byte [r15 + 4], al
mov al, byte [r14 + 5]
mov byte [r15 + 5], al
mov al, byte [r14 + 6]
mov byte [r15 + 6], al
mov al, byte [r14 + 7]
add r14, 8
mov byte [r15 + 7], al
add r15, 8
sub rcx, 1
jne 0x14001bc73
jmp 0x14001b7f6
mov ebp, edi
shr rbp, 3
mov r8d, 8
mov rdx, r14
mov rcx, r15
call fcn.1400275c0
add r14, 8
add r15, 8
add edi, 0xfffffff8
sub rbp, 1
jne 0x14001bccd
jmp 0x14001b7f6
lea rbp, [rbx + 0xd8]
test edi, edi
je 0x14001b1b6
mov rax, qword [rbx + 0xe940]
mov rcx, qword [rbx + 0x4b90]
and rax, r8
inc r8
mov al, byte [rax + rcx]
mov byte [rdx + rcx], al
mov rdx, qword [r12]
mov rax, qword [rbx + 0xe940]
inc rdx
and rdx, rax
mov qword [r12], rdx
add edi, 0xffffffff
jne 0x14001bd0a
lea rbp, [rbx + 0xd8]
jmp 0x14001b1b6
mov byte [rbx + 0x4db8], 0
jmp 0x14001b921
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x430
mov bl, dl
mov rsi, rcx
call fcn.140017a1c
mov dl, bl
mov rcx, rsi
call fcn.14001973c
mov eax, dword [rsi + 0x30]
lea r15, [rsi + 0x28]
xor ebx, ebx
mov edx, ebx
add eax, eax
je 0x14001bdad
mov eax, edx
inc edx
imul rcx, rax, 0x4af8
add rcx, qword [r15]
mov byte [rcx + 0x4add], bl
mov byte [rcx + 0x4adf], bl
mov eax, dword [rsi + 0x30]
add eax, eax
cmp edx, eax
jb 0x14001bd8a
mov rcx, qword [r15]
lea rdx, [rsi + 0xec]
movups xmm0, xmmword [rsi + 0xd8]
mov r8d, 0x4a9c
movups xmmword [rcx + 0x24], xmm0
mov eax, dword [rsi + 0xe8]
mov dword [rcx + 0x34], eax
mov rcx, qword [r15]
add rcx, 0x3c
call fcn.1400275c0
mov dword [rsp + 0x24], ebx
mov r13d, ebx
mov byte [rsp + 0x480], bl
mov byte [rsp + 0x470], bl
mov r14d, ebx
mov rcx, qword [rsi]
mov eax, 0x400000
sub eax, r14d
movsxd rdx, r14d
add rdx, qword [rsi + 0x38]
movsxd r8, eax
and r8, 0xfffffffffffffff0
call fcn.140010730
xor ecx, ecx
mov dword [rsp + 0x20], eax
mov edi, eax
test eax, eax
js 0x14001c133
add r14d, eax
mov dword [rsp + 0x28], r14d
je 0x14001c133
test eax, eax
jle 0x14001be42
cmp r14d, 0x400
jl 0x14001c126
cmp r13d, r14d
jge 0x14001c126
mov eax, dword [rsi + 0x30]
mov r12d, ecx
mov dword [rsp + 0x488], ecx
mov ebp, ecx
add eax, eax
je 0x14001bf76
mov eax, r12d
imul rbx, rax, 0x4af8
mov dword [rsp + 0x24], r12d
add rbx, qword [r15]
lea rbp, [rbx + 8]
mov qword [rbx], rsi
cmp byte [rbx + 0x4adf], cl
je 0x14001be8c
mov dword [rbx + 0x4ad8], r14d
jmp 0x14001bebf
movsxd rdx, r13d
mov rcx, rbp
add rdx, qword [rsi + 0x38]
call fcn.14000d7e8
xor ecx, ecx
mov eax, r14d
sub eax, r13d
mov qword [rbp], rcx
mov dword [rbx + 0x4ad8], eax
je 0x14001bf6f
mov byte [rbx + 0x4adc], cl
mov byte [rbx + 0x20], cl
mov byte [rbx + 0x38], cl
test edi, edi
mov byte [rbx + 0x4adf], cl
mov dword [rbx + 0x4af0], r12d
lea rdi, [rbx + 0x24]
sete al
mov byte [rbx + 0x4ade], al
cmp byte [rbx + 0x20], cl
jne 0x14001bf0c
mov r8, rdi
mov byte [rbx + 0x20], 1
mov rdx, rbp
mov rcx, rsi
call fcn.140018478
xor ecx, ecx
test al, al
je 0x14001bf67
cmp byte [rbx + 0x35], cl
jne 0x14001bf05
cmp byte [rsi + 0xe88e], cl
je 0x14001bf67
mov byte [rsi + 0xe88e], 1
cmp byte [rsp + 0x480], cl
jne 0x14001bf26
cmp dword [rdi], 0x20000
jg 0x14001bf26
inc dword [rsp + 0x488]
jmp 0x14001bf35
mov byte [rbx + 0x4add], 1
mov byte [rsp + 0x480], 1
mov eax, dword [rbx + 0x30]
inc r12d
add eax, dword [rdi]
add r13d, eax
mov eax, r14d
sub eax, r13d
js 0x14001bf4d
cmp byte [rbx + 0x34], cl
jne 0x14001bf6f
cmp eax, 0x400
jl 0x14001bf6f
mov eax, dword [rsi + 0x30]
add eax, eax
cmp r12d, eax
jae 0x14001bf6f
mov edi, dword [rsp + 0x20]
jmp 0x14001be62
mov byte [rsp + 0x470], 1
mov ebp, dword [rsp + 0x488]
xor edx, edx
mov eax, ebp
div dword [rsi + 0x30]
xor edx, edx
mov edi, eax
mov eax, ebp
div dword [rsi + 0x30]
test edx, edx
je 0x14001bf8c
inc edi
mov ebx, ecx
test ebp, ebp
je 0x14001bff0
mov r14d, ecx
mov eax, r14d
lea r8, [rsp + 0x30]
shl rax, 4
inc r14d
add r8, rax
mov eax, ebx
imul rdx, rax, 0x4af8
mov eax, ebp
add rdx, qword [r15]
sub eax, ebx
cmp edi, eax
mov qword [r8], rdx
cmovb eax, edi
mov dword [r8 + 8], eax
cmp r12d, 1
jne 0x14001bfd3
mov rcx, rsi
call fcn.14001c1c4
jmp 0x14001bfe3
mov rcx, qword [rsi + 0x20]
lea rdx, [0x14001c9b0]
call fcn.140014dbc
add ebx, edi
cmp ebx, ebp
jb 0x14001bf95
mov r14d, dword [rsp + 0x28]
xor ecx, ecx
test r12d, r12d
je 0x14001c126
mov rcx, qword [rsi + 0x20]
call fcn.1400150b8
xor ecx, ecx
mov edi, ecx
test r12d, r12d
je 0x14001c078
mov ebx, ecx
mov rbp, qword [r15]
add rbp, rbx
cmp byte [rbp + 0x4add], cl
jne 0x14001c038
mov rdx, rbp
mov rcx, rsi
call fcn.140017e40
xor ecx, ecx
test al, al
je 0x14001c133
cmp byte [rbp + 0x4add], cl
je 0x14001c04d
mov rdx, rbp
mov rcx, rsi
call fcn.14001c9f0
xor ecx, ecx
test al, al
je 0x14001c133
cmp byte [rbp + 0x4adc], cl
jne 0x14001c133
cmp byte [rbp + 0x4adf], cl
jne 0x14001c0a9
cmp byte [rbp + 0x34], cl
jne 0x14001c133
inc edi
add rbx, 0x4af8
cmp edi, r12d
jb 0x14001c00d
cmp byte [rsp + 0x470], cl
jne 0x14001c133
mov ebx, r14d
sub ebx, r13d
cmp ebx, 0x400
jl 0x14001c1a2
cmp r13d, r14d
jge 0x14001bdf5
mov edi, dword [rsp + 0x20]
jmp 0x14001be4b
mov eax, dword [rbp + 8]
sub eax, dword [rsi + 0x38]
add eax, dword [rbp + 0x18]
cmp r14d, eax
jle 0x14001c133
mov rcx, qword [rsi + 0x38]
sub r14d, eax
movsxd rdx, eax
movsxd r8, r14d
add rdx, rcx
call fcn.1400275c0
mov eax, dword [rbp + 0x2c]
xor ecx, ecx
sub eax, dword [rbp + 8]
add dword [rbp + 0x24], eax
mov qword [rbp + 0x2c], rcx
mov rax, qword [rsi + 0x38]
mov qword [rbp + 0x18], rax
mov dword [rbp + 8], ecx
test edi, edi
je 0x14001c123
mov rcx, qword [r15]
mov r8d, 0x4af8
mov rdx, rbp
mov rbx, qword [rcx + 0x4ae0]
mov edi, dword [rcx + 0x4aec]
call fcn.1400275c0
mov rax, qword [r15]
xor ecx, ecx
mov qword [rax + 0x4ae0], rbx
mov rax, qword [r15]
mov dword [rax + 0x4aec], edi
mov byte [rbp + 0x4adf], cl
mov r13d, ecx
cmp byte [rsp + 0x470], cl
je 0x14001bdf5
mov rax, qword [rsi + 0xe940]
mov rcx, rsi
and qword [rsi + 0xc0], rax
call fcn.140019cf8
mov rdx, qword [r15]
mov r8d, 0x4a9c
mov ecx, dword [rsp + 0x24]
imul r9, rcx, 0x4af8
lea rcx, [rsi + 0xec]
movups xmm0, xmmword [r9 + rdx + 0x24]
movups xmmword [rsi + 0xd8], xmm0
mov eax, dword [r9 + rdx + 0x34]
add r9, 0x3c
add rdx, r9
mov dword [rsi + 0xe8], eax
mov rbx, qword [rsp + 0x478]
add rsp, 0x430
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
jmp fcn.1400275c0
test ebx, ebx
js 0x14001c133
jle 0x14001c1bc
mov rcx, qword [rsi + 0x38]
movsxd rdx, r13d
add rdx, rcx
movsxd r8, ebx
call fcn.1400275c0
xor ecx, ecx
mov r13d, ecx
jmp 0x14001bdf2