Function at 0x502ff0
Capabilities:
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, 0x188
movaps xmmword [rsp + 0x170], xmm6
mov qword [rsp + 0xe0], r8
mov r10, rdx
mov r11, rcx
movzx eax, word [rsp + 0x1f0]
test ax, ax
je 0x503039
mov rcx, qword [r11]
mov rcx, qword [rcx]
mov ecx, dword [rcx + 0x60]
not ecx
or ecx, 0xffffffbf
cmp ecx, 0xffffffff
jne 0x50304f
mov ecx, dword [r10]
mov r15d, ecx
xor r15d, 0xffff0000
and r15d, ecx
cmp r15d, 0x3f
jbe 0x503056
xor eax, eax
jmp 0x50411b
mov qword [rsp + 0xa0], rcx
mov r8, 0xffffffffffffffff
mov ecx, r15d
shl r8, cl
movzx r9d, r9w
mov ecx, r9d
xor ecx, 0xf7fc
and ecx, r9d
cmp ecx, 1
mov ecx, 0x183
sbb ecx, 0
mov dword [rsp + 0x7c], ecx
test r15d, r15d
je 0x504062
not r8
mov ecx, r9d
and ecx, 0x800
mov dword [rsp + 0x98], ecx
mov ecx, r9d
and ecx, 0xc0
mov dword [rsp + 0x9c], ecx
mov ecx, r9d
and ecx, 0x40
mov dword [rsp + 0x94], ecx
movzx edi, ax
xorps xmm6, xmm6
lea rax, [r11 + 0x80]
mov qword [rsp + 0xe8], rax
lea rax, [r11 + 0x268]
mov qword [rsp + 0xf0], rax
mov esi, 0
mov r14b, 1
xor ebp, ebp
xor eax, eax
mov qword [rsp + 0xc0], rax
xor r12d, r12d
xor ebx, ebx
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x30], r11
mov qword [rsp + 0xb8], r8
mov dword [rsp + 0x78], r9d
mov qword [rsp + 0xd8], rdi
nop
test rsi, rsi
je 0x503138
mov rax, qword [rbx + 8]
mov rcx, rax
and rcx, rbp
xor rax, rbp
or rax, rcx
mov rbp, rax
mov rbx, qword [rsp + 0x1f8]
cmp rsi, rdi
jae 0x503163
mov rax, qword [rsp + 0xe0]
mov rax, qword [rax + 0x18]
mov rbx, qword [rax + rsi*8]
cmp dword [rsp + 0x98], 0
jne 0x503fea
mov eax, dword [rbx + 0x38]
mov ecx, eax
xor ecx, 0xfffffbff
test ecx, eax
jne 0x504027
mov dword [rsp + 0x44], r14d
mov qword [rsp + 0x88], rsi
test r9b, r9b
jns 0x50318e
mov word [rbx + 0x1e], 0
mov qword [rsp + 0x58], rbx
movzx eax, byte [rbx + 0x10]
mov rcx, qword [r11 + 8]
imul rax, rax, 0x68
mov eax, dword [rcx + rax + 0x4c]
mov qword [rsp + 0xf8], rbp
mov rcx, rbp
mov ebp, eax
not rcx
mov qword [rsp + 0x60], rcx
xor r14d, r14d
movabs rbx, 0x20b50f88743f2c03
movabs rdx, 0x1f20434f697e9796
mov dword [rsp + 0x2c], eax
jmp 0x50320d
mov r11, qword [rsp + 0x30]
movabs rbx, 0x20b50f88743f2c03
movabs rdx, 0x1f20434f697e9796
mov ebp, dword [rsp + 0x2c]
nop word cs:[rax + rax]
nop dword [rax]
add r14, 1
cmp r14, r15
je 0x5035e0
mov edi, 1
mov ecx, r14d
shl rdi, cl
mov rax, 0xfffffffffffffffe
rol rax, cl
mov rcx, r12
not rcx
or rcx, rax
mov rax, rdx
not rax
or rax, rdx
not rcx
test rcx, rax
jne 0x503200
mov rax, r14
shl rax, 5
mov r13, qword [r10 + rax + 8]
test r13, r13
je 0x503200
lea rsi, [r10 + rax]
add rsi, 8
jmp 0x50326d
add r13, 0x10
mov r13, qword [r13]
test r13, r13
je 0x503200
mov eax, dword [r13 + 4]
mov ecx, eax
xor ecx, 0xfff7dfff
test ecx, eax
je 0x50329f
mov ecx, eax
xor ecx, 0xfff7ffff
test ecx, eax
je 0x503260
mov r13, qword [r13 + 0x20]
add r13, 8
mov r13, qword [r13]
test r13, r13
jne 0x50326d
jmp 0x503200
mov al, byte [r13]
cmp al, 0xa9
je 0x5032af
cmp al, 0xa7
jne 0x503200
cmp dword [r13 + 0x2c], ebp
jne 0x503200
movzx eax, word [r13 + 0x30]
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0x100], rcx
mov qword [rsp + 0x108], rcx
mov byte [rsp + 0x128], 0
lea rcx, [rsp + 0x110]
movups xmmword [rcx], xmm6
mov ecx, dword [rsp + 0x7c]
mov dword [rsp + 0x124], ecx
mov dword [rsp + 0x120], 0
mov dword [rsp + 0x12c], ebp
mov word [rsp + 0x129], 0x101
cmp ax, 0xfffe
je 0x5031e4
mov word [rsp + 0x158], ax
lea rcx, [rsp + 0x100]
call fcn.004fcd00
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test rax, rax
je 0x5031e4
mov rbp, rax
mov qword [rsp + 0x48], rsi
xor esi, esi
jmp 0x503371
test rsi, rsi
cmove rsi, rbp
lea rcx, [rsp + 0x100]
call fcn.004fcd00
mov rbp, rax
test rax, rax
mov r10, qword [rsp + 0x38]
je 0x5033d0
mov rax, qword [rbp + 0x28]
mov rcx, rax
not rcx
mov rdx, qword [rsp + 0x60]
not rdx
or rdx, rcx
movabs rbx, 0x98393a6778ffbed6
mov rcx, rbx
not rcx
or rcx, rbx
not rdx
test rdx, rcx
jne 0x503357
test rax, rax
jne 0x503350
mov eax, dword [rbp + 0x14]
mov ecx, eax
not ecx
or ecx, 0xff7d
cmp cx, 0xffff
je 0x503350
mov r11, qword [rsp + 0x30]
movabs rbx, 0x20b50f88743f2c03
cmp ax, 1
je 0x5033f5
jmp 0x503424
test rsi, rsi
je 0x5031d5
movzx eax, word [rsi + 0x14]
mov rbp, rsi
mov r11, qword [rsp + 0x30]
movabs rbx, 0x20b50f88743f2c03
cmp ax, 1
jne 0x503424
mov rdx, qword [rsp + 0x58]
movzx ecx, word [rdx + 0x3c]
test rcx, rcx
je 0x5031e4
mov rdx, qword [rdx + 0x48]
xor esi, esi
nop dword [rax]
cmp rbp, qword [rdx + rsi*8]
je 0x503424
add rsi, 1
cmp rsi, rcx
jb 0x503410
jmp 0x5031e4
not eax
or eax, 0xff7d
cmp ax, 0xffff
je 0x50350c
cmp word [r13 + 0x30], 0
js 0x50350c
mov rsi, qword [r11]
mov rax, qword [rsp + 0x48]
mov rdx, qword [rax]
mov rcx, rsi
call fcn.0047fd40
mov r13, rax
test rax, rax
jne 0x503463
mov rax, qword [rsi]
mov r13, qword [rax + 0x10]
mov rax, qword [rbp]
mov ecx, dword [rax + 4]
mov rdx, qword [rax + 0x10]
mov rbp, qword [rax + 0x18]
mov eax, ecx
xor eax, 0xfffffbff
test eax, ecx
je 0x503498
mov eax, dword [rbp + 4]
mov ecx, eax
xor ecx, 0xfffffdff
test ecx, eax
je 0x503520
mov rcx, rsi
mov rdx, rbp
jmp 0x5034ae
mov eax, dword [rdx + 4]
mov ecx, eax
xor ecx, 0xfffffdff
test ecx, eax
je 0x503543
mov rcx, rsi
call fcn.0047fd40
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
movabs rbx, 0x20b50f88743f2c03
test rax, rax
je 0x5031e4
mov r8, qword [r13]
mov rax, qword [rax]
xor edx, edx
jmp 0x5034f9
lea rsi, [0x005fade0]
movzx ecx, byte [rbp + rsi]
cmp cl, byte [rbx + rsi]
jne 0x5031da
add rdx, 1
movzx ebp, byte [r8 + rdx]
movzx ebx, byte [rax + rdx]
cmp bpl, bl
jne 0x5034e0
test bpl, bpl
jne 0x5034f5
mov rax, rdi
and rax, r12
xor rdi, r12
or rdi, rax
mov r12, rdi
jmp 0x5031da
test rdx, rdx
movabs rbx, 0x20b50f88743f2c03
je 0x50357b
mov eax, dword [rdx + 4]
not eax
or eax, 0xfffffdff
cmp eax, 0xffffffff
je 0x50357b
mov rcx, rsi
jmp 0x503567
test rbp, rbp
movabs rbx, 0x20b50f88743f2c03
je 0x5035a8
mov eax, dword [rbp + 4]
not eax
or eax, 0xfffffdff
cmp eax, 0xffffffff
je 0x5035a8
mov rcx, rsi
mov rdx, rbp
call fcn.0047fd40
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jmp 0x5034c7
mov qword [rsp + 0x48], rdx
mov rcx, rsi
mov rdx, rbp
call fcn.0047fd40
test rax, rax
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jne 0x5034d0
mov rcx, rsi
mov rdx, qword [rsp + 0x48]
jmp 0x5035c9
mov rcx, rsi
call fcn.0047fd40
test rax, rax
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jne 0x5034d0
mov rcx, rsi
mov rdx, rbp
call fcn.0047fd40
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
jmp 0x5034c7
mov rdx, qword [rsp + 0x58]
mov ebp, dword [rdx + 0x38]
mov eax, ebp
xor eax, 0xffffefff
test eax, ebp
je 0x503610
mov eax, dword [rsp + 0x44]
test al, al
je 0x50406f
mov r14d, eax
jmp 0x503d4d
mov eax, ebp
not eax
or eax, 0xfffffeff
xor r14d, r14d
cmp eax, 0xffffffff
je 0x503645
mov r9w, 1
xor eax, eax
mov qword [rsp + 0xa8], rax
xor eax, eax
mov qword [rsp + 0x50], rax
mov rcx, qword [rsp + 0x88]
mov eax, dword [rsp + 0x44]
jmp 0x5036a1
mov rdi, qword [rdx + 0x20]
test rdi, rdi
mov rcx, qword [rsp + 0x88]
je 0x50304f
mov eax, dword [rdi + 0x64]
not eax
or eax, 0xfffffffb
cmp eax, 0xffffffff
jne 0x50304f
movzx r9d, word [rdi + 0x60]
cmp byte [rdi + 0x62], 0
sete r8b
test bp, bp
sets al
or al, r8b
xor al, 1
test r9w, r9w
je 0x50401e
mov rsi, rdi
mov qword [rsp + 0x50], rdi
movzx ebp, word [rdi + 0x5e]
mov qword [rsp + 0xa8], rbp
mov ebp, 1
shl rbp, cl
mov qword [rsp + 0xc8], rbp
movzx ecx, r9w
mov qword [rsp + 0xd0], rcx
xor r9d, r9d
xor ecx, ecx
mov qword [rsp + 0x80], rcx
mov dword [rsp + 0x6c], 0
mov dword [rsp + 0x74], 0
mov rcx, qword [rsp + 0x50]
mov rsi, r9
movzx r9d, word [rdx + 0x18]
mov r8b, 1
mov r13b, 1
cmp rsi, r9
mov qword [rsp + 0x48], rsi
jae 0x5037c0
movzx ebp, word [rdx + 0x3e]
mov r8b, 1
mov r13b, 1
cmp rsi, rbp
jb 0x5037c0
mov rcx, qword [rdx + 0x48]
mov rbx, qword [rcx + rsi*8]
movzx esi, word [rbx + 0x14]
mov ebp, esi
mov edi, dword [rsp + 0x7c]
xor ebp, edi
not ebp
test ebp, edi
je 0x503757
not esi
or esi, 0xfffffe7f
cmp esi, 0xffffffff
movzx ebp, al
mov eax, 0
cmovne ebp, eax
movabs rbx, 0x20b50f88743f2c03
mov rcx, qword [rsp + 0x50]
mov r9, qword [rsp + 0x48]
jmp 0x503cf6
mov edi, esi
xor edi, 0xfffe
test edi, esi
je 0x5037ab
mov rbp, qword [rbx]
mov ebx, 0xffffffff
lea edi, [r9 + rbx]
not edi
mov ebx, 0xffffffff
not rbx
or rbx, rdi
not rbx
mov rdi, qword [rsp + 0x48]
nop dword [rax + rax]
cmp rbx, rdi
je 0x5037ab
mov rsi, qword [rcx + rdi*8 + 8]
add rdi, 1
cmp qword [rsi], rbp
jne 0x503790
xor r8d, r8d
xor r13d, r13d
jmp 0x5037b1
mov r8b, 1
mov r13b, 1
movabs rbx, 0x20b50f88743f2c03
mov rcx, qword [rsp + 0x50]
test rcx, rcx
mov qword [rsp + 0xb0], r14
je 0x503850
mov rbx, qword [rcx + 8]
mov rbp, qword [rcx + 0x18]
mov rdx, qword [rsp + 0x48]
movzx ebx, word [rbx + rdx*2]
mov rdi, qword [rcx + 0x38]
mov cl, byte [rdi + rdx]
mov edx, ecx
xor dl, 0xfe
and dl, cl
mov dword [rsp + 0x70], edx
cmp bx, word [rbp + 0x34]
mov ecx, 0xffff
cmove ebx, ecx
movsx ecx, bx
mov dword [rsp + 0x60], ecx
test al, al
je 0x50387e
test bx, bx
js 0x503882
mov rcx, qword [rsp + 0x48]
cmp rcx, r9
mov r9, rcx
jb 0x50383a
mov rcx, qword [rbp + 8]
mov edx, dword [rsp + 0x60]
lea rdx, [rdx + rdx*2]
mov ecx, dword [rcx + rdx*8 + 8]
mov edx, ecx
xor edx, 0xfffffff0
and edx, ecx
movzx eax, al
cmove eax, edx
movabs rbx, 0x20b50f88743f2c03
jmp 0x50386e
mov dword [rsp + 0x60], 0xffffffff
mov dword [rsp + 0x70], 0
mov ecx, 0
test al, al
mov r9, qword [rsp + 0x48]
je 0x503870
mov ecx, eax
mov dword [rsp + 0x44], ecx
test r8b, r8b
jne 0x5038ad
jmp 0x503d10
xor ecx, ecx
jmp 0x503891
cmp bx, 0xfffe
movzx ecx, al
mov eax, 0
cmove ecx, eax
movabs rbx, 0x20b50f88743f2c03
mov r9, qword [rsp + 0x48]
mov dword [rsp + 0x44], ecx
test r8b, r8b
je 0x503d10
xor ebp, ebp
nop
mov rax, 0xfffffffffffffffe
mov ecx, ebp
rol rax, cl
mov r14, r12
not r14
mov rcx, rbx
not rcx
or rax, r14
or rcx, rbx
not rax
test rax, rcx
je 0x503900
add rbp, 1
cmp rbp, r15
jae 0x503d10
test r13b, r13b
je 0x503d10
mov al, 1
test al, al
jne 0x5038b0
jmp 0x503d10
mov rax, rbp
shl rax, 5
mov rdx, qword [r10 + rax + 8]
test rdx, rdx
je 0x5038d6
lea rdi, [r10 + rax]
add rdi, 8
jmp 0x50392c
add rdx, 0x10
mov rdx, qword [rdx]
test rdx, rdx
je 0x5038d6
mov eax, dword [rdx + 4]
mov ecx, eax
xor ecx, 0xfff7dfff
test ecx, eax
je 0x50395c
not eax
or eax, 0xfff7ffff
cmp eax, 0xffffffff
je 0x503920
mov rdx, qword [rdx + 0x20]
add rdx, 8
mov rdx, qword [rdx]
test rdx, rdx
jne 0x50392c
jmp 0x5038d6
mov ecx, dword [rsp + 0x9c]
test ecx, ecx
movzx r13d, r13b
cmove r13d, ecx
cmp dword [rsp + 0x60], 0xffffffff
jl 0x5039a2
mov al, byte [rdx]
cmp al, 0xa9
je 0x503982
cmp al, 0xa7
jne 0x5038d6
mov eax, dword [rsp + 0x2c]
cmp dword [rdx + 0x2c], eax
jne 0x5038d6
movsx eax, word [rdx + 0x30]
cmp dword [rsp + 0x60], eax
jne 0x5038d6
jmp 0x503a8f
mov rcx, qword [rsp + 0x50]
mov rcx, qword [rcx + 0x50]
mov rbx, r9
shl rbx, 5
mov r8, qword [rcx + rbx + 8]
mov ecx, eax
not ecx
or ecx, 0xfff7dfff
movabs rbx, 0x20b50f88743f2c03
cmp ecx, 0xffffffff
jne 0x5039fe
jmp 0x503a37
add rdx, 0x10
mov rdx, qword [rdx]
test rdx, rdx
je 0x503a1a
mov eax, dword [rdx + 4]
mov ecx, eax
not ecx
or ecx, 0xfff7dfff
cmp ecx, 0xffffffff
je 0x503a37
not eax
or eax, 0xfff7ffff
cmp eax, 0xffffffff
je 0x5039e0
mov rdx, qword [rdx + 0x20]
add rdx, 8
mov rdx, qword [rdx]
test rdx, rdx
jne 0x5039ec
xor edx, edx
test r8, r8
jne 0x503a3c
jmp 0x503a69
add r8, 0x10
mov r8, qword [r8]
test r8, r8
je 0x503a69
mov eax, dword [r8 + 4]
not eax
mov ecx, eax
or ecx, 0xfff7dfff
cmp ecx, 0xffffffff
je 0x503a6c
or eax, 0xfff7ffff
cmp eax, 0xffffffff
je 0x503a30
mov r8, qword [r8 + 0x20]
add r8, 8
mov r8, qword [r8]
test r8, r8
jne 0x503a3c
xor r8d, r8d
xor ecx, ecx
mov r9d, dword [rsp + 0x2c]
call fcn.004cf220
test eax, eax
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
mov r9, qword [rsp + 0x48]
jne 0x5038d6
cmp dword [rsp + 0x60], 0xffffffff
je 0x503b20
mov rdx, qword [rdi]
mov rbx, qword [r11]
mov rcx, rbx
call fcn.0047fd40
test rax, rax
jne 0x503ab4
mov rax, qword [rbx]
mov rax, qword [rax + 0x10]
mov rcx, qword [rsp + 0x50]
mov rcx, qword [rcx + 0x40]
mov rax, qword [rax]
mov r9, qword [rsp + 0x48]
mov rcx, qword [rcx + r9*8]
xor edx, edx
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jmp 0x503ae8
test bl, bl
je 0x503b20
add rdx, 1
movzx ebx, byte [rax + rdx]
movzx edi, byte [rcx + rdx]
cmp bl, dil
je 0x503ae0
lea rsi, [0x005fade0]
movzx ebx, byte [rbx + rsi]
cmp bl, byte [rdi + rsi]
je 0x503ae4
movabs rbx, 0x20b50f88743f2c03
jmp 0x5038d6
cmp byte [rsp + 0x78], 0
js 0x503b50
cmp dword [rsp + 0x94], 0
je 0x503b6e
mov ecx, 0xffffffff
xor rcx, rbp
not rcx
and rcx, rbp
mov rax, rcx
shl rax, 5
mov al, byte [r10 + rax + 0x18]
jmp 0x503c40
mov rax, qword [rsp + 0xb0]
add eax, 1
mov rcx, qword [rsp + 0x58]
mov word [rcx + 0x1e], ax
cmp dword [rsp + 0x94], 0
jne 0x503b31
mov ecx, 0xffffffff
xor rcx, rbp
not rcx
and rcx, rbp
mov rax, rcx
shl rax, 5
mov al, byte [r10 + rax + 0x18]
mov r8d, eax
and r8b, 1
cmp byte [rsp + 0x80], 0
je 0x503bd3
mov esi, dword [rsp + 0x70]
mov ebx, esi
not bl
and bl, 0xa6
and sil, 0x59
or sil, bl
mov edx, dword [rsp + 0x6c]
mov ebx, edx
not bl
and bl, 0xa6
and dl, 0x59
or dl, bl
xor dl, sil
mov sil, 1
mov qword [rsp + 0x80], rsi
cmp dl, r8b
je 0x503c40
jmp 0x503d10
not r8b
and r8b, 0x2d
mov esi, dword [rsp + 0x70]
mov edx, esi
not dl
and dl, 0x2d
and sil, 0xd2
or sil, dl
mov edx, esi
xor dl, r8b
mov dword [rsp + 0x6c], edx
mov dl, 1
je 0x503c25
mov qword [rsp + 0x80], rdx
mov rbx, qword [rsp + 0x200]
mov rdx, qword [rbx]
mov rbp, rdx
mov rdi, qword [rsp + 0xc8]
and rbp, rdi
xor rdx, rdi
or rdx, rbp
mov qword [rbx], rdx
jmp 0x503c40
mov qword [rsp + 0x80], rdx
mov dword [rsp + 0x6c], 0
nop word cs:[rax + rax]
nop
not al
or al, 0xfd
cmp al, 0xff
je 0x503c74
mov rax, qword [rsp + 0x58]
movzx eax, word [rax + 0x18]
cmp r9, rax
jne 0x503d10
mov rbp, qword [rsp + 0x58]
mov eax, dword [rbp + 0x38]
mov edx, eax
and edx, 0x80000
xor eax, 0x80000
or eax, edx
mov dword [rbp + 0x38], eax
cmp dword [rsp + 0x60], 0xffffffff
mov edx, dword [rsp + 0x74]
movzx edx, dl
mov eax, 1
cmove edx, eax
mov dword [rsp + 0x74], edx
mov eax, 1
shl rax, cl
mov rdx, 0xfffffffffffffffe
rol rdx, cl
movabs rdi, 0xa2d652bb80a06cf6
mov rbp, rdi
not rbp
mov rbx, rdi
btr rbx, rcx
and rax, rbp
or rax, rbx
movabs rbx, 0x20b50f88743f2c03
or rdx, r14
and r14, rdi
and r12, rbp
or r12, r14
xor r12, rax
not rdx
or rbp, rdi
and rbp, rdx
or r12, rbp
mov rdx, qword [rsp + 0x58]
mov ebp, dword [rsp + 0x44]
mov r14, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x50]
add r9, 1
add r14d, 1
mov eax, ebp
cmp r9, qword [rsp + 0xd0]
jne 0x5036df
jmp 0x503d3b
movzx eax, word [rsp + 0xa8]
cmp r9d, eax
movzx eax, byte [rsp + 0x44]
mov ebp, eax
mov edx, 0
cmovb ebp, edx
setb cl
test r9d, r9d
cmovne ebp, eax
sete al
xor al, cl
cmovne ebp, edx
mov dword [rsp + 0x44], ebp
mov r14b, 1
cmp byte [rsp + 0x74], 0
je 0x5035f3
mov rax, qword [rsp + 0x58]
mov rax, qword [rax + 8]
mov rcx, rax
not rcx
mov rsi, qword [rsp + 0xc0]
mov rdx, rsi
not rdx
movabs rdi, 0xdd02784be319dc46
mov rbp, rdi
not rbp
mov rbx, rcx
and rbx, rdi
and rax, rbp
or rax, rbx
or rcx, rdx
and rdx, rdi
and rsi, rbp
or rsi, rdx
mov rdx, rsi
xor rdx, rax
not rcx
or rbp, rdi
and rbp, rcx
or rbp, rdx
mov rax, rbp
not rax
movabs rcx, 0x218dac16c522e156
and rax, rcx
not rcx
mov rdx, rbp
mov qword [rsp + 0xc0], rbp
mov r13, rbp
and r13, rcx
or r13, rax
xor r13, rcx
xor ebp, ebp
jmp 0x503e58
xor eax, eax
not rax
mov rcx, r13
not rcx
or rcx, rax
movabs rdx, 0x44cb623ffddc9923
mov rax, rdx
not rax
or rax, rdx
not rcx
test rcx, rax
mov eax, 0
cmovne rsi, rax
mov rax, rsi
not rax
mov rcx, r12
not rcx
movabs rdi, 0x90207e5b0131c29a
mov rdx, rdi
not rdx
mov rbx, rax
and rbx, rdi
and rsi, rdx
or rsi, rbx
or rax, rcx
and rcx, rdi
and r12, rdx
or r12, rcx
xor r12, rsi
not rax
or rdx, rdi
and rdx, rax
or r12, rdx
add rbp, 1
cmp rbp, r15
je 0x503fc0
mov esi, 1
mov ecx, ebp
shl rsi, cl
mov rax, r12
btc rax, rbp
not rax
bt rax, rbp
jb 0x503e4b
mov rax, rbp
shl rax, 5
mov rbx, qword [r10 + rax + 8]
test rbx, rbx
je 0x503dd8
mov eax, dword [rbx + 4]
cmp byte [rbx], 0xa7
jne 0x503eed
mov ecx, eax
and ecx, 0x20
jne 0x503eed
mov cl, 1
test cl, cl
je 0x503eed
mov ecx, dword [rbx + 0x2c]
mov eax, 1
cmp dword [r11 + 0x270], ecx
je 0x503dda
mov eax, dword [r11 + 0x26c]
cmp eax, 2
jl 0x503ef9
add rax, 0xffffffffffffffff
mov edi, 1
xor edx, edx
cmp dword [r11 + rdx*4 + 0x274], ecx
je 0x503f8f
add rdi, 1
add rdx, 1
cmp rax, rdx
jne 0x503ed0
jmp 0x503ef9
mov ecx, eax
xor ecx, 0xff7effff
test ecx, eax
je 0x503f67
mov word [rsp + 0x124], 1
lea rax, [0x004ce7b0]
mov qword [rsp + 0x108], rax
lea rax, [0x004cea20]
mov qword [rsp + 0x110], rax
mov dword [rsp + 0x128], 0
lea rcx, [rsp + 0x100]
mov rdx, rbx
call fcn.004cea30
cmp word [rsp + 0x124], 0
je 0x503f58
xor eax, eax
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jmp 0x503dda
mov r10, qword [rsp + 0x38]
mov r11, qword [rsp + 0x30]
jmp 0x503e4b
mov rcx, qword [rsp + 0xf0]
mov rdx, rbx
call fcn.004fbfa0
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
test rax, rax
jne 0x503dda
jmp 0x503ef9
mov eax, 0xfffffffe
sub eax, edx
mov ecx, 0xffffffff
not ecx
or ecx, eax
movabs rdx, 0x23ded306d30f4314
mov eax, edx
not eax
or eax, edx
not ecx
and ecx, eax
mov eax, 1
shl rax, cl
jmp 0x503dda
mov r8, qword [rsp + 0xb8]
mov r9d, dword [rsp + 0x78]
mov rdi, qword [rsp + 0xd8]
mov rsi, qword [rsp + 0x88]
mov rbp, qword [rsp + 0xf8]
mov rbx, qword [rsp + 0x58]
test r14b, r14b
sete cl
cmp r12, r8
setae al
mov edx, eax
and dl, cl
xor al, cl
or al, dl
cmp rsi, rdi
setb cl
setae dl
xor dl, al
jne 0x50405d
add rsi, 1
xor al, 1
or cl, al
xor cl, 1
je 0x503120
jmp 0x50405d
mov dword [rsp + 0x44], eax
jmp 0x5035f3
mov al, byte [rbx + 0x20]
test al, al
sete cl
not r9d
or r9d, 0xfffffd7f
cmp r9d, 0xffffff7f
sete dl
xor dl, cl
mov rcx, r8
cmovne rcx, r12
test al, al
cmovne r12, rcx
cmp r9d, 0xffffff7f
cmovne r12, rcx
cmp r12, r8
jne 0x50407f
mov rax, qword [rsp + 0xa0]
jmp 0x50411b
xor r14d, r14d
mov r8, qword [rsp + 0xb8]
cmp r12, r8
je 0x504062
mov al, 0xff
test r14b, r14b
jne 0x50411b
movabs rax, 0x9f15c4e1d4d3d8af
movabs rcx, 0x826c13ab3eb8fece
mov rbp, qword [rsp + 0xa0]
mov edx, ebp
xor edx, 0xffff0000
and edx, ebp
mov rsi, rdx
neg rsi
mov ebp, ecx
not ebp
or ebp, ecx
xor r8d, r8d
not r12
mov rdi, rax
not rdi
or rdi, rax
nop dword [rax + rax]
cmp rdx, 2
jl 0x50304f
mov ecx, 0xffffffff
not ecx
or ecx, esi
not ecx
and ecx, ebp
mov rbx, 0xffffffffffffffff
shl rbx, cl
lea rax, [rdx - 1]
cmp rdx, 0x41
not rbx
cmovge rbx, r8
mov rcx, rbx
not rcx
or rcx, r12
not rcx
and rcx, rdi
add rsi, 1
mov rdx, rax
cmp rcx, rbx
jne 0x5040d0
movaps xmm6, xmmword [rsp + 0x170]
add rsp, 0x188
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret