Function at 0x496e40
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x1a8
movaps xmmword [rsp + 0x190], xmm6
mov dword [rsp + 0x80], r9d
mov r15, r8
mov r14, rcx
mov rbp, qword [rsp + 0x210]
mov rsi, qword [rcx]
test rbp, rbp
setne al
test r8, r8
sete cl
cmp cl, al
je 0x496e89
test r15, r15
je 0x496ebb
mov r10, qword [r14 + 0x150]
test r10, r10
je 0x496ebb
test rbp, rbp
mov qword [rsp + 0x68], r10
je 0x496ed7
cmp byte [rsi + 0xc5], 0
je 0x496f91
lea rdx, [0x005fadb4]
mov rcx, r14
call fcn.00419aa0
movaps xmm6, xmmword [rsp + 0x190]
add rsp, 0x1a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x118], rdx
mov r12, qword [r10]
mov rcx, r12
mov edx, 0x5f
call fcn.005f4bc8
test rax, rax
je 0x4970ff
mov rbp, rax
mov byte [rax], 0
mov rcx, rsi
mov rdx, r12
xor r8d, r8d
call fcn.00426380
mov byte [rbp], 0x5f
test rax, rax
je 0x4970ff
mov rdi, rax
cmp byte [rax + 0x3f], 1
jne 0x4970ff
mov rbp, qword [rdi]
test rbp, rbp
je 0x496fad
mov rcx, rbp
call fcn.005f4bd8
mov r8d, eax
xor r8d, 0xc0000000
and r8d, eax
test r12, r12
je 0x496fb9
test r8d, r8d
je 0x496fc0
mov r10, rsi
lea eax, [r8 + 1]
xor edx, edx
lea r9, [0x005fade0]
mov esi, r8d
movzx ecx, byte [r12 + rdx]
movzx ebx, byte [rbp + rdx]
test rcx, rcx
je 0x496fc5
movzx ecx, byte [rcx + r9]
movzx ebx, byte [rbx + r9]
cmp cl, bl
jne 0x496fcb
add esi, 0xffffffff
add eax, 0xffffffff
add rdx, 1
cmp eax, 1
jg 0x496f60
mov rsi, r10
jmp 0x496fdb
mov qword [rsp + 0x118], rdx
lea rax, [rsi + 0xc5]
mov qword [rsp + 0x98], rax
jmp 0x497172
test r12, r12
jne 0x4970ff
xor r8d, r8d
neg rbp
sbb ecx, ecx
jmp 0x496fd3
xor r8d, r8d
jmp 0x496fdb
mov bl, byte [rbx + r9]
xor ecx, ecx
movzx eax, bl
sub ecx, eax
mov rsi, r10
test ecx, ecx
jne 0x4970ff
mov r8d, r8d
cmp byte [r12 + r8], 0x5f
jne 0x4970ff
mov rax, qword [rdi + 0x48]
mov rbp, qword [rax]
mov rdi, qword [rsi + 0x230]
test rdi, rdi
je 0x49702c
mov bl, byte [rbp]
test bl, bl
je 0x49703c
lea rdx, [rbp + 1]
xor eax, eax
lea rcx, [0x005fade0]
movzx ebx, bl
movzx ebx, byte [rbx + rcx]
add ebx, eax
imul eax, ebx, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x497010
jmp 0x49703e
lea rdx, [rsi + 0x224]
lea r10, [rsi + 0x228]
jmp 0x497055
xor eax, eax
xor edx, edx
div dword [rsi + 0x220]
shl rdx, 4
lea r10, [rdi + rdx]
add r10, 8
add rdx, rdi
mov ebx, dword [rdx]
lea r9, [0x0213b3c8]
test ebx, ebx
je 0x4970a6
mov r11, rsi
lea rdi, [0x005fade0]
mov r10, qword [r10]
add ebx, 0xffffffff
mov rsi, qword [r10 + 0x18]
xor ecx, ecx
jmp 0x497087
movzx edx, byte [rdx + rdi]
cmp dl, byte [rax + rdi]
jne 0x49709a
add rcx, 1
movzx edx, byte [rsi + rcx]
movzx eax, byte [rbp + rcx]
cmp dl, al
jne 0x49707a
test dl, dl
jne 0x497083
jmp 0x4970a0
test ebx, ebx
jne 0x49706c
jmp 0x4970a3
mov r9, r10
mov rsi, r11
mov rax, qword [r9 + 0x10]
test rax, rax
je 0x4970ff
mov rax, qword [rax]
cmp dword [rax], 3
jl 0x4970ff
mov rax, qword [rax + 0xb8]
test rax, rax
je 0x4970ff
add r12, r8
add r12, 1
mov rcx, r12
call rax
test eax, eax
je 0x4970ff
mov rbp, qword [rsp + 0x68]
mov eax, dword [rbp + 0x30]
mov ecx, eax
not ecx
and ecx, 0x9d0715cb
mov edx, eax
and edx, 0x62f8ea34
or edx, ecx
xor edx, 0x9d0705cb
and eax, 0x1000
or eax, edx
mov dword [rbp + 0x30], eax
lea rax, [rsi + 0xc5]
mov qword [rsp + 0x98], rax
cmp byte [rsi + 0xc5], 0
je 0x49713b
mov r10, qword [rsp + 0x68]
cmp byte [r10 + 0x3f], 0
mov eax, dword [rsi + 0xc0]
je 0x497142
test eax, eax
jne 0x496eac
mov dword [r10 + 0x28], 0
jmp 0x497172
mov r10, qword [rsp + 0x68]
jmp 0x497172
mov dword [r10 + 0x28], eax
cmp eax, 1
jne 0x497172
mov eax, dword [r10 + 0x30]
mov ecx, eax
not ecx
and ecx, 0x42eda33c
mov edx, eax
and edx, 0xbd125cc3
or edx, ecx
xor edx, 0x42eda33d
and eax, 1
or eax, edx
mov dword [r10 + 0x30], eax
mov qword [rsp + 0x70], rsi
mov eax, dword [rsp + 0x80]
not eax
or eax, 0xfffeffff
cmp eax, 0xffffffff
je 0x497278
mov eax, dword [r10 + 0x30]
mov ecx, eax
and ecx, 0x10000
xor eax, 0x10000
or eax, ecx
mov dword [r10 + 0x30], eax
movzx ebp, word [r10 + 0x36]
test bp, bp
jle 0x497278
mov edx, 8
mov r8d, 0xffffffff
xor ecx, ecx
mov r9b, 1
jmp 0x4971e5
add rcx, 1
movsx rax, bp
add rdx, 0x18
cmp rcx, rax
jge 0x497278
mov rsi, qword [r10 + 8]
mov ebx, dword [rsi + rdx]
mov edi, ebx
shr edi, 4
not edi
or edi, 0xfffffff0
cmp edi, 0xfffffffe
je 0x497210
not edi
test edi, edi
jne 0x497215
jmp 0x4977f5
mov byte [rsi + rdx + 4], 0x41
movzx edi, word [rsi + rdx + 0xa]
not edi
or edi, 0xfffe
cmp di, 0xffff
je 0x4971d0
mov eax, ebx
xor eax, 0xfffffff0
test eax, ebx
jne 0x4971d0
movsx rax, word [r10 + 0x34]
mov edi, 0xffffffff
xor rdi, rax
not rdi
and rdi, rax
cmp rcx, rdi
je 0x4971d0
test r9b, r9b
je 0x4971d0
or ebx, 2
and ebx, 0xfffffff2
mov dword [rsi + rdx], ebx
mov eax, dword [r10 + 0x30]
mov ebp, eax
and ebp, 0x800
xor eax, 0x800
or eax, ebp
mov dword [r10 + 0x30], eax
movzx ebp, word [r10 + 0x36]
jmp 0x4971d0
mov qword [rsp + 0x110], r15
mov qword [rsp + 0x88], r14
cmp byte [rsp + 0x80], 0
js 0x4972e2
mov r12, qword [rsp + 0x68]
mov rax, qword [r12 + 0x60]
test rax, rax
je 0x497310
mov rsi, qword [rsp + 0x70]
mov rcx, qword [rsi + 0x20]
add rcx, 0x18
mov edi, 0xffffffff
xor edx, edx
mov r15, qword [rsp + 0x88]
nop dword [rax]
add rdx, 1
add edi, 1
lea rbp, [rcx + 0x20]
cmp qword [rcx], rax
mov rcx, rbp
jne 0x4972c0
mov rdx, qword [r12 + 0x20]
test rdx, rdx
jne 0x497330
jmp 0x49741e
mov rsi, qword [rsp + 0x68]
mov eax, dword [rsi + 0x30]
mov ecx, eax
not ecx
mov edx, ecx
or edx, 0xfffffff7
cmp edx, 0xffffffff
je 0x4978a8
lea rdx, [0x0060310f]
mov rcx, qword [rsp + 0x88]
jmp 0x496eb6
mov edi, 0xffff8000
mov r15, qword [rsp + 0x88]
mov rsi, qword [rsp + 0x70]
mov rdx, qword [r12 + 0x20]
test rdx, rdx
je 0x49741e
xorps xmm0, xmm0
movups xmmword [rsp + 0x140], xmm0
movups xmmword [rsp + 0x130], xmm0
mov qword [rsp + 0x150], 0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xd0], xmm0
movaps xmmword [rsp + 0xe0], xmm0
movaps xmmword [rsp + 0xf0], xmm0
movaps xmmword [rsp + 0x100], xmm0
mov dword [rsp + 0xa0], 1
mov rax, qword [r12]
mov qword [rsp + 0xb8], rax
mov qword [rsp + 0xc8], r12
mov dword [rsp + 0xec], 0xffffffff
mov rax, qword [r15]
mov rax, qword [rax + 0x20]
mov rcx, qword [r12 + 0x60]
xor ebp, ebp
cmp rcx, qword [rax + 0x38]
setne bpl
mov qword [rsp + 0x120], r15
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x128], rax
shl ebp, 0x12
or ebp, 0x10004
mov dword [rsp + 0x148], ebp
lea rcx, [rsp + 0x120]
call fcn.004d5870
cmp dword [r15 + 0x30], 0
je 0x49741e
mov rdx, qword [r12 + 0x20]
test rdx, rdx
je 0x497415
mov rcx, rsi
call fcn.0047fbe0
mov qword [r12 + 0x20], 0
mov ecx, dword [r12 + 0x30]
mov edx, ecx
xor edx, 0xffffff9f
movzx eax, word [r12 + 0x36]
test edx, ecx
mov dword [rsp + 0x78], edi
je 0x4977ae
test ax, ax
jle 0x4977e6
xor esi, esi
lea r13, [rsp + 0x130]
xorps xmm6, xmm6
lea rbx, [rsp + 0xa0]
xor r14d, r14d
mov dword [rsp + 0x60], 0
jmp 0x49748c
add dword [rsp + 0x60], 1
add r14, 1
movsx rax, word [r12 + 0x36]
add rsi, 0x18
cmp r14, rax
jge 0x4977a7
mov rax, qword [r12 + 8]
movzx ecx, word [rax + rsi + 0x12]
not ecx
or ecx, 0xff9f
cmp cx, 0xffff
je 0x497470
movzx eax, word [rax + rsi + 0x10]
test eax, eax
je 0x4974b9
cmp byte [r12 + 0x3f], 0
je 0x497716
xor edi, edi
movups xmmword [r13 + 0x10], xmm6
movups xmmword [r13], xmm6
mov qword [r13 + 0x20], 0
movaps xmmword [rsp + 0xa0], xmm6
movaps xmmword [rsp + 0x100], xmm6
movaps xmmword [rsp + 0xf0], xmm6
movaps xmmword [rsp + 0xe0], xmm6
movaps xmmword [rsp + 0xd0], xmm6
movaps xmmword [rsp + 0xc0], xmm6
movaps xmmword [rsp + 0xb0], xmm6
mov dword [rsp + 0xa0], 1
mov rax, qword [r12]
mov qword [rsp + 0xb8], rax
mov qword [rsp + 0xc8], r12
mov dword [rsp + 0xec], 0xffffffff
mov rax, qword [r15]
mov rdx, qword [rax + 0x20]
mov rbp, qword [r12 + 0x60]
xor ecx, ecx
cmp rbp, qword [rdx + 0x38]
setne cl
mov qword [rsp + 0x120], r15
mov qword [rsp + 0x128], rbx
shl ecx, 0x12
or ecx, 0x10008
mov dword [rsp + 0x148], ecx
test rdi, rdi
je 0x497475
mov dword [rsp + 0x148], ecx
mov qword [rsp + 0x160], r15
lea rcx, [fcn.004d5a10]
mov qword [rsp + 0x168], rcx
lea rcx, [0x004d8f00]
mov qword [rsp + 0x170], rcx
mov qword [rsp + 0x178], 0
lea rcx, [rsp + 0x120]
mov qword [rsp + 0x188], rcx
mov ecx, dword [rdi + 0x28]
add ecx, dword [r15 + 0x12c]
mov dword [r15 + 0x12c], ecx
mov r8d, dword [rax + 0x94]
cmp r8d, ecx
jge 0x4975e4
mov rcx, r15
lea rdx, [0x00603afc]
call fcn.00419aa0
jmp 0x497660
lea rcx, [rsp + 0x160]
mov rdx, rdi
call fcn.004cea30
mov r8, qword [rsp + 0x160]
mov ecx, dword [rdi + 0x28]
sub dword [r8 + 0x12c], ecx
mov ecx, dword [rsp + 0x148]
not ecx
or ecx, 0xffff7fef
mov edx, ecx
not edx
mov r9, rbx
mov ebx, dword [rdi + 4]
mov ebp, ebx
not ebp
mov eax, ebp
and eax, 0x224dd4e6
and ebx, 0xddb22b19
or ebx, eax
or ebp, ecx
and ecx, 0x224dd4e6
movzx eax, dl
or eax, ecx
xor eax, ebx
mov rbx, r9
not ebp
or ebp, eax
mov dword [rdi + 4], ebp
cmp dword [rsp + 0x144], 0
jg 0x497660
cmp dword [r8 + 0x30], 0
jle 0x497475
mov rbp, qword [r12 + 8]
mov edx, 0x48
mov rcx, qword [rsp + 0x70]
call fcn.00429840
mov rdi, rax
test rax, rax
je 0x4976a3
movups xmmword [rdi], xmm6
movups xmmword [rdi + 0x30], xmm6
movups xmmword [rdi + 0x20], xmm6
movups xmmword [rdi + 0x10], xmm6
mov qword [rdi + 0x40], 0
mov byte [rdi], 0x79
mov word [rdi + 0x32], 0xffff
mov dword [rdi + 0x28], 1
mov r12, qword [r12 + 0x50]
movzx eax, word [rbp + rsi + 0x10]
test eax, eax
sete cl
test r12, r12
sete dl
test dl, cl
jne 0x4976ca
xor dl, cl
jne 0x4976ca
cmp dword [r12], eax
jge 0x497753
test r12, r12
je 0x49773f
movsxd rax, dword [r12]
lea ecx, [rax + 1]
mov word [rbp + rsi + 0x10], cx
cmp dword [r12 + 4], eax
jle 0x49778a
lea ecx, [rax + 1]
mov dword [r12], ecx
shl rax, 5
movups xmmword [r12 + rax + 0x10], xmm6
mov qword [r12 + rax + 0x20], 0
mov qword [r12 + rax + 8], rdi
mov rax, qword [rsp + 0x68]
mov qword [rax + 0x50], r12
mov r12, rax
jmp 0x497475
mov rcx, qword [r12 + 0x50]
test rcx, rcx
je 0x4974b9
cmp dword [rcx], eax
jl 0x4974b9
add eax, 0xffffffff
cdqe
shl rax, 5
mov rdi, qword [rcx + rax + 8]
jmp 0x4974bb
mov word [rbp + rsi + 0x10], 1
mov rcx, qword [r15]
mov rdx, rdi
call fcn.0050cd80
jmp 0x497798
lea ecx, [rax - 1]
movsxd rcx, ecx
shl rcx, 5
mov rdx, qword [r12 + rcx + 8]
test rdx, rdx
je 0x497774
mov rcx, qword [r15]
call fcn.00468370
movzx eax, word [rbp + rsi + 0x10]
movzx eax, ax
shl rax, 5
mov qword [rax + r12 - 0x18], rdi
mov r12, qword [rsp + 0x68]
jmp 0x497475
mov rcx, qword [r15]
mov rdx, r12
mov r8, rdi
call fcn.0050ce50
mov r12, qword [rsp + 0x68]
mov qword [r12 + 0x50], rax
jmp 0x497475
cmp dword [rsp + 0x60], 0
je 0x4977e6
test ax, ax
jle 0x49783f
mov rcx, qword [r12 + 8]
movzx edx, ax
lea ebp, [rdx + 1]
add rcx, 0xd
xor eax, eax
nop dword [rax + rax]
movzx ebx, byte [rcx]
add eax, ebx
add edx, 0xffffffff
add ebp, 0xffffffff
add rcx, 0x18
cmp ebp, 1
jg 0x4977d0
jmp 0x497841
lea rdx, [0x00603161]
mov rcx, r15
jmp 0x496eb6
xor r8, rcx
not r8
and r8, rcx
mov rdi, qword [r10]
lea rax, [r8 + r8*2]
mov rbx, qword [rsi + rax*8]
movzx eax, word [rsi + rax*8 + 0x12]
not eax
or eax, 0xfffb
cmp ax, 0xffff
je 0x497c05
mov rcx, rbx
call fcn.005f4bd8
add rax, rbx
add rax, 1
mov qword [rsp + 0x20], rax
lea rdx, [0x006030d3]
jmp 0x497c0c
xor eax, eax
movzx ebp, word [r12 + 0x34]
shr ebp, 0xf
add ebp, eax
shl ebp, 2
cmp ebp, 8
jae 0x497877
test ebp, ebp
je 0x497c1f
mov ax, 0x28
add eax, 0xfffffff6
mov rcx, rbp
add rcx, rbp
cmp rbp, 4
mov rbp, rcx
jb 0x497860
jmp 0x497994
mov ax, 0x28
cmp ebp, 0x100
jb 0x49796a
mov ax, 0x28
mov rdx, rbp
nop
add eax, 0x28
shr rdx, 4
cmp rbp, 0xfff
mov rbp, rdx
ja 0x497890
jmp 0x49796d
mov edx, ecx
or edx, 0xfffffffb
cmp edx, 0xffffffff
mov r14, qword [rsp + 0x88]
je 0x497d77
and ecx, 0xd2cfc1d5
mov edx, eax
and edx, 0x2d303e2a
or edx, ecx
xor edx, 0xd2cfc355
and eax, 0x280
or eax, edx
mov dword [rsi + 0x30], eax
mov r15, qword [r14]
mov rbx, qword [r14 + 0x10]
mov ecx, dword [r15 + 0xc8]
not ecx
or ecx, 0xfffffffd
cmp ecx, 0xffffffff
jne 0x497fa0
movzx edx, word [rsi + 0x36]
test dx, dx
jle 0x497f8e
mov r8, rbx
mov eax, 8
xor ecx, ecx
jmp 0x497928
add rcx, 1
movsx rbp, dx
add rax, 0x18
cmp rcx, rbp
jge 0x497f88
mov rbp, qword [rsi + 8]
movzx ebx, word [rbp + rax + 0xa]
not ebx
or ebx, 0xfffe
cmp bx, 0xffff
je 0x497913
mov edi, dword [rbp + rax]
mov ebx, edi
not ebx
or ebx, 0xfffffff0
cmp ebx, 0xffffffff
jne 0x497913
mov edx, edi
xor edx, 0xf
and edx, edi
mov ebx, edx
and ebx, 2
xor edx, 2
or edx, ebx
mov dword [rbp + rax], edx
movzx edx, word [rsi + 0x36]
jmp 0x497913
mov rdx, rbp
cmp rdx, 0x10
jb 0x497991
mov rcx, rdx
nop word [rax + rax]
shr rcx, 1
add eax, 0xa
cmp rdx, 0x1f
mov rdx, rcx
ja 0x497980
jmp 0x497994
mov rcx, rdx
mov rdx, rcx
movabs rbp, 0x7ffffffffffffff8
xor rdx, rbp
and rdx, rcx
lea rcx, [0x00607550]
add ax, word [rcx + rdx*2]
add eax, 0xfffffff6
mov word [r12 + 0x3c], ax
mov r13, qword [r12 + 0x10]
test r13, r13
je 0x497c35
movabs r14, 0xd552948f7beb6f92
movabs rax, 0x820c2a4fb169a41b
mov ecx, eax
not ecx
or ecx, eax
mov dword [rsp + 0x60], ecx
movabs rax, 0x7ffffffffffffffe
and rax, r14
jmp 0x497a14
xor esi, esi
mov word [r13 + 0x5c], si
mov r13, qword [r13 + 0x28]
test r13, r13
je 0x497c35
movzx ebp, word [r13 + 0x60]
xor r10d, r10d
test ebp, ebp
je 0x497a00
mov rbx, qword [r13 + 0x18]
mov rbx, qword [rbx + 8]
mov edi, ebp
cmp ebp, 1
mov ecx, 1
cmovbe ebp, ecx
mov rsi, qword [r13 + 8]
mov r12d, ebp
and r12d, dword [rsp + 0x60]
and r12d, 1
cmp di, 1
jne 0x497a80
xor r15d, r15d
test r12, r12
mov r12, qword [rsp + 0x68]
je 0x497b2f
movzx ebp, word [rsi + r15*2]
test bp, bp
js 0x497b24
lea rcx, [rbp*2]
add rcx, rbp
movzx ebp, byte [rbx + rcx*8 + 0xd]
jmp 0x497b29
movabs rcx, 0x88dcae339a5b3247
mov r11d, ecx
not r11d
or r11d, ecx
and r11d, ebp
and r11d, 0xfffffffe
xor r15d, r15d
xor r10d, r10d
jmp 0x497abd
add r10d, r9d
add r15, 2
add r11, 0xfffffffffffffffe
je 0x497a4e
movzx edi, word [rsi + r15*2]
mov r9d, 1
mov r8d, 1
test di, di
js 0x497add
lea rdi, [rdi + rdi*2]
movzx r8d, byte [rbx + rdi*8 + 0xd]
add r10d, r8d
mov rbp, r15
not rbp
mov rdx, r14
not rdx
and rbp, r14
mov rcx, r15
and rcx, rdx
or rcx, rbp
mov ebp, edx
and ebp, 1
or rbp, rax
xor rbp, rcx
or edx, r14d
and edx, r15d
and edx, 1
or rdx, rbp
movzx edi, word [rsi + rdx*2]
test di, di
js 0x497ab0
lea rcx, [rdi + rdi*2]
movzx r9d, byte [rbx + rcx*8 + 0xd]
jmp 0x497ab0
mov ebp, 1
add ebp, r10d
mov r10d, ebp
shl r10d, 2
cmp r10d, 8
jae 0x497b70
test r10d, r10d
mov r15, qword [rsp + 0x88]
je 0x497a00
mov si, 0x28
nop
add esi, 0xfffffff6
lea rdi, [r10 + r10]
cmp r10, 4
mov r10, rdi
jb 0x497b50
jmp 0x497bc2
mov si, 0x28
cmp r10d, 0x100
mov r15, qword [rsp + 0x88]
jb 0x497bf7
mov si, 0x28
mov rbp, r10
add esi, 0x28
shr rbp, 4
cmp r10, 0xfff
mov r10, rbp
ja 0x497b90
mov rdi, rbp
cmp rbp, 0x10
jb 0x497bc2
mov rdi, rbp
shr rdi, 1
add esi, 0xa
cmp rbp, 0x1f
mov rbp, rdi
ja 0x497bb0
mov rcx, rdi
movabs rdx, 0x7ffffffffffffff8
xor rcx, rdx
and rcx, rdi
lea rdx, [0x00607550]
add si, word [rdx + rcx*2]
add esi, 0xfffffff6
mov word [r13 + 0x5c], si
mov r13, qword [r13 + 0x28]
test r13, r13
jne 0x497a14
jmp 0x497c35
mov rbp, r10
mov rdi, rbp
cmp rbp, 0x10
jae 0x497bb0
jmp 0x497bc2
lea rdx, [0x006030f4]
mov rcx, r14
mov r8, rdi
mov r9, rbx
call fcn.00419aa0
jmp 0x496ebb
xor eax, eax
mov word [r12 + 0x3c], ax
mov r13, qword [r12 + 0x10]
test r13, r13
jne 0x4979c9
mov r14, qword [rsp + 0x98]
cmp byte [r14], 0
mov r13, qword [rsp + 0x110]
mov rsi, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x210]
je 0x497ce4
mov rdx, qword [r12]
mov rcx, qword [r12 + 0x60]
add rcx, 8
mov r8, r12
call fcn.004790f0
test rax, rax
je 0x497d36
cmp byte [rsi + 0x67], 0
jne 0x496ebb
cmp byte [rsi + 0x68], 0
jne 0x496ebb
mov byte [rsi + 0x67], 1
cmp dword [rsi + 0xe4], 0
jle 0x497ca5
mov dword [rsi + 0x198], 1
add dword [rsi + 0x1a0], 1
mov word [rsi + 0x1a4], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
je 0x496ebb
lea rdx, [0x005fc480]
call fcn.00419aa0
mov rax, qword [rsi + 0x160]
mov dword [rax + 0x18], 7
jmp 0x496ebb
mov rcx, r15
call fcn.004c6120
test rax, rax
je 0x496ebb
mov rdi, rax
movsxd rax, dword [rax + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x497d8e
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 0x7a
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x497da9
mov qword [r15 + 0x150], 0
mov eax, dword [rsi + 0x2c]
mov ecx, eax
and ecx, 1
xor eax, 1
or eax, ecx
mov dword [rsi + 0x2c], eax
mov rcx, qword [r12]
lea rdx, [0x00603255]
call fcn.005f4bf0
test eax, eax
jne 0x49837e
mov rax, qword [r12 + 0x60]
mov qword [rax + 0x68], r12
jmp 0x49837e
mov r8, qword [rsi]
lea rdx, [0x00603141]
mov rcx, r14
call fcn.00419aa0
jmp 0x496ebb
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x7a
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
cmp byte [r12 + 0x3f], 0
lea rax, [0x0060318d]
lea r8, [0x00603193]
cmove r8, rax
lea rax, [0x005fd549]
lea rbx, [0x00603035]
cmove rbx, rax
test rbp, rbp
mov qword [rsp + 0x60], rdi
je 0x497dfd
cmp byte [r15 + 0x124], 0
je 0x497f08
mov dword [r15 + 0x18], 1
add dword [r15 + 0x30], 1
jmp 0x496ebb
lea rcx, [r15 + 0x110]
cmp dword [rsp + 0x80], 0
cmove rcx, r13
mov rdx, qword [rcx]
mov rax, qword [r15 + 0x100]
mov r9d, edx
sub r9d, eax
cmp byte [rdx], 0x3b
je 0x497e29
add r9d, dword [rcx + 8]
mov qword [rsp + 0x20], rax
lea rdx, [0x00603198]
mov rcx, rsi
call fcn.00419c10
mov r15, rax
mov r9, rbx
mov rax, qword [rsi + 0x20]
mov r13d, dword [rsp + 0x78]
movsxd rdi, r13d
shl rdi, 5
mov r8, qword [rax + rdi]
mov rax, qword [r12]
mov rbx, rsi
mov rsi, qword [rsp + 0x88]
mov ecx, dword [rsi + 0x78]
mov edx, dword [rsi + 0x7c]
mov dword [rsp + 0x40], ecx
mov qword [rsp + 0x38], r15
mov dword [rsp + 0x30], edx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rax
lea rdx, [0x006031a7]
mov rcx, rsi
call fcn.004d54f0
mov rcx, rbx
mov rdx, r15
mov r15, rsi
call fcn.00408130
mov rax, qword [rsi]
mov rcx, qword [rsi + 0x10]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + rdi + 0x18]
mov eax, dword [rax]
add eax, 1
movsxd rdx, dword [rcx + 0x90]
cmp dword [rcx + 0x94], edx
jle 0x4981a6
mov rbx, rbp
lea ebp, [rdx + 1]
mov dword [rcx + 0x90], ebp
mov rbp, rbx
mov rcx, qword [rcx + 0x88]
lea rdx, [rdx + rdx*2]
mov dword [rcx + rdx*8], 0x64
mov dword [rcx + rdx*8 + 4], r13d
mov dword [rcx + rdx*8 + 8], 1
mov dword [rcx + rdx*8 + 0xc], eax
mov qword [rcx + rdx*8 + 0x10], 0
jmp 0x4981bd
mov esi, dword [r15 + 0x38]
lea eax, [rsi + 3]
mov dword [rsp + 0x80], eax
mov dword [r15 + 0x38], eax
mov rax, qword [r15 + 0xa0]
test rax, rax
cmove rax, r15
mov byte [rax + 0x21], 1
mov r9d, dword [r15 + 0x7c]
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
mov qword [rsp + 0x90], rbx
jle 0x4983bb
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
movabs rdx, 0x100000071
mov qword [rcx + rax*8], rdx
mov dword [rcx + rax*8 + 8], r9d
mov edx, dword [rsp + 0x78]
mov dword [rcx + rax*8 + 0xc], edx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x4983d6
mov eax, dword [rsi + 0x30]
mov rbx, r8
mov ecx, eax
and ecx, 0x800
xor eax, 0x800
or eax, ecx
mov dword [rsi + 0x30], eax
mov eax, dword [r14 + 0xc0]
test eax, eax
je 0x497fe0
jns 0x497fb6
mov eax, dword [rbx + 0x90]
add eax, 0xffffffff
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x497fc8
lea rax, [0x0213b3e8]
jmp 0x497fd9
cdqe
lea rax, [rax + rax*2]
shl rax, 3
add rax, qword [rbx + 0x88]
mov dword [rax + 0xc], 2
movzx eax, word [rsi + 0x34]
test ax, ax
js 0x498015
mov rcx, qword [rsi + 8]
lea rax, [rax + rax*2]
mov rsi, qword [rcx + rax*8]
test rsi, rsi
je 0x49813e
mov rcx, rsi
call fcn.005f4bd8
mov r12, rax
and r12d, 0x3fffffff
jmp 0x498141
mov r12, qword [rsi + 0x10]
test r12, r12
mov qword [rsp + 0x90], r15
mov qword [rsp + 0x78], rbx
je 0x498046
mov eax, dword [r12 + 0x64]
mov ecx, eax
xor ecx, 0xfffffffc
and ecx, eax
cmp ecx, 2
je 0x498049
mov r12, qword [r12 + 0x28]
test r12, r12
jne 0x49802b
xor r12d, r12d
movzx r13d, word [r12 + 0x5e]
mov r9d, 1
cmp r13w, 2
jb 0x498126
mov r11, qword [r12 + 8]
mov r9d, 1
mov r15d, 1
lea r8, [0x005fade0]
jmp 0x4980bc
mov rax, qword [r12 + 0x40]
mov rcx, qword [rax + r15*8]
movsxd rdx, r9d
mov qword [rax + rdx*8], rcx
mov rax, qword [r12 + 0x38]
mov cl, byte [rax + r15]
mov byte [rax + rdx], cl
mov r11, qword [r12 + 8]
movzx eax, word [r11 + r15*2]
add r9d, 1
mov word [r11 + rdx*2], ax
movzx r13d, word [r12 + 0x5e]
add r15, 1
movzx eax, r13w
cmp r15, rax
jae 0x498126
test r9d, r9d
jle 0x49807a
movzx r14d, word [r11 + r15*2]
mov r10d, r9d
xor eax, eax
jmp 0x4980d6
add rax, 1
cmp rax, r10
je 0x49807a
cmp word [r11 + rax*2], r14w
jne 0x4980cd
mov rcx, qword [r12 + 0x40]
mov rbx, qword [rcx + rax*8]
mov rbp, qword [rcx + r15*8]
xor edi, edi
jmp 0x4980ff
movzx edx, byte [rsi + r8]
cmp dl, byte [rcx + r8]
jne 0x4980cd
add rdi, 1
movzx esi, byte [rbx + rdi]
movzx ecx, byte [rbp + rdi]
cmp sil, cl
jne 0x4980f0
test sil, sil
jne 0x4980fb
add word [r12 + 0x60], 0xffff
add r15, 1
movzx eax, r13w
cmp r15, rax
jb 0x4980bc
mov word [r12 + 0x5e], r9w
mov r15, qword [rsp + 0x90]
mov rbx, qword [rsp + 0x78]
jmp 0x498671
xor r12d, r12d
lea edx, [r12 + 0x49]
mov rcx, r15
call fcn.00429840
mov rbp, rax
test rax, rax
je 0x4982c6
xorps xmm0, xmm0
movups xmmword [rbp], xmm0
movups xmmword [rbp + 0x30], xmm0
movups xmmword [rbp + 0x20], xmm0
movups xmmword [rbp + 0x10], xmm0
mov qword [rbp + 0x40], 0
mov byte [rbp], 0x3b
mov word [rbp + 0x32], 0xffff
mov rcx, rbp
add rcx, 0x48
mov qword [rbp + 8], rcx
test r12d, r12d
je 0x4982b8
mov edi, r12d
mov rdx, rsi
mov r8, rdi
call fcn.005f4c20
jmp 0x4982ba
mov dword [rsp + 0x20], eax
mov edx, 0x64
mov r8d, r13d
mov r9d, 1
call fcn.0047df60
mov eax, dword [r12 + 0x30]
mov ecx, eax
xor ecx, 0xfffffff7
test ecx, eax
mov rsi, qword [rsp + 0x70]
mov r13, qword [rsp + 0x110]
je 0x498205
cmp byte [r15 + 0x124], 0
jne 0x498205
mov rax, qword [rsi + 0x20]
mov rcx, qword [rax + rdi + 0x18]
cmp qword [rcx + 0x68], 0
jne 0x498205
mov r8, qword [rax + rdi]
lea rdx, [0x00603209]
mov rcx, r15
call fcn.004d54f0
mov r8, qword [r12]
lea rdx, [0x00603233]
mov rcx, rsi
call fcn.00419c10
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x30], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rdi, qword [rsp + 0x60]
mov rcx, rdi
mov edx, 0x95
mov r8d, dword [rsp + 0x78]
xor r9d, r9d
call fcn.004c62a0
mov eax, dword [rdi + 0x90]
test eax, eax
jle 0x498266
mov rcx, qword [rdi + 0x88]
add eax, 0xffffffff
lea rax, [rax + rax*2]
mov word [rcx + rax*8 + 2], 0
mov r8, qword [rdi]
mov r9d, dword [r8 + 0x28]
test r9d, r9d
jle 0x49835e
mov ebx, dword [rdi + 0xcc]
mov rcx, qword [r8 + 0x20]
mov rcx, qword [rcx + 8]
cmp byte [rcx + 0x11], 0
je 0x4982a0
mov ecx, dword [rdi + 0xd0]
mov eax, ecx
and eax, 1
xor ecx, 1
or ecx, eax
mov dword [rdi + 0xd0], ecx
mov r11, rbp
mov ecx, ebx
cmp r9d, 1
jne 0x498326
and ecx, 1
xor ebx, 1
or ebx, ecx
jmp 0x49834b
xor edi, edi
mov byte [rbp + rdi + 0x48], 0
mov dword [rbp + 0x28], 1
mov rcx, qword [r14]
mov rdx, rbp
call fcn.0050cd80
test rax, rax
je 0x498318
cmp byte [r14 + 0x124], 2
mov rsi, qword [rsp + 0x68]
jb 0x4985e6
mov rcx, qword [r14 + 0x190]
test rcx, rcx
je 0x4985e6
lea rbp, [rsi + 0x34]
mov rdx, qword [rax + 8]
cmp qword [rcx], rbp
je 0x4985e3
mov rcx, qword [rcx + 0x18]
test rcx, rcx
jne 0x498301
jmp 0x4985e6
mov rax, qword [rsp + 0x68]
and byte [rax + 0x30], 0x7f
jmp 0x497292
not ecx
and ecx, 0xebd5be3d
mov eax, ebx
and eax, 0x142a41c2
or eax, ecx
xor eax, 0xebd5be3e
and ebx, 3
or ebx, eax
cmp r9d, 2
jne 0x498563
mov rdi, qword [rsp + 0x60]
mov dword [rdi + 0xcc], ebx
mov rsi, qword [rsp + 0x70]
mov rbp, r11
mov rax, qword [rdi + 0x18]
mov rcx, qword [rax + 0xa0]
test rcx, rcx
cmove rcx, rax
mov byte [rcx + 0x21], 1
cmp byte [r14], 0
jne 0x497c5c
test rbp, rbp
mov rax, qword [rsp + 0x118]
jne 0x496ebb
cmp byte [r12 + 0x3f], 0
jne 0x496ebb
cmp qword [rax], 0
cmovne r13, rax
mov eax, dword [r13]
sub eax, dword [r15 + 0x100]
add eax, 0xd
mov dword [r12 + 0x40], eax
jmp 0x496ebb
mov eax, dword [rsp + 0x78]
mov dword [rsp + 0x20], eax
mov rcx, rdi
mov edx, 0x71
mov r8d, 1
call fcn.0047df60
movsxd rbx, dword [rdi + 0x90]
test rbx, rbx
jle 0x4983f7
mov rax, qword [rdi + 0x88]
lea ecx, [rbx - 1]
lea rcx, [rcx + rcx*2]
mov word [rax + rcx*8 + 2], 0x10
mov rcx, rdi
lea edi, [rsi + 1]
mov dword [r15 + 0x34], 2
lea eax, [rbx + 1]
cmp dword [rcx + 0x94], ebx
jle 0x498443
mov dword [rcx + 0x90], eax
mov rcx, qword [rcx + 0x88]
lea rdx, [rbx + rbx*2]
mov dword [rcx + rdx*8], 0xa
mov dword [rcx + rdx*8 + 4], edi
mov dword [rcx + rdx*8 + 8], 0
mov dword [rcx + rdx*8 + 0xc], eax
mov qword [rcx + rdx*8 + 0x10], 0
jmp 0x498457
mov dword [rsp + 0x20], eax
mov edx, 0xa
mov r8d, edi
xor r9d, r9d
call fcn.0047df60
cmp dword [r15 + 0x30], 0
jne 0x496ebb
mov rcx, r15
mov rdx, rbp
mov r8b, 0x41
call fcn.004d5000
test rax, rax
je 0x496ebb
movzx ecx, word [rax + 0x36]
mov word [r12 + 0x38], cx
mov word [r12 + 0x36], cx
mov rcx, qword [rax + 8]
mov qword [r12 + 8], rcx
mov word [rax + 0x36], 0
mov qword [rax + 8], 0
mov rcx, qword [rsp + 0x70]
test rcx, rcx
je 0x4984b4
cmp qword [rcx + 0x300], 0
jne 0x4984c7
mov ecx, dword [rax + 0x2c]
lea edx, [rcx - 1]
mov dword [rax + 0x2c], edx
cmp ecx, 1
jne 0x4984cf
mov rcx, qword [rsp + 0x70]
mov rdx, rax
call fcn.0047f4d0
mov byte [rsp + 0xa0], 0xd
mov dword [rsp + 0xa4], edi
mov dword [rsp + 0xa8], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xac], 0
lea r8, [rsp + 0xa0]
mov rcx, r15
mov rdx, rbp
call fcn.0049e470
cmp dword [r15 + 0x30], 0
jne 0x496ebb
mov rbp, qword [rsp + 0x60]
movsxd rax, dword [rbp + 0x90]
cmp dword [rbp + 0x94], eax
jle 0x498ce0
lea ecx, [rax + 1]
mov dword [rbp + 0x90], ecx
mov rcx, qword [rbp + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x44
mov dword [rcx + rax*8 + 4], edi
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
jmp 0x498cfb
mov ecx, 2
mov r10d, 0x48
jmp 0x498583
or ebx, edi
add rcx, 1
add r10, 0x20
cmp r9, rcx
je 0x49834b
mov edx, 1
shl edx, cl
mov edi, 0xfffffffe
rol edi, cl
mov eax, ebx
not eax
mov ebp, 0x459009d3
btr ebp, ecx
mov esi, edx
and esi, 0xba6ff62c
or esi, ebp
or edi, eax
and eax, 0x459009d3
and ebx, 0xba6ff62c
or ebx, eax
xor ebx, esi
not edi
mov rax, qword [r8 + 0x20]
mov rax, qword [rax + r10]
cmp byte [rax + 0x11], 0
je 0x498570
mov rsi, qword [rsp + 0x60]
mov eax, dword [rsi + 0xd0]
mov ebp, eax
and ebp, edx
xor eax, edx
or eax, ebp
mov dword [rsi + 0xd0], eax
jmp 0x498570
mov qword [rcx], rdx
mov cl, byte [r14 + 0x122]
mov byte [rax + 0x18], cl
mov word [rsi + 0x34], 0xffff
movzx ecx, byte [rsi + 0x3e]
xorps xmm0, xmm0
movups xmmword [rsp + 0x30], xmm0
mov dword [rsp + 0x28], ecx
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x50], 2
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0
mov rcx, r14
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.00499f20
cmp dword [r14 + 0x30], 0
je 0x49864c
mov eax, dword [rsi + 0x30]
mov ecx, eax
xor ecx, 0x80
and ecx, eax
mov dword [rsi + 0x30], ecx
jmp 0x497292
mov r12, qword [rsi + 0x10]
test r12, r12
je 0x49866e
mov eax, dword [r12 + 0x64]
not eax
or eax, 0xfffffffc
cmp eax, 0xfffffffd
je 0x498671
mov r12, qword [r12 + 0x28]
test r12, r12
jne 0x498655
xor r12d, r12d
mov eax, dword [r12 + 0x64]
mov ecx, eax
and ecx, 0x20
mov edx, eax
xor edx, 0x20
or edx, ecx
mov dword [r12 + 0x64], edx
mov ecx, dword [r15 + 0xc8]
not ecx
or ecx, 0xfffffffd
cmp ecx, 0xffffffff
jne 0x4986a7
mov ecx, eax
and ecx, 0x28
xor eax, 0x28
or eax, ecx
mov dword [r12 + 0x64], eax
movzx eax, word [r12 + 0x5e]
mov qword [rsp + 0x60], rax
mov word [r12 + 0x60], ax
test rbx, rbx
je 0x4986f7
mov eax, dword [r12 + 0x58]
test eax, eax
je 0x4986f7
jns 0x4986d1
mov eax, dword [rbx + 0x90]
add eax, 0xffffffff
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x4986e3
lea rax, [0x0213b3e8]
jmp 0x4986f4
cdqe
lea rax, [rax + rax*2]
shl rax, 3
add rax, qword [rbx + 0x88]
mov byte [rax], 8
mov qword [rsp + 0x90], r15
mov rcx, qword [rsp + 0x68]
mov eax, dword [rcx + 0x28]
mov dword [r12 + 0x58], eax
mov r15, qword [rcx + 0x10]
test r15, r15
je 0x4989e9
mov eax, dword [rsp + 0x60]
mov qword [rsp + 0x78], rax
lea r14, [0x005fade0]
jmp 0x498742
movzx eax, word [r15 + 0x5e]
mov word [r15 + 0x60], ax
mov r15, qword [r15 + 0x28]
test r15, r15
je 0x4989e9
mov eax, dword [r15 + 0x64]
mov ecx, eax
xor ecx, 0xfffffffc
and ecx, eax
cmp ecx, 2
je 0x498735
cmp word [rsp + 0x60], 0
je 0x49872b
movzx r9d, word [r15 + 0x5e]
mov r13, qword [rsp + 0x60]
test r9, r9
je 0x4987fc
mov r8, qword [r12 + 8]
mov r10, qword [r15 + 8]
xor edi, edi
xor r13d, r13d
jmp 0x498790
add r13d, 1
add rdi, 1
cmp rdi, qword [rsp + 0x60]
je 0x4987fc
movzx r11d, word [r8 + rdi*2]
xor ebx, ebx
jmp 0x4987a9
add rbx, 1
cmp rbx, r9
je 0x49877d
cmp word [r10 + rbx*2], r11w
jne 0x4987a0
mov rax, qword [r15 + 0x40]
mov rbp, qword [rax + rbx*8]
mov rax, qword [r12 + 0x40]
mov rcx, qword [rax + rdi*8]
xor eax, eax
jmp 0x4987df
movzx edx, byte [rdx + r14]
cmp dl, byte [rsi + r14]
jne 0x4987a0
add rax, 1
movzx edx, byte [rbp + rax]
movzx esi, byte [rcx + rax]
cmp dl, sil
jne 0x4987d0
test dl, dl
jne 0x4987db
add rdi, 1
cmp rdi, qword [rsp + 0x60]
jne 0x498790
test r13d, r13d
je 0x49872b
movzx eax, word [r15 + 0x5e]
add r13d, eax
movzx eax, word [r15 + 0x60]
cmp r13d, eax
jle 0x4988ef
lea eax, [r13 + r13*2]
lea eax, [r13 + rax*4]
movsxd rsi, eax
mov rcx, qword [rsp + 0x90]
mov rdx, rsi
call fcn.00429840
test rax, rax
je 0x497292
mov rdi, rax
movsxd rbp, r13d
mov rcx, rax
xor edx, edx
mov r8, rsi
call fcn.005f4c10
mov rdx, qword [r15 + 0x40]
movzx r8d, word [r15 + 0x60]
shl r8, 3
mov rcx, rdi
call fcn.005f4c20
mov qword [r15 + 0x40], rdi
lea rdi, [rdi + rbp*8]
movzx eax, word [r15 + 0x5e]
mov rdx, qword [r15 + 0x10]
lea r8, [rax + rax]
add r8, 2
mov rcx, rdi
call fcn.005f4c20
mov qword [r15 + 0x10], rdi
lea rdi, [rdi + rbp*2]
mov rdx, qword [r15 + 8]
movzx r8d, word [r15 + 0x60]
add r8, r8
mov rcx, rdi
call fcn.005f4c20
mov qword [r15 + 8], rdi
lea rdi, [rdi + rbp*2]
mov rdx, qword [r15 + 0x38]
movzx r8d, word [r15 + 0x60]
mov rcx, rdi
call fcn.005f4c20
mov qword [r15 + 0x38], rdi
mov word [r15 + 0x60], r13w
mov eax, dword [r15 + 0x64]
mov ecx, eax
not ecx
and ecx, 0x6628991c
mov edx, eax
and edx, 0x99d766e3
or edx, ecx
xor edx, 0x6628990c
and eax, 0x10
or eax, edx
mov dword [r15 + 0x64], eax
cmp word [rsp + 0x60], 0
je 0x498735
movzx eax, word [r15 + 0x5e]
movzx r8d, ax
xor ecx, ecx
nop word cs:[rax + rax]
mov rdx, qword [r12 + 8]
movzx r10d, word [rdx + rcx*2]
mov r11, qword [r15 + 8]
test ax, ax
je 0x498990
movzx r9d, ax
xor esi, esi
jmp 0x498939
add rsi, 1
cmp rsi, r9
je 0x498990
cmp word [r11 + rsi*2], r10w
jne 0x498930
mov rax, qword [r15 + 0x40]
mov rbp, qword [rax + rsi*8]
mov rax, qword [r12 + 0x40]
mov rax, qword [rax + rcx*8]
xor edi, edi
jmp 0x49896f
movzx edx, byte [rdx + r14]
cmp dl, byte [rbx + r14]
jne 0x498930
add rdi, 1
movzx edx, byte [rbp + rdi]
movzx ebx, byte [rax + rdi]
cmp dl, bl
jne 0x498960
test dl, dl
jne 0x49896b
add rcx, 1
cmp rcx, qword [rsp + 0x78]
jne 0x4989df
jmp 0x498735
movsxd rax, r8d
mov word [r11 + rax*2], r10w
mov rdx, qword [r12 + 0x40]
mov rdx, qword [rdx + rcx*8]
mov rbp, qword [r15 + 0x40]
mov qword [rbp + rax*8], rdx
mov rax, qword [r12 + 0x38]
cmp byte [rax + rcx], 0
je 0x4989cc
mov eax, dword [r15 + 0x64]
mov edx, eax
and edx, 0x200
xor eax, 0x200
or eax, edx
mov dword [r15 + 0x64], eax
add r8d, 1
add rcx, 1
cmp rcx, qword [rsp + 0x78]
je 0x498735
movzx eax, word [r15 + 0x5e]
jmp 0x498910
mov rax, qword [rsp + 0x68]
movzx r8d, word [rax + 0x36]
test r8w, r8w
jle 0x498a64
movzx edx, r8w
cmp edx, 1
mov ecx, 1
cmova ecx, edx
mov rsi, qword [r12 + 8]
xor edi, edi
xor r15d, r15d
jmp 0x498a36
mov rax, qword [rsp + 0x68]
mov rax, qword [rax + 8]
lea rdx, [rdi + rdi*2]
mov al, byte [rax + rdx*8 + 0x12]
and al, 0x20
cmp al, 1
adc r15d, 0
add rdi, 1
cmp rdi, rcx
je 0x498a67
mov rax, qword [rsp + 0x60]
mov ebp, eax
mov rdx, rsi
test ebp, ebp
jle 0x498a14
add ebp, 0xffffffff
movsx rax, word [rdx]
add rdx, 2
mov ebx, 0xffffffff
xor rbx, rax
not rbx
and rbx, rax
cmp rdi, rbx
jne 0x498a40
jmp 0x498a2d
xor r15d, r15d
add r15d, dword [rsp + 0x60]
movzx ecx, word [r12 + 0x60]
cmp r15d, ecx
jle 0x498b78
lea eax, [r15 + r15*2]
lea eax, [r15 + rax*4]
movsxd rsi, eax
mov rcx, qword [rsp + 0x90]
test rcx, rcx
je 0x498a9d
mov rdx, rsi
call fcn.00429840
jmp 0x498aa5
mov rcx, rsi
call fcn.00404550
mov rdi, rax
test rax, rax
je 0x497292
movsxd r14, r15d
mov rcx, rdi
xor edx, edx
mov r8, rsi
call fcn.005f4c10
mov rdx, qword [r12 + 0x40]
movzx r8d, word [r12 + 0x60]
shl r8, 3
mov rcx, rdi
call fcn.005f4c20
mov qword [r12 + 0x40], rdi
lea rdi, [rdi + r14*8]
movzx eax, word [r12 + 0x5e]
mov rdx, qword [r12 + 0x10]
lea r8, [rax + rax]
add r8, 2
mov rcx, rdi
call fcn.005f4c20
mov qword [r12 + 0x10], rdi
lea rdi, [rdi + r14*2]
mov rdx, qword [r12 + 8]
movzx r8d, word [r12 + 0x60]
add r8, r8
mov rcx, rdi
call fcn.005f4c20
mov qword [r12 + 8], rdi
lea rdi, [rdi + r14*2]
mov rdx, qword [r12 + 0x38]
movzx r8d, word [r12 + 0x60]
mov rcx, rdi
call fcn.005f4c20
mov qword [r12 + 0x38], rdi
mov word [r12 + 0x60], r15w
mov eax, dword [r12 + 0x64]
mov ecx, eax
not ecx
and ecx, 0xe445a05a
mov edx, eax
and edx, 0x1bba5fa5
or edx, ecx
xor edx, 0xe445a04a
and eax, 0x10
or eax, edx
mov dword [r12 + 0x64], eax
mov rax, qword [rsp + 0x68]
movzx r8d, word [rax + 0x36]
mov ecx, r15d
test r8w, r8w
jle 0x498c1f
xor ecx, ecx
lea r9, [0x005fc4bb]
xor ebx, ebx
jmp 0x498bbe
mov rdi, qword [rsp + 0x68]
mov rax, qword [rdi + 8]
lea rdx, [rcx + rcx*2]
movzx eax, word [rax + rdx*8 + 0x12]
not eax
or eax, 0xffdf
cmp ax, 0xffff
je 0x498bf4
add rcx, 1
add ebx, 1
movsx rax, r8w
cmp rcx, rax
jge 0x498c19
mov rbp, qword [r12 + 8]
mov rdi, rbp
mov rax, qword [rsp + 0x60]
mov esi, eax
nop dword [rax]
test esi, esi
jle 0x498b8f
add esi, 0xffffffff
movsx rax, word [rdi]
add rdi, 2
mov edx, 0xffffffff
xor rdx, rax
not rdx
and rdx, rax
cmp rcx, rdx
jne 0x498bd0
jmp 0x498bae
mov rdx, qword [rsp + 0x60]
movsxd rdx, edx
mov word [rbp + rdx*2], bx
mov rax, qword [r12 + 0x40]
mov qword [rax + rdx*8], r9
add edx, 1
mov qword [rsp + 0x60], rdx
movzx r8d, word [rdi + 0x36]
jmp 0x498bae
movzx ecx, word [r12 + 0x60]
test cx, cx
je 0x498cb5
movabs r8, 0xa2b82c05527900a9
mov r11, qword [r12 + 8]
mov r9, qword [r12 + 0x18]
movzx esi, cx
lea rdx, [rsi + 1]
xor eax, eax
mov rdi, r8
not rdi
mov r10b, 1
jmp 0x498c5d
add rsi, rdi
add rdx, 0xffffffffffffffff
cmp rdx, 1
jle 0x498cb7
add rsi, r8
movsx rbp, word [r11 + rdx*2 - 4]
test rbp, rbp
js 0x498c50
cmp bp, 0x3e
jg 0x498c50
mov rcx, qword [r9 + 8]
lea rbx, [rbp*2]
add rbx, rbp
movzx ecx, word [rcx + rbx*8 + 0x12]
mov ebx, ecx
xor ebx, 0xffffffdf
and ebx, ecx
test bx, bx
jne 0x498c50
test r10b, r10b
je 0x498c50
mov ecx, 0xffffffff
xor ecx, ebp
not ecx
and ecx, ebp
mov ebx, 1
shl rbx, cl
and rbx, rax
btc rax, rcx
or rax, rbx
jmp 0x498c50
xor eax, eax
mov rcx, rax
not rcx
movabs rdx, 0x695acfd35d49355a
and rcx, rdx
not rdx
and rax, rdx
or rax, rcx
xor rax, rdx
mov qword [r12 + 0x68], rax
jmp 0x497292
mov dword [rsp + 0x20], 0
mov rcx, rbp
mov edx, 0x44
mov r8d, edi
xor r9d, r9d
call fcn.0047df60
mov rax, qword [rbp + 0x18]
mov byte [rax + 0x1f], 0
mov dword [rax + 0x28], 0
mov edi, dword [rbp + 0x90]
mov rax, qword [rbp]
cmp byte [rax + 0x67], 0
je 0x498d23
lea rax, [0x0213b3e8]
jmp 0x498d41
lea eax, [rdi - 1]
test ebx, ebx
cmovns eax, ebx
cdqe
lea rax, [rax + rax*2]
shl rax, 3
mov rcx, qword [rsp + 0x60]
add rax, qword [rcx + 0x88]
mov ebp, dword [rsp + 0x80]
mov dword [rax + 8], edi
mov r8d, dword [rsp + 0xa4]
mov rbx, qword [rsp + 0x60]
cmp dword [rbx + 0x94], edi
jle 0x498d8d
movsxd rax, edi
lea ecx, [rdi + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0xb
mov dword [rcx + rax*8 + 4], r8d
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
jmp 0x498da7
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0xb
xor r9d, r9d
call fcn.0047df60
mov edi, eax
add esi, 2
mov r8d, dword [rsp + 0xac]
mov r9d, dword [rsp + 0xb0]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x498dfd
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x61
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], esi
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x498e0e
mov dword [rsp + 0x20], esi
mov rcx, rbx
mov edx, 0x61
call fcn.0047df60
mov rcx, rbx
mov rdx, r12
xor r8d, r8d
call fcn.004d5160
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x498e64
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
movabs rdx, 0x10000007f
mov qword [rcx + rax*8], rdx
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x498e82
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x7f
mov r8d, 1
mov r9d, ebp
call fcn.0047df60
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x498ec6
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
movabs rdx, 0x100000080
mov qword [rcx + rax*8], rdx
mov dword [rcx + rax*8 + 8], esi
mov dword [rcx + rax*8 + 0xc], ebp
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x498ee0
mov dword [rsp + 0x20], ebp
mov rcx, rbx
mov edx, pe_nt_image_headers64
mov r8d, 1
mov r9d, esi
call fcn.0047df60
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x498f22
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 8
mov dword [rcx + rax*8 + 8], edi
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x498f3d
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 8
xor r8d, r8d
mov r9d, edi
call fcn.0047df60
mov eax, dword [rbx + 0x90]
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x498f5a
lea rdx, [0x0213b3e8]
mov rcx, qword [rsp + 0x60]
jmp 0x498f79
lea ecx, [rax - 1]
test edi, edi
cmovns ecx, edi
movsxd rcx, ecx
lea rdx, [rcx + rcx*2]
shl rdx, 3
mov rcx, qword [rsp + 0x60]
add rdx, qword [rcx + 0x88]
mov dword [rdx + 8], eax
cmp dword [rcx + 0x94], eax
jle 0x498fb3
movsxd rdx, eax
add eax, 1
mov dword [rcx + 0x90], eax
mov rax, qword [rcx + 0x88]
lea rcx, [rdx + rdx*2]
movabs rdx, 0x10000007a
mov qword [rax + rcx*8], rdx
xorps xmm0, xmm0
movups xmmword [rax + rcx*8 + 8], xmm0
jmp 0x498fce
mov dword [rsp + 0x20], 0
mov edx, 0x7a
mov r8d, 1
xor r9d, r9d
call fcn.0047df60
movsx r8d, word [r12 + 0x36]
test r8d, r8d
jle 0x499000
movzx eax, r8w
cmp eax, 1
mov r10d, 1
cmova r10d, eax
mov rdx, qword [r12 + 8]
mov r9d, r10d
xor r9d, 0xfffffffe
cmp ax, 1
jne 0x49900a
xor ecx, ecx
jmp 0x499064
mov ecx, 2
jmp 0x49909b
mov ebp, r10d
and ebp, 0xfffffffe
xor ecx, ecx
mov esi, 0xfffffff9
mov rdi, qword [rdx]
xor eax, eax
jmp 0x499028
add eax, 1
add eax, 1
add rdi, 1
movzx ebx, byte [rdi]
cmp bl, 0x22
je 0x49901e
test bl, bl
jne 0x499021
add ecx, eax
add ecx, 7
mov rdi, qword [rdx + 0x18]
xor eax, eax
jmp 0x49904b
add eax, 1
add eax, 1
add rdi, 1
movzx ebx, byte [rdi]
cmp bl, 0x22
je 0x499041
test bl, bl
jne 0x499044
sub ecx, esi
add ecx, eax
add rdx, 0x30
add ebp, 0xfffffffe
jne 0x499017
test r9d, r10d
je 0x499098
mov rdx, qword [rdx]
xor eax, eax
jmp 0x49907a
add eax, 1
add eax, 1
add rdx, 1
movzx ebx, byte [rdx]
cmp bl, 0x22
je 0x499070
test bl, bl
jne 0x499073
add ecx, eax
add ecx, 7
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x98]
add ecx, 2
mov rax, qword [r12]
xor edi, edi
jmp 0x4990ad
add edi, 1
add edi, 1
add rax, 1
movzx edx, byte [rax]
cmp dl, 0x22
je 0x4990a3
test dl, dl
jne 0x4990a6
add edi, ecx
cmp edi, 0x32
lea rax, [0x00603b2c]
lea rbx, [0x00603b32]
cmovl rbx, rax
lea rax, [0x005fc4d1]
lea rsi, [0x00603b37]
cmovl rsi, rax
lea eax, [r8 + r8*2]
lea ebp, [rdi + rax*2]
add ebp, 0x23
movsxd rcx, ebp
call fcn.00404550
mov r15, rax
test rax, rax
je 0x4992ed
mov qword [rsp + 0x80], rbx
mov qword [rsp + 0x158], rsi
lea r8, [0x00603b3a]
mov ecx, ebp
mov rdx, r15
call fcn.00408910
mov rcx, r15
call fcn.005f4bd8
and eax, 0x3fffffff
mov dword [rsp + 0xa0], eax
mov r8, qword [r12]
lea rdx, [rsp + 0xa0]
mov rcx, r15
call fcn.004df690
movsxd rax, dword [rsp + 0xa0]
lea r14d, [rax + 1]
mov dword [rsp + 0xa0], r14d
mov byte [r15 + rax], 0x28
cmp word [r12 + 0x36], 0
jle 0x49936c
cmp edi, 0x32
lea rax, [0x005fadb4]
lea r8, [0x00603b2e]
cmovl r8, rax
mov rbx, qword [r12 + 8]
mov ecx, ebp
sub ecx, r14d
movsxd r12, r14d
add r12, r15
mov rdx, r12
call fcn.00408910
mov rcx, r12
call fcn.005f4bd8
and eax, 0x3fffffff
add eax, r14d
mov dword [rsp + 0xa0], eax
mov r8, qword [rbx]
lea rdx, [rsp + 0xa0]
mov rcx, r15
call fcn.004df690
movsx rax, byte [rbx + 0xc]
lea rcx, [0x00603b50]
mov rsi, qword [rcx + rax*8 - 0x208]
mov rcx, rsi
call fcn.005f4bd8
mov r12, rax
and r12d, 0x3fffffff
movsxd rdi, dword [rsp + 0xa0]
mov rcx, rdi
add rcx, r15
mov rdx, rsi
mov r8, r12
call fcn.005f4c20
lea r14d, [rdi + r12]
mov r12, qword [rsp + 0x68]
mov dword [rsp + 0xa0], r14d
cmp word [r12 + 0x36], 2
mov r13d, ebp
jl 0x49936f
add rbx, 0x24
mov ebp, 1
mov ecx, r13d
sub ecx, r14d
movsxd rsi, r14d
lea rdi, [r15 + rsi]
mov rdx, rdi
mov r8, qword [rsp + 0x80]
call fcn.00408910
mov rcx, rdi
call fcn.005f4bd8
mov ecx, eax
xor ecx, 0xc0000000
and ecx, eax
add esi, ecx
mov dword [rsp + 0xa0], esi
mov r8, qword [rbx - 0xc]
mov rcx, r15
lea rdx, [rsp + 0xa0]
call fcn.004df690
movsx rax, byte [rbx]
neg rax
shl rax, 3
lea rcx, [0x00603b50]
sub rcx, rax
mov r12, qword [rcx - 0x208]
mov rcx, r12
call fcn.005f4bd8
mov edi, eax
xor edi, 0xc0000000
and edi, eax
movsxd rsi, dword [rsp + 0xa0]
mov rcx, rsi
add rcx, r15
mov rdx, r12
mov r12, qword [rsp + 0x68]
mov r8, rdi
call fcn.005f4c20
lea r14d, [rsi + rdi]
mov dword [rsp + 0xa0], r14d
add ebp, 1
movsx eax, word [r12 + 0x36]
add rbx, 0x18
cmp ebp, eax
jl 0x49922f
jmp 0x49936f
mov rsi, qword [rsp + 0x70]
cmp byte [rsi + 0x67], 0
jne 0x49939f
cmp byte [rsi + 0x68], 0
jne 0x49939f
mov byte [rsi + 0x67], 1
cmp dword [rsi + 0xe4], 0
jle 0x499322
mov rax, qword [rsp + 0x70]
mov dword [rax + 0x198], 1
mov rsi, qword [rsp + 0x70]
add dword [rsi + 0x1a0], 1
mov word [rsi + 0x1a4], 0
mov rcx, qword [rsi + 0x160]
test rcx, rcx
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x98]
je 0x49939f
lea rdx, [0x005fc480]
call fcn.00419aa0
mov rax, qword [rsi + 0x160]
mov dword [rax + 0x18], 7
jmp 0x49939f
mov r13d, ebp
movsxd rax, r14d
sub r13d, eax
mov rdx, r15
add rdx, rax
lea r8, [0x005faef2]
mov ecx, r13d
mov r9, qword [rsp + 0x158]
call fcn.00408910
mov rsi, qword [rsp + 0x70]
mov r14, qword [rsp + 0x98]
mov rbp, qword [rsp + 0x210]
mov r9, qword [rsp + 0x90]
jmp 0x497e43