Function at 0x40cf00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x208
movapd xmmword [rsp + 0x1f0], xmm7
movaps xmmword [rsp + 0x1e0], xmm6
test rcx, rcx
je 0x40e703
mov r14, rcx
mov rax, qword [rcx]
test rax, rax
je 0x40e70c
mov qword [rsp + 0x68], rax
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x40cf50
call qword [0x005f6090]
lea rax, [r14 + 0xb8]
mov qword [rsp + 0x88], rax
lea rax, [r14 + 0x88]
mov qword [rsp + 0x70], rax
lea rax, [r14 + 0xd4]
mov qword [rsp + 0xa0], rax
xor r13d, r13d
movabs rax, 0x8e53204f85a988f3
movabs rcx, 0x1ffffffffffffffd
and rcx, rax
mov qword [rsp + 0x98], rcx
xorps xmm6, xmm6
lea rdi, [rsp + 0xb0]
movsd xmm7, qword [0x005fa1b8]
nop
mov r15, qword [r14]
mov al, byte [r14 + 0xc5]
cmp al, 2
je 0x40d0e0
nop word cs:[rax + rax]
nop dword [rax]
cmp al, 3
jne 0x40cfe8
mov rcx, r14
call fcn.00413270
movzx eax, byte [r14 + 0xc5]
cmp al, 3
je 0x40cfd4
cmp al, 1
jne 0x40d0e0
mov eax, dword [r14 + 0xc8]
mov ecx, eax
xor ecx, 0xfffffffc
test ecx, eax
je 0x40d02a
mov dword [r14 + 0x34], 0x11
mov ebp, 1
cmp byte [r14 + 0xc4], 0
jns 0x40d71d
mov rcx, r14
call fcn.004479e0
mov ebp, eax
jmp 0x40d71d
cmp dword [r15 + 0xd8], 0
jne 0x40d03f
mov dword [r15 + 0x198], 0
mov al, byte [r15 + 0x6e]
mov ecx, eax
xor cl, 0x7d
test cl, al
je 0x40d0a3
cmp byte [r15 + 0xc5], 0
jne 0x40d0a3
cmp qword [r14 + 0xf8], 0
je 0x40d0a3
mov rcx, qword [r15]
cmp dword [rcx], 2
jl 0x40d080
mov rax, qword [rcx + 0x88]
test rax, rax
je 0x40d080
mov rdx, qword [rsp + 0x88]
call rax
jmp 0x40d0a3
mov rdx, rdi
call qword [rcx + 0x78]
movsd xmm0, qword [rsp + 0xb0]
mulsd xmm0, xmm7
cvttsd2si rax, xmm0
mov rcx, qword [rsp + 0x88]
mov qword [rcx], rax
add dword [r15 + 0xd8], 1
mov eax, dword [r14 + 0xc8]
mov ecx, eax
xor ecx, 0xffffffbf
test ecx, eax
je 0x40dad1
test al, al
js 0x40dae8
mov dword [r14 + 0x30], 0
mov byte [r14 + 0xc5], 2
nop word [rax + rax]
mov eax, dword [r14 + 0xc8]
not eax
or eax, 0xfffffff3
cmp eax, 0xffffffff
je 0x40d2b0
mov qword [rsp + 0x58], r13
not eax
mov rdx, qword [r14]
mov rsi, qword [r14 + 0x68]
mov bl, 1
cmp eax, 4
je 0x40d11e
mov rax, qword [rdx + 0x30]
mov rcx, rax
xor rcx, 0xfffffffffeffffff
test rcx, rax
setne bl
lea rdi, [rsi + 0x38]
mov r13, qword [rsi + 0x50]
cmp qword [r13 + 0x300], 0
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x90], rdi
mov byte [rsp + 0x48], bl
je 0x40d498
cmp dword [rsi + 0x58], 0
je 0x40d15f
mov rdx, qword [rsi + 0x60]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x90], 0
je 0x40d177
mov rdx, qword [rsi + 0x98]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0xc8], 0
je 0x40d18f
mov rdx, qword [rsi + 0xd0]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x100], 0
je 0x40d1a7
mov rdx, qword [rsi + 0x108]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x138], 0
je 0x40d1bf
mov rdx, qword [rsi + 0x140]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x170], 0
je 0x40d1d7
mov rdx, qword [rsi + 0x178]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x1a8], 0
je 0x40d1ef
mov rdx, qword [rsi + 0x1b0]
mov rcx, r13
call fcn.00408130
cmp dword [rsi + 0x1e0], 0
je 0x40d20f
mov rax, qword [rsp + 0x80]
mov rdx, qword [rax + 0x1e8]
mov rcx, r13
call fcn.00408130
mov qword [r14 + 0xa0], 0
cmp dword [r14 + 0x34], 7
jne 0x40d410
mov ebp, 1
mov rsi, qword [rsp + 0x78]
cmp byte [rsi + 0x67], 0
mov r13, qword [rsp + 0x58]
jne 0x40d2d3
cmp byte [rsi + 0x68], 0
jne 0x40d2d3
mov byte [rsi + 0x67], 1
cmp dword [rsi + 0xe4], 0
jle 0x40d25f
mov dword [rsi + 0x198], 1
add dword [rsi + 0x1a0], 1
mov word [rsi + 0x1a4], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je 0x40d2d3
lea rdx, [0x005fc480]
call fcn.00419aa0
mov rax, qword [rsi + 0x160]
mov dword [rax + 0x18], 7
mov rax, qword [rsp + 0x88]
cmp qword [rax], 0
jg 0x40d2e1
jmp 0x40d2ec
add dword [r15 + 0xe4], 1
mov rcx, r14
call fcn.0044bda0
mov ebp, eax
add dword [r15 + 0xe4], 0xffffffff
cmp eax, 0x64
je 0x40e89c
mov rax, qword [rsp + 0x88]
cmp qword [rax], 0
jle 0x40d2ec
mov rcx, r15
mov rdx, r14
call fcn.004131a0
cmp ebp, 0x65
jne 0x40d3f0
mov ebp, 0x65
cmp byte [r15 + 0x65], 0
je 0x40d6d0
cmp dword [r15 + 0x28], 0
jle 0x40d6bd
xor edi, edi
xor esi, esi
xor r12d, r12d
jmp 0x40d335
add rsi, 1
movsxd rax, dword [r15 + 0x28]
add rdi, 0x20
cmp rsi, rax
jge 0x40d60c
mov rax, qword [r15 + 0x20]
mov rbp, qword [rax + rdi + 8]
test rbp, rbp
je 0x40d320
cmp byte [rbp + 0x11], 0
je 0x40d35b
add dword [rbp + 0x14], 1
cmp byte [rbp + 0x12], 0
jne 0x40d35b
mov rcx, rbp
call fcn.0043e9d0
mov rax, qword [rbp + 8]
mov rax, qword [rax]
mov rax, qword [rax + 0x128]
test rax, rax
je 0x40d380
mov ebx, dword [rax + 0x18]
mov dword [rax + 0x18], 0
cmp byte [rbp + 0x11], 0
jne 0x40d388
jmp 0x40d396
xor ebx, ebx
cmp byte [rbp + 0x11], 0
je 0x40d396
mov eax, dword [rbp + 0x14]
lea ecx, [rax - 1]
mov dword [rbp + 0x14], ecx
cmp eax, 1
je 0x40d3dd
test ebx, ebx
jle 0x40d320
mov rbp, qword [r15 + 0x168]
test rbp, rbp
sete al
test r12d, r12d
sete cl
cmp cl, al
je 0x40d320
test r12d, r12d
jne 0x40d320
mov rax, qword [r15 + 0x20]
mov rcx, qword [r15 + 0x170]
mov r8, qword [rax + rdi]
mov rdx, r15
mov r9d, ebx
call rbp
mov r12d, eax
jmp 0x40d320
mov rcx, rbp
call fcn.0043ea70
test ebx, ebx
jg 0x40d39a
jmp 0x40d320
cmp byte [r14 + 0xc4], 0
jns 0x40d6d0
mov rcx, r14
call fcn.004479e0
mov ebp, eax
jmp 0x40d6d0
cmp byte [rsp + 0x48], 0
mov r13, qword [rsp + 0x58]
je 0x40d623
mov r10, qword [r14 + 0x68]
mov edx, dword [r14 + 0xc8]
mov r9d, dword [r14 + 0x90]
mov eax, dword [r10 + 0x20c]
not eax
or eax, 0xffef
cmp ax, 0xffff
je 0x40da8f
mov r11, qword [r10 + 0x200]
mov ecx, dword [r10 + 0x208]
mov eax, ecx
sar eax, 3
cmp ecx, 8
mov qword [rsp + 0x48], rax
jl 0x40da99
mov dword [rsp + 0x40], edx
mov qword [rsp + 0x50], r10
mov edi, eax
lea rdx, [rdi - 1]
mov r10d, eax
xor r10d, 0xfffffffc
and r10d, eax
cmp rdx, 3
jae 0x40db02
xor eax, eax
mov ebx, r9d
jmp 0x40db92
test r13, r13
je 0x40d9bf
mov ebx, 1
mov r12d, 8
mov rsi, rdi
jmp 0x40d4e0
mov rcx, rsi
call fcn.00449ce0
mov word [rsi + 0x14], 0
add rbx, 1
add rsi, 0x38
add r12, 0xffffffffffffffff
je 0x40d20f
mov eax, dword [rsi + 0x14]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
jne 0x40d4c0
cmp dword [rsi + 0x20], 0
je 0x40d4ce
mov rbp, qword [rsi + 0x28]
cmp qword [r13 + 0x300], 0
je 0x40d518
mov rcx, r13
mov rdx, rbp
call fcn.004297f0
mov dword [rsi + 0x20], 0
jmp 0x40d4c8
cmp qword [r13 + 0x1f0], rbp
jbe 0x40d53b
cmp qword [r13 + 0x1e0], rbp
jbe 0x40d5d0
cmp qword [r13 + 0x1e8], rbp
jbe 0x40d5f5
test rbp, rbp
je 0x40d50f
cmp dword [0x005f6010], 0
je 0x40d5e7
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x40d55f
call qword [0x005f6090]
mov rcx, rbp
call qword [0x005f6048]
cdqe
mov rcx, qword [0x0213b040]
movabs rdx, 0x45855fe98fd0f16b
add rcx, rdx
sub rcx, rax
sub rcx, rdx
mov qword [0x0213b040], rcx
movabs rcx, 0xfbb166c50560a7e5
mov rax, rcx
not rax
add rax, qword [0x0213b088]
add rax, rcx
mov qword [0x0213b088], rax
mov rcx, rbp
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x40d50f
call qword [0x005f60a0]
jmp 0x40d50f
mov rax, qword [r13 + 0x1d8]
mov qword [rbp], rax
mov qword [r13 + 0x1d8], rbp
jmp 0x40d50f
mov rcx, rbp
call qword [0x005f6038]
jmp 0x40d50f
mov rax, qword [r13 + 0x1c8]
mov qword [rbp], rax
mov qword [r13 + 0x1c8], rbp
jmp 0x40d50f
mov dword [r14 + 0x34], r12d
mov ebp, 1
test r12d, r12d
jne 0x40d6d0
jmp 0x40d6c5
mov eax, dword [r14 + 0x90]
movsxd r9, dword [r14 + 0x30]
lea esi, [r9 + 1]
cmp r9d, eax
jge 0x40ddf4
mov ecx, dword [r14 + 0xc8]
not ecx
or ecx, 0xfffffff3
cmp ecx, 0xfffffff7
jne 0x40daf5
lea ebp, [rax + 1]
lea rdx, [r9*8]
lea rdx, [rdx + rdx*2]
jmp 0x40d684
add esi, 1
add r9, 1
add rdx, 0x18
cmp eax, r9d
je 0x40ddf2
cmp r9d, eax
jge 0x40e8e3
mov rcx, qword [rsp + 0x70]
mov r8, qword [rcx]
movzx ebx, byte [r8 + rdx]
cmp bl, 0xb9
je 0x40d6b4
cmp bl, 0x40
setne bl
test r9d, r9d
setg cl
cmp cl, bl
je 0x40d670
test r9d, r9d
jle 0x40d670
lea esi, [r9 + 1]
jmp 0x40dec3
mov dword [r14 + 0x34], 0
mov ebp, 0x65
nop word [rax + rax]
mov dword [r15 + 0x50], ebp
mov rcx, qword [r14]
mov edx, dword [r14 + 0x34]
cmp byte [rcx + 0x67], 0
sete r8b
setne r9b
test edx, edx
sete al
setne bl
xor bl, r9b
jne 0x40d6fb
or al, r8b
xor al, 1
je 0x40d71d
call fcn.004456e0
cmp eax, 7
jne 0x40d71d
mov dword [r14 + 0x34], 7
cmp byte [r14 + 0xc4], 0
mov eax, 7
cmovs ebp, eax
mov eax, dword [r15 + 0x58]
not eax
not ebp
or ebp, eax
cmp ebp, 0xffffffee
jne 0x40e751
cmp r13d, 0x32
je 0x40e758
mov r15d, dword [r14 + 0x30]
mov rsi, qword [r14]
mov rdx, qword [r14 + 0xf8]
movzx r9d, byte [r14 + 0xc4]
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r14
mov qword [rsp + 0x30], 0
mov rcx, rsi
mov r8d, 0xffffffff
call fcn.0041dba0
test eax, eax
jne 0x40e762
mov r12, qword [rsp + 0xa8]
mov r8d, 0x130
lea rsi, [rsp + 0xb0]
mov rcx, rsi
mov rdx, r12
call fcn.005f4c20
mov r8d, 0x130
mov rcx, r12
mov rdx, r14
call fcn.005f4c20
mov r8d, 0x130
mov rcx, r14
mov rdx, rsi
call fcn.005f4c20
movups xmm0, xmmword [r12 + 8]
movups xmm1, xmmword [r14 + 8]
movups xmmword [r12 + 8], xmm1
movups xmmword [r14 + 8], xmm0
mov rax, qword [r12 + 0xf8]
mov rcx, qword [r14 + 0xf8]
mov qword [r12 + 0xf8], rcx
mov qword [r14 + 0xf8], rax
mov eax, dword [r12 + 0x11c]
mov dword [r14 + 0x11c], eax
mov al, byte [r12 + 0xc4]
mov byte [r14 + 0xc4], al
mov eax, dword [r12 + 0xf4]
mov rcx, qword [rsp + 0xa0]
mov dword [rcx + 0x20], eax
movupd xmm0, xmmword [r12 + 0xd4]
movups xmm1, xmmword [r12 + 0xe4]
movups xmmword [rcx + 0x10], xmm1
movupd xmmword [rcx], xmm0
add dword [r14 + 0xe8], 1
mov rax, qword [r14]
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x40d85e
call qword [0x005f6090]
cmp word [r12 + 0x20], 0
jle 0x40d900
xor esi, esi
xor edi, edi
jmp 0x40d8d6
lea rcx, [rbx + rsi]
call fcn.00449ce0
mov rax, qword [rbp + rsi + 0x30]
mov qword [rbx + rsi + 0x30], rax
movupd xmm0, xmmword [rbp + rsi]
movups xmm1, xmmword [rbp + rsi + 0x10]
movdqu xmm2, xmmword [rbp + rsi + 0x20]
movdqu xmmword [rbx + rsi + 0x20], xmm2
movups xmmword [rbx + rsi + 0x10], xmm1
movupd xmmword [rbx + rsi], xmm0
mov word [rbp + rsi + 0x14], 1
mov dword [rbp + rsi + 0x20], 0
add rdi, 1
movsx rax, word [r12 + 0x20]
add rsi, 0x38
cmp rdi, rax
jge 0x40d900
mov rbx, qword [r14 + 0x80]
mov rbp, qword [r12 + 0x80]
mov eax, dword [rbx + rsi + 0x14]
not eax
or eax, 0x6fff
cmp ax, 0xffff
jne 0x40d880
cmp dword [rbx + rsi + 0x20], 0
jne 0x40d880
jmp 0x40d889
mov rax, qword [r14]
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x40d912
call qword [0x005f60a0]
mov dword [r12 + 0x34], 0
mov al, byte [r12 + 0xc5]
test al, al
lea rdi, [rsp + 0xb0]
je 0x40d995
mov rsi, qword [r12]
cmp al, 2
jne 0x40d93f
mov rcx, r12
call fcn.00445770
cmp dword [r12 + 0x30], 0
js 0x40d968
cmp qword [rsi + 0x190], 0
jne 0x40d960
cmp qword [r12 + 0xa8], 0
je 0x40dab3
mov rcx, r12
call fcn.004479e0
mov rdx, qword [r12 + 0xa8]
test rdx, rdx
je 0x40d989
mov rcx, rsi
call fcn.00408130
mov qword [r12 + 0xa8], 0
mov qword [r12 + 0xa0], 0
add r13d, 1
mov rcx, r12
call fcn.00402020
mov rcx, r14
call fcn.00413270
test r15d, r15d
js 0x40cfb0
mov byte [r14 + 0xc3], 0xfe
jmp 0x40cfb0
add rsi, 0x38
mov edi, 1
mov ebp, 8
jmp 0x40d9f0
mov rcx, rsi
call fcn.00449ce0
mov word [rsi + 0x14], 0
add rdi, 1
add rsi, 0x38
add rbp, 0xffffffffffffffff
je 0x40d20f
mov eax, dword [rsi + 0x14]
not eax
or eax, 0x6fff
cmp ax, 0xffff
jne 0x40d9d0
cmp dword [rsi + 0x20], 0
je 0x40d9de
mov rbx, qword [rsi + 0x28]
test rbx, rbx
je 0x40da83
cmp dword [0x005f6010], 0
je 0x40da7a
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x40da2a
call qword [0x005f6090]
mov rcx, rbx
call qword [0x005f6048]
cdqe
sub qword [0x0213b040], rax
mov rax, qword [0x0213b088]
movabs rcx, 0xadda02e38edc0020
add rax, rcx
not rcx
add rcx, rax
mov qword [0x0213b088], rcx
mov rcx, rbx
call qword [0x005f6038]
mov rcx, qword [0x0213b0e8]
test rcx, rcx
je 0x40da83
call qword [0x005f60a0]
jmp 0x40da83
mov rcx, rbx
call qword [0x005f6038]
mov dword [rsi + 0x20], 0
jmp 0x40d9d8
xor eax, eax
mov qword [rsp + 0x48], rax
xor r11d, r11d
mov ebx, r9d
mov r12d, dword [r14 + 0x30]
lea esi, [r12 + 1]
cmp r12d, ebx
jl 0x40dbd3
jmp 0x40ddf4
mov eax, dword [r12 + 0x34]
mov dword [rsi + 0x50], eax
mov rdx, qword [r12 + 0xa8]
test rdx, rdx
jne 0x40d975
jmp 0x40d989
add dword [r15 + 0xe0], 1
mov eax, dword [r14 + 0xc8]
test al, al
jns 0x40d0c7
add dword [r15 + 0xdc], 1
jmp 0x40d0c7
mov rax, qword [rsp + 0x70]
mov r8, qword [rax]
jmp 0x40dec3
and edi, 0xfffffffc
xor eax, eax
mov ebx, r9d
movabs r12, 0x8e53204f85a988f3
mov r8, qword [rsp + 0x98]
nop dword [rax]
mov rdx, qword [r11 + rax*8]
mov ebp, eax
and ebp, 1
mov rsi, rax
xor rsi, 1
or rsi, rbp
mov rbp, qword [r11 + rsi*8]
add ebx, dword [rdx + 8]
add ebx, dword [rbp + 8]
mov rdx, rax
not rdx
mov rbp, r12
not rbp
and rdx, r12
mov rcx, rax
and rcx, rbp
or rcx, rdx
mov edx, ebp
and edx, 2
or rdx, r8
xor rdx, rcx
or ebp, r12d
and ebp, eax
and ebp, 2
or rbp, rdx
mov rcx, qword [r11 + rbp*8]
add ebx, dword [rcx + 8]
mov ecx, eax
and ecx, 3
mov rdx, rax
xor rdx, 3
or rdx, rcx
mov rcx, qword [r11 + rdx*8]
add ebx, dword [rcx + 8]
add rax, 4
add rdi, 0xfffffffffffffffc
jne 0x40db20
test r10, r10
je 0x40dbb8
lea rdi, [r11 + rax*8]
xor edx, edx
mov rbp, r10
mov rcx, qword [rdi + rdx*8]
add ebx, dword [rcx + 8]
add rax, 1
add rbp, 0xffffffffffffffff
add rdx, 1
cmp r10, rdx
jne 0x40dba0
mov r10, qword [rsp + 0x50]
mov edx, dword [rsp + 0x40]
mov r12d, dword [r14 + 0x30]
lea esi, [r12 + 1]
cmp r12d, ebx
jge 0x40ddf4
mov eax, edx
xor eax, 0xfffffff3
lea rcx, [r10 + 0x1f8]
mov qword [rsp + 0x60], rcx
and eax, edx
cmp eax, 8
jne 0x40dd71
mov r13, qword [rsp + 0x48]
nop word cs:[rax + rax]
nop
mov eax, esi
mov qword [rsp + 0x48], rax
mov edx, r12d
mov ecx, r12d
mov rdi, qword [rsp + 0x70]
sub edx, r9d
jl 0x40dc46
mov rdi, qword [r11]
mov esi, dword [rdi + 8]
cmp edx, esi
jl 0x40dc44
lea rcx, [r11 + 8]
xor ebp, ebp
nop
sub edx, esi
add rbp, 1
mov rdi, qword [rcx]
mov esi, dword [rdi + 8]
add rcx, 8
cmp edx, esi
jge 0x40dc30
mov ecx, edx
mov r8, qword [rdi]
movsxd r9, ecx
lea rdi, [r9 + r9*2]
cmp byte [r8 + rdi*8 + 1], 0xfc
jne 0x40dd2c
test r13d, r13d
jle 0x40dc81
mov rdx, qword [r8 + rdi*8 + 0x10]
mov ebp, r13d
xor ecx, ecx
nop
cmp qword [r11 + rcx*8], rdx
je 0x40dc83
add rcx, 1
cmp rbp, rcx
jne 0x40dc70
jmp 0x40dc8c
xor ecx, ecx
cmp ecx, r13d
jne 0x40dd2c
mov rsi, r10
mov qword [rsp + 0x50], r9
mov rbp, r8
lea edx, [r13*8 + 8]
xor r8d, r8d
test r13d, r13d
setne r8b
mov rcx, qword [rsp + 0x60]
mov dword [rsp + 0x40], edx
call fcn.00449fe0
mov dword [r14 + 0x34], eax
test eax, eax
jne 0x40e210
mov r10, rsi
mov r11, qword [rsi + 0x200]
mov r8, rbp
mov rax, qword [rbp + rdi*8 + 0x10]
movsxd rcx, r13d
add r13d, 1
mov qword [r11 + rcx*8], rax
mov eax, dword [rsi + 0x20c]
mov ecx, eax
xor ecx, 0xdbf
and ecx, eax
mov eax, ecx
not eax
and eax, 0x142f
mov edx, ecx
and edx, 0xffffebd0
or edx, eax
xor edx, 0x143f
and ecx, 0x10
or ecx, edx
mov word [rsi + 0x20c], cx
mov eax, dword [rsp + 0x40]
mov dword [rsi + 0x208], eax
mov rax, qword [rbp + rdi*8 + 0x10]
add ebx, dword [rax + 8]
mov r9, qword [rsp + 0x50]
mov cl, byte [r8 + rdi*8]
cmp cl, 0xb9
je 0x40dde1
cmp cl, 0x40
setne al
test r12d, r12d
setg cl
cmp cl, al
je 0x40dd52
test r12d, r12d
jg 0x40dde1
mov r12, qword [rsp + 0x48]
lea esi, [r12 + 1]
cmp r12d, ebx
jge 0x40ddf4
mov r9d, dword [r14 + 0x90]
jmp 0x40dc00
mov edx, r12d
mov rbp, qword [rsp + 0x70]
sub edx, r9d
jl 0x40dda7
mov rbp, qword [r11]
mov ebx, dword [rbp + 8]
cmp edx, ebx
jl 0x40dda4
lea rcx, [r11 + 8]
xor edi, edi
nop
sub edx, ebx
add rdi, 1
mov rbp, qword [rcx]
mov ebx, dword [rbp + 8]
add rcx, 8
cmp edx, ebx
jge 0x40dd90
mov r12d, edx
mov r8, qword [rbp]
movsxd r9, r12d
lea rdi, [r9 + r9*2]
cmp byte [r8 + rdi*8 + 1], 0xfc
jne 0x40dec3
mov rax, qword [rsp + 0x48]
test eax, eax
jle 0x40de23
mov rdx, qword [r8 + rdi*8 + 0x10]
mov ebp, eax
xor ecx, ecx
cmp qword [r11 + rcx*8], rdx
je 0x40de25
add rcx, 1
cmp rbp, rcx
jne 0x40ddd0
jmp 0x40de2f
mov rax, qword [rsp + 0x48]
mov esi, eax
mov r13, qword [rsp + 0x58]
jmp 0x40dec3
mov esi, ebp
mov dword [r14 + 0x34], 0
mov ebp, 0x65
mov eax, esi
mov dword [r14 + 0x30], eax
mov r13, qword [rsp + 0x58]
mov rax, qword [rsp + 0x88]
cmp qword [rax], 0
jg 0x40d2e1
jmp 0x40d2ec
xor ecx, ecx
cmp ecx, dword [rsp + 0x48]
jne 0x40dec3
mov r12, r10
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x40], r8
mov rbx, qword [rsp + 0x48]
lea edx, [rbx*8 + 8]
xor r8d, r8d
test ebx, ebx
setne r8b
mov rcx, qword [rsp + 0x60]
mov dword [rsp + 0x60], edx
call fcn.00449fe0
mov dword [r14 + 0x34], eax
mov ebp, 1
test eax, eax
jne 0x40de01
mov rax, qword [r12 + 0x200]
mov r8, qword [rsp + 0x40]
mov rcx, qword [r8 + rdi*8 + 0x10]
movsxd rdx, ebx
mov qword [rax + rdx*8], rcx
mov eax, dword [r12 + 0x20c]
mov ecx, eax
not ecx
or ecx, 0x529
and ecx, 0x7729
and eax, 0xffff8040
or eax, ecx
xor eax, 0x7739
mov word [r12 + 0x20c], ax
mov eax, dword [rsp + 0x60]
mov dword [r12 + 0x208], eax
mov r9, qword [rsp + 0x50]
mov dword [r14 + 0x30], esi
mov rax, qword [rsp + 0x78]
mov eax, dword [rax + 0x198]
test eax, eax
je 0x40df09
mov dword [r14 + 0x34], 9
mov rcx, r14
lea rdx, [0x006071cd]
call fcn.004496d0
mov ebp, 1
mov rax, qword [rsp + 0x88]
cmp qword [rax], 0
jg 0x40d2e1
jmp 0x40d2ec
movabs rax, 0x3b9aca0000000000
mov qword [rsp + 0xc0], rax
movaps xmmword [rsp + 0xb0], xmm6
mov dword [rsp + 0xc8], 0
mov word [rsp + 0xcc], 0
lea r12, [r9 + r9*2]
mov al, byte [r8 + r12*8 + 1]
cmp al, 0xf8
mov qword [rsp + 0x40], r8
jge 0x40df83
cmp al, 0xf4
lea rbx, [rsp + 0xb0]
jge 0x40e076
cmp al, 0xf2
jge 0x40e0dd
cmp al, 0xf1
jne 0x40e2c4
mov rax, qword [r8 + r12*8 + 0x10]
mov rax, qword [rax + 8]
mov r8, qword [rax + 0x38]
mov rsi, r9
movsx r9d, byte [rax]
jmp 0x40e197
cmp al, 0xfc
lea rbx, [rsp + 0xb0]
jge 0x40e0a4
cmp al, 0xf9
jge 0x40e177
mov rax, r12
mov r12, r9
mov qword [rsp + 0x58], rax
mov rdi, qword [r8 + rax*8 + 0x10]
movzx r8d, word [rdi + 6]
mov rcx, rbx
lea rdx, [0x005fc4b6]
call fcn.00408100
cmp word [rdi + 6], 0
lea rbx, [0x005fadb4]
je 0x40e1ae
xor ebp, ebp
jmp 0x40e05d
mov rcx, rsi
lea rdx, [0x005fc4bb]
call fcn.005f4bf0
test eax, eax
lea rax, [0x005fc4c2]
cmove rsi, rax
mov rax, qword [rdi + 0x18]
movzx eax, byte [rax + rbp]
mov ecx, eax
xor ecx, 0xfe
test ecx, eax
lea r8, [0x005fc4cc]
lea rbx, [0x005fadb4]
cmove r8, rbx
not eax
or eax, 0xfffffffd
cmp eax, 0xffffffff
lea r9, [0x005fc4ce]
cmove r9, rbx
mov qword [rsp + 0x20], rsi
lea rcx, [rsp + 0xb0]
lea rdx, [0x005fc4c4]
call fcn.00408100
add rbp, 1
movzx eax, word [rdi + 6]
cmp rbp, rax
jae 0x40e1ae
mov rax, qword [rdi + rbp*8 + 0x20]
mov rsi, rbx
test rax, rax
je 0x40dfe0
mov rsi, qword [rax]
jmp 0x40dfe0
jne 0x40e1e5
mov rax, qword [r8 + r12*8 + 0x10]
movq xmm2, qword [rax]
mov rcx, rbx
lea rdx, [0x005fc526]
movq r8, xmm2
mov rsi, r9
call fcn.00408100
mov r9, rsi
jmp 0x40e2f5
lea rsi, [0x005fc542]
je 0x40e2d4
cmp al, 0xfe
jge 0x40e21f
mov rax, qword [rsp + 0x40]
mov r8d, dword [rax + r12*8 + 0x10]
mov rcx, rbx
lea rdx, [0x005fc523]
mov rsi, r9
call fcn.00408100
mov r9, rsi
jmp 0x40e2f5
mov qword [rsp + 0x50], r9
lea rax, [r8 + r12*8 + 0x10]
jne 0x40e256
mov rsi, qword [rax]
mov edi, dword [rsi]
test edi, edi
je 0x40e675
mov qword [rsp + 0x58], r12
mov ebp, 1
mov r12d, 0x5b
lea rbx, [0x005fc53b]
cmp ebp, 1
mov r8d, 0x2c
cmove r8d, r12d
mov eax, ebp
mov r9d, dword [rsi + rax*4]
lea rcx, [rsp + 0xb0]
mov rdx, rbx
call fcn.00408100
add ebp, 1
cmp ebp, edi
jbe 0x40e111
mov eax, dword [rsp + 0xc8]
lea ecx, [rax + 1]
cmp ecx, dword [rsp + 0xc0]
lea rbx, [rsp + 0xb0]
mov r12, qword [rsp + 0x58]
jae 0x40e675
mov dword [rsp + 0xc8], ecx
mov rcx, qword [rsp + 0xb8]
mov byte [rcx + rax], 0x5d
jmp 0x40e68a
cmp al, 0xfa
jg 0x40e270
cmp al, 0xf9
jne 0x40e2c4
mov rax, qword [r8 + r12*8 + 0x10]
mov rsi, r9
movsx r9d, byte [rax]
mov r8, qword [rax + 0x38]
mov rcx, rbx
lea rdx, [0x005fc517]
call fcn.00408100
mov r9, rsi
jmp 0x40e2f5
mov eax, dword [rsp + 0xc8]
lea ecx, [rax + 1]
cmp ecx, dword [rsp + 0xc0]
jae 0x40e277
mov dword [rsp + 0xc8], ecx
mov rcx, qword [rsp + 0xb8]
mov byte [rcx + rax], 0x29
lea rbx, [rsp + 0xb0]
jmp 0x40e294
cmp al, 0xf6
jge 0x40e2a3
mov rax, qword [r8 + r12*8 + 0x10]
mov r8, qword [rax + 0x10]
mov rcx, rbx
lea rdx, [0x005fc533]
mov rsi, r9
call fcn.00408100
mov r9, rsi
jmp 0x40e2f5
mov ebp, 1
mov rax, qword [rsp + 0x48]
jmp 0x40de03
jne 0x40e2c4
mov rax, qword [r8 + r12*8 + 0x10]
mov r8, qword [rax]
movzx eax, byte [rax + 8]
lea rcx, [0x005fc4e0]
mov rsi, r9
mov r9, qword [rcx + rax*8]
mov rcx, rbx
lea rdx, [0x005fc50e]
call fcn.00408100
mov r9, rsi
jmp 0x40e2f5
mov rax, qword [rax]
mov r8, qword [rax]
mov rcx, rbx
lea rdx, [0x005fc51e]
call fcn.00408100
jmp 0x40e68a
mov rax, qword [r8 + r12*8 + 0x10]
jmp 0x40e2cc
lea rbx, [rsp + 0xb0]
mov rcx, rbx
lea rdx, [0x005fc4d1]
mov r8d, 1
call fcn.00408520
mov r8, qword [rsp + 0x40]
mov r9, r12
mov r12, qword [rsp + 0x58]
jmp 0x40e2fa
jne 0x40e2c4
mov rax, qword [r8 + r12*8 + 0x10]
movzx ecx, word [rax + 0x14]
mov edx, ecx
xor edx, 0xfffd
test edx, ecx
je 0x40e699
add rax, 8
jmp 0x40e2cc
lea rax, [r8 + r12*8]
add rax, 0x10
mov rsi, qword [rax]
test rsi, rsi
je 0x40e2fa
mov rcx, rsi
mov rdi, r9
call fcn.005f4bd8
and eax, 0x3fffffff
mov rcx, rbx
mov rdx, rsi
mov r8d, eax
call fcn.00408520
mov r9, rdi
mov r8, qword [rsp + 0x40]
mov al, byte [rsp + 0xcc]
mov ecx, eax
xor cl, 0xf8
test cl, al
mov rsi, qword [rsp + 0x78]
je 0x40e373
cmp byte [rsi + 0x67], 0
jne 0x40e373
cmp byte [rsi + 0x68], 0
jne 0x40e373
mov byte [rsi + 0x67], 1
cmp dword [rsi + 0xe4], 0
jle 0x40e332
mov dword [rsi + 0x198], 1
add dword [rsi + 0x1a0], 1
mov word [rsi + 0x1a4], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je 0x40e373
lea rdx, [0x005fc480]
mov rdi, r9
call fcn.00419aa0
mov r9, rdi
mov r8, qword [rsp + 0x40]
mov rax, qword [rsi + 0x160]
mov dword [rax + 0x18], 7
mov rax, qword [rsp + 0xb8]
test rax, rax
je 0x40e3a8
mov ecx, dword [rsp + 0xc8]
mov byte [rax + rcx], 0
cmp dword [rsp + 0xc4], 0
je 0x40e3a8
mov al, byte [rsp + 0xcd]
not al
or al, 0xfb
cmp al, 0xff
je 0x40e65a
mov rsi, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0x80]
mov rbp, qword [rsp + 0x90]
mov eax, dword [r14 + 0xc8]
not eax
or eax, 0xfffffff3
cmp eax, 0xfffffff7
jne 0x40e3f5
movsxd rdx, dword [r8 + r12*8 + 4]
mov eax, dword [rbx + 0x4c]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
je 0x40e417
mov rcx, rbp
call fcn.0044b3a0
mov r8, qword [rsp + 0x40]
jmp 0x40e421
mov eax, dword [rbx + 0x4c]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
je 0x40e449
mov rcx, rbp
mov rdx, r9
call fcn.0044b3a0
mov r8, qword [rsp + 0x40]
jmp 0x40e453
mov qword [rbx + 0x38], rdx
mov word [rbx + 0x4c], 4
movsxd rdx, dword [r8 + r12*8 + 8]
mov eax, dword [rbx + 0x84]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
je 0x40e4af
lea rcx, [rbx + 0x70]
call fcn.0044b3a0
mov r8, qword [rsp + 0x40]
jmp 0x40e4bc
mov qword [rbx + 0x38], r9
mov word [rbx + 0x4c], 4
lea rcx, [rbx + 0x70]
movzx eax, byte [r8 + r12*8]
lea rdx, [0x005fc550]
mov rdx, qword [rdx + rax*8]
mov qword [rsp + 0x20], 0
mov r8, 0xffffffffffffffff
mov r9b, 1
call fcn.00414070
mov rdi, qword [rsp + 0x40]
movsxd rdx, dword [rdi + r12*8 + 4]
mov eax, dword [rbx + 0xbc]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
je 0x40e4e2
lea rcx, [rbx + 0xa8]
call fcn.0044b3a0
mov rdi, qword [rsp + 0x40]
jmp 0x40e4f2
mov qword [rbx + 0x70], rdx
mov word [rbx + 0x84], 4
movsxd rdx, dword [r8 + r12*8 + 0xc]
mov eax, dword [rbx + 0xbc]
not eax
or eax, 0x6fff
cmp ax, 0xffff
je 0x40e51d
lea rcx, [rbx + 0xa8]
call fcn.0044b3a0
jmp 0x40e52d
mov qword [rbx + 0xa8], rdx
mov word [rbx + 0xbc], 4
movsxd rdx, dword [rdi + r12*8 + 8]
mov eax, dword [rbx + 0xf4]
not eax
or eax, 0x6fff
cmp ax, 0xffff
je 0x40e53b
lea rcx, [rbx + 0xe0]
call fcn.0044b3a0
mov rdi, qword [rsp + 0x40]
jmp 0x40e54b
mov qword [rbx + 0xa8], rdx
mov word [rbx + 0xbc], 4
mov di, 4
mov eax, 4
jmp 0x40e5f0
mov qword [rbx + 0xe0], rdx
mov word [rbx + 0xf4], 4
movsxd rdx, dword [rdi + r12*8 + 0xc]
mov eax, dword [rbx + 0x12c]
not eax
or eax, 0x6fff
cmp ax, 0xffff
je 0x40e576
lea rcx, [rbx + 0x118]
call fcn.0044b3a0
mov rdi, qword [rsp + 0x40]
jmp 0x40e586
mov qword [rbx + 0x118], rdx
mov word [rbx + 0x12c], 4
movzx edx, word [rdi + r12*8 + 2]
mov eax, dword [rbx + 0x19c]
not eax
or eax, 0x6fff
cmp ax, 0xffff
je 0x40e5ad
lea rcx, [rbx + 0x188]
call fcn.0044b3a0
jmp 0x40e5bd
mov qword [rbx + 0x188], rdx
mov word [rbx + 0x19c], 4
mov eax, dword [rbx + 0x1d4]
mov ecx, eax
xor ecx, 0x6fff
test cx, ax
je 0x40e5de
lea rcx, [rbx + 0x1c0]
call fcn.00449e10
jmp 0x40e5e7
mov word [rbx + 0x1d4], 1
mov di, 8
mov eax, 6
imul rax, rax, 0x38
add rbx, rax
lea rax, [fcn.00404730]
mov qword [rsp + 0x20], rax
mov rcx, rbx
mov rdx, rsi
mov r8, 0xffffffffffffffff
mov r9b, 1
call fcn.00414070
mov word [r14 + 0xc0], di
mov qword [r14 + 0xa0], rbp
mov rax, qword [rsp + 0x78]
cmp byte [rax + 0x67], 0
je 0x40e894
mov dword [r14 + 0x34], 7
mov ebp, 1
mov rax, qword [rsp + 0x88]
cmp qword [rax], 0
jg 0x40d2e1
jmp 0x40d2ec
mov rcx, rbx
mov rsi, r9
call fcn.00429a70
mov r9, rsi
mov r8, qword [rsp + 0x40]
mov rsi, rax
jmp 0x40e3b0
mov rcx, rbx
lea rdx, [0x005fc540]
mov r8d, 1
call fcn.00408520
mov r8, qword [rsp + 0x40]
mov r9, qword [rsp + 0x50]
jmp 0x40e2fa
mov ebp, ecx
not ebp
mov edx, ebp
or edx, 0xffffffdb
cmp edx, 0xffffffff
je 0x40e6c1
mov r8, qword [rax]
lea rbx, [rsp + 0xb0]
mov rcx, rbx
lea rdx, [0x005fc51e]
jmp 0x40e200
mov edx, ecx
xor edx, 0xfff7
test edx, ecx
je 0x40e6de
movq xmm2, qword [rax]
lea rbx, [rsp + 0xb0]
jmp 0x40e085
or ebp, 0xfffffffe
cmp ebp, 0xffffffff
lea rsi, str.NULL
lea rax, [0x005fc52c]
cmove rsi, rax
lea rbx, [rsp + 0xb0]
jmp 0x40e2d4
lea rdx, [0x005fc48e]
jmp 0x40e713
lea rdx, [0x005fc3a4]
mov ebp, 0x15
mov ecx, 0x15
call fcn.00408970
lea rax, [0x005fb813]
mov qword [rsp + 0x20], rax
lea rdx, [0x005fc003]
lea r8, [0x0060752f]
mov ecx, 0x15
mov r9d, 0x152c3
call fcn.00408970
jmp 0x40e8bd
not ebp
jmp 0x40e8a9
mov ebp, 0x11
jmp 0x40e8a9
mov ebx, eax
cmp eax, 7
mov rdi, qword [rsp + 0x68]
jne 0x40e7c7
cmp byte [rsi + 0x67], 0
jne 0x40e7c7
cmp byte [rsi + 0x68], 0
jne 0x40e7c7
mov byte [rsi + 0x67], 1
cmp dword [rsi + 0xe4], 0
jle 0x40e791
mov dword [rsi + 0x198], 1
add dword [rsi + 0x1a0], 1
mov word [rsi + 0x1a4], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je 0x40e7c7
lea rdx, [0x005fc480]
call fcn.00419aa0
mov rax, qword [rsi + 0x160]
mov dword [rax + 0x18], 7
mov rcx, qword [rdi + 0x190]
test rcx, rcx
je 0x40e804
mov eax, dword [rcx + 0x14]
mov edx, eax
not edx
or edx, 0xfdfd
movzx edx, dx
cmp edx, 0xfdfd
jne 0x40e7f7
cmp byte [rcx + 0x16], 1
jne 0x40e7f7
mov r15, qword [rcx + 8]
jmp 0x40e813
mov edx, eax
xor edx, 0xfffe
test dx, ax
je 0x40e809
xor r15d, r15d
jmp 0x40e813
mov dl, 1
call fcn.0044a3f0
mov r15, rax
mov rdx, qword [r14 + 0xa8]
mov rcx, rdi
call fcn.00408130
cmp byte [rdi + 0x67], 0
je 0x40e842
mov qword [r14 + 0xa8], 0
mov dword [r14 + 0x34], 7
mov ebp, 7
jmp 0x40e8ae
test r15, r15
je 0x40e879
mov rcx, r15
call fcn.005f4bd8
mov rsi, rax
add rsi, 1
mov rcx, rdi
mov rdx, rsi
call fcn.00429840
test rax, rax
je 0x40e879
mov rbp, rax
mov rcx, rax
mov rdx, r15
mov r8, rsi
call fcn.005f4c20
jmp 0x40e87b
xor ebp, ebp
mov qword [r14 + 0xa8], rbp
mov rcx, rdi
mov edx, ebx
call fcn.004456e0
mov ebp, eax
mov dword [r14 + 0x34], eax
jmp 0x40e8ae
mov dword [r14 + 0x34], 0
mov dword [r15 + 0x50], 0x64
mov ebp, 0x64
mov rdi, qword [rsp + 0x68]
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x40e8bd
call qword [0x005f60a0]
mov eax, ebp
movaps xmm6, xmmword [rsp + 0x1e0]
movaps xmm7, xmmword [rsp + 0x1f0]
add rsp, 0x208
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2