Function at 0x516c10
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x1f8
movaps xmmword [rsp + 0x1e0], xmm7
movaps xmmword [rsp + 0x1d0], xmm6
mov dword [rsp + 0x9c], r9d
mov qword [rsp + 0x158], r8
mov rsi, rdx
mov r12, rcx
mov rax, qword [rcx]
mov qword [rsp + 0x118], rax
mov rbp, qword [rcx + 0x10]
movsx rax, word [rdx + 0x36]
mov qword [rsp + 0xb8], rax
mov eax, dword [rdx + 0x30]
test al, al
js 0x516c85
mov ecx, 1
mov qword [rsp + 0x130], rcx
xor ecx, ecx
mov qword [rsp + 0xe0], rcx
jmp 0x516cbd
lea rcx, [rsi + 0x10]
nop dword [rax]
mov rbx, qword [rcx]
mov ecx, dword [rbx + 0x64]
mov edx, ecx
xor edx, 0xfffffffc
and edx, ecx
lea rcx, [rbx + 0x28]
cmp edx, 2
jne 0x516c90
mov rcx, rbx
mov qword [rsp + 0xe0], rbx
movzx ecx, word [rbx + 0x5e]
mov qword [rsp + 0x130], rcx
mov cl, byte [rsp + 0x280]
mov byte [rsp + 0x77], cl
mov ecx, eax
xor ecx, 0xfffff7ff
test ecx, eax
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x80], rbp
mov qword [rsp + 0x90], r12
je 0x5175d8
movabs r10, 0xd1b477290c81e922
mov r9d, 0xffffffff
movzx eax, byte [rsp + 0x280]
mov dword [rsp + 0xf8], eax
mov eax, dword [rsp + 0x268]
lea eax, [rax + 1]
mov dword [rsp + 0xa0], eax
mov rax, qword [rsp + 0xb8]
not eax
not r9
or r9, rax
not r9
xor eax, eax
mov qword [rsp + 0xc0], rax
xorps xmm6, xmm6
mov dword [rsp + 0xd8], 0
xor r8d, r8d
mov qword [rsp + 0x68], r9
cmp word [rsp + 0xb8], 0
jle 0x517520
mov eax, r8d
xor al, 1
mov byte [rsp + 0x12c], al
xor r14d, r14d
movabs rax, 0x5eb2644c4b7dc5b4
mov qword [rsp + 0x78], r8
jmp 0x516dad
mov rcx, qword [rsp + 0xc0]
add ecx, 1
mov qword [rsp + 0xc0], rcx
nop word cs:[rax + rax]
nop dword [rax]
add r14, 1
cmp r14, r9
je 0x517520
mov r11, r14
shl r11, 0x10
sar r11, 0x10
cmp r11, 1
mov ecx, 1
cmova rcx, r11
mov r12, qword [rsi + 8]
lea r13, [r14 + r14*2]
mov r15d, dword [r12 + r13*8 + 8]
not r15d
or r15d, 0xfffffff0
cmp r15d, 0xffffffff
je 0x516da0
movsx edx, word [rsi + 0x34]
not edx
mov ebx, 0xffffffff
not ebx
or ebx, edx
mov edx, eax
not edx
or edx, eax
not ebx
and ebx, edx
cmp r14, rbx
je 0x516da0
movzx edi, word [r12 + r13*8 + 0x12]
mov edx, edi
xor edx, 0xff9f
test dx, di
sete bl
test r8b, bl
jne 0x516e22
xor bl, r8b
test bl, 1
je 0x516d7f
cmp qword [rsp + 0x298], 0
je 0x516e7d
mov rax, qword [rsp + 0x298]
cmp dword [rax + r14*4], 0
movabs rax, 0x5eb2644c4b7dc5b4
sets r8b
setns r10b
test dx, di
sete r9b
setne bl
xor bl, r10b
movabs r10, 0xd1b477290c81e922
jne 0x516e7d
or r9b, r8b
xor r9b, 1
jne 0x516e7d
mov r9, qword [rsp + 0x68]
mov r8, qword [rsp + 0x78]
jmp 0x516da0
not r15d
cmp r15d, 0xb
mov ebx, 2
cmove r15d, ebx
mov ebx, dword [rsp + 0xf8]
cmp bl, 0xb
cmovne r15d, ebx
cmp r15d, 5
jne 0x516ec8
mov r8, qword [rsp + 0x78]
test r8b, 1
mov r9, qword [rsp + 0x68]
jne 0x516ec0
mov r15d, 5
cmp word [r12 + r13*8 + 0x10], 0
jne 0x516f0f
mov r15d, 2
jmp 0x516f0f
test dx, di
setne r8b
sete dl
mov r9b, byte [rsp + 0x12c]
mov ebx, r9d
and bl, 1
cmp r8b, bl
jne 0x516f05
mov ebx, r9d
xor bl, 1
or dl, bl
xor dl, 1
test dl, 1
mov r9, qword [rsp + 0x68]
mov r8, qword [rsp + 0x78]
je 0x516da0
jmp 0x516f0f
mov r9, qword [rsp + 0x68]
mov r8, qword [rsp + 0x78]
mov rax, rsi
mov esi, r14d
mov edx, dword [rax + 0x30]
not edx
or edx, 0xffffffdf
cmp edx, 0xffffffff
je 0x51709f
test si, si
js 0x51709f
movzx edx, word [r12 + 0x12]
and edx, 0x20
test si, si
je 0x516f82
mov r9d, 0xffffffff
xor r9, rcx
not r9
and r9, rcx
cmp r11, 1
mov eax, 1
cmovbe r11, rax
movabs rax, 0x12be0ffc13d78ea6
mov r8d, eax
not r8d
or r8d, eax
and r8d, ecx
and r8d, 1
cmp r9, 1
jne 0x516f95
xor ebp, ebp
xor esi, esi
jmp 0x517047
xor r11d, r11d
xor esi, esi
test dx, dx
jne 0x51708f
jmp 0x51709f
movabs rax, 0xa02a77a84096f5c4
sub r9, rax
sub r9, r8
add r9, rax
xor ebp, ebp
xor edi, edi
nop dword [rax]
movzx edx, dx
shr edx, 5
mov esi, edx
not esi
and esi, 1
and edx, 0xfffffffe
or edx, esi
add edi, edx
mov rcx, rbp
not rcx
mov rdx, r10
not rdx
mov rsi, rcx
and rsi, r10
mov rbx, rbp
and rbx, rdx
or rbx, rsi
mov rsi, r10
and rsi, 0xfffffffffffffffe
mov eax, edx
and eax, 1
or rax, rsi
xor rax, rbx
not ecx
or edx, r10d
and edx, ecx
and edx, 1
or rdx, rax
lea rax, [rdx + rdx*2]
movzx eax, word [r12 + rax*8 + 0x12]
shr eax, 5
mov esi, eax
xor esi, 0x7fe
and esi, eax
mov eax, esi
not eax
and eax, 1
and esi, 0xfffffffe
or esi, eax
add esi, edi
add rbp, 2
lea rax, [rbp*2]
add rax, rbp
movzx edx, word [r12 + rax*8 + 0x12]
and edx, 0x20
mov edi, esi
add r9, 0xfffffffffffffffe
jne 0x516fb0
test r8, r8
je 0x517078
lea rax, [rbp*2]
add rax, rbp
movzx eax, word [r12 + rax*8 + 0x2a]
movzx ecx, dx
mov edx, eax
xor edx, 0xffffffdf
and edx, eax
shr ecx, 5
or ecx, 0x102a
xor ecx, 0x102b
add esi, ecx
mov rbp, qword [rsp + 0x80]
mov r9, qword [rsp + 0x68]
mov r8, qword [rsp + 0x78]
test dx, dx
je 0x51709f
sub r11d, esi
mov rax, qword [rsp + 0x60]
add r11w, word [rax + 0x38]
mov esi, r11d
movsx ebx, si
add ebx, dword [rsp + 0xa0]
cmp r15d, 3
jge 0x5170e0
cmp r15d, 1
mov rsi, qword [rsp + 0x60]
je 0x5170f9
cmp r15d, 2
jne 0x5171d2
mov rcx, qword [rsp + 0x90]
mov rax, qword [rcx + 0xa0]
test rax, rax
cmove rax, rcx
mov byte [rax + 0x21], 1
jmp 0x5170f9
cmp r15d, 5
jge 0x517179
cmp r15d, 3
mov rsi, qword [rsp + 0x60]
jne 0x5171d2
mov r9, qword [r12 + r13*8]
mov r8, qword [rsi]
mov rcx, qword [rsp + 0x118]
lea rdx, [0x005ff166]
call fcn.00419c10
mov rdi, rax
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x517225
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
movabs rdx, 0x51300000045
mov qword [rcx + rax*8], rdx
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], ebx
mov qword [rcx + rax*8 + 0x10], 0
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
je 0x51724d
mov rdx, rdi
call fcn.00408130
jmp 0x51726e
mov rsi, qword [rsp + 0x60]
jne 0x5171d2
mov eax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x5172e3
mov dword [rsp + 0xac], eax
cdqe
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x33
mov dword [rcx + rax*8 + 4], ebx
movups xmmword [rcx + rax*8 + 8], xmm6
movzx eax, word [r12 + r13*8 + 0x10]
test eax, eax
jne 0x517323
jmp 0x51732d
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x5172aa
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov dword [rcx + rax*8 + 4], ebx
mov edx, dword [rsp + 0x288]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5173b5
mov dword [rsp + 0x20], ebx
mov rcx, rbp
mov edx, 0x45
mov r8d, 0x513
mov r9d, r15d
call fcn.0047df60
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
jne 0x51716c
mov rax, qword [rbp + 0x88]
mov ecx, dword [rbp + 0x90]
add ecx, 0xffffffff
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
mov byte [rax + rcx*8 + 1], 0xfa
mov qword [rax + rcx*8 + 0x10], rdi
movabs r10, 0xd1b477290c81e922
mov r9, qword [rsp + 0x68]
mov r8, qword [rsp + 0x78]
mov eax, dword [rbp + 0x90]
test eax, eax
jle 0x5173b5
mov rcx, qword [rbp + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 1
jmp 0x5173b5
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x32
mov r8d, ebx
mov r9d, dword [rsp + 0x288]
call fcn.0047df60
mov r8, qword [rsp + 0x78]
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
jmp 0x5173b5
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x33
mov r8d, ebx
xor r9d, r9d
call fcn.0047df60
mov r8, qword [rsp + 0x78]
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
mov dword [rsp + 0xac], eax
movzx eax, word [r12 + r13*8 + 0x10]
test eax, eax
je 0x51732d
cmp byte [rsi + 0x3f], 0
je 0x5173c4
add dword [rsp + 0xd8], 1
mov rbp, qword [rsp + 0x90]
mov r15, qword [rbp]
xor edi, edi
cmp byte [r15 + 0x67], 0
je 0x517434
test rdi, rdi
je 0x517372
mov rcx, r15
mov rdx, rdi
call fcn.00468370
mov r8, qword [rsp + 0x78]
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
mov rbp, qword [rsp + 0x80]
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
lea rcx, [0x0213b3e8]
jne 0x5173b2
lea ecx, [rax - 1]
mov edx, dword [rsp + 0xac]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rbp + 0x88]
mov dword [rcx + 8], eax
movabs rax, 0x5eb2644c4b7dc5b4
jmp 0x516da0
mov rcx, qword [rsi + 0x50]
test rcx, rcx
je 0x51732d
cmp dword [rcx], eax
jl 0x51732d
add eax, 0xffffffff
cdqe
shl rax, 5
mov rdx, qword [rcx + rax + 8]
add dword [rsp + 0xd8], 1
mov rbp, qword [rsp + 0x90]
mov r15, qword [rbp]
test rdx, rdx
je 0x517341
mov rcx, r15
xor r8d, r8d
xor r9d, r9d
call fcn.004d3ed0
mov r8, qword [rsp + 0x78]
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
mov rdi, rax
cmp byte [r15 + 0x67], 0
jne 0x51734e
cmp qword [rbp + 0x10], 0
je 0x51734e
mov rcx, rbp
mov rdx, rdi
mov r8d, ebx
call fcn.004c68a0
mov r8, qword [rsp + 0x78]
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
cmp eax, ebx
je 0x51734e
test rdi, rdi
je 0x5174db
mov ecx, dword [rdi + 4]
not ecx
or ecx, 0xffbfffff
mov edx, 0x50
cmp ecx, 0xffffffff
je 0x5174db
mov rcx, qword [rbp + 0x10]
movsxd r8, dword [rcx + 0x90]
cmp dword [rcx + 0x94], r8d
jle 0x5174f4
lea esi, [r8 + 1]
mov dword [rcx + 0x90], esi
mov rcx, qword [rcx + 0x88]
lea rsi, [r8 + r8*2]
mov byte [rcx + rsi*8], dl
mov word [rcx + rsi*8 + 2], 0
mov dword [rcx + rsi*8 + 4], eax
mov dword [rcx + rsi*8 + 8], ebx
mov dword [rcx + rsi*8 + 0xc], 0
mov qword [rcx + rsi*8 + 0x10], 0
mov byte [rcx + rsi*8 + 1], 0
mov rsi, qword [rsp + 0x60]
jmp 0x517516
mov edx, 0x51
mov rcx, qword [rbp + 0x10]
movsxd r8, dword [rcx + 0x90]
cmp dword [rcx + 0x94], r8d
jg 0x517497
mov dword [rsp + 0x20], 0
mov r8d, eax
mov r9d, ebx
call fcn.0047df60
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
mov r8, qword [rsp + 0x78]
jmp 0x51734e
mov ebp, dword [rsp + 0xd8]
mov eax, ebp
not eax
mov rbx, qword [rsp + 0xc0]
mov ecx, ebx
not ecx
mov edx, eax
and edx, 0xe82a1e63
and ebp, 0x17d5e19c
or ebp, edx
or eax, ecx
and ecx, 0xe82a1e63
mov edx, ebx
and edx, 0x17d5e19c
or edx, ecx
xor edx, ebp
mov rbp, qword [rsp + 0x80]
not eax
or eax, edx
setne al
sete cl
xor cl, r8b
test cl, 1
mov r12, qword [rsp + 0x90]
jne 0x5175d8
xor r8b, 1
or r8b, al
xor r8b, 1
test r8b, 1
jne 0x5175d8
mov r8b, 1
cmp dword [rsp + 0xd8], 0
jle 0x516d50
mov eax, dword [rsi + 0x30]
mov ecx, eax
xor ecx, 0xffffff9f
test ecx, eax
je 0x516d50
mov rcx, r12
mov edx, dword [rsp + 0xa0]
mov r8, rsi
call fcn.005166c0
mov r8b, 1
mov r9, qword [rsp + 0x68]
movabs r10, 0xd1b477290c81e922
jmp 0x516d50
mov rax, qword [rsp + 0x2a0]
mov qword [rsp + 0xc8], rax
mov r15b, byte [rsp + 0x278]
mov r14, qword [rsi + 0x20]
test r14, r14
je 0x517614
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 0x30]
mov rcx, rax
xor rcx, 0xfffffffffffffdff
test rcx, rax
je 0x517624
mov dword [rsp + 0xb4], 0
jmp 0x517a6d
mov ecx, dword [rsp + 0x268]
mov eax, ecx
not eax
mov dword [r12 + 0x40], eax
cmp dword [r14], 0
jle 0x517a49
lea eax, [rcx + 1]
mov dword [rsp + 0xc0], eax
mov al, byte [rsp + 0x280]
cmp al, 0xb
movzx eax, al
mov ecx, 2
cmove eax, ecx
movzx r13d, al
lea r12, [r14 + 0x10]
xor r15d, r15d
movaps xmm6, xmmword [0x005fa840]
xorps xmm7, xmm7
mov dword [rsp + 0xb4], 0
jmp 0x5176a7
mov eax, dword [rdi + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, ebp
mov dword [rcx + rdx*4], eax
mov rbp, rdi
add r15, 1
movsxd rax, dword [r14]
add r12, 0x20
cmp r15, rax
jge 0x517a54
mov rbx, qword [r12 - 8]
cmp qword [rsp + 0x298], 0
je 0x517733
movaps xmmword [rsp + 0x180], xmm7
movaps xmmword [rsp + 0x190], xmm7
mov qword [rsp + 0x1a0], 0
lea rax, [0x0051ae50]
mov qword [rsp + 0x188], rax
mov rax, qword [rsp + 0x298]
mov qword [rsp + 0x1a8], rax
test rbx, rbx
je 0x5178d0
lea rcx, [rsp + 0x180]
mov rdx, rbx
call fcn.004cea30
movzx eax, word [rsp + 0x1a4]
cmp byte [rsp + 0x278], 0
jne 0x51772a
and eax, 0xfffd
mov word [rsp + 0x1a4], ax
test ax, ax
je 0x517693
cmp byte [rsp + 0xb4], 0
jne 0x51775b
mov rcx, rbp
mov rdx, qword [rsp + 0x60]
mov r8d, dword [rsp + 0xc0]
call fcn.004d5160
mov al, 1
mov dword [rsp + 0xb4], eax
mov rax, qword [rsp + 0x90]
mov ebp, dword [rax + 0x44]
lea edi, [rbp - 1]
mov dword [rax + 0x44], edi
test rbx, rbx
je 0x5178b0
mov rsi, qword [rsp + 0x118]
mov rcx, rsi
mov rdx, rbx
xor r8d, r8d
xor r9d, r9d
call fcn.004d3ed0
mov rbx, rax
cmp byte [rsi + 0x67], 0
jne 0x5177b0
mov rcx, qword [rsp + 0x90]
mov rdx, rbx
mov r8d, edi
mov r9d, 0x10
call fcn.004d4490
test rbx, rbx
je 0x5177c5
mov rcx, qword [rsp + 0x118]
mov rdx, rbx
call fcn.00468370
cmp r13d, 4
jne 0x517830
mov rdi, qword [rsp + 0x80]
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x5178e5
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0x288]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
mov r13d, 4
jmp 0x517991
mov rsi, qword [r12]
cmp r13d, 5
mov eax, 2
cmove r13d, eax
mov rdi, qword [rsp + 0x90]
mov rcx, rdi
call fcn.004c6120
mov rbx, rax
cmp r13d, 2
jne 0x517910
mov rax, qword [rdi + 0xa0]
test rax, rax
cmove rax, rdi
mov byte [rax + 0x21], 1
mov eax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x5179b3
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rbx + 0x90], edx
mov rdx, qword [rbx + 0x88]
lea rcx, [rcx + rcx*2]
movups xmmword [rdx + rcx*8], xmm6
jmp 0x517954
xor ebx, ebx
mov rsi, qword [rsp + 0x118]
cmp byte [rsi + 0x67], 0
jne 0x5177b0
jmp 0x517797
xor eax, eax
cmp byte [rsp + 0x278], 0
jne 0x51772a
jmp 0x51771d
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0x288]
call fcn.0047df60
mov r13d, 4
jmp 0x517991
mov eax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x5179df
movsxd rcx, eax
lea edx, [rcx + 1]
mov dword [rbx + 0x90], edx
mov rdx, qword [rbx + 0x88]
lea rcx, [rcx + rcx*2]
movabs rdi, 0x11300000046
mov qword [rdx + rcx*8], rdi
mov dword [rdx + rcx*8 + 8], r13d
mov dword [rdx + rcx*8 + 0xc], 0
mov qword [rdx + rcx*8 + 0x10], 0
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x517a0a
mov eax, dword [rbx + 0x90]
test eax, eax
jle 0x517989
mov rcx, qword [rbx + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 3
mov rdi, qword [rsp + 0x80]
mov rcx, qword [rdi + 0x18]
neg ebp
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
jns 0x517680
mov rdx, rdi
mov r8d, ebp
call fcn.004d3e00
jmp 0x517690
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x46
mov r8d, 0x113
mov r9d, 2
call fcn.0047df60
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
jne 0x51796a
jmp 0x517a0a
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x46
mov r8d, 0x113
mov r9d, r13d
call fcn.0047df60
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
jne 0x51796a
test eax, eax
jns 0x517a17
mov eax, dword [rbx + 0x90]
add eax, 0xffffffff
cdqe
lea rdx, [rax + rax*2]
shl rdx, 3
add rdx, qword [rbx + 0x88]
mov rcx, rbx
mov r8, rsi
xor r9d, r9d
call fcn.0047e190
mov eax, dword [rbx + 0x90]
test eax, eax
jg 0x517974
jmp 0x517989
mov dword [rsp + 0xb4], 0
mov r12, qword [rsp + 0x90]
mov dword [r12 + 0x40], 0
mov r15b, byte [rsp + 0x278]
mov rax, qword [rsp + 0x60]
mov r13, qword [rax + 0x10]
mov qword [rsp + 0x180], r13
xor eax, eax
mov qword [rsp + 0x108], rax
mov al, 1
mov dword [rsp + 0x128], eax
mov rcx, qword [rsp + 0x2a0]
test rcx, rcx
je 0x517aff
cmp qword [rcx], 0
je 0x517b18
test r13, r13
je 0x517b47
mov rax, r13
xor r13d, r13d
nop dword [rax + rax]
add r13d, 1
mov rax, qword [rax + 0x28]
test rax, rax
jne 0x517ac0
mov dword [rsp + 0x180], r13d
mov r14d, r13d
lea rax, [r14 + r14]
lea rdi, [rax + rax*8]
mov rcx, qword [rsp + 0x118]
test rcx, rcx
je 0x517b59
mov rdx, rdi
call fcn.00429840
test rax, rax
jne 0x517b6a
jmp 0x51a9c6
xor eax, eax
mov qword [rsp + 0x138], rax
xor eax, eax
mov qword [rsp + 0xc8], rax
jmp 0x517ca6
xor ebx, ebx
cmp byte [rcx + 0x28], 0
setne al
mov edx, 0
mov qword [rsp + 0x138], rdx
cmove rcx, rbx
mov qword [rsp + 0xc8], rcx
add al, al
or al, 4
mov byte [rsp + 0x77], al
jmp 0x517ca6
xor r13d, r13d
xor eax, eax
mov qword [rsp + 0x138], rax
jmp 0x517ca6
mov rcx, rdi
call fcn.00404550
test rax, rax
je 0x51a9c6
mov rbx, rax
xor esi, esi
mov rcx, rax
xor edx, edx
mov r8, rdi
call fcn.005f4c10
mov r8, r14
shl r8, 4
add r8, rbx
mov rcx, qword [rsp + 0x2a0]
mov rax, rbx
mov qword [rsp + 0x138], rbx
mov qword [rcx + 0x30], rbx
jmp 0x517bb5
mov rbp, qword [rsp + 0x80]
mov rcx, qword [rcx + 0x20]
test rcx, rcx
je 0x517c3b
cmp qword [rcx], 0
je 0x517c3b
mov rdi, qword [rcx + 0x38]
test rdi, rdi
je 0x517ba8
mov rax, qword [rsp + 0x60]
mov rdx, qword [rax + 0x10]
test rdx, rdx
sete al
cmp rdx, rdi
sete bl
xor ebp, ebp
test al, bl
jne 0x517c0b
xor al, bl
jne 0x517c0b
xor ebp, ebp
nop dword [rax]
add ebp, 1
mov rdx, qword [rdx + 0x28]
test rdx, rdx
sete al
cmp rdx, rdi
sete bl
test al, bl
jne 0x517c0b
xor al, bl
je 0x517bf0
mov eax, ebp
cmp byte [r8 + rax], 0
jne 0x517ba0
mov byte [r8 + rax], 1
movsxd rsi, esi
mov rax, rsi
shl rax, 4
mov rbx, qword [rsp + 0x138]
mov qword [rbx + rax], rdx
mov dword [rbx + rax + 8], ebp
add esi, 1
jmp 0x517ba0
mov rax, qword [rsp + 0x60]
mov rax, qword [rax + 0x10]
test rax, rax
je 0x517c9b
shl r14, 4
add r14, qword [rsp + 0x138]
xor ecx, ecx
mov rbx, qword [rsp + 0x138]
jmp 0x517c7d
add rcx, 1
mov rax, qword [rax + 0x28]
test rax, rax
je 0x517c9b
cmp byte [r14 + rcx], 0
jne 0x517c70
movsxd rsi, esi
mov rdx, rsi
shl rdx, 4
mov qword [rbx + rdx], rax
mov dword [rbx + rdx + 8], ecx
add esi, 1
jmp 0x517c70
mov dword [rsp + 0x128], 0
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 0x30]
mov rcx, rax
xor rcx, 0xffffffffffff9fff
test rcx, rax
je 0x517d27
mov rcx, rax
xor rcx, 0xffffffffffffdfff
test rcx, rax
je 0x517d41
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x58], 0
je 0x517dc0
cmp byte [r12 + 0xd7], 0
jne 0x517ddc
mov qword [rsp + 0x20], 0
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8d, pe_nt_image_headers64
xor r9d, r9d
call fcn.0050e530
mov rcx, rax
mov qword [rsp + 0xe8], rax
test rax, rax
jne 0x517fbf
jmp 0x517ddc
xor eax, eax
mov qword [rsp + 0xe8], rax
mov dword [rsp + 0x88], 0
jmp 0x518045
mov rax, qword [r12]
mov eax, dword [rax + 0x30]
not eax
or rax, 0xffffffffffffbfff
cmp rax, 0xffffffffffffffff
je 0x517dfc
mov rax, qword [rsp + 0x60]
cmp byte [rax + 0x3f], 0
jne 0x517dfc
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax]
mov r9, qword [rax + 0x60]
mov rsi, qword [r9 + 0x60]
test rsi, rsi
je 0x517e77
mov bl, byte [rcx]
test bl, bl
je 0x517eff
lea rdx, [rcx + 1]
xor eax, eax
lea rdi, [0x005fade0]
nop dword [rax]
movzx ebp, bl
movzx ebp, byte [rbp + rdi]
add ebp, eax
imul eax, ebp, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x517da0
jmp 0x517f01
mov rax, qword [r12]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x38]
test rax, rax
je 0x517ddc
cmp qword [rax + 0x40], 0
jne 0x517ce0
mov rax, qword [r12]
mov eax, dword [rax + 0x30]
not eax
or rax, 0xffffffffffffbfff
cmp rax, 0xffffffffffffffff
je 0x517dfc
mov rax, qword [rsp + 0x60]
cmp byte [rax + 0x3f], 0
je 0x517e20
xor eax, eax
mov qword [rsp + 0xe8], rax
xor eax, eax
mov qword [rsp + 0x108], rax
mov dword [rsp + 0x88], 0
jmp 0x518045
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax]
mov r9, qword [rax + 0x60]
mov rsi, qword [r9 + 0x60]
test rsi, rsi
je 0x517e6d
mov bl, byte [rcx]
test bl, bl
je 0x517e84
lea rdx, [rcx + 1]
xor eax, eax
lea rdi, [0x005fade0]
movzx ebp, bl
movzx ebp, byte [rbp + rdi]
add ebp, eax
imul eax, ebp, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x517e50
jmp 0x517e86
lea rdx, [r9 + 0x54]
add r9, 0x58
jmp 0x517ea3
lea rdx, [r9 + 0x54]
add r9, 0x58
jmp 0x517f1e
xor eax, eax
xor edx, edx
div dword [r9 + 0x50]
shl rdx, 4
lea r9, [rsi + rdx]
add r9, 8
add rdx, rsi
mov rbp, qword [rsp + 0x80]
mov edx, dword [rdx]
lea r8, [0x0213b3c8]
test edx, edx
je 0x517f7a
lea rbx, [0x005fade0]
mov r9, qword [r9]
add edx, 0xffffffff
mov rdi, qword [r9 + 0x18]
xor esi, esi
jmp 0x517ede
movzx eax, byte [rax + rbx]
cmp al, byte [rbp + rbx]
jne 0x517ef1
add rsi, 1
movzx eax, byte [rdi + rsi]
movzx ebp, byte [rcx + rsi]
cmp al, bpl
jne 0x517ed0
test al, al
jne 0x517eda
jmp 0x517f6f
test edx, edx
mov rbp, qword [rsp + 0x80]
jne 0x517ebb
jmp 0x517f7a
xor eax, eax
xor edx, edx
div dword [r9 + 0x50]
shl rdx, 4
lea r9, [rsi + rdx]
add r9, 8
add rdx, rsi
mov rbp, qword [rsp + 0x80]
mov edx, dword [rdx]
lea r8, [0x0213b3c8]
test edx, edx
je 0x517f7a
lea rbx, [0x005fade0]
mov r9, qword [r9]
add edx, 0xffffffff
mov rdi, qword [r9 + 0x18]
xor esi, esi
jmp 0x517f4e
movzx eax, byte [rax + rbx]
cmp al, byte [rbp + rbx]
jne 0x517f61
add rsi, 1
movzx eax, byte [rdi + rsi]
movzx ebp, byte [rcx + rsi]
cmp al, bpl
jne 0x517f40
test al, al
jne 0x517f4a
jmp 0x517f6f
test edx, edx
mov rbp, qword [rsp + 0x80]
jne 0x517f32
jmp 0x517f7a
mov r8, r9
mov rbp, qword [rsp + 0x80]
cmp qword [r8 + 0x10], 0
je 0x517f8d
xor eax, eax
mov qword [rsp + 0xe8], rax
jmp 0x517fbf
xor eax, eax
mov qword [rsp + 0x108], rax
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x48], 0
mov eax, 0
mov qword [rsp + 0xe8], rax
mov dword [rsp + 0x88], 0
je 0x518045
mov r9d, dword [r12 + 0x38]
add r9d, 1
mov dword [r12 + 0x38], r9d
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
mov dword [rsp + 0x88], r9d
jle 0x518018
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x47
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x518030
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x47
xor r8d, r8d
call fcn.0047df60
mov eax, dword [r12 + 0x44]
add eax, 0xffffffff
mov qword [rsp + 0x108], rax
mov dword [r12 + 0x44], eax
xor eax, eax
mov qword [rsp + 0xf0], rax
movzx eax, byte [rsp + 0x77]
mov dword [rsp + 0x168], eax
test r15b, r15b
mov qword [rsp + 0x178], r13
je 0x518139
cmp qword [rsp + 0xe0], 0
jne 0x518139
mov al, 1
mov ebx, 0
mov r15d, 0
mov r14d, 0
mov edi, 0
mov r13d, 0
mov dword [rsp + 0x8c], 0
test al, al
je 0x518868
mov r14d, dword [r12 + 0x44]
lea r15d, [r14 - 1]
mov dword [r12 + 0x44], r15d
mov rax, qword [rsp + 0x60]
movzx eax, byte [rax + 0x3e]
cmp al, 0xb
mov ecx, 2
cmovne ecx, eax
mov eax, dword [rsp + 0x168]
cmp al, 0xb
cmovne ecx, eax
movzx ebp, cl
xor eax, eax
mov qword [rsp + 0x150], rax
mov r13, qword [rsp + 0xc8]
test r13, r13
je 0x5181be
nop word [rax + rax]
cmp qword [r13], 0
je 0x518156
cmp qword [r13 + 0x38], 0
je 0x518156
mov r13, qword [r13 + 0x20]
test r13, r13
jne 0x518100
xor r13d, r13d
mov rax, qword [rsp + 0xc8]
cmp r13, rax
jne 0x518173
xor ecx, ecx
mov qword [rsp + 0x110], rcx
mov r13, rax
jmp 0x5181ed
xor ebx, ebx
xor r15d, r15d
xor r14d, r14d
xor edi, edi
xor r13d, r13d
mov dword [rsp + 0x8c], 0
jmp 0x518868
xor eax, eax
cmp byte [r13 + 0x28], 0
setne al
lea ebp, [rax + rax]
add ebp, 4
mov rax, qword [rsp + 0xc8]
cmp r13, rax
je 0x518127
mov rcx, qword [rsp + 0x80]
mov eax, dword [rcx + 0x90]
cmp dword [rcx + 0x94], eax
jle 0x5181cd
mov qword [rsp + 0x110], rax
cdqe
lea edx, [rax + 1]
mov dword [rcx + 0x90], edx
mov rcx, qword [rcx + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x5181ed
xor eax, eax
mov qword [rsp + 0x110], rax
xor r13d, r13d
jmp 0x5181ed
mov dword [rsp + 0x20], 0
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov qword [rsp + 0x110], rax
cmp ebp, 5
setne al
cmp byte [rsp + 0x77], 5
sete cl
test cl, al
jne 0x518278
xor cl, al
jne 0x518278
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x10], 0
sete dl
setne al
cmp dword [rsp + 0x110], 0
setne bl
sete cl
cmp bl, dl
jne 0x518278
or cl, al
xor cl, 1
jne 0x518278
mov rcx, qword [rsp + 0x80]
movsxd rax, dword [rcx + 0x90]
cmp dword [rcx + 0x94], eax
jle 0x5186a2
lea edx, [rax + 1]
mov qword [rsp + 0x150], rdx
mov dword [rcx + 0x90], edx
mov rcx, qword [rcx + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
mov rdi, qword [rsp + 0x80]
mov eax, dword [rdi + 0x90]
cmp dword [rsp + 0x270], 0
je 0x51832b
cmp dword [rdi + 0x94], eax
jle 0x5182e9
cdqe
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x35
mov edx, dword [rsp + 0x268]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r15d
mov edx, dword [rsp + 0x270]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rdi + 0x90]
test eax, eax
jg 0x518316
jmp 0x51832b
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x20], eax
mov rcx, rdi
mov edx, 0x35
mov r8d, dword [rsp + 0x268]
mov r9d, r15d
call fcn.0047df60
mov eax, dword [rdi + 0x90]
test eax, eax
jle 0x51832b
mov rcx, qword [rdi + 0x88]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], 0x90
cmp dword [rdi + 0x94], eax
jle 0x5183b0
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1e
mov edx, dword [rsp + 0x9c]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], r15d
mov edx, dword [rsp + 0x268]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
cmp ebp, 5
mov rsi, qword [rsp + 0xc8]
jl 0x5183e0
je 0x518533
cmp ebp, 6
jne 0x51844b
mov eax, dword [rsp + 0x9c]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov rdx, rsi
mov r8, qword [rsp + 0x60]
xor r9d, r9d
call fcn.0051af20
jmp 0x5183e5
mov eax, dword [rsp + 0x268]
mov dword [rsp + 0x20], eax
mov rcx, rdi
mov edx, 0x1e
mov r8d, dword [rsp + 0x9c]
mov r9d, r15d
call fcn.0047df60
cmp ebp, 5
mov rsi, qword [rsp + 0xc8]
jge 0x518381
cmp ebp, 4
jne 0x518447
mov rbp, qword [rsp + 0x80]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x5184f9
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0x288]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
xor eax, eax
mov qword [rsp + 0xf0], rax
jmp 0x518523
test ebp, ebp
jg 0x518450
mov ebp, 2
mov rdx, qword [rsp + 0x60]
movzx eax, word [rdx + 0x34]
mov rcx, qword [r12]
mov r8, qword [rdx]
test ax, ax
js 0x518615
mov rdx, qword [rsp + 0x60]
mov rdx, qword [rdx + 8]
lea rax, [rax + rax*2]
mov r9, qword [rdx + rax*8]
lea rdx, [0x005ff166]
call fcn.00419c10
mov rbx, rax
mov rcx, r12
call fcn.004c6120
mov rdi, rax
cmp ebp, 2
jne 0x5184b1
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x21], 1
mov ebp, 2
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x30], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x46
mov r8d, 0x613
mov r9d, ebp
call fcn.004c62a0
mov eax, dword [rdi + 0x90]
test eax, eax
jle 0x5186e6
xor ecx, ecx
mov qword [rsp + 0xf0], rcx
jmp 0x51868b
mov dword [rsp + 0x20], 0
xor eax, eax
mov qword [rsp + 0xf0], rax
mov rcx, rbp
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0x288]
call fcn.0047df60
mov dword [rsp + 0x8c], 0
jmp 0x518703
cmp dword [rsp + 0x88], 0
je 0x51a9ea
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x20], 1
mov eax, dword [rsp + 0x268]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x260]
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x50], 0xffffffff
mov byte [rsp + 0x48], 1
mov byte [rsp + 0x40], 5
mov byte [rsp + 0x38], 0
mov word [rsp + 0x30], 1
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0xe8]
mov r9d, dword [rsp + 0x9c]
call fcn.0050d960
mov rbp, qword [rsp + 0x80]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51aa5d
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x56
mov edx, dword [rsp + 0x88]
mov dword [rcx + rax*8 + 4], edx
mov qword [rcx + rax*8 + 8], 1
mov qword [rcx + rax*8 + 0x10], 0
mov eax, 1
mov qword [rsp + 0xf0], rax
mov dword [rsp + 0x8c], 1
jmp 0x518703
lea rdx, [0x00604ab2]
call fcn.00419c10
mov rbx, rax
mov rcx, r12
call fcn.004c6120
mov rdi, rax
cmp ebp, 2
jne 0x51864c
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x21], 1
mov ebp, 2
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x30], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x46
mov r8d, 0xa13
mov r9d, ebp
call fcn.004c62a0
mov eax, dword [rdi + 0x90]
xor ecx, ecx
mov qword [rsp + 0xf0], rcx
test eax, eax
jle 0x5186f0
mov rcx, qword [rdi + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 2
jmp 0x5186f0
mov dword [rsp + 0x20], 0
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
add eax, 1
mov qword [rsp + 0x150], rax
mov rdi, qword [rsp + 0x80]
mov eax, dword [rdi + 0x90]
cmp dword [rsp + 0x270], 0
jne 0x518294
jmp 0x51832b
xor eax, eax
mov qword [rsp + 0xf0], rax
mov dword [rsp + 0x8c], 0
mov rbp, qword [rsp + 0x80]
mov rcx, qword [rbp + 0x18]
neg r14d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x518724
mov eax, dword [rbp + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r14d
mov dword [rcx + rdx*4], eax
jmp 0x51872f
mov rdx, rbp
mov r8d, r14d
call fcn.004d3e00
mov r15, qword [rsp + 0x150]
mov r14, qword [rsp + 0x110]
test rsi, rsi
sete al
cmp r13, rsi
sete cl
test al, cl
jne 0x518798
xor al, cl
jne 0x518798
mov edi, dword [rbp + 0x90]
cmp dword [rbp + 0x94], edi
jle 0x5187f2
movsxd rax, edi
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
xor ebx, ebx
jmp 0x518868
xor edi, edi
test r15d, r15d
je 0x518813
mov ebx, dword [rbp + 0x90]
cmp dword [rbp + 0x94], ebx
jle 0x51881a
movsxd rax, ebx
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
je 0x518847
lea rcx, [0x0213b3e8]
jmp 0x518865
mov dword [rsp + 0x20], 0
xor ebx, ebx
mov rcx, rbp
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov edi, eax
jmp 0x518868
xor ebx, ebx
xor r15d, r15d
jmp 0x518868
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov ebx, eax
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
jne 0x5187e9
test r15d, r15d
mov ecx, r15d
cmovle ecx, eax
add ecx, 0xffffffff
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rbp + 0x88]
mov dword [rcx + 8], eax
mov qword [rsp + 0x110], r14
cmp byte [rsp + 0x128], 0
mov qword [rsp + 0x150], r15
mov dword [rsp + 0x164], ebx
mov dword [rsp + 0x14c], edi
je 0x51a4c9
xor eax, eax
mov qword [rsp + 0xf8], rax
lea rax, [rsp + 0x180]
mov r15, qword [rsp + 0xc8]
mov r14, qword [rax]
test r14, r14
je 0x51a4f0
mov eax, dword [rsp + 0x270]
neg eax
setb cl
movabs r11, 0x6b7ce5589fe011dc
lea rdx, [rbp + 0x90]
mov qword [rsp + 0x68], rdx
lea rdx, [rbp + 0x88]
mov qword [rsp + 0x78], rdx
mov edx, dword [rsp + 0x268]
mov rbx, rdx
lea edx, [rdx + 1]
mov dword [rsp + 0x12c], edx
mov edx, ebx
not edx
and edx, 0x1c82b9bd
and ebx, 0xe37d4642
or ebx, edx
xor ebx, 0xe37d4642
mov dword [rsp + 0xd8], ebx
mov edx, 1
sub edx, eax
mov dword [rsp + 0x16c], edx
cmp qword [rsp + 0xe8], 0
setne dl
sete al
xor al, cl
xor al, 1
or dl, cl
xor dl, 1
or dl, al
mov byte [rsp + 0xdf], dl
mov rax, qword [rsp + 0x110]
add eax, 1
mov dword [rsp + 0x160], eax
xor eax, eax
mov qword [rsp + 0xb8], rax
xorps xmm6, xmm6
mov rax, qword [rsp + 0x108]
mov dword [rsp + 0xd4], eax
mov qword [rsp + 0xc8], r15
jmp 0x5189cb
mov rax, qword [rsp + 0xf8]
add eax, 1
mov qword [rsp + 0xf8], rax
mov rax, qword [rsp + 0x180]
mov r14, qword [rax + 0x28]
mov qword [rsp + 0x180], r14
mov rax, r14
mov qword [rsp + 0x178], r14
test r14, r14
je 0x51a50b
movsxd rcx, dword [rsp + 0xf8]
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0xa0], rcx
cmp dword [rax + rcx*4], 0
je 0x518ab0
test r15, r15
je 0x518a74
mov r13, r15
nop dword [rax]
cmp qword [r13], 0
je 0x518a19
cmp qword [r13 + 0x38], r14
je 0x518a19
mov r13, qword [r13 + 0x20]
test r13, r13
jne 0x518a00
xor r13d, r13d
mov rdx, qword [rsp + 0x110]
test edx, edx
setne al
cmp r13, r15
setne cl
cmp al, cl
je 0x518a74
test edx, edx
je 0x518a74
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
lea rcx, [0x0213b3e8]
jne 0x518a6e
lea ecx, [rax - 1]
mov rdx, qword [rsp + 0x110]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
mov rdx, qword [rsp + 0x78]
add rcx, qword [rdx]
mov dword [rcx + 8], eax
mov r13, r15
mov eax, dword [r12 + 0x44]
mov qword [rsp + 0x140], rax
add eax, 0xffffffff
mov dword [rsp + 0xac], eax
mov dword [r12 + 0x44], eax
cmp byte [rsp + 0xb4], 0
je 0x518ac0
cmp qword [r14 + 0x48], 0
jne 0x518af3
jmp 0x518bd4
mov rbx, qword [rsp + 0xb8]
jmp 0x51921c
mov rcx, rbp
mov rdx, qword [rsp + 0x60]
mov r8d, dword [rsp + 0x12c]
call fcn.004d5160
movabs r11, 0x6b7ce5589fe011dc
mov al, 1
mov dword [rsp + 0xb4], eax
cmp qword [r14 + 0x48], 0
je 0x518bd4
mov rax, qword [rsp + 0x158]
mov rcx, qword [rsp + 0xa0]
mov r9d, dword [rax + rcx*4]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x518b4c
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x518b64
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x4b
xor r8d, r8d
call fcn.0047df60
mov eax, dword [rsp + 0xd8]
mov dword [r12 + 0x40], eax
mov rdx, qword [r14 + 0x48]
mov rdi, qword [r12]
test rdx, rdx
je 0x51926f
mov rcx, rdi
xor r8d, r8d
xor r9d, r9d
call fcn.004d3ed0
mov rbx, rax
cmp byte [rdi + 0x67], 0
jne 0x518bb1
mov rcx, r12
mov rdx, rbx
mov r8d, dword [rsp + 0xac]
mov r9d, 0x10
call fcn.004cdaa0
test rbx, rbx
je 0x518bc1
mov rcx, rdi
mov rdx, rbx
call fcn.00468370
mov dword [r12 + 0x40], 0
movabs r11, 0x6b7ce5589fe011dc
mov rax, qword [rsp + 0x158]
mov rcx, qword [rsp + 0xa0]
mov edx, dword [rax + rcx*4]
lea eax, [rdx + 1]
mov qword [rsp + 0xc0], rax
cmp word [r14 + 0x60], 0
mov qword [rsp + 0x170], rdx
je 0x5190b0
xor r15d, r15d
jmp 0x518c3b
mov r12, qword [rsp + 0x90]
mov dword [r12 + 0x40], 0
mov rbp, qword [rsp + 0x80]
add r15, 1
movzx ecx, word [r14 + 0x60]
cmp r15, rcx
jae 0x519090
mov rax, qword [r14 + 8]
movsx edx, word [rax + r15*2]
cmp edx, 0xffffffff
je 0x518cbb
cmp dx, 0xfffe
jne 0x518cb0
mov eax, dword [rsp + 0xd8]
mov dword [r12 + 0x40], eax
mov rax, qword [r14 + 0x50]
mov rcx, r15
shl rcx, 5
mov rdx, qword [rax + rcx + 8]
mov rbx, qword [r12]
test rdx, rdx
je 0x518d92
mov rcx, rbx
xor r8d, r8d
xor r9d, r9d
call fcn.004d3ed0
movabs r11, 0x6b7ce5589fe011dc
mov rbp, rax
cmp byte [rbx + 0x67], 0
jne 0x518e70
jmp 0x518d9e
mov rax, qword [rsp + 0x60]
cmp dx, word [rax + 0x34]
jne 0x518d2d
mov rax, qword [rsp + 0xc0]
lea r9d, [rax + r15]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x518d10
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x52
mov edx, dword [rsp + 0x268]
mov dword [rcx + rax*8 + 4], edx
jmp 0x51901e
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x52
mov r8d, dword [rsp + 0x268]
jmp 0x519049
mov rax, qword [rsp + 0x60]
mov eax, dword [rax + 0x30]
not eax
or eax, 0xffffffdf
cmp eax, 0xffffffff
je 0x518fd5
test dx, dx
js 0x518fd5
mov rax, qword [rsp + 0x60]
mov r10, qword [rax + 8]
movzx eax, word [r10 + 0x12]
mov ebp, eax
xor ebp, 0xffffffdf
and ebp, eax
test dx, dx
je 0x518e93
test edx, edx
mov r9d, edx
mov eax, 1
cmovle r9d, eax
mov r8, r9
xor r8, 0xfffffffffffffffe
cmp dx, 2
jge 0x518ea6
xor esi, esi
xor edx, edx
jmp 0x518f7c
xor ebp, ebp
cmp byte [rbx + 0x67], 0
jne 0x518e70
mov rax, qword [rsp + 0x90]
cmp qword [rax + 0x10], 0
je 0x518e70
mov rax, qword [rsp + 0xc0]
lea r12d, [rax + r15]
mov rcx, qword [rsp + 0x90]
mov rdx, rbp
mov r8d, r12d
call fcn.004c68a0
movabs r11, 0x6b7ce5589fe011dc
cmp eax, r12d
je 0x518e70
test rbp, rbp
je 0x518dff
mov r8d, dword [rbp + 4]
mov ecx, r8d
xor ecx, 0xffbfffff
mov edx, 0x50
test ecx, r8d
jne 0x518e04
mov edx, 0x51
mov rcx, qword [rsp + 0x90]
mov rcx, qword [rcx + 0x10]
movsxd r8, dword [rcx + 0x90]
cmp dword [rcx + 0x94], r8d
jle 0x51905d
lea edi, [r8 + 1]
mov dword [rcx + 0x90], edi
mov rcx, qword [rcx + 0x88]
lea rdi, [r8 + r8*2]
mov byte [rcx + rdi*8], dl
mov word [rcx + rdi*8 + 2], 0
mov dword [rcx + rdi*8 + 4], eax
mov dword [rcx + rdi*8 + 8], r12d
mov dword [rcx + rdi*8 + 0xc], 0
mov qword [rcx + rdi*8 + 0x10], 0
mov byte [rcx + rdi*8 + 1], 0
nop word cs:[rax + rax]
nop dword [rax]
test rbp, rbp
je 0x518c10
mov rcx, rbx
mov rdx, rbp
call fcn.00468370
movabs r11, 0x6b7ce5589fe011dc
jmp 0x518c10
xor r9d, r9d
xor edx, edx
test bp, bp
jne 0x518fbd
jmp 0x518fcd
movabs rax, 0xe1e9f268c96c216f
mov r12, r11
mov r11d, eax
not r11d
or r11d, eax
and r11d, r9d
and r11d, 0x7ffffffe
xor esi, esi
xor eax, eax
nop word [rax + rax]
movzx edx, bp
shr edx, 5
mov ebp, edx
not ebp
and ebp, 0x5efb
and edx, 0x104
or edx, ebp
xor edx, 0x5efa
add eax, edx
mov rbx, rsi
not rbx
mov rdx, r12
not rdx
mov rbp, rbx
and rbp, r12
mov rcx, rsi
and rcx, rdx
or rcx, rbp
mov rbp, r12
and rbp, 0xfffffffffffffffe
mov edi, edx
and edi, 1
or rdi, rbp
xor rdi, rcx
not ebx
or edx, r12d
and edx, ebx
and edx, 1
or rdx, rdi
lea rcx, [rdx + rdx*2]
movzx ecx, word [r10 + rcx*8 + 0x12]
shr ecx, 5
mov edx, ecx
xor edx, 0x7fe
and edx, ecx
mov ecx, edx
not ecx
and ecx, 0x439e
and edx, 0x461
or edx, ecx
xor edx, 0x439f
add edx, eax
add rsi, 2
lea rax, [rsi + rsi*2]
movzx eax, word [r10 + rax*8 + 0x12]
mov ebp, eax
xor ebp, 0xffffffdf
and ebp, eax
mov eax, edx
add r11, 0xfffffffffffffffe
jne 0x518ed0
test r8d, r9d
mov r12, qword [rsp + 0x90]
je 0x518fae
lea rax, [rsi + rsi*2]
movzx eax, word [r10 + rax*8 + 0x2a]
movzx ecx, bp
mov ebp, eax
xor ebp, 0xffffffdf
and ebp, eax
shr ecx, 5
mov eax, ecx
not eax
and eax, 1
and ecx, 0xfffffffe
or ecx, eax
add edx, ecx
movabs r11, 0x6b7ce5589fe011dc
test bp, bp
je 0x518fcd
sub r9d, edx
mov rax, qword [rsp + 0x60]
add r9w, word [rax + 0x38]
mov edx, r9d
mov rbp, qword [rsp + 0x80]
movsx r8d, dx
add r8d, dword [rsp + 0x12c]
mov rax, qword [rsp + 0xc0]
lea r9d, [rax + r15]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x519039
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x51
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x518c29
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x51
call fcn.0047df60
movabs r11, 0x6b7ce5589fe011dc
jmp 0x518c29
mov dword [rsp + 0x20], 0
mov r8d, eax
mov r9d, r12d
call fcn.0047df60
movabs r11, 0x6b7ce5589fe011dc
test rbp, rbp
jne 0x518e79
jmp 0x518c10
mov rax, qword [rsp + 0x158]
mov rdx, qword [rsp + 0xa0]
mov eax, dword [rax + rdx*4]
jmp 0x5190b4
xor ecx, ecx
mov eax, edx
mov r12b, byte [rsp + 0x278]
movzx r9d, cx
movsxd rcx, dword [rbp + 0x90]
cmp dword [rbp + 0x94], ecx
jle 0x519110
lea edx, [rcx + 1]
mov rbx, qword [rsp + 0x68]
mov dword [rbx], edx
mov rdx, qword [rsp + 0x78]
mov rdx, qword [rdx]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x61
mov rsi, qword [rsp + 0xc0]
mov dword [rdx + rcx*8 + 4], esi
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
jmp 0x519133
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x61
mov r8, qword [rsp + 0xc0]
call fcn.0047df60
movabs r11, 0x6b7ce5589fe011dc
mov r15, qword [rsp + 0xc8]
test r12b, r12b
sete al
cmp dword [rsp + 0x270], 0
setne cl
cmp qword [rsp + 0xe0], r14
sete dl
xor dl, cl
not dl
and dl, cl
xor dl, 1
cmp al, dl
je 0x519169
test r12b, r12b
je 0x5191d0
mov al, byte [r14 + 0x62]
test al, al
je 0x5191d0
cmp al, 0xb
movzx eax, al
mov ecx, 2
cmove eax, ecx
cmp byte [rsp + 0x77], 0xb
cmovne eax, dword [rsp + 0x168]
test r13, r13
je 0x519280
xor eax, eax
cmp byte [r13 + 0x28], 0
setne al
add eax, eax
add eax, 4
mov dword [rsp + 0x124], eax
mov r12, qword [rsp + 0x90]
cmp dword [rsp + 0xf8], 0
jne 0x51946c
jmp 0x5192a0
mov rcx, qword [rbp + 0x18]
mov r8, qword [rsp + 0x140]
neg r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x5191fa
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
jmp 0x51920c
mov rdx, rbp
call fcn.004d3e00
movabs r11, 0x6b7ce5589fe011dc
mov rbx, qword [rsp + 0xb8]
mov r12, qword [rsp + 0x90]
cmp byte [rsp + 0x128], 0
jne 0x518990
add ebx, 1
cmp ebx, dword [rsp + 0x178]
jge 0x51a501
mov qword [rsp + 0xb8], rbx
movsxd rax, ebx
shl rax, 4
mov rcx, qword [rsp + 0x138]
mov edx, dword [rcx + rax + 8]
mov qword [rsp + 0xf8], rdx
mov r14, qword [rcx + rax]
test r14, r14
jne 0x5189cb
jmp 0x51a50b
xor ebx, ebx
cmp byte [rdi + 0x67], 0
jne 0x518bb1
jmp 0x518b98
movzx eax, al
mov dword [rsp + 0x124], eax
mov r12, qword [rsp + 0x90]
cmp dword [rsp + 0xf8], 0
jne 0x51946c
cmp qword [rsp + 0xe0], r14
sete al
cmp dword [rsp + 0x124], 5
setne cl
cmp al, cl
je 0x51946c
cmp qword [rsp + 0xe0], r14
jne 0x51946c
cmp qword [r14 + 0x28], 0
jne 0x51946c
mov al, 1
test al, al
je 0x51946c
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 0x30]
mov ecx, eax
not ecx
or rcx, 0xffffffffffffdfff
cmp rcx, 0xffffffffffffffff
je 0x51936d
mov rcx, qword [rsp + 0x60]
cmp qword [rcx + 0x58], 0
je 0x519355
cmp byte [r12 + 0xd7], 0
jne 0x51936d
mov qword [rsp + 0x20], 0
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8d, pe_nt_image_headers64
xor r9d, r9d
call fcn.0050e530
movabs r11, 0x6b7ce5589fe011dc
test rax, rax
jne 0x51946c
mov rax, qword [rsp + 0x118]
mov rax, qword [rax + 0x30]
jmp 0x51936d
mov rcx, qword [r12]
mov rcx, qword [rcx + 0x20]
mov rcx, qword [rcx + 0x38]
test rcx, rcx
je 0x51936d
cmp qword [rcx + 0x40], 0
jne 0x51930a
not eax
or rax, 0xffffffffffffbfff
cmp rax, 0xffffffffffffffff
je 0x51a475
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x48], 0
jne 0x51946c
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax]
mov r8, qword [rax + 0x60]
mov rdi, qword [r8 + 0x60]
test rdi, rdi
je 0x5193dc
mov bl, byte [rcx]
test bl, bl
je 0x5193e6
lea rdx, [rcx + 1]
xor eax, eax
lea rbp, [0x005fade0]
nop
movzx ebx, bl
movzx ebx, byte [rbx + rbp]
add ebx, eax
imul eax, ebx, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x5193c0
jmp 0x5193e8
lea rdx, [r8 + 0x54]
add r8, 0x58
jmp 0x5193fd
xor eax, eax
xor edx, edx
div dword [r8 + 0x50]
shl rdx, 4
lea r8, [rdi + rdx]
add r8, 8
add rdx, rdi
mov r9d, dword [rdx]
lea rdx, [0x0213b3c8]
test r9d, r9d
je 0x519459
mov r8, qword [r8]
add r9d, 0xffffffff
mov rdx, qword [r8 + 0x18]
xor ebx, ebx
jmp 0x519434
lea rbp, [0x005fade0]
movzx eax, byte [rdi + rbp]
cmp al, byte [rsi + rbp]
jne 0x519448
add rbx, 1
movzx edi, byte [rdx + rbx]
movzx esi, byte [rcx + rbx]
cmp dil, sil
jne 0x519420
test dil, dil
jne 0x519430
jmp 0x519456
test r9d, r9d
jne 0x51940c
lea rdx, [0x0213b3c8]
jmp 0x519459
mov rdx, r8
cmp qword [rdx + 0x10], 0
mov rbp, qword [rsp + 0x80]
je 0x51a475
mov eax, dword [rsp + 0x260]
mov rcx, qword [rsp + 0xf8]
lea r8d, [rcx + rax]
movzx esi, word [r14 + 0x5e]
mov eax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
mov dword [rsp + 0x104], r8d
jle 0x5194f1
mov dword [rsp + 0x120], eax
cdqe
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1a
mov dword [rcx + rax*8 + 4], r8d
mov edx, dword [rsp + 0xac]
mov dword [rcx + rax*8 + 8], edx
mov rdx, qword [rsp + 0xc0]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
mov rax, qword [rbp]
cmp byte [rax + 0x67], 0
jne 0x519540
jmp 0x519523
mov rax, qword [rsp + 0xc0]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x1a
mov r9d, dword [rsp + 0xac]
call fcn.0047df60
mov dword [rsp + 0x120], eax
mov rax, qword [rbp]
cmp byte [rax + 0x67], 0
jne 0x519540
mov rax, qword [rsp + 0x78]
mov rax, qword [rax]
movsxd rcx, dword [rsp + 0x120]
lea rcx, [rcx + rcx*2]
mov byte [rax + rcx*8 + 1], 0xfd
mov dword [rax + rcx*8 + 0x10], esi
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0xa0], rax
cmp qword [rsp + 0xe0], r14
je 0x5195d9
mov rcx, qword [rsp + 0x130]
cmp ecx, 1
jne 0x51958c
mov al, byte [r12 + 0x1f]
test al, al
je 0x5195c4
add al, 0xff
mov byte [r12 + 0x1f], al
movzx eax, al
mov eax, dword [r12 + rax*4 + 0xd8]
mov qword [rsp + 0xa0], rax
jmp 0x5195d9
mov eax, dword [r12 + 0x28]
sub eax, ecx
jge 0x5195a9
mov eax, dword [r12 + 0x38]
lea edx, [rax + 1]
mov qword [rsp + 0xa0], rdx
add eax, ecx
jmp 0x5195d4
mov edx, dword [r12 + 0x2c]
mov qword [rsp + 0xa0], rdx
add ecx, edx
mov dword [r12 + 0x2c], ecx
mov dword [r12 + 0x28], eax
jmp 0x5195d9
mov eax, dword [r12 + 0x38]
add eax, 1
mov qword [rsp + 0xa0], rax
mov dword [r12 + 0x38], eax
cmp dword [rsp + 0x270], 0
setne al
cmp dword [rsp + 0x124], 5
sete cl
test al, cl
jne 0x51962f
xor al, cl
jne 0x51962f
mov edx, dword [rsp + 0x124]
cmp edx, 4
jae 0x5196ab
test edx, edx
mov r12, qword [rsp + 0x90]
mov r15, qword [rsp + 0xc8]
je 0x51977b
mov rcx, r12
mov r8, r14
call fcn.004e13c0
jmp 0x51a2a7
mov rax, qword [rsp + 0x60]
cmp byte [rax + 0x30], 0
js 0x51990d
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
mov r8d, dword [rsp + 0x104]
jle 0x519d9a
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x8e
mov dword [rcx + rax*8 + 4], r8d
mov rdx, qword [rsp + 0xa0]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
cmp dword [rsp + 0x270], 0
jne 0x519dc5
jmp 0x5195f7
cmp edx, 6
jae 0x519717
cmp edx, 4
mov r12, qword [rsp + 0x90]
mov r15, qword [rsp + 0xc8]
jne 0x51977b
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x519756
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0x288]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51a2a7
mov r12, qword [rsp + 0x90]
mov r15, qword [rsp + 0xc8]
jne 0x51977b
mov eax, dword [rsp + 0x104]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov rdx, r15
mov r8, qword [rsp + 0x60]
mov r9, r14
call fcn.0051af20
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jg 0x5196d8
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0x288]
call fcn.0047df60
jmp 0x51a2a7
mov rax, qword [rsp + 0x68]
movsxd r15, dword [rax]
cmp dword [rsp + 0x88], 0
je 0x5197b3
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x20], 1
mov rax, qword [rsp + 0xf0]
add eax, 1
mov qword [rsp + 0xf0], rax
mov r9d, dword [rsp + 0x9c]
mov rax, qword [rsp + 0x130]
cmp byte [rsp + 0xdf], 0
je 0x5198cd
cmp qword [rsp + 0xe0], r14
mov ecx, dword [rsp + 0x104]
mov dword [rsp + 0x50], ecx
sete byte [rsp + 0x48]
mov word [rsp + 0x30], ax
mov rax, qword [rsp + 0xa0]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x260]
mov dword [rsp + 0x20], eax
mov byte [rsp + 0x40], 5
mov byte [rsp + 0x38], 0
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0xe8]
call fcn.0050d960
movabs r11, 0x6b7ce5589fe011dc
mov dword [rsp + 0x8c], 1
cmp dword [rsp + 0x88], 0
je 0x519ffb
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x519e34
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x56
mov edx, dword [rsp + 0x88]
mov dword [rcx + rax*8 + 4], edx
mov qword [rcx + rax*8 + 8], 1
mov qword [rcx + rax*8 + 0x10], 0
mov eax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jg 0x519e69
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov dword [rsp + 0xb0], eax
jmp 0x519e9a
cmp dword [rbp + 0x94], r15d
jle 0x519ee3
lea eax, [r15 + 1]
mov rcx, qword [rsp + 0x68]
mov dword [rcx], eax
mov rax, qword [rsp + 0x78]
mov rax, qword [rax]
lea rcx, [r15 + r15*2]
mov dword [rax + rcx*8], 0xa7
mov edx, dword [rsp + 0x9c]
mov dword [rax + rcx*8 + 4], edx
movups xmmword [rax + rcx*8 + 8], xmm6
jmp 0x519efe
mov rdi, qword [rsp + 0xe0]
cmp rdi, r14
mov r12d, dword [rsp + 0x104]
je 0x519a20
cmp word [rdi + 0x5e], 0
je 0x519a20
xor esi, esi
jmp 0x519985
lea edx, [rcx + 1]
mov rbx, qword [rsp + 0x68]
mov dword [rbx], edx
mov rdx, qword [rsp + 0x78]
mov rdx, qword [rdx]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x5e
mov dword [rdx + rcx*8 + 4], r12d
mov dword [rdx + rcx*8 + 8], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
add rsi, 1
movzx eax, word [rdi + 0x5e]
cmp rsi, rax
jae 0x519a20
movzx ecx, word [r14 + 0x60]
mov eax, 0xffffffff
test rcx, rcx
je 0x5199da
mov rdx, qword [rdi + 8]
movzx edx, word [rdx + rsi*2]
mov rbx, qword [r14 + 8]
xor ebp, ebp
nop word cs:[rax + rax]
cmp word [rbx + rbp*2], dx
je 0x5199d0
add rbp, 1
cmp rcx, rbp
jne 0x5199b0
jmp 0x5199d2
mov eax, ebp
mov rbp, qword [rsp + 0x80]
movsx r9d, ax
mov rax, qword [rsp + 0xa0]
add eax, esi
movsxd rcx, dword [rbp + 0x90]
cmp dword [rbp + 0x94], ecx
jg 0x519940
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x5e
mov r8d, r12d
call fcn.0047df60
add rsi, 1
movzx eax, word [rdi + 0x5e]
cmp rsi, rax
jb 0x519985
cmp dword [rsp + 0x270], 0
je 0x5195f7
mov rax, qword [rsp + 0xe0]
movzx edx, word [rax + 0x5e]
mov eax, dword [r14 + 0x64]
mov ecx, eax
xor ecx, 0xfffffffc
and ecx, eax
cmp ecx, 2
mov rax, qword [rsp + 0xa0]
cmove eax, dword [rsp + 0xc0]
mov qword [rsp + 0x1c8], rax
test edx, edx
je 0x5195f7
mov r15d, edx
mov rax, qword [rsp + 0x68]
add r15d, dword [rax]
mov dword [rsp + 0xb0], 0x34
xor r12d, r12d
jmp 0x519aa9
add r12, 1
mov rax, qword [rsp + 0xe0]
movzx eax, word [rax + 0x5e]
cmp r12, rax
jae 0x5195f7
mov rax, qword [rsp + 0xe0]
mov rax, qword [rax + 0x40]
mov rdi, qword [rax + r12*8]
mov rax, qword [rsp + 0x90]
mov rcx, qword [rax]
mov bl, byte [rcx + 0x64]
movzx ebp, byte [rcx + 0xc5]
mov edx, ebx
mov r8, rdi
mov r9d, ebp
call fcn.00478ca0
mov rsi, rax
test ebp, ebp
jne 0x519b15
test rsi, rsi
je 0x519afd
cmp qword [rsi + 0x18], 0
jne 0x519b15
mov rcx, qword [rsp + 0x90]
mov edx, ebx
mov r8, rsi
jmp 0x519b0a
mov rcx, qword [rsp + 0x90]
mov edx, ebx
xor r8d, r8d
mov r9, rdi
call fcn.00480050
mov rsi, rax
mov r9d, r15d
mov edi, dword [rsp + 0xb0]
mov rax, qword [rsp + 0xe0]
mov rcx, qword [rax + 8]
movzx edx, word [rax + 0x5e]
movabs rax, 0x8cd33020f58640d8
add rdx, rax
mov ebp, 0xffffffff
add rdx, rbp
sub rdx, rax
mov ebp, 0xffffffff
xor rbp, rdx
not rbp
and rbp, rdx
cmp r12, rbp
cmove r9d, dword [rsp + 0xac]
mov eax, 0x35
cmove edi, eax
movzx ebx, word [rcx + r12*2]
mov rax, qword [rsp + 0x60]
mov ecx, dword [rax + 0x30]
mov edx, ecx
xor edx, 0xffffffdf
test edx, ecx
mov dword [rsp + 0xb0], edi
je 0x519bf0
test bx, bx
mov rbp, qword [rsp + 0x80]
js 0x519d3c
mov rax, qword [rsp + 0x60]
mov r10, qword [rax + 8]
movzx ecx, word [r10 + 0x12]
and ecx, 0x20
test bx, bx
je 0x519bfd
movsx ebp, bx
test ebp, ebp
mov edx, 1
cmovle ebp, edx
movabs rdx, 0x9faa17c1757de01c
mov eax, edx
not eax
or eax, edx
and eax, ebp
and eax, 1
cmp bx, 2
mov qword [rsp + 0x1c0], rsi
mov qword [rsp + 0x1b8], rbp
jge 0x519c0f
xor ebp, ebp
xor ebx, ebx
jmp 0x519ce1
mov rbp, qword [rsp + 0x80]
jmp 0x519d3c
xor edx, edx
xor ebx, ebx
test cx, cx
jne 0x519d2f
jmp 0x519d3c
mov r11d, ebp
xor r11d, 0x80000001
and r11d, ebp
xor ebp, ebp
xor esi, esi
movabs r15, 0xb7482df561454f82
nop word [rax + rax]
movzx ecx, cx
shr ecx, 5
mov ebx, ecx
not ebx
and ebx, 0x343e
and ecx, 0x3c1
or ecx, ebx
xor ecx, 0x343f
add esi, ecx
mov rdi, rbp
not rdi
mov rcx, r15
not rcx
mov rbx, rdi
and rbx, r15
mov rdx, rbp
and rdx, rcx
or rdx, rbx
mov rbx, r15
and rbx, 0xfffffffffffffffe
mov r8d, ecx
and r8d, 1
or r8, rbx
xor r8, rdx
not edi
or ecx, r15d
and ecx, edi
and ecx, 1
or rcx, r8
lea rcx, [rcx + rcx*2]
movzx ecx, word [r10 + rcx*8 + 0x12]
shr ecx, 5
mov ebx, ecx
xor ebx, 0x7fe
and ebx, ecx
mov ecx, ebx
not ecx
and ecx, 0xffffd98f
and ebx, 0x670
or ebx, ecx
xor ebx, 0xffffd98e
add ebx, esi
add rbp, 2
lea rcx, [rbp*2]
add rcx, rbp
movzx ecx, word [r10 + rcx*8 + 0x12]
and ecx, 0x20
mov esi, ebx
add r11, 0xfffffffffffffffe
jne 0x519c30
test rax, rax
mov edi, dword [rsp + 0xb0]
mov rsi, qword [rsp + 0x1c0]
je 0x519d1a
lea rdx, [rbp*2]
add rdx, rbp
movzx ebp, word [r10 + rdx*8 + 0x2a]
movzx ecx, cx
mov edx, ebp
xor edx, 0xffffffdf
and edx, ebp
shr ecx, 5
xor ecx, 1
add ebx, ecx
mov ecx, edx
mov rbp, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x1b8]
test cx, cx
je 0x519d3c
sub edx, ebx
mov rax, qword [rsp + 0x60]
add dx, word [rax + 0x38]
mov ebx, edx
movsx r8d, bx
add r8d, dword [rsp + 0x16c]
mov rax, qword [rsp + 0x1c8]
add eax, r12d
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x30], 0xfffffffe
mov rcx, rbp
mov edx, edi
mov r15d, r9d
call fcn.004c62a0
mov eax, dword [rbp + 0x90]
test eax, eax
jle 0x519a90
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 0x90
jmp 0x519a90
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x8e
mov r9, qword [rsp + 0xa0]
call fcn.0047df60
cmp dword [rsp + 0x270], 0
je 0x5195f7
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51a0a1
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x35
mov rdx, qword [rsp + 0xa0]
mov dword [rcx + rax*8 + 4], edx
mov edx, dword [rsp + 0xac]
mov dword [rcx + rax*8 + 8], edx
mov edx, dword [rsp + 0x270]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
test eax, eax
jg 0x51a0d8
jmp 0x5195f7
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x56
mov r8d, dword [rsp + 0x88]
mov r9d, 1
call fcn.0047df60
mov eax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x5198a6
mov dword [rsp + 0xb0], eax
cdqe
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
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 rcx, qword [rbp + 0x18]
mov r8d, dword [rsp + 0xd4]
mov eax, r8d
not eax
and eax, 0xf38a5039
and r8d, 0xc75afc6
or r8d, eax
xor r8d, 0xc75afc6
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x51a008
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
jmp 0x51a010
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0xa7
mov r8d, r9d
xor r9d, r9d
call fcn.0047df60
mov rax, qword [rsp + 0x130]
mov edi, dword [rsp + 0x9c]
cmp qword [rsp + 0xe0], r14
mov ecx, dword [rsp + 0x104]
mov dword [rsp + 0x50], ecx
sete byte [rsp + 0x48]
mov word [rsp + 0x30], ax
mov rax, qword [rsp + 0xa0]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x260]
mov dword [rsp + 0x20], eax
mov byte [rsp + 0x40], 5
mov byte [rsp + 0x38], 0
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0xe8]
mov r9d, edi
call fcn.0050d960
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x519fbd
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0xa8
mov dword [rcx + rax*8 + 4], edi
movups xmmword [rcx + rax*8 + 8], xmm6
movabs r11, 0x6b7ce5589fe011dc
mov dword [rsp + 0x8c], 1
cmp dword [rsp + 0x88], 0
jne 0x519847
jmp 0x519ffb
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0xa8
mov r8d, edi
xor r9d, r9d
call fcn.0047df60
movabs r11, 0x6b7ce5589fe011dc
mov dword [rsp + 0x8c], 1
cmp dword [rsp + 0x88], 0
jne 0x519847
mov r15, qword [rsp + 0xc8]
jmp 0x51a2b1
mov rdx, rbp
call fcn.004d3e00
mov edi, r15d
sub edi, dword [rsp + 0x120]
mov eax, dword [r12 + 0x44]
add eax, 0xffffffff
mov dword [rsp + 0xd4], eax
mov dword [r12 + 0x44], eax
cmp qword [r14 + 0x48], 0
je 0x51a08d
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51a0f3
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov rdx, qword [rsp + 0x170]
mov dword [rcx + rax*8 + 4], edx
mov edx, dword [rsp + 0xd4]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
test edi, edi
mov eax, dword [rsp + 0x120]
jg 0x51a127
jmp 0x51a253
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x35
mov r8, qword [rsp + 0xa0]
mov r9d, dword [rsp + 0xac]
call fcn.0047df60
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
test eax, eax
jle 0x5195f7
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 0x90
jmp 0x5195f7
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x32
mov r8, qword [rsp + 0x170]
mov r9d, dword [rsp + 0xd4]
call fcn.0047df60
test edi, edi
mov eax, dword [rsp + 0x120]
jle 0x51a253
sub r15d, eax
add r15d, 1
jmp 0x51a14f
add edi, 0xffffffff
mov eax, r12d
add eax, 1
add r15d, 0xffffffff
cmp r15d, 1
mov r12, qword [rsp + 0x90]
jle 0x51a253
mov ecx, eax
mov r12d, eax
test eax, eax
js 0x51a180
mov rax, qword [rbp]
cmp byte [rax + 0x67], 0
lea rax, [0x0213b3e8]
je 0x51a19b
movzx edx, byte [rax]
cmp edx, 0x8e
je 0x51a130
jmp 0x51a1bd
mov rax, qword [rsp + 0x68]
mov ecx, dword [rax]
add ecx, 0xffffffff
mov rax, qword [rbp]
cmp byte [rax + 0x67], 0
lea rax, [0x0213b3e8]
jne 0x51a169
movsxd rax, ecx
lea rax, [rax + rax*2]
shl rax, 3
mov rcx, qword [rsp + 0x78]
add rax, qword [rcx]
movzx edx, byte [rax]
cmp edx, 0x8e
je 0x51a130
movsx ecx, byte [rax + 1]
movzx ebp, word [rax + 2]
mov word [rsp + 0xac], bp
mov rbp, qword [rax + 0x10]
mov r8d, dword [rax + 4]
mov r10d, dword [rax + 0xc]
mov esi, edx
lea rbx, [0x005fe110]
movzx ebx, byte [rsi + rbx]
not bl
or bl, 0xfe
mov r9d, dword [rsp + 0xd4]
cmp bl, 0xff
jne 0x51a1fc
mov r9d, dword [rax + 8]
cmp cl, 0xfd
movsxd rax, ebp
cmovne rax, rbp
mov dword [rsp + 0x30], ecx
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r10d
mov rbp, qword [rsp + 0x80]
mov rcx, rbp
call fcn.004c62a0
mov eax, dword [rbp + 0x90]
test eax, eax
jle 0x51a130
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
add eax, 0xffffffff
lea rax, [rax + rax*2]
movzx edx, word [rsp + 0xac]
mov word [rcx + rax*8 + 2], dx
jmp 0x51a130
mov rcx, r12
mov edx, 2
mov r8, r14
call fcn.004e13c0
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
lea rcx, [0x0213b3e8]
jne 0x51a29c
lea ecx, [rax - 1]
mov edx, dword [rsp + 0xb0]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
mov rdx, qword [rsp + 0x78]
add rcx, qword [rdx]
mov dword [rcx + 8], eax
mov r15, qword [rsp + 0xc8]
movabs r11, 0x6b7ce5589fe011dc
mov rbx, qword [rsp + 0xb8]
mov r8, qword [rsp + 0x140]
mov rcx, qword [rbp + 0x18]
neg r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x51a2f7
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
mov rax, qword [rsp + 0xa0]
cmp eax, dword [rsp + 0xc0]
jne 0x51a31a
jmp 0x51a378
mov rdx, rbp
call fcn.004d3e00
movabs r11, 0x6b7ce5589fe011dc
mov rax, qword [rsp + 0xa0]
cmp eax, dword [rsp + 0xc0]
je 0x51a378
mov rax, qword [rsp + 0x130]
cmp eax, 1
jne 0x51a357
cmp dword [rsp + 0xa0], 0
je 0x51a378
movzx eax, byte [r12 + 0x1f]
cmp rax, 7
ja 0x51a378
lea ecx, [rax + 1]
mov byte [r12 + 0x1f], cl
mov rcx, qword [rsp + 0xa0]
mov dword [r12 + rax*4 + 0xd8], ecx
jmp 0x51a378
cmp dword [r12 + 0x28], eax
jge 0x51a378
mov rax, qword [rsp + 0x130]
mov dword [r12 + 0x28], eax
mov rax, qword [rsp + 0xa0]
mov dword [r12 + 0x2c], eax
test r13, r13
sete al
mov edx, dword [rsp + 0x14c]
test edx, edx
setne cl
cmp cl, al
je 0x51921c
test edx, edx
je 0x51921c
mov rax, qword [r13 + 0x20]
test rax, rax
je 0x51a3b4
cmp qword [rax], 0
je 0x51a3b4
cmp qword [rax + 0x38], 0
jne 0x51921c
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51a3ff
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x68]
mov dword [rdx], ecx
mov rcx, qword [rsp + 0x78]
mov rcx, qword [rcx]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov edx, dword [rsp + 0x160]
mov dword [rcx + rax*8 + 8], edx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51a429
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
mov r9d, dword [rsp + 0x160]
call fcn.0047df60
movabs r11, 0x6b7ce5589fe011dc
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
lea rcx, [0x0213b3e8]
jne 0x51a462
lea ecx, [rax - 1]
mov edx, dword [rsp + 0x14c]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
mov rdx, qword [rsp + 0x78]
add rcx, qword [rdx]
mov dword [rcx + 8], eax
mov dword [rsp + 0x14c], 0
jmp 0x51921c
mov rcx, qword [rbp + 0x18]
mov r8, qword [rsp + 0x140]
neg r8d
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x51a4aa
mov rax, qword [rsp + 0x68]
mov eax, dword [rax]
mov rcx, qword [rcx + 0x50]
movsxd rdx, r8d
mov dword [rcx + rdx*4], eax
mov rbx, qword [rsp + 0xb8]
jmp 0x51921c
mov rdx, rbp
call fcn.004d3e00
movabs r11, 0x6b7ce5589fe011dc
mov rbx, qword [rsp + 0xb8]
jmp 0x51921c
mov rax, qword [rsp + 0x138]
mov ecx, dword [rax + 8]
mov qword [rsp + 0xf8], rcx
mov r15, qword [rsp + 0xc8]
mov r14, qword [rax]
test r14, r14
jne 0x5188ba
mov rax, qword [rsp + 0x108]
mov dword [rsp + 0xd4], eax
jmp 0x51a50b
mov eax, ebx
mov qword [rsp + 0xf8], rax
mov r9, qword [rsp + 0x150]
test r9d, r9d
mov rdi, qword [rsp + 0x108]
mov esi, dword [rsp + 0x88]
mov ebx, dword [rsp + 0xd4]
je 0x51a5ca
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51a575
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51a58d
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
call fcn.0047df60
mov edx, dword [rsp + 0x164]
mov eax, dword [rbp + 0x90]
mov rcx, qword [rbp]
cmp byte [rcx + 0x67], 0
je 0x51a5ad
lea rcx, [0x0213b3e8]
jmp 0x51a5c7
lea ecx, [rax - 1]
test edx, edx
cmovns ecx, edx
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rbp + 0x88]
mov dword [rcx + 8], eax
cmp dword [rsp + 0xf0], 0
je 0x51a8e1
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x51a61d
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x10
mov dword [rcx + rax*8 + 4], esi
mov dword [rcx + rax*8 + 8], ebx
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51a638
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x10
mov r8d, esi
mov r9d, ebx
call fcn.0047df60
mov rsi, qword [rsp + 0x60]
mov eax, dword [rbp + 0x90]
movsxd rcx, eax
cmp qword [rsp + 0xe0], 0
je 0x51a693
cmp dword [rbp + 0x94], eax
jle 0x51a6f3
add eax, 1
mov dword [rbp + 0x90], eax
mov rax, qword [rbp + 0x88]
lea rcx, [rcx + rcx*2]
mov qword [rax + rcx*8], 8
mov dword [rax + rcx*8 + 8], edi
mov dword [rax + rcx*8 + 0xc], 0
mov qword [rax + rcx*8 + 0x10], 0
jmp 0x51a8aa
cmp dword [rsp + 0x270], 0
je 0x51a755
cmp dword [rbp + 0x94], eax
jle 0x51a713
add eax, 1
mov dword [rbp + 0x90], eax
mov rax, qword [rbp + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rax + rcx*8], 0x35
mov edx, dword [rsp + 0x268]
mov dword [rax + rcx*8 + 4], edx
mov dword [rax + rcx*8 + 8], edi
mov edx, dword [rsp + 0x270]
mov dword [rax + rcx*8 + 0xc], edx
mov qword [rax + rcx*8 + 0x10], 0
mov eax, dword [rbp + 0x90]
test eax, eax
jg 0x51a740
jmp 0x51a755
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 8
xor r8d, r8d
mov r9d, edi
call fcn.0047df60
jmp 0x51a8aa
mov eax, dword [rsp + 0x270]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x35
mov r8d, dword [rsp + 0x268]
mov r9d, edi
call fcn.0047df60
mov eax, dword [rbp + 0x90]
test eax, eax
jle 0x51a755
mov rcx, qword [rbp + 0x88]
lea edx, [rax - 1]
lea rdx, [rdx + rdx*2]
mov word [rcx + rdx*8 + 2], 0x90
cmp dword [rbp + 0x94], eax
jle 0x51a79f
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x1e
mov edx, dword [rsp + 0x9c]
mov dword [rcx + rax*8 + 4], edx
mov dword [rcx + rax*8 + 8], edi
mov edx, dword [rsp + 0x268]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51a7c2
mov eax, dword [rsp + 0x268]
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x1e
mov r8d, dword [rsp + 0x9c]
mov r9d, edi
call fcn.0047df60
movzx eax, word [rsi + 0x34]
mov rcx, qword [r12]
mov r8, qword [rsi]
test ax, ax
js 0x51a830
mov rdx, qword [rsi + 8]
lea rax, [rax + rax*2]
mov r9, qword [rdx + rax*8]
lea rdx, [0x005ff166]
call fcn.00419c10
mov rsi, rax
mov rcx, r12
call fcn.004c6120
mov rdi, rax
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x21], 1
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x30], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x46
mov r8d, 0x613
jmp 0x51a880
lea rdx, [0x00604ab2]
call fcn.00419c10
mov rsi, rax
mov rcx, r12
call fcn.004c6120
mov rdi, rax
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x21], 1
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x30], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x46
mov r8d, 0xa13
mov r9d, 2
call fcn.004c62a0
mov eax, dword [rdi + 0x90]
test eax, eax
jle 0x51a8aa
mov rcx, qword [rdi + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 2
mov rcx, qword [rbp + 0x18]
mov eax, ebx
not eax
and eax, 0x8643f661
and ebx, 0x79bc099e
or ebx, eax
xor ebx, 0x79bc099e
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x51a99b
mov eax, dword [rbp + 0x90]
mov rcx, qword [rcx + 0x50]
movsxd rdx, ebx
mov dword [rcx + rdx*4], eax
mov rsi, qword [rsp + 0x290]
mov rcx, qword [rsp + 0x60]
cmp byte [rcx + 0x30], 0
js 0x51a9bd
movsxd rax, dword [rsp + 0xf8]
mov rdx, qword [rsp + 0x158]
mov eax, dword [rdx + rax*4]
mov r8d, dword [rsp + 0x268]
add r8d, 1
movsx r9d, word [rcx + 0x38]
movsxd rcx, dword [rbp + 0x90]
cmp dword [rbp + 0x94], ecx
jle 0x51a96e
lea edx, [rcx + 1]
mov dword [rbp + 0x90], edx
mov rdx, qword [rbp + 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], r9d
mov dword [rdx + rcx*8 + 0xc], eax
mov qword [rdx + rcx*8 + 0x10], 0
cmp byte [rsp + 0xb4], 0
mov rdx, qword [rsp + 0x60]
jne 0x51a9bd
jmp 0x51a98e
mov dword [rsp + 0x20], eax
mov rcx, rbp
mov edx, 0x61
call fcn.0047df60
cmp byte [rsp + 0xb4], 0
mov rdx, qword [rsp + 0x60]
jne 0x51a9bd
mov rcx, rbp
xor r8d, r8d
call fcn.004d5160
jmp 0x51a9bd
mov rdx, rbp
mov r8d, ebx
call fcn.004d3e00
mov rsi, qword [rsp + 0x290]
mov rcx, qword [rsp + 0x60]
cmp byte [rcx + 0x30], 0
jns 0x51a8f8
mov eax, dword [rsp + 0x8c]
mov dword [rsi], eax
movaps xmm6, xmmword [rsp + 0x1d0]
movaps xmm7, xmmword [rsp + 0x1e0]
add rsp, 0x1f8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x8c], 1
xor eax, eax
mov qword [rsp + 0xf0], rax
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x10], 0
mov rbp, qword [rsp + 0x80]
je 0x518703
mov rax, qword [r12 + 0xa0]
test rax, rax
cmove rax, r12
mov byte [rax + 0x20], 1
mov dword [rsp + 0x28], 0xffffffff
mov qword [rsp + 0x20], 0
mov rcx, r12
mov rdx, qword [rsp + 0x60]
mov r8d, dword [rsp + 0x9c]
mov r9d, dword [rsp + 0x260]
call fcn.00510cf0
jmp 0x518703
mov dword [rsp + 0x20], 0
mov eax, 1
mov qword [rsp + 0xf0], rax
mov rcx, rbp
mov edx, 0x56
mov r8d, dword [rsp + 0x88]
mov r9d, 1
call fcn.0047df60
mov dword [rsp + 0x8c], 1
jmp 0x518703