Function at 0x2fc4c15a0
Capabilities:
Access peb ldr_data
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x68
lea rbp, [rsp + 0x60]
mov eax, dword [0x2fc4e6150]
mov r8d, 0xffffffff
lea ecx, [rax + r8]
imul ecx, eax
xor ecx, r8d
or ecx, 0xfffffffe
cmp ecx, r8d
sete al
cmp dword [0x2fc4e6168], 0xa
setl cl
mov edi, dword [0x2fc4e6160]
mov esi, dword [0x2fc4e616c]
test cl, al
jne 0x2fc4c15f6
xor cl, al
je 0x2fc4c16d0
mov eax, 0x10
call fcn.2fc4c3e50
sub rsp, rax
mov r10, rsp
mov eax, 0x10
call fcn.2fc4c3e50
sub rsp, rax
mov r9, rsp
lea eax, [rdi + r8]
imul eax, edi
xor eax, r8d
or eax, 0xfffffffe
cmp eax, r8d
sete al
cmp esi, 0xa
setl dl
test dl, al
jne 0x2fc4c163b
xor dl, al
je 0x2fc4c175e
mov eax, 4
xor edx, edx
lea r14, [0x2fc4c5020]
mov cl, byte [rdx + r14]
mov byte [r10 + rdx], cl
mov edi, dword [0x2fc4e6160]
mov esi, dword [0x2fc4e616c]
lea ebx, [rdi - 1]
imul ebx, edi
mov ecx, ebx
xor ecx, 0xfffffffe
test ecx, ebx
sete bl
cmp esi, 0xa
setl cl
test cl, bl
jne 0x2fc4c167f
xor cl, bl
je 0x2fc4c175e
dec rax
inc rdx
cmp rdx, 4
jne 0x2fc4c1649
mov eax, dword [0x2fc4e6150]
mov ecx, dword [0x2fc4e6168]
mov edx, 0xffffffff
lea ebx, [rax + rdx]
imul ebx, eax
xor ebx, edx
or ebx, 0xfffffffe
cmp ebx, edx
sete bl
setne r11b
cmp ecx, 0xa
setl al
cmp ecx, 9
setg dl
cmp al, bl
jne 0x2fc4c1762
or dl, r11b
xor dl, 1
jne 0x2fc4c1762
mov eax, 0x10
call fcn.2fc4c3e50
sub rsp, rax
mov r10, rsp
lea eax, [rdi - 1]
imul eax, edi
mov ecx, eax
xor ecx, 0xfffffffe
test ecx, eax
sete al
cmp esi, 0xa
setl cl
test cl, al
jne 0x2fc4c16fe
xor cl, al
je 0x2fc4c1760
mov ecx, 4
xor ebx, ebx
lea r9, [0x2fc4c5020]
mov al, byte [rbx + r9]
mov byte [r10 + rbx], al
mov edi, dword [0x2fc4e6160]
mov esi, dword [0x2fc4e616c]
lea eax, [rdi - 1]
imul eax, edi
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete r14b
setne r11b
cmp esi, 0xa
setl dl
cmp esi, 9
setg al
cmp dl, r14b
jne 0x2fc4c174d
or al, r11b
xor al, 1
je 0x2fc4c1760
dec rcx
inc rbx
cmp rbx, 4
jne 0x2fc4c170c
jmp 0x2fc4c15f6
jmp 0x2fc4c175e
jmp 0x2fc4c1760
mov r8d, dword [r10]
test r8, r8
je 0x2fc4c17bb
xor ecx, ecx
movabs r10, 0x103091b51f5e1a4f
mov r11b, 0xff
mov rax, rcx
shr rax, 3
mul r10
shr rdx, 4
imul rax, rdx, 0xfffffffffffff818
add rax, r14
mov al, byte [rcx + rax + 4]
mov dl, byte [rcx + r14 + 0x7ec]
mov ebx, edx
xor bl, r11b
and bl, al
xor al, r11b
and al, dl
or al, bl
mov byte [rcx + r14 + 0x7ec], al
inc rcx
cmp rcx, r8
jb 0x2fc4c1779
mov r12d, 0xffffffff
lea eax, [rdi + r12]
imul eax, edi
xor eax, r12d
or eax, 0xfffffffe
cmp eax, r12d
sete dl
setne al
cmp esi, 0xa
setl bl
cmp esi, 9
setg cl
cmp bl, dl
jne 0x2fc4c17f0
or cl, al
xor cl, 1
jne 0x2fc4c17f0
jmp 0x2fc4c17ee
lea rdx, [r8 + r14]
add rdx, 0x7ec
movabs r15, 0xb6a6a95f0463f7a4
mov esi, 4
mov r10d, 1
mov rcx, r9
mov qword [rbp], rdx
mov al, byte [rdx]
mov byte [rcx], al
mov edi, dword [0x2fc4e6160]
mov r11d, dword [0x2fc4e616c]
lea eax, [rdi - 1]
imul eax, edi
mov ebx, eax
xor ebx, 0xfffffffe
test ebx, eax
sete al
cmp r11d, 0xa
setl bl
test bl, al
jne 0x2fc4c1847
xor bl, al
je 0x2fc4c17ee
dec rsi
add rcx, r10
add rdx, r10
test rsi, rsi
jne 0x2fc4c1817
mov eax, dword [0x2fc4e6150]
mov ecx, dword [0x2fc4e6168]
lea edx, [rax - 1]
imul edx, eax
mov eax, edx
xor eax, 0xfffffffe
test eax, edx
sete dl
setne al
cmp ecx, 0xa
setl bl
cmp ecx, 9
setg cl
cmp bl, dl
jne 0x2fc4c197c
or cl, al
xor cl, 1
jne 0x2fc4c197c
lea eax, [rdi + r12]
imul eax, edi
xor eax, r12d
or eax, 0xfffffffe
cmp eax, r12d
setne cl
sete dl
cmp r11d, 9
setg al
cmp r11d, 0xa
setl bl
xor bl, dl
jne 0x2fc4c18c5
or al, cl
xor al, 1
je 0x2fc4c197a
mov edi, 4
xor esi, esi
mov rax, qword [rbp]
mov al, byte [rax + rsi]
mov byte [r9 + rsi], al
mov edx, dword [0x2fc4e6160]
mov r13d, dword [0x2fc4e616c]
lea eax, [rdx + r12]
imul eax, edx
xor eax, r12d
or eax, 0xfffffffe
cmp eax, r12d
setne r11b
sete bl
cmp r13d, 9
setg cl
cmp r13d, 0xa
setl al
xor al, bl
jne 0x2fc4c1915
or cl, r11b
xor cl, 1
je 0x2fc4c197a
add rdi, r15
mov rax, r15
not rax
add rdi, rax
inc rsi
cmp rsi, 4
jne 0x2fc4c18cc
lea eax, [rdx - 1]
imul eax, edx
mov ecx, eax
xor ecx, 0xfffffffe
test ecx, eax
setne r11b
sete al
cmp r13d, 9
setg dil
cmp r13d, 0xa
setl cl
xor cl, al
mov esi, 4
mov rcx, r9
mov rdx, qword [rbp]
jne 0x2fc4c1817
or dil, r11b
xor dil, 1
mov rcx, r9
mov rdx, qword [rbp]
jne 0x2fc4c1817
jmp 0x2fc4c17ee
jmp 0x2fc4c197a
mov r10d, dword [r9]
test r10, r10
je 0x2fc4c19d3
lea rdi, [r8 + r14]
add rdi, 0x7f0
xor esi, esi
movabs r9, 0x103091b51f5e1a4f
mov cl, 0xff
mov rax, rsi
shr rax, 3
mul r9
shr rdx, 4
imul rax, rdx, 0xfffffffffffff818
add rax, r14
mov al, byte [rsi + rax + 4]
mov bl, byte [rdi + rsi]
mov edx, ebx
xor dl, cl
and dl, al
xor al, cl
and al, bl
or al, dl
mov byte [rdi + rsi], al
inc rsi
cmp rsi, r10
jb 0x2fc4c199d
mov eax, dword [0x2fc4e617c]
lea ecx, [rax - 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
sete al
cmp dword [0x2fc4e6184], 0xa
setl cl
test cl, al
jne 0x2fc4c19fd
xor cl, al
jne 0x2fc4c19fd
jmp 0x2fc4c19fb
add qword [rbp], 4
lea rdx, [r8 + r14]
add rdx, 0x7ef
lea r13, [r8 + r14]
add r13, 0x7f0
mov ebx, 1
mov r15b, 1
mov qword [rbp - 0x20], rdx
movsxd rax, dword [0x2fc4c5848]
add rax, r14
add rax, 0x7ec
mov qword [rbp - 0x18], rax
mov rax, r13
mov rcx, rdx
mov rdx, rax
add rax, rbx
cmp byte [rcx + 1], 0
lea rcx, [rcx + rbx]
jne 0x2fc4c1a3e
lea r9, [rcx + 1]
mov r12, r9
cmp byte [r12], 0
lea r12, [r12 + 1]
jne 0x2fc4c1a55
mov qword [rbp - 0x28], rcx
mov qword [rbp - 0x58], r12
cmp byte [r12], 0
lea r12, [r12 + 1]
jne 0x2fc4c1a69
mov ecx, dword [0x2fc4e6174]
mov edi, 0xffffffff
lea ebx, [rcx + rdi]
imul ebx, ecx
xor ebx, edi
or ebx, 0xfffffffe
cmp ebx, edi
sete r8b
cmp dword [0x2fc4e6180], 0xa
setl cl
mov ebx, ecx
and bl, r8b
xor cl, r8b
or cl, bl
test cl, cl
je 0x2fc4c1aa5
mov rcx, qword gs:[0x60]
mov rsi, qword [rcx + 0x18]
mov rdi, qword [rsi + 0x10]
add rsi, 0x10
cmp rdi, rsi
je 0x2fc4c1bb5
mov ecx, dword [0x2fc4e6178]
mov r8d, 0xffffffff
lea ebx, [rcx + r8]
imul ebx, ecx
xor ebx, r8d
or ebx, 0xfffffffe
cmp ebx, r8d
sete r8b
cmp dword [0x2fc4e6154], 0xa
setl bl
mov ecx, ebx
and cl, r8b
xor bl, r8b
or bl, cl
mov qword [rbp - 0x30], r9
mov qword [rbp - 0x48], rsi
mov byte [rbp - 0x38], bl
mov rcx, qword [rdi + 0x60]
mov qword [rbp - 8], rcx
mov rcx, rdx
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x2fc4c1b11
mov qword [rbp - 0x10], rdi
test bl, bl
je 0x2fc4c1fbe
movabs rbx, 0x65346e6dd10ef3c4
sub rcx, rbx
sub rcx, r9
add rcx, rbx
je 0x2fc4c1bab
xor r8d, r8d
mov r9, rcx
mov rbx, qword [rbp - 8]
movzx r10d, word [rbx + r8*2]
movsx esi, byte [rax + r8]
lea ebx, [r10 - 0x41]
mov edi, 0x20
lea r11d, [r10 + rdi]
cmp bx, 0x1a
cmovae r11d, r10d
lea ebx, [rsi - 0x41]
add edi, esi
cmp bl, 0x1a
cmovae edi, esi
cmp r11d, edi
jne 0x2fc4c1b88
test r10w, r10w
je 0x2fc4c1bab
dec r9
inc r8
cmp rcx, r8
jne 0x2fc4c1b42
jmp 0x2fc4c1bab
mov rdi, qword [rbp - 0x10]
mov rdi, qword [rdi]
mov r10d, 0
mov rsi, qword [rbp - 0x48]
cmp rdi, rsi
mov r9, qword [rbp - 0x30]
mov bl, byte [rbp - 0x38]
jne 0x2fc4c1b06
jmp 0x2fc4c1bb8
mov rax, qword [rbp - 0x10]
mov r10, qword [rax + 0x30]
jmp 0x2fc4c1bb8
xor r10d, r10d
mov eax, dword [0x2fc4e6164]
mov edx, 0xffffffff
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
sete al
cmp dword [0x2fc4e6170], 0xa
setl cl
test cl, al
jne 0x2fc4c1be9
xor cl, al
je 0x2fc4c1fbc
movsxd rax, dword [r10 + 0x3c]
mov eax, dword [r10 + rax + 0x88]
mov r8d, dword [r10 + rax + 0x1c]
mov ecx, dword [r10 + rax + 0x20]
add r8, r10
add rcx, r10
mov r11d, dword [r10 + rax + 0x24]
add r11, r10
mov eax, dword [0x2fc4e6158]
lea edx, [rax - 1]
imul edx, eax
mov eax, edx
xor eax, 0xfffffffe
test eax, edx
sete al
cmp dword [0x2fc4e615c], 0xa
setl r9b
mov edx, r9d
and dl, al
xor r9b, al
or r9b, dl
mov esi, dword [rcx]
add rsi, r10
xor edi, edi
mov al, byte [r13 + rdi]
mov dl, byte [rsi + rdi]
test al, al
je 0x2fc4c1c58
cmp al, dl
jne 0x2fc4c1c58
inc rdi
test r15b, r15b
jne 0x2fc4c1c40
test r9b, r9b
je 0x2fc4c1fb8
cmp al, dl
je 0x2fc4c1c6f
add rcx, 4
add r11, 2
jmp 0x2fc4c1c39
movzx eax, word [r11]
mov eax, dword [r8 + rax*4]
add r10, rax
mov rax, qword [rbp - 0x18]
mov edx, dword [rax + 0x50]
sub rsp, 0x20
mov r8d, 0x3000
mov r9d, 0x40
xor ecx, ecx
call r10
add rsp, 0x20
mov qword [rbp - 8], rax
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
mov eax, 0xffffffff
lea edx, [rcx + rax]
imul edx, ecx
xor edx, eax
or edx, 0xfffffffe
mov edi, 0xffffffff
cmp edx, eax
sete al
cmp r8d, 0xa
setl bl
test bl, al
jne 0x2fc4c1fc6
xor bl, al
jne 0x2fc4c1fc6
movsxd rax, dword [0x2fc4c5848]
mov qword [rbp - 0x18], rax
mov eax, dword [0x2fc4e617c]
mov edx, dword [0x2fc4e6184]
lea ecx, [rax - 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
sete bl
setne r8b
cmp edx, 0xa
setl cl
cmp edx, 9
setg dl
mov rax, qword [rbp]
cmp cl, bl
jne 0x2fc4c1d2b
or dl, r8b
xor dl, 1
mov rax, qword [rbp]
je 0x2fc4c1fc0
mov rcx, rax
inc rax
cmp byte [rcx], 0
jne 0x2fc4c1d2b
mov rdx, rax
cmp byte [rdx], 0
lea rdx, [rdx + 1]
jne 0x2fc4c1d39
mov edx, dword [0x2fc4e6174]
mov edi, 0xffffffff
lea ebx, [rdx + rdi]
imul ebx, edx
xor ebx, edi
or ebx, 0xfffffffe
cmp ebx, edi
setne r8b
cmp dword [0x2fc4e6180], 9
setg dl
mov ebx, edx
xor bl, r8b
or dl, r8b
xor dl, 1
or dl, bl
test dl, dl
je 0x2fc4c1d75
mov rdx, qword gs:[0x60]
mov rbx, qword [rdx + 0x18]
mov rdx, qword [rbx + 0x10]
add rbx, 0x10
mov qword [rbp - 8], rdx
mov qword [rbp - 0x28], rbx
cmp rdx, rbx
je 0x2fc4c1e7c
mov edx, dword [0x2fc4e6178]
mov edi, 0xffffffff
lea ebx, [rdx + rdi]
imul ebx, edx
xor ebx, edi
or ebx, 0xfffffffe
cmp ebx, edi
setne r8b
cmp dword [0x2fc4e6154], 9
setg bl
mov edx, ebx
xor dl, r8b
or bl, r8b
xor bl, 1
or bl, dl
mov byte [rbp - 0x10], bl
mov rdx, qword [rbp - 8]
mov r12, qword [rdx + 0x60]
mov rdx, rcx
cmp byte [rdx + 1], 0
lea rdx, [rdx + 1]
jne 0x2fc4c1de0
cmp byte [rbp - 0x10], 0
je 0x2fc4c1fc4
movabs rbx, 0x46508b6d359d49af
add rdx, rbx
sub rdx, rax
sub rdx, rbx
je 0x2fc4c1e72
xor esi, esi
mov rdi, rdx
movzx r8d, word [r12 + rsi*2]
movsx ebx, byte [rax + rsi]
lea r9d, [r8 - 0x41]
mov r11d, 0x20
lea r10d, [r8 + r11]
cmp r9w, 0x1a
cmovae r10d, r8d
lea r9d, [rbx - 0x41]
add r11d, ebx
cmp r9b, 0x1a
cmovae r11d, ebx
cmp r10d, r11d
jne 0x2fc4c1e55
test r8w, r8w
je 0x2fc4c1e72
dec rdi
inc rsi
cmp rdx, rsi
jne 0x2fc4c1e0e
jmp 0x2fc4c1e72
mov rdx, qword [rbp - 8]
mov rdx, qword [rdx]
mov r12d, 0
mov qword [rbp - 8], rdx
cmp rdx, qword [rbp - 0x28]
jne 0x2fc4c1dd5
jmp 0x2fc4c1e7f
mov rax, qword [rbp - 8]
mov r12, qword [rax + 0x30]
jmp 0x2fc4c1e7f
xor r12d, r12d
mov eax, dword [0x2fc4e6164]
mov edx, 0xffffffff
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
sete al
cmp dword [0x2fc4e6170], 0xa
setl cl
test cl, al
jne 0x2fc4c1eb0
xor cl, al
je 0x2fc4c1fc2
movsxd rax, dword [r12 + 0x3c]
mov eax, dword [r12 + rax + 0x88]
mov r8d, dword [r12 + rax + 0x1c]
mov ecx, dword [r12 + rax + 0x20]
add r8, r12
add rcx, r12
mov r10d, dword [r12 + rax + 0x24]
add r10, r12
mov eax, dword [0x2fc4e6158]
mov ebx, 0xffffffff
lea edx, [rax + rbx]
imul edx, eax
xor edx, ebx
or edx, 0xfffffffe
cmp edx, ebx
sete al
cmp dword [0x2fc4e615c], 0xa
setl r9b
mov edx, r9d
and dl, al
xor r9b, al
or r9b, dl
mov esi, dword [rcx]
add rsi, r12
xor edi, edi
mov al, byte [r13 + rdi]
mov dl, byte [rsi + rdi]
test al, al
je 0x2fc4c1f25
cmp al, dl
jne 0x2fc4c1f25
inc rdi
test r15b, r15b
jne 0x2fc4c1f0d
test r9b, r9b
je 0x2fc4c1fba
cmp al, dl
je 0x2fc4c1f3c
add rcx, 4
add r10, 2
jmp 0x2fc4c1f06
movzx eax, word [r10]
mov eax, dword [r8 + rax*4]
add r12, rax
mov rax, qword [rbp - 0x18]
mov edx, dword [rax + r14 + 0x83c]
sub rsp, 0x20
mov r8d, 0x3000
mov r9d, 0x40
xor ecx, ecx
call r12
add rsp, 0x20
mov eax, dword [0x2fc4e617c]
mov edx, dword [0x2fc4e6184]
lea ecx, [rax - 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
setne al
sete bl
cmp edx, 9
setg cl
cmp edx, 0xa
setl dl
xor dl, bl
mov rdx, qword [rbp - 0x20]
mov ebx, 1
jne 0x2fc4c1a24
or cl, al
xor cl, 1
jne 0x2fc4c1a24
jmp 0x2fc4c19fb
jmp 0x2fc4c1fb8
jmp 0x2fc4c1fba
jmp 0x2fc4c1fbc
jmp 0x2fc4c1fbe
jmp 0x2fc4c1fc0
jmp 0x2fc4c1fc2
jmp 0x2fc4c1fc4
mov rax, qword [rbp - 0x18]
cmp word [rax + 6], 0
je 0x2fc4c20cf
mov rax, qword [rbp - 0x18]
add rax, 0x108
mov qword [rbp], rax
mov esi, dword [0x2fc4e6160]
mov edi, dword [0x2fc4e616c]
xor r9d, r9d
lea eax, [rsi - 1]
imul eax, esi
mov ecx, eax
xor ecx, 0xfffffffe
test ecx, eax
sete dl
setne al
cmp edi, 0xa
setl bl
cmp edi, 9
setg cl
cmp bl, dl
jne 0x2fc4c2020
or cl, al
xor cl, 1
je 0x2fc4c20cd
lea rax, [r9 + r9*4]
mov rcx, qword [rbp]
mov r10d, dword [rcx + rax*8 + 0x10]
test r10, r10
je 0x2fc4c20a1
mov rcx, qword [rbp]
mov r13d, dword [rcx + rax*8 + 0xc]
mov eax, dword [rcx + rax*8 + 0x14]
add r13, qword [rbp - 8]
lea r11, [rax + r14]
add r11, 0x7ec
xor eax, eax
mov rcx, r10
mov dl, byte [r11 + rax]
mov byte [r13 + rax], dl
mov esi, dword [0x2fc4e6160]
mov edi, dword [0x2fc4e616c]
lea ebx, [rsi - 1]
imul ebx, esi
mov edx, ebx
xor edx, 0xfffffffe
test edx, ebx
setne r15b
sete bl
cmp edi, 9
setg dl
cmp edi, 0xa
setl r8b
xor r8b, bl
jne 0x2fc4c2096
or dl, r15b
xor dl, 1
je 0x2fc4c20cd
dec rcx
inc rax
cmp r10, rax
jne 0x2fc4c2053
inc r9
mov rax, qword [rbp - 0x18]
movzx eax, word [rax + 6]
cmp r9, rax
jb 0x2fc4c1ff2
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
jmp 0x2fc4c20d1
jmp 0x2fc4c20cd
xor edx, edi
test edx, edx
sete al
cmp r8d, 0xa
setl dl
test dl, al
jne 0x2fc4c20e7
xor dl, al
jne 0x2fc4c20e7
jmp 0x2fc4c20e5
mov rax, qword [rbp - 0x18]
mov edx, dword [rax + 0xb0]
mov rax, qword [rbp - 8]
cmp dword [rax + rdx], 0
je 0x2fc4c2346
mov rdi, rdx
mov rbx, qword [rbp - 8]
mov r9, rdx
add r9, rbx
mov rax, qword [rbp - 0x18]
mov rax, qword [rax + 0x30]
movabs rdx, 0xdb7ce1d7fa6b9b01
mov rsi, rbx
sub rsi, rdx
sub rsi, rax
add rsi, rdx
lea rdi, [rbx + rbx*2]
lea rdx, [rax + rax*2]
sub rdi, rdx
mov qword [rbp - 0x30], rdi
lea r14, [rbx + rbx]
add rax, rax
sub r14, rax
mov r13d, 0xffffffff
mov qword [rbp - 0x20], r9
mov qword [rbp], r9
mov rax, qword [rbp]
mov edi, dword [rax + 4]
cmp rdi, 8
jb 0x2fc4c232c
lea eax, [rcx + r13]
imul eax, ecx
xor eax, r13d
or eax, 0xfffffffe
cmp eax, r13d
sete al
cmp r8d, 0xa
setl dl
mov ebx, edx
and bl, al
xor dl, al
or dl, bl
test dl, dl
je 0x2fc4c2184
lea eax, [rcx + r13]
imul eax, ecx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete dl
cmp r8d, 0xa
setl bl
test bl, dl
jne 0x2fc4c21ac
xor bl, dl
je 0x2fc4c2baa
movabs rax, 0x1fffffff8
add rdi, rax
shr rdi, 1
movabs rax, 0x446be450d8373b86
mov edx, eax
xor edx, r13d
or edx, eax
and edx, edi
mov qword [rbp - 0x10], rdx
xor r10d, r10d
cmp r10, qword [rbp - 0x10]
je 0x2fc4c2325
mov rax, qword [rbp]
movzx eax, word [rax + r10*2 + 8]
mov edx, eax
shr edx, 0xc
mov ebx, eax
and ebx, 0xfff
cmp eax, 0xa000
jae 0x2fc4c222c
cmp edx, 3
jne 0x2fc4c22de
mov rax, qword [rbp - 0x20]
mov eax, dword [rax]
mov rcx, qword [rbp - 8]
lea rax, [rcx + rax*4]
mov ecx, ebx
add dword [rax + rcx*4], esi
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
jmp 0x2fc4c22de
cmp edx, 0xa
jne 0x2fc4c22de
mov rax, qword [rbp - 0x20]
mov edi, dword [rax]
mov r15d, ebx
add r15, qword [rbp - 8]
mov r11, qword [rdi + r15]
movabs rax, 0x4f981afbf5fa22ce
lea r9, [r11 + rax]
add r9, rsi
sub r9, rax
mov qword [rdi + r15], r9
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
lea eax, [rcx - 1]
imul eax, ecx
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete dl
cmp r8d, 0xa
setl al
test al, dl
jne 0x2fc4c22de
xor al, dl
jne 0x2fc4c22de
add rdi, r15
add r11, qword [rbp - 0x30]
mov qword [rdi], r11
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
lea eax, [rcx + r13]
imul eax, ecx
xor eax, r13d
or eax, 0xfffffffe
cmp eax, r13d
sete dl
cmp r8d, 0xa
setl bl
test bl, dl
jne 0x2fc4c22de
movabs rax, 0xe5f36ea875535d88
add r9, rax
add r9, rsi
sub r9, rax
add r9, rsi
xor bl, dl
add r11, r14
test bl, bl
je 0x2fc4c2291
lea ebx, [rcx - 1]
imul ebx, ecx
mov edi, ebx
xor edi, 0xfffffffe
test edi, ebx
sete dl
cmp r8d, 0xa
setl al
test al, dl
jne 0x2fc4c2301
xor al, dl
je 0x2fc4c2bac
inc r10
test edi, ebx
sete dl
cmp r8d, 0xa
setl bl
test bl, dl
jne 0x2fc4c21d6
xor bl, dl
jne 0x2fc4c21d6
jmp 0x2fc4c2baa
mov rax, qword [rbp]
mov edi, dword [rax + 4]
mov rdx, qword [rbp]
lea rax, [rdx + rdi]
cmp dword [rdx + rdi], 0
mov qword [rbp - 0x20], rax
mov qword [rbp], rax
jne 0x2fc4c2151
mov rax, qword [rbp - 0x28]
inc rax
mov qword [rbp - 0x20], rax
mov rax, qword [rbp - 0x18]
mov edx, dword [rax + 0x90]
mov rax, qword [rbp - 8]
add rdx, rax
mov qword [rbp - 0x10], rdx
add rax, 2
mov qword [rbp - 0x48], rax
mov r15d, 1
mov r14b, 1
mov edx, 0xffffffff
lea eax, [rcx + rdx]
imul eax, ecx
xor eax, edx
or eax, 0xfffffffe
cmp eax, edx
setne cl
cmp r8d, 9
setg al
mov edx, eax
xor dl, cl
or al, cl
xor al, 1
or al, dl
test al, al
je 0x2fc4c239d
mov rax, qword [rbp - 0x10]
mov eax, dword [rax + 0xc]
mov qword [rbp], rax
test rax, rax
je 0x2fc4c2bca
mov rax, qword [rbp]
add rax, qword [rbp - 8]
mov qword [rbp], rax
mov eax, dword [0x2fc4e6174]
mov edx, dword [0x2fc4e6180]
lea ebx, [rax - 1]
imul ebx, eax
mov eax, ebx
xor eax, 0xfffffffe
test eax, ebx
setne r8b
sete bl
cmp edx, 9
setg al
cmp edx, 0xa
setl dl
xor dl, bl
or al, r8b
xor al, 1
or al, dl
test al, al
je 0x2fc4c23f6
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov r9, qword [rax + 0x10]
add rax, 0x10
mov qword [rbp - 0x30], rax
cmp r9, rax
je 0x2fc4c2531
mov eax, dword [0x2fc4e617c]
mov ebx, dword [0x2fc4e6184]
mov ecx, 0xffffffff
lea edx, [rax + rcx]
imul edx, eax
xor edx, ecx
mov r8d, 0xfffffffe
or edx, r8d
cmp edx, ecx
setne r11b
sete al
mov edi, 9
cmp ebx, edi
setg sil
cmp ebx, 0xa
setl dl
xor dl, al
mov eax, dword [0x2fc4e6178]
lea ebx, [rax + rcx]
imul ebx, eax
mov eax, ebx
xor eax, r8d
test eax, ebx
setne bl
cmp dword [0x2fc4e6154], edi
setg r10b
test dl, dl
jne 0x2fc4c248a
or sil, r11b
xor sil, r14b
je 0x2fc4c2bb8
mov eax, r10d
xor al, bl
or r10b, bl
xor r10b, r14b
or r10b, al
mov r11, qword [r9 + 0x60]
mov rdi, qword [rbp - 0x28]
cmp byte [rdi + 1], 0
lea rdi, [rdi + 1]
jne 0x2fc4c24a0
test r10b, r10b
je 0x2fc4c2bb6
movabs rax, 0xde46d68d0957b6d
add rdi, rax
sub rdi, qword [rbp - 0x20]
sub rdi, rax
je 0x2fc4c252b
xor eax, eax
mov rdx, rdi
movzx ebx, word [r11 + rax*2]
mov rcx, qword [rbp - 0x28]
movsx esi, byte [rcx + rax + 1]
lea r13d, [rbx - 0x41]
mov ecx, 0x20
lea r8d, [rbx + rcx]
cmp r13w, 0x1a
cmovae r8d, ebx
lea r13d, [rsi - 0x41]
add ecx, esi
cmp r13b, 0x1a
cmovae ecx, esi
cmp r8d, ecx
jne 0x2fc4c2516
test bx, bx
je 0x2fc4c252b
dec rdx
inc rax
cmp rdi, rax
jne 0x2fc4c24ce
jmp 0x2fc4c252b
mov r9, qword [r9]
mov r11d, 0
cmp r9, qword [rbp - 0x30]
jne 0x2fc4c2498
jmp 0x2fc4c2534
mov r11, qword [r9 + 0x30]
jmp 0x2fc4c2534
xor r11d, r11d
mov eax, dword [0x2fc4e6164]
mov ecx, dword [0x2fc4e6170]
mov ebx, 0xffffffff
lea edx, [rax + rbx]
imul edx, eax
xor edx, ebx
or edx, 0xfffffffe
cmp edx, ebx
sete bl
setne r8b
cmp ecx, 0xa
setl al
cmp ecx, 9
setg dl
cmp al, bl
jne 0x2fc4c2575
or dl, r8b
xor dl, 1
je 0x2fc4c2bb4
movsxd rax, dword [r11 + 0x3c]
mov eax, dword [r11 + rax + 0x88]
mov r8d, dword [r11 + rax + 0x1c]
mov esi, dword [r11 + rax + 0x20]
add r8, r11
add rsi, r11
mov r10d, dword [r11 + rax + 0x24]
add r10, r11
mov eax, dword [0x2fc4e6158]
mov edx, 0xffffffff
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
sete al
cmp dword [0x2fc4e615c], 0xa
setl r9b
mov ecx, r9d
and cl, al
xor r9b, al
or r9b, cl
mov ebx, dword [rsi]
add rbx, r11
mov rdi, qword [rbp - 0x58]
mov al, byte [rdi]
mov dl, byte [rbx]
cmp al, dl
sete r13b
test al, al
setne cl
cmp r13b, cl
jne 0x2fc4c25f1
add rdi, r15
add rbx, r15
test al, al
jne 0x2fc4c25d3
test r9b, r9b
je 0x2fc4c2bae
cmp al, dl
je 0x2fc4c2608
add rsi, 4
add r10, 2
jmp 0x2fc4c25ca
movzx eax, word [r10]
mov eax, dword [r8 + rax*4]
add r11, rax
sub rsp, 0x20
mov rcx, qword [rbp]
call r11
add rsp, 0x20
mov qword [rbp - 0x30], rax
mov rax, qword [rbp - 0x10]
mov ecx, dword [rax]
mov rax, qword [rbp - 8]
mov qword [rbp], rcx
mov rdi, qword [rax + rcx]
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
lea ebx, [rcx - 1]
imul ebx, ecx
mov eax, ebx
xor eax, 0xfffffffe
test eax, ebx
sete al
cmp r8d, 0xa
setl dl
mov ebx, edx
and bl, al
xor dl, al
or dl, bl
test rdi, rdi
je 0x2fc4c2b9c
mov rax, qword [rbp - 8]
add qword [rbp], rax
mov rcx, qword [rbp - 0x10]
mov ecx, dword [rcx + 0x10]
add rcx, rax
mov qword [rbp - 0x38], rcx
test dl, 1
je 0x2fc4c2bbe
mov rax, rdi
xor rax, 0xffffffffffff0000
and rax, rdi
mov rcx, qword [rbp - 0x48]
add rcx, rdi
test rdi, rdi
cmovs rcx, rax
mov qword [rbp - 0x50], rcx
mov eax, dword [0x2fc4e6174]
mov edx, 0xffffffff
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
setne cl
cmp dword [0x2fc4e6180], 9
setg al
mov edx, eax
xor dl, cl
or al, cl
xor al, 1
or al, dl
test al, al
je 0x2fc4c26d9
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov r9, qword [rax + 0x10]
add rax, 0x10
mov qword [rbp - 0x40], rax
cmp r9, rax
je 0x2fc4c27f9
mov eax, dword [0x2fc4e617c]
mov edi, 0xffffffff
lea ecx, [rax + rdi]
imul ecx, eax
mov eax, ecx
mov r8d, 0xfffffffe
xor eax, r8d
test eax, ecx
sete r11b
mov ecx, 0xa
cmp dword [0x2fc4e6184], ecx
setl sil
mov edx, dword [0x2fc4e6178]
mov ebx, dword [0x2fc4e6154]
add edi, edx
imul edi, edx
mov edx, edi
xor edx, r8d
test edx, edi
setne dl
sete al
cmp ebx, ecx
setl cl
cmp ebx, 9
setg r10b
xor cl, al
or r10b, dl
xor r10b, 1
or r10b, cl
test sil, r11b
jne 0x2fc4c2774
xor sil, r11b
je 0x2fc4c2bc0
mov r11, qword [r9 + 0x60]
mov rbx, qword [rbp - 0x28]
cmp byte [rbx + 1], 0
lea rbx, [rbx + 1]
jne 0x2fc4c277c
test r10b, r10b
je 0x2fc4c2bbc
sub rbx, qword [rbp - 0x20]
je 0x2fc4c27f3
xor ecx, ecx
mov rax, rbx
movzx edx, word [r11 + rcx*2]
mov rdi, qword [rbp - 0x28]
movsx esi, byte [rdi + rcx + 1]
lea edi, [rdx - 0x41]
mov r8d, 0x20
lea r13d, [rdx + r8]
cmp di, 0x1a
cmovae r13d, edx
lea edi, [rsi - 0x41]
add r8d, esi
cmp dil, 0x1a
cmovae r8d, esi
cmp r13d, r8d
jne 0x2fc4c27e2
test dx, dx
je 0x2fc4c27f3
dec rax
inc rcx
cmp rbx, rcx
jne 0x2fc4c279a
jmp 0x2fc4c27f3
mov r9, qword [r9]
mov r11d, 0
cmp r9, qword [rbp - 0x40]
jne 0x2fc4c2774
jmp 0x2fc4c27fc
mov r11, qword [r9 + 0x30]
jmp 0x2fc4c27fc
xor r11d, r11d
mov eax, dword [0x2fc4e6164]
mov edx, dword [0x2fc4e6170]
mov ebx, 0xffffffff
lea ecx, [rax + rbx]
imul ecx, eax
xor ecx, ebx
or ecx, 0xfffffffe
cmp ecx, ebx
setne al
sete bl
cmp edx, 9
setg cl
cmp edx, 0xa
setl dl
xor dl, bl
jne 0x2fc4c283b
or cl, al
xor cl, 1
je 0x2fc4c2bba
movsxd rax, dword [r11 + 0x3c]
mov eax, dword [r11 + rax + 0x88]
mov r8d, dword [r11 + rax + 0x1c]
mov ecx, dword [r11 + rax + 0x20]
add r8, r11
add rcx, r11
mov esi, dword [r11 + rax + 0x24]
add rsi, r11
mov eax, dword [0x2fc4e6158]
mov ebx, 0xffffffff
lea edx, [rax + rbx]
imul edx, eax
xor edx, ebx
or edx, 0xfffffffe
cmp edx, ebx
setne al
cmp dword [0x2fc4e615c], 9
setg r9b
mov edx, r9d
xor dl, al
or r9b, al
xor r9b, 1
or r9b, dl
mov eax, dword [rcx]
add rax, r11
mov rdi, r12
mov bl, byte [rdi]
mov dl, byte [rax]
test bl, bl
je 0x2fc4c28b3
cmp bl, dl
jne 0x2fc4c28b3
add rdi, r15
add rax, r15
test r14b, r14b
jne 0x2fc4c289c
test r9b, r9b
je 0x2fc4c2bb0
cmp bl, dl
je 0x2fc4c28ca
add rcx, 4
add rsi, 2
jmp 0x2fc4c2894
movzx eax, word [rsi]
mov eax, dword [r8 + rax*4]
add r11, rax
sub rsp, 0x20
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x50]
call r11
add rsp, 0x20
mov rcx, qword [rbp - 0x38]
mov qword [rcx], rax
mov ecx, dword [0x2fc4e6150]
mov r8d, dword [0x2fc4e6168]
mov edx, 0xffffffff
lea eax, [rcx + rdx]
imul eax, ecx
xor eax, edx
or eax, 0xfffffffe
cmp eax, edx
sete r9b
setne dl
cmp r8d, 0xa
setl al
cmp r8d, 9
setg bl
cmp al, r9b
jne 0x2fc4c2b77
or bl, dl
xor bl, 1
jne 0x2fc4c2b77
mov eax, dword [0x2fc4e6174]
mov edx, 0xffffffff
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
sete cl
cmp dword [0x2fc4e6180], 0xa
setl al
mov edx, eax
and dl, cl
xor al, cl
or al, dl
test al, al
je 0x2fc4c2963
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov r9, qword [rax + 0x10]
add rax, 0x10
mov qword [rbp - 0x40], rax
cmp r9, rax
je 0x2fc4c2a76
mov eax, dword [0x2fc4e617c]
mov edi, 0xffffffff
lea ecx, [rax + rdi]
imul ecx, eax
xor ecx, edi
mov esi, 0xfffffffe
or ecx, esi
cmp ecx, edi
sete al
mov r8d, 0xa
cmp dword [0x2fc4e6184], r8d
setl cl
mov edx, dword [0x2fc4e6178]
lea ebx, [rdx + rdi]
imul ebx, edx
xor ebx, edi
or ebx, esi
cmp ebx, edi
sete dl
cmp dword [0x2fc4e6154], r8d
setl r10b
mov ebx, r10d
and bl, dl
xor r10b, dl
or r10b, bl
test cl, al
jne 0x2fc4c29ef
xor cl, al
je 0x2fc4c2bc8
mov r11, qword [r9 + 0x60]
mov rbx, qword [rbp - 0x28]
cmp byte [rbx + 1], 0
lea rbx, [rbx + 1]
jne 0x2fc4c29f7
test r10b, r10b
je 0x2fc4c2bc6
sub rbx, qword [rbp - 0x20]
je 0x2fc4c2a70
xor ecx, ecx
mov rax, rbx
movzx edx, word [r11 + rcx*2]
mov rdi, qword [rbp - 0x28]
movsx esi, byte [rdi + rcx + 1]
lea r13d, [rdx - 0x41]
mov r8d, 0x20
lea edi, [rdx + r8]
cmp r13w, 0x1a
cmovae edi, edx
lea r13d, [rsi - 0x41]
add r8d, esi
cmp r13b, 0x1a
cmovae r8d, esi
cmp edi, r8d
jne 0x2fc4c2a5f
test dx, dx
je 0x2fc4c2a70
dec rax
inc rcx
cmp rbx, rcx
jne 0x2fc4c2a15
jmp 0x2fc4c2a70
mov r9, qword [r9]
mov r11d, 0
cmp r9, qword [rbp - 0x40]
jne 0x2fc4c29ef
jmp 0x2fc4c2a79
mov r11, qword [r9 + 0x30]
jmp 0x2fc4c2a79
xor r11d, r11d
mov eax, dword [0x2fc4e6164]
mov ecx, dword [0x2fc4e6170]
mov ebx, 0xffffffff
lea edx, [rax + rbx]
imul edx, eax
xor edx, ebx
or edx, 0xfffffffe
cmp edx, ebx
sete dl
setne al
cmp ecx, 0xa
setl bl
cmp ecx, 9
setg cl
cmp bl, dl
jne 0x2fc4c2ab8
or cl, al
xor cl, 1
je 0x2fc4c2bc4
movsxd rax, dword [r11 + 0x3c]
mov eax, dword [r11 + rax + 0x88]
mov r8d, dword [r11 + rax + 0x1c]
mov esi, dword [r11 + rax + 0x20]
add r8, r11
add rsi, r11
mov r10d, dword [r11 + rax + 0x24]
add r10, r11
mov eax, dword [0x2fc4e6158]
mov edx, dword [0x2fc4e615c]
lea ebx, [rax - 1]
imul ebx, eax
mov eax, ebx
xor eax, 0xfffffffe
test eax, ebx
setne al
sete bl
cmp edx, 9
setg r9b
cmp edx, 0xa
setl dl
xor dl, bl
or r9b, al
xor r9b, 1
or r9b, dl
mov eax, dword [rsi]
add rax, r11
mov rdi, r12
mov bl, byte [rdi]
mov dl, byte [rax]
cmp bl, dl
sete r13b
test bl, bl
setne cl
cmp r13b, cl
jne 0x2fc4c2b3a
add rdi, r15
add rax, r15
test bl, bl
jne 0x2fc4c2b1c
test r9b, r9b
je 0x2fc4c2bb2
cmp bl, dl
je 0x2fc4c2b4d
add rsi, 4
add r10, 2
jmp 0x2fc4c2b14
movzx eax, word [r10]
mov eax, dword [r8 + rax*4]
add r11, rax
sub rsp, 0x20
mov rcx, qword [rbp - 0x30]
mov rdx, qword [rbp - 0x50]
call r11
add rsp, 0x20
mov rcx, qword [rbp - 0x38]
mov qword [rcx], rax
jmp 0x2fc4c26aa
mov eax, 8
add qword [rbp - 0x38], rax
mov rdx, qword [rbp]
mov rdi, qword [rdx + 8]
add rdx, rax
mov qword [rbp], rdx
mov dl, 1
test rdi, rdi
jne 0x2fc4c2683
jmp 0x2fc4c2ba0
test dl, dl
je 0x2fc4c2bc2
add qword [rbp - 0x10], 0x14
jmp 0x2fc4c2377
jmp 0x2fc4c2baa
jmp 0x2fc4c2bac
jmp 0x2fc4c2bae
jmp 0x2fc4c2bb0
jmp 0x2fc4c2bb2
jmp 0x2fc4c2bb4
jmp 0x2fc4c2bb6
jmp 0x2fc4c2bb8
jmp 0x2fc4c2bba
jmp 0x2fc4c2bbc
jmp 0x2fc4c2bbe
jmp 0x2fc4c2bc0
jmp 0x2fc4c2bc2
jmp 0x2fc4c2bc4
jmp 0x2fc4c2bc6
jmp 0x2fc4c2bc8
mov rax, qword [rbp - 0x18]
mov eax, dword [rax + 0x28]
mov rcx, qword [rbp - 8]
add rcx, rax
sub rsp, 0x20
call rcx
add rsp, 0x20
xor eax, eax
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret