Function at 0x51eff0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
movaps xmmword [rsp + 0xf0], xmm6
mov r14d, r9d
mov rbx, r8
mov rbp, rdx
mov r13, rcx
mov r15d, dword [rsp + 0x170]
mov rsi, qword [rcx]
lea edx, [r15 + 9]
mov eax, dword [rcx + 0x38]
cmp eax, edx
mov qword [rsp + 0xa0], rdx
cmovl eax, edx
mov dword [rcx + 0x38], eax
call fcn.004c6120
mov r12, rax
test rax, rax
sete al
test rbp, rbp
sete cl
xor cl, al
mov rax, rbp
or rax, r12
sete al
test cl, cl
jne 0x51f066
test al, al
jne 0x51f066
cmp byte [rbp + 0x3f], 0
je 0x51f082
movaps xmm6, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rdi, qword [rbp]
lea rcx, [0x00605647]
lea r8, [0x005fb09c]
mov rdx, rdi
mov r9d, 0x5c
call fcn.0041b8a0
test eax, eax
je 0x51f066
mov qword [rsp + 0xd0], rbx
mov qword [rsp + 0x78], rbp
mov rcx, qword [rbp + 0x60]
mov r8, qword [rsi + 0x20]
test rcx, rcx
je 0x51f0e5
lea rbx, [r8 + 0x18]
mov edx, 0xffffffff
xor ebp, ebp
nop
add rbp, 1
add edx, 1
lea rax, [rbx + 0x20]
cmp qword [rbx], rcx
mov rbx, rax
jne 0x51f0d0
jmp 0x51f0ea
mov edx, 0xffff8000
movsxd rbx, edx
shl rbx, 5
mov rcx, qword [r13]
mov rbp, qword [rcx + 0x1f8]
test rbp, rbp
mov dword [rsp + 0x5c], edx
je 0x51f11c
cmp byte [rcx + 0xc5], 0
jne 0x51f11c
cmp byte [r13 + 0x124], 0
je 0x51f31e
mov rbp, qword [rsp + 0x78]
mov r8d, dword [rbp + 0x28]
cmp edx, 1
je 0x51f159
mov rax, qword [r13]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + rbx + 8]
cmp byte [rax + 0x11], 0
je 0x51f159
mov qword [rsp + 0x20], rdi
mov rcx, r13
xor r9d, r9d
call fcn.004c63a0
mov edx, dword [rsp + 0x5c]
mov r8d, dword [rbp + 0x28]
mov rdi, qword [rbp]
mov eax, dword [rsp + 0x178]
add eax, 2
mov ecx, dword [r13 + 0x34]
cmp ecx, eax
cmovge eax, ecx
mov dword [r13 + 0x34], eax
mov rbp, qword [r13 + 0x10]
cmp edx, 1
je 0x51f19c
mov rax, qword [r13]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + rbx + 8]
cmp byte [rax + 0x11], 0
je 0x51f19c
mov qword [rsp + 0x20], rdi
mov rcx, r13
xor r9d, r9d
call fcn.004c63a0
mov rax, qword [rsp + 0x78]
cmp byte [rax + 0x30], 0
js 0x51f213
mov r9d, dword [rax + 0x28]
movsx edi, word [rax + 0x38]
mov eax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51f28b
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rbp + 0x90], edx
mov rdx, qword [rbp + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x70
mov ebx, dword [rsp + 0x178]
mov dword [rdx + rcx*8 + 4], ebx
mov dword [rdx + rcx*8 + 8], r9d
mov ebx, dword [rsp + 0x5c]
mov dword [rdx + rcx*8 + 0xc], ebx
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
jne 0x51f38d
jmp 0x51f2b6
add rax, 0x10
nop word [rax + rax]
mov rdi, qword [rax]
mov eax, dword [rdi + 0x64]
mov ecx, eax
xor ecx, 0xfffffffc
and ecx, eax
lea rax, [rdi + 0x28]
cmp ecx, 2
jne 0x51f220
mov r9d, dword [rdi + 0x58]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51f2d1
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x70
mov edx, dword [rsp + 0x178]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r9d
mov edx, dword [rsp + 0x5c]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51f2ee
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x70
mov r8d, dword [rsp + 0x178]
call fcn.0047df60
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
jne 0x51f38d
mov rcx, qword [rbp + 0x88]
cdqe
lea rax, [rax + rax*2]
mov byte [rcx + rax*8 + 1], 0xfd
mov dword [rcx + rax*8 + 0x10], edi
jmp 0x51f38d
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x70
mov r8d, dword [rsp + 0x178]
call fcn.0047df60
mov rbx, qword [r13 + 0x10]
mov rcx, r13
mov rdx, rdi
call fcn.004c65a0
test rax, rax
je 0x51f38d
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x51f36c
mov edx, 0xfffffff8
mov r8, rax
call fcn.00444fc0
jmp 0x51f38d
mov rax, qword [r8 + rbx]
mov rcx, qword [rcx + 0x200]
mov rdx, qword [r13 + 0x168]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x20], rax
mov edx, 0x1c
mov r8, rdi
xor r9d, r9d
call rbp
cmp eax, 1
jne 0x520818
lea rdx, [0x005ff140]
mov rcx, r13
call fcn.00419aa0
mov dword [r13 + 0x18], 0x17
jmp 0x51f066
mov rcx, qword [rbx + 0x88]
mov edx, dword [rbx + 0x90]
add edx, 0xffffffff
movsxd rdx, edx
lea rdx, [rdx + rdx*2]
mov byte [rcx + rdx*8 + 1], 0xf8
mov qword [rcx + rdx*8 + 0x10], rax
lea r9d, [r15 + 6]
mov rbp, qword [rsp + 0x78]
mov rdi, qword [rbp]
mov eax, dword [r12 + 0x90]
cmp dword [r12 + 0x94], eax
mov qword [rsp + 0xd8], rsi
mov dword [rsp + 0x90], r9d
jle 0x51f3f6
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [r12 + 0x90], edx
mov rdx, qword [r12 + 0x88]
lea rcx, [rcx + rcx*2]
mov qword [rdx + rcx*8], 0x75
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], 0
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x51f40e
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x75
xor r8d, r8d
call fcn.0047df60
mov rdx, qword [rsp + 0xd0]
lea rcx, [r12 + 0x90]
mov qword [rsp + 0x50], rcx
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x51f461
mov rsi, rdx
test eax, eax
jns 0x51f43e
mov rax, qword [rsp + 0x50]
mov eax, dword [rax]
add eax, 0xffffffff
cdqe
lea rdx, [rax + rax*2]
shl rdx, 3
add rdx, qword [r12 + 0x88]
mov rcx, r12
mov r8, rdi
xor r9d, r9d
call fcn.0047e190
mov rdx, rsi
lea eax, [r15 + 4]
mov dword [rsp + 0x44], eax
lea eax, [r15 + 7]
mov dword [rsp + 0x94], eax
lea eax, [r15 + 8]
mov dword [rsp + 0x8c], eax
lea rax, [r12 + 0x94]
mov qword [rsp + 0x48], rax
mov rdi, qword [rbp + 0x10]
test rdi, rdi
je 0x5204e5
lea eax, [r15 + 1]
mov dword [rsp + 0xb4], eax
lea eax, [r15 + 2]
mov dword [rsp + 0x70], eax
lea eax, [r15 + 3]
mov dword [rsp + 0xc8], eax
lea eax, [r15 + 5]
mov dword [rsp + 0xc4], eax
mov eax, dword [rsp + 0x178]
lea esi, [rax + 1]
mov rax, r12
add rax, 0x88
mov qword [rsp + 0x60], rax
mov eax, dword [rsp + 0xa0]
mov qword [rsp + 0xe0], rax
xorps xmm6, xmm6
mov bl, 1
mov dword [rsp + 0x6c], r14d
mov qword [rsp + 0xa8], r13
mov dword [rsp + 0x74], esi
jmp 0x51f528
mov dword [rcx + 8], eax
mov rdx, qword [rsp + 0xd0]
mov rdi, qword [rdi + 0x28]
test rdi, rdi
je 0x5204e7
test rdx, rdx
sete al
cmp rdi, rdx
sete cl
test al, cl
jne 0x51f53c
xor al, cl
je 0x51f51b
cmp qword [rdi + 0x48], 0
movzx ebx, bl
mov eax, 0
cmove ebx, eax
mov eax, dword [rdi + 0x64]
cmp byte [rbp + 0x30], 0
jns 0x51f570
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x51f570
mov cl, 1
test cl, cl
je 0x51f570
movzx r15d, word [rdi + 0x5e]
mov r14, qword [rbp]
jmp 0x51f590
movzx r15d, word [rdi + 0x60]
mov r14, qword [rdi]
mov ecx, eax
xor ecx, 0xfffffff7
test ecx, eax
je 0x51f590
movzx eax, word [rdi + 0x5e]
jmp 0x51f593
mov eax, r15d
mov qword [rsp + 0x98], rax
mov rbp, qword [rsp + 0x50]
mov eax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
mov qword [rsp + 0x80], rdi
mov dword [rsp + 0xb0], ebx
jle 0x51f600
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rbp], edx
mov rdx, qword [rsp + 0x60]
mov rdx, qword [rdx]
lea rcx, [rcx + rcx*2]
mov qword [rdx + rcx*8], 0x75
mov ebp, dword [rsp + 0x94]
mov dword [rdx + rcx*8 + 8], ebp
mov rbp, qword [rsp + 0x50]
mov dword [rdx + rcx*8 + 0xc], 0
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x51f628
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x75
xor r8d, r8d
mov r9d, dword [rsp + 0x94]
call fcn.0047df60
mov rdi, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x98]
lea ebx, [rcx - 1]
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x51f66f
test eax, eax
jns 0x51f647
mov eax, dword [rbp]
add eax, 0xffffffff
cdqe
lea rdx, [rax + rax*2]
shl rdx, 3
add rdx, qword [r12 + 0x88]
mov rcx, r12
mov r8, r14
xor r9d, r9d
call fcn.0047e190
mov rdi, qword [rsp + 0x80]
mov eax, dword [r13 + 0x38]
mov rcx, qword [rsp + 0xa0]
add ecx, ebx
cmp eax, ecx
cmovge ecx, eax
mov dword [r13 + 0x38], ecx
mov r9d, dword [rdi + 0x58]
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
mov qword [rsp + 0xb8], rbx
jle 0x51f6e0
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x70
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], r9d
mov edx, dword [rsp + 0x5c]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51f700
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov edx, 0x70
mov r8d, esi
call fcn.0047df60
mov rdi, qword [rsp + 0x80]
mov rbx, qword [r13 + 0x10]
mov rcx, r13
mov rdx, rdi
call fcn.004c65a0
test rax, rax
je 0x51f72a
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x51f770
mov edx, 0xfffffff8
mov r8, rax
call fcn.00444fc0
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51f79e
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 4], r15d
mov edi, dword [rsp + 0x70]
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51f7bd
mov rcx, qword [rbx + 0x88]
mov edx, dword [rbx + 0x90]
add edx, 0xffffffff
movsxd rdx, edx
lea rdx, [rdx + rdx*2]
mov byte [rcx + rdx*8 + 1], 0xf8
mov qword [rcx + rdx*8 + 0x10], rax
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x51f737
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
mov r8d, r15d
mov edi, dword [rsp + 0x70]
mov r9d, edi
call fcn.0047df60
mov r14d, dword [rsp + 0x44]
mov rax, qword [rsp + 0x80]
movzx r8d, word [rax + 0x5e]
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51f870
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov r15, qword [rsp + 0x60]
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 4], r8d
mov edx, dword [rsp + 0xc8]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov ebx, dword [rbp]
mov rax, qword [rsp + 0x48]
cmp dword [rax], ebx
jg 0x51f89e
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x23
mov r8d, esi
xor r9d, r9d
call fcn.0047df60
mov ebx, eax
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x51f8cb
mov dword [rsp + 0x20], 1
mov rcx, r12
mov edx, 0x62
mov r8d, esi
mov r9d, r14d
call fcn.0047df60
jmp 0x51f8f9
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
mov r9d, dword [rsp + 0xc8]
call fcn.0047df60
mov r15, qword [rsp + 0x60]
mov ebx, dword [rbp]
mov rax, qword [rsp + 0x48]
cmp dword [rax], ebx
jle 0x51f826
movsxd rax, ebx
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x23
mov dword [rcx + rax*8 + 4], esi
movups xmmword [rcx + rax*8 + 8], xmm6
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51f850
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x62
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], 1
mov qword [rcx + rax*8 + 0x10], 0
mov rax, qword [rsp + 0xd8]
mov r8d, dword [rax + 0x2e0]
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51f950
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 4], r8d
mov edx, dword [rsp + 0xc4]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51f96d
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
mov r9d, dword [rsp + 0xc4]
call fcn.0047df60
lea rax, [0x00605658]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x20], 4
mov rcx, r13
xor edx, edx
mov r8d, edi
mov r9d, dword [rsp + 0xb4]
call fcn.004cba70
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51fa00
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
cmp dword [rsp + 0x98], 2
jae 0x51fa25
mov dword [rsp + 0xcc], ebx
mov eax, dword [rbp]
mov dword [rsp + 0x68], eax
mov rdi, qword [rsp + 0xd8]
mov ebx, dword [rsp + 0x6c]
jmp 0x51ff87
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
xor r8d, r8d
mov r9d, edi
call fcn.0047df60
cmp dword [rsp + 0x98], 2
jb 0x51f9df
mov r14d, dword [r13 + 0x44]
lea edi, [r14 - 1]
mov dword [r13 + 0x44], edi
movsxd rdx, dword [rsp + 0xb8]
shl rdx, 2
mov rcx, qword [rsp + 0xd8]
call fcn.00429840
mov qword [rsp + 0x98], rax
test rax, rax
je 0x51fa9d
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51facb
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
movups xmmword [rcx + rax*8 + 1], xmm6
mov qword [rcx + rax*8 + 0x10], 0
mov esi, dword [rbp]
cmp dword [rsp + 0xb8], 1
mov rbp, qword [rsp + 0x80]
je 0x51fafb
jmp 0x51fb77
mov rdx, qword [rsp + 0xd0]
mov rbp, qword [rsp + 0x78]
mov r14d, dword [rsp + 0x6c]
mov r15d, dword [rsp + 0x170]
mov rdi, qword [rsp + 0x80]
mov ebx, dword [rsp + 0xb0]
jmp 0x51f51b
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov esi, dword [rbp]
cmp dword [rsp + 0xb8], 1
mov rbp, qword [rsp + 0x80]
jne 0x51fb77
cmp word [rbp + 0x5e], 1
jne 0x51fb77
cmp byte [rbp + 0x62], 0
je 0x51fb77
mov rax, qword [rsp + 0x48]
cmp dword [rax], esi
jle 0x51fb4f
movsxd rax, esi
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x50]
mov dword [rdx], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x33
mov rdx, qword [rsp + 0xa0]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51fb77
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x33
mov r8, qword [rsp + 0xa0]
mov r9d, edi
call fcn.0047df60
mov rbp, qword [rsp + 0x80]
mov dword [rsp + 0xc0], edi
mov qword [rsp + 0xe8], r14
mov dword [rsp + 0x68], esi
mov dword [rsp + 0xcc], ebx
mov r13d, dword [rsp + 0xb8]
xor r14d, r14d
jmp 0x51fbb5
add r14, 1
cmp r13, r14
mov rbp, qword [rsp + 0x80]
je 0x51fd57
mov rax, qword [rbp + 0x40]
mov rbp, qword [rax + r14*8]
mov rax, qword [rsp + 0xa8]
mov rcx, qword [rax]
movzx ebx, byte [rcx + 0x64]
movzx r15d, byte [rcx + 0xc5]
mov edx, ebx
mov r8, rbp
mov r9d, r15d
call fcn.00478ca0
mov rdi, rax
test r15d, r15d
jne 0x51fc1c
test rdi, rdi
je 0x51fc04
cmp qword [rdi + 0x18], 0
jne 0x51fc1c
mov rcx, qword [rsp + 0xa8]
mov edx, ebx
mov r8, rdi
jmp 0x51fc11
mov rcx, qword [rsp + 0xa8]
mov edx, ebx
xor r8d, r8d
mov r9, rbp
call fcn.00480050
mov rdi, rax
mov ebx, dword [rsp + 0x44]
mov esi, dword [rsp + 0x70]
mov rbp, qword [rsp + 0x50]
mov r15, qword [rsp + 0x60]
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51fca0
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 4], r14d
mov dword [rcx + rax*8 + 8], esi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x51fcc8
mov dword [rsp + 0x20], ebx
mov rcx, r12
mov edx, 0x5e
mov r8d, dword [rsp + 0x74]
mov r9d, r14d
call fcn.0047df60
jmp 0x51fcf6
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
mov r8d, r14d
mov r9d, esi
call fcn.0047df60
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51fc76
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x5e
mov edx, dword [rsp + 0x74]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r14d
mov dword [rcx + rax*8 + 0xc], ebx
mov qword [rcx + rax*8 + 0x10], 0
mov eax, r14d
add eax, dword [rsp + 0xa0]
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x30], 0xfffffffe
mov rcx, r12
mov edx, 0x34
mov r8d, ebx
xor r9d, r9d
call fcn.004c62a0
mov rcx, qword [rsp + 0x98]
mov dword [rcx + r14*4], eax
movsxd rax, dword [r12 + 0x90]
test rax, rax
jle 0x51fba0
mov rcx, qword [r15]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], pe_nt_image_headers64
jmp 0x51fba0
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x51fda1
lea ecx, [rax + 1]
mov rbp, qword [rsp + 0x50]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x47
mov rdx, qword [rsp + 0xb8]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], esi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r14d, dword [rsp + 0x6c]
jmp 0x51fdcb
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x47
mov r8, qword [rsp + 0xb8]
mov r9d, esi
call fcn.0047df60
mov r14d, dword [rsp + 0x6c]
mov rbp, qword [rsp + 0x50]
mov rdi, qword [rsp + 0xe0]
movsxd rax, dword [rbp]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
mov esi, dword [rsp + 0x74]
jle 0x51fe17
lea ecx, [rax + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0xc0]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51fe37
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0xc0]
call fcn.0047df60
mov eax, dword [r12 + 0x90]
mov rcx, qword [r12]
mov cl, byte [rcx + 0x67]
lea rdx, [0x0213b3e8]
test cl, cl
jne 0x51fe6b
mov edx, dword [rsp + 0x68]
test edx, edx
cmovle edx, eax
add edx, 0xffffffff
movsxd rdx, edx
lea rdx, [rdx + rdx*2]
shl rdx, 3
add rdx, qword [r15]
mov dword [rdx + 8], eax
add r13, 0xffffffffffffffff
xor ebx, ebx
lea rdx, [0x0213b3e8]
test cl, cl
jne 0x51fef0
jmp 0x51fecf
mov dword [rsp + 0x20], ecx
mov rcx, r12
mov edx, 0x5e
mov r8d, esi
mov r9d, ebx
call fcn.0047df60
cmp r13, rbx
je 0x51ff30
add rbx, 1
mov eax, dword [r12 + 0x90]
mov rcx, qword [r12]
movzx ecx, byte [rcx + 0x67]
lea rdx, [0x0213b3e8]
test cl, cl
jne 0x51fef0
mov rcx, qword [rsp + 0x98]
mov ecx, dword [rcx + rbx*4]
lea edx, [rax - 1]
test ecx, ecx
cmovns edx, ecx
movsxd rcx, edx
lea rdx, [rcx + rcx*2]
shl rdx, 3
add rdx, qword [r15]
mov dword [rdx + 8], eax
lea rcx, [rdi + rbx]
mov rdx, qword [rsp + 0x48]
cmp dword [rdx], eax
jle 0x51fe90
lea edx, [rax + 1]
mov dword [rbp], edx
mov rdx, qword [r15]
cdqe
lea rax, [rax + rax*2]
mov dword [rdx + rax*8], 0x5e
mov dword [rdx + rax*8 + 4], esi
mov dword [rdx + rax*8 + 8], ebx
mov dword [rdx + rax*8 + 0xc], ecx
mov qword [rdx + rax*8 + 0x10], 0
cmp r13, rbx
jne 0x51feb0
mov ebx, r14d
mov rcx, qword [r12 + 0x18]
mov r8, qword [rsp + 0xe8]
neg r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x51ff5a
mov eax, dword [rbp]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
jmp 0x51ff62
mov rdx, r12
call fcn.004d3e00
mov r13, qword [rsp + 0xa8]
mov r14d, dword [rsp + 0x44]
mov rdi, qword [rsp + 0xd8]
mov rcx, rdi
mov rdx, qword [rsp + 0x98]
call fcn.00408130
lea rax, [0x006056a0]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x20], 2
mov rcx, r13
mov edx, 1
mov r8d, dword [rsp + 0xb4]
mov r9d, r14d
call fcn.004cba70
cmp dword [rdi + 0x2e0], 0
mov edi, dword [rbp]
movsxd rax, edi
mov rcx, qword [rsp + 0x48]
mov ecx, dword [rcx]
je 0x51fff5
cmp ecx, edi
jle 0x520040
lea ecx, [rdi + 1]
mov dword [rbp], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov dword [rcx + rax*8 + 4], r14d
movups xmmword [rcx + rax*8 + 8], xmm6
jmp 0x52005d
cmp ecx, edi
mov r15d, dword [rsp + 0x170]
jle 0x520196
add edi, 1
mov dword [rbp], edi
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x26
mov dword [rcx + rax*8 + 4], esi
mov edx, dword [rsp + 0x68]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5201b3
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x32
mov r8d, r14d
xor r9d, r9d
call fcn.0047df60
mov edi, eax
mov rsi, rbp
mov rbp, qword [rsp + 0x78]
mov r14d, dword [rsi]
mov rax, qword [rsp + 0x48]
cmp dword [rax], r14d
jle 0x5200e9
movsxd rax, r14d
lea ecx, [rax + 1]
mov dword [rsi], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0xf
mov edx, dword [rsp + 0x44]
mov dword [rcx + rax*8 + 4], edx
movups xmmword [rcx + rax*8 + 8], xmm6
mov r13d, dword [rsi]
mov rax, qword [rsp + 0x48]
cmp dword [rax], r13d
jg 0x520116
mov rax, qword [rsp + 0xa0]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov edx, 0x17
mov esi, dword [rsp + 0x74]
mov r8d, esi
xor r9d, r9d
call fcn.0047df60
mov r13d, eax
mov rax, qword [r12]
cmp byte [rax + 0x67], 0
je 0x52015f
mov rax, qword [rsp + 0x50]
mov eax, dword [rax]
lea rcx, [0x0213b3e8]
jmp 0x5201e0
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0xf
mov r8d, dword [rsp + 0x44]
xor r9d, r9d
call fcn.0047df60
mov r14d, eax
mov r13d, dword [rsi]
mov rax, qword [rsp + 0x48]
cmp dword [rax], r13d
jle 0x5200a2
movsxd rax, r13d
lea ecx, [rax + 1]
mov dword [rsi], ecx
mov rcx, qword [r15]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x17
mov esi, dword [rsp + 0x74]
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], 0
mov rdx, qword [rsp + 0xa0]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
mov rax, qword [r12]
cmp byte [rax + 0x67], 0
jne 0x5200d6
mov rax, qword [r12 + 0x88]
movsxd rcx, r13d
lea rcx, [rcx + rcx*2]
mov byte [rax + rcx*8 + 1], 0xfd
mov dword [rax + rcx*8 + 0x10], 1
mov rcx, qword [r12]
mov eax, dword [r12 + 0x90]
cmp byte [rcx + 0x67], 0
je 0x5201c0
lea rcx, [0x0213b3e8]
jmp 0x5201e0
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x26
mov r8d, esi
mov r9d, dword [rsp + 0x68]
call fcn.0047df60
mov rbp, qword [rsp + 0x78]
mov r14d, ebx
jmp 0x5202b8
lea ecx, [rax - 1]
test edi, edi
cmovns ecx, edi
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [r15]
nop word cs:[rax + rax]
mov r9d, dword [rsp + 0x68]
mov dword [rcx + 8], eax
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x520246
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x50]
mov dword [rdx], ecx
mov rcx, qword [r15]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x26
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [r12 + 0x90]
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
je 0x520270
mov dword [0x0213b3f0], eax
lea rcx, [0x0213b3e8]
jmp 0x5202a0
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x26
mov r8d, esi
call fcn.0047df60
mov eax, dword [r12 + 0x90]
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x520237
lea ecx, [rax - 1]
test r14d, r14d
cmovs r14d, ecx
mov rdx, qword [r15]
movsxd rbp, r14d
lea rbp, [rbp + rbp*2]
mov dword [rdx + rbp*8 + 8], eax
mov rbp, qword [rsp + 0x78]
test r13d, r13d
cmovs r13d, ecx
movsxd rcx, r13d
lea rcx, [rcx + rcx*2]
lea rcx, [rdx + rcx*8]
mov dword [rcx + 8], eax
mov r14d, dword [rsp + 0x6c]
mov r15d, dword [rsp + 0x170]
mov r13, qword [rsp + 0xa8]
lea rax, [0x00605700]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x20], 1
mov rcx, r13
xor edx, edx
mov r8d, dword [rsp + 0xb4]
mov r9d, dword [rsp + 0x8c]
call fcn.004cba70
mov rdi, qword [rsp + 0x50]
mov eax, dword [rdi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x520350
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rdi], edx
mov rdx, qword [rsp + 0x60]
mov rdx, qword [rdx]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x61
mov edi, dword [rsp + 0x90]
mov dword [rdx + rcx*8 + 4], edi
mov dword [rdx + rcx*8 + 8], 3
mov edi, dword [rsp + 0x44]
mov dword [rdx + rcx*8 + 0xc], edi
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x5203af
jmp 0x52037d
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov edx, 0x61
mov r8d, dword [rsp + 0x90]
mov r9d, 3
call fcn.0047df60
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x5203af
test eax, eax
jns 0x52038b
mov rax, qword [rsp + 0x50]
mov eax, dword [rax]
add eax, 0xffffffff
cdqe
lea rdx, [rax + rax*2]
shl rdx, 3
add rdx, qword [r12 + 0x88]
mov rcx, r12
lea r8, [0x006056e8]
xor r9d, r9d
call fcn.0047e190
mov rsi, qword [rsp + 0x50]
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x520420
lea ecx, [rax + 1]
mov dword [rsi], ecx
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x7f
mov dword [rcx + rax*8 + 4], r14d
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x520447
mov dword [rsp + 0x20], r15d
mov rcx, r12
mov edx, pe_nt_image_headers64
mov r8d, r14d
mov r9d, dword [rsp + 0x44]
call fcn.0047df60
jmp 0x52047a
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x7f
mov r8d, r14d
mov r9d, r15d
call fcn.0047df60
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x5203ff
lea ecx, [rax + 1]
mov dword [rsi], ecx
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], pe_nt_image_headers64
mov dword [rcx + rax*8 + 4], r14d
mov edx, dword [rsp + 0x44]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], r15d
mov qword [rcx + rax*8 + 0x10], 0
mov rdi, qword [rsp + 0x80]
mov ebx, dword [rsp + 0xb0]
mov eax, dword [rsi]
test eax, eax
jle 0x5204a5
mov rcx, qword [rsp + 0x60]
mov rcx, qword [rcx]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], 8
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
lea rcx, [0x0213b3e8]
mov esi, dword [rsp + 0x74]
jne 0x51f510
lea ecx, [rax - 1]
mov edx, dword [rsp + 0xcc]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
mov rdx, qword [rsp + 0x60]
add rcx, qword [rdx]
jmp 0x51f510
mov bl, 1
test rdx, rdx
sete al
setne dl
test bl, bl
setne cl
sete bl
xor bl, dl
jne 0x51f066
or al, cl
xor al, 1
jne 0x51f066
mov rsi, qword [rsp + 0x50]
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x520562
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x62
mov edx, dword [rsp + 0x178]
mov dword [rcx + rax*8 + 4], edx
mov edx, dword [rsp + 0x8c]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x520587
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x62
mov r8d, dword [rsp + 0x178]
mov r9d, dword [rsp + 0x8c]
call fcn.0047df60
mov ebx, dword [rsp + 0x44]
mov edi, dword [rsi]
mov rax, qword [rsp + 0x48]
cmp dword [rax], edi
jle 0x5205f8
movsxd rax, edi
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x10
mov edx, dword [rsp + 0x8c]
mov dword [rcx + rax*8 + 4], edx
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x520626
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x4b
xor r8d, r8d
mov r9d, dword [rsp + 0x94]
call fcn.0047df60
jmp 0x520661
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x10
mov r8d, dword [rsp + 0x8c]
xor r9d, r9d
call fcn.0047df60
mov edi, eax
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x5205d6
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov edx, dword [rsp + 0x94]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r8d, dword [rsp + 0x90]
mov eax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x5206b1
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [r12 + 0x90], edx
mov rdx, qword [r12 + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x61
mov dword [rdx + rcx*8 + 4], r8d
mov dword [rdx + rcx*8 + 8], 3
mov dword [rdx + rcx*8 + 0xc], ebx
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x5206c8
mov dword [rsp + 0x20], ebx
mov rcx, r12
mov edx, 0x61
mov r9d, 3
call fcn.0047df60
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
jne 0x5206ff
test eax, eax
jns 0x5206db
mov eax, dword [rsi]
add eax, 0xffffffff
cdqe
lea rdx, [rax + rax*2]
shl rdx, 3
add rdx, qword [r12 + 0x88]
lea r8, [0x006056e8]
mov rcx, r12
xor r9d, r9d
call fcn.0047e190
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x52076a
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x7f
mov dword [rcx + rax*8 + 4], r14d
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jg 0x520791
mov dword [rsp + 0x20], r15d
mov rcx, r12
mov edx, pe_nt_image_headers64
mov r8d, r14d
mov r9d, ebx
call fcn.0047df60
jmp 0x5207c6
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x7f
mov r8d, r14d
mov r9d, r15d
call fcn.0047df60
movsxd rax, dword [rsi]
mov rcx, qword [rsp + 0x48]
cmp dword [rcx], eax
jle 0x520750
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], pe_nt_image_headers64
mov dword [rcx + rax*8 + 4], r14d
mov dword [rcx + rax*8 + 8], ebx
mov dword [rcx + rax*8 + 0xc], r15d
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rsi]
test eax, eax
jle 0x5207e2
mov rcx, qword [r12 + 0x88]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], 8
mov rcx, qword [r12]
cmp byte [rcx + 0x67], 0
je 0x5207f5
lea rcx, [0x0213b3e8]
jmp 0x520810
lea ecx, [rax - 1]
test edi, edi
cmovns ecx, edi
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [r12 + 0x88]
mov dword [rcx + 8], eax
jmp 0x51f066
mov ecx, eax
not ecx
or ecx, 2
cmp ecx, 0xffffffff
mov rbp, qword [rsp + 0x78]
je 0x520845
lea rdx, [0x00602fdd]
mov rcx, r13
call fcn.00419aa0
mov dword [r13 + 0x18], 1
jmp 0x51f066
test eax, eax
jne 0x51f066
mov rdi, qword [rbp]
mov edx, dword [rsp + 0x5c]
mov r8d, dword [rbp + 0x28]
cmp edx, 1
jne 0x51f12a
jmp 0x51f159