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, 0x88
lea rbp, [rsp + 0x80]
mov ebx, dword [0x2fc4e6150]
mov eax, dword [0x2fc4e6168]
mov edx, 0xffffffff
lea ecx, [rbx + rdx]
imul ecx, ebx
xor ecx, edx
or ecx, 0xfffffffe
mov edi, ecx
xor edi, edx
cmp ecx, edx
sete dl
cmp eax, 0xa
setl bl
test bl, dl
jne 0x2fc4c16bf
xor bl, dl
jne 0x2fc4c16bf
mov eax, 0x10
call fcn.2fc4c3f70
sub rsp, rax
mov r11, rsp
mov edi, dword [0x2fc4e6160]
mov r10d, dword [0x2fc4e616c]
mov edx, 0xffffffff
lea ebx, [rdi + rdx]
imul ebx, edi
xor ebx, edx
or ebx, 0xfffffffe
cmp ebx, edx
sete r9b
setne r8b
cmp r10d, 0xa
setl dl
cmp r10d, 9
setg bl
cmp dl, r9b
jne 0x2fc4c164a
or bl, r8b
xor bl, 1
jne 0x2fc4c164a
jmp 0x2fc4c1648
lea r9, [0x2fc4c5020]
mov ebx, 4
mov r8d, 1
lea ecx, [rdi - 1]
imul ecx, edi
mov esi, ecx
xor esi, 0xfffffffe
test esi, ecx
setne al
cmp r10d, 9
setg cl
mov edx, ecx
xor dl, al
or cl, al
xor cl, 1
or cl, dl
test cl, cl
je 0x2fc4c167e
cmp rbx, 1
jb 0x2fc4c16a6
dec rbx
mov al, byte [r9]
add r9, r8
mov byte [r11], al
add r11, r8
mov edi, dword [0x2fc4e6160]
mov r10d, dword [0x2fc4e616c]
jmp 0x2fc4c165c
mov ecx, dword [0x2fc4e6150]
mov eax, dword [0x2fc4e6168]
lea edx, [rcx - 1]
imul edx, ecx
mov edi, edx
xor edi, 0xfffffffe
and edi, edx
test edi, edi
sete dl
cmp eax, 0xa
setl al
mov r11d, dword [0x2fc4e6160]
mov r14d, dword [0x2fc4e616c]
test al, dl
jne 0x2fc4c16e4
xor al, dl
je 0x2fc4c17d3
mov eax, 0x10
call fcn.2fc4c3f70
sub rsp, rax
mov r8, rsp
mov eax, 0x10
call fcn.2fc4c3f70
sub rsp, rax
mov r10, rsp
lea eax, [r11 - 1]
imul eax, r11d
mov edx, eax
xor edx, 0xfffffffe
test edx, eax
sete bl
setne r9b
cmp r14d, 0xa
setl al
cmp r14d, 9
setg dl
cmp al, bl
jne 0x2fc4c1734
or dl, r9b
xor dl, 1
je 0x2fc4c179c
lea rsi, [0x2fc4c5020]
mov edi, 4
mov r15d, 0xffffffff
mov r9d, 1
mov rbx, r8
lea edx, [r11 + r15]
imul edx, r11d
xor edx, r15d
or edx, 0xfffffffe
cmp edx, r15d
setne cl
cmp r14d, 9
setg dl
mov eax, edx
xor al, cl
or dl, cl
xor dl, 1
or dl, al
test dl, dl
je 0x2fc4c1775
cmp rdi, 1
jb 0x2fc4c179e
dec rdi
mov al, byte [rsi]
add rsi, r9
mov byte [rbx], al
add rbx, r9
mov r11d, dword [0x2fc4e6160]
mov r14d, dword [0x2fc4e616c]
jmp 0x2fc4c174f
jmp 0x2fc4c179c
mov eax, dword [0x2fc4e6150]
mov ecx, 0xffffffff
lea edx, [rax + rcx]
imul edx, eax
xor edx, ecx
or edx, 0xfffffffe
cmp edx, ecx
sete al
cmp dword [0x2fc4e6168], 0xa
setl dl
test dl, al
jne 0x2fc4c1897
xor dl, al
jne 0x2fc4c1897
mov eax, 0x10
call fcn.2fc4c3f70
sub rsp, rax
mov r15, rsp
mov ecx, 0xffffffff
lea edx, [r11 + rcx]
imul edx, r11d
xor edx, ecx
or edx, 0xfffffffe
cmp edx, ecx
setne r8b
sete cl
cmp r14d, 9
setg bl
cmp r14d, 0xa
setl dl
xor dl, cl
jne 0x2fc4c1818
or bl, r8b
xor bl, 1
je 0x2fc4c1895
movabs r8, 0xf5433ec16fae005
lea rdi, [0x2fc4c5020]
mov esi, 4
mov r10, r8
not r10
mov r9d, 1
lea ebx, [r11 - 1]
imul ebx, r11d
mov ecx, ebx
xor ecx, 0xfffffffe
test ecx, ebx
setne cl
sete dl
cmp r14d, 9
setg bl
cmp r14d, 0xa
setl al
xor al, dl
or bl, cl
xor bl, 1
or bl, al
test bl, bl
je 0x2fc4c1866
cmp rsi, 1
jb 0x2fc4c16e4
add rsi, r8
add rsi, r10
mov al, byte [rdi]
add rdi, r9
mov byte [r15], al
add r15, r9
mov r11d, dword [0x2fc4e6160]
mov r14d, dword [0x2fc4e616c]
jmp 0x2fc4c183a
jmp 0x2fc4c1895
mov qword [rbp - 8], r10
mov r12d, dword [r8]
test r12, r12
je 0x2fc4c18f9
xor ebx, ebx
movabs rdi, 0x103091b51f5e1a4f
lea rsi, [0x2fc4c5020]
mov r8b, 0xff
mov rax, rbx
shr rax, 3
mul rdi
shr rdx, 4
imul rax, rdx, 0xfffffffffffff818
add rax, rsi
mov al, byte [rbx + rax + 4]
mov cl, byte [rbx + rsi + 0x7ec]
mov edx, ecx
xor dl, r8b
and dl, al
xor al, r8b
and al, cl
or al, dl
mov byte [rbx + rsi + 0x7ec], al
inc rbx
cmp rbx, r12
jb 0x2fc4c18b9
mov esi, 0xffffffff
lea eax, [r11 + rsi]
imul eax, r11d
xor eax, esi
or eax, 0xfffffffe
cmp eax, esi
setne r8b
sete bl
cmp r14d, 9
setg dl
cmp r14d, 0xa
setl al
xor al, bl
jne 0x2fc4c1932
or dl, r8b
xor dl, 1
je 0x2fc4c1ab4
lea rax, [0x2fc4c5020]
lea r15, [r12 + rax]
add r15, 0x7ec
movabs rax, 0xec209f3a27118e1d
mov r9d, 4
not rax
mov qword [rbp], rax
mov r10d, 1
mov rdi, qword [rbp - 8]
mov r8, r15
lea ecx, [r11 - 1]
imul ecx, r11d
mov ebx, ecx
xor ebx, 0xfffffffe
test ebx, ecx
setne cl
sete al
cmp r14d, 9
setg bl
cmp r14d, 0xa
setl dl
xor dl, al
or bl, cl
xor bl, 1
or bl, dl
test bl, bl
je 0x2fc4c1994
cmp r9, 1
jae 0x2fc4c1a40
mov eax, dword [0x2fc4e6150]
mov ecx, dword [0x2fc4e6168]
lea edx, [rax + rsi]
imul edx, eax
xor edx, esi
or edx, 0xfffffffe
cmp edx, esi
setne al
sete bl
cmp ecx, 9
setg dl
cmp ecx, 0xa
setl cl
xor cl, bl
jne 0x2fc4c1ab6
or dl, al
xor dl, 1
jne 0x2fc4c1ab6
mov r8d, 4
mov rsi, qword [rbp - 8]
mov rdi, r15
lea ebx, [r11 - 1]
imul ebx, r11d
mov ecx, ebx
xor ecx, 0xfffffffe
test ecx, ebx
setne cl
sete al
cmp r14d, 9
setg bl
cmp r14d, 0xa
setl dl
xor dl, al
or bl, cl
xor bl, 1
or bl, dl
test bl, bl
je 0x2fc4c1a19
cmp r8, 1
jb 0x2fc4c1a6f
dec r8
mov al, byte [rdi]
add rdi, r10
mov byte [rsi], al
add rsi, r10
mov r11d, dword [0x2fc4e6160]
mov r14d, dword [0x2fc4e616c]
jmp 0x2fc4c19ed
movabs rax, 0xec209f3a27118e1d
add r9, rax
add r9, qword [rbp]
mov al, byte [r8]
add r8, r10
mov byte [rdi], al
add rdi, r10
mov r11d, dword [0x2fc4e6160]
mov r14d, dword [0x2fc4e616c]
jmp 0x2fc4c1968
mov esi, 0xffffffff
lea eax, [r11 + rsi]
imul eax, r11d
xor eax, esi
or eax, 0xfffffffe
cmp eax, esi
sete r13b
cmp r14d, 0xa
setl bl
mov r9d, 4
mov rdi, qword [rbp - 8]
mov r8, r15
test bl, r13b
jne 0x2fc4c1968
xor bl, r13b
mov rdi, qword [rbp - 8]
mov r8, r15
jne 0x2fc4c1968
jmp 0x2fc4c1ab4
mov rax, qword [rbp - 8]
mov esi, dword [rax]
test rsi, rsi
lea r10, [0x2fc4c5020]
je 0x2fc4c1b1a
lea rbx, [r12 + r10]
add rbx, 0x7f0
xor edi, edi
movabs r8, 0x103091b51f5e1a4f
mov r9b, 0xff
mov rax, rdi
shr rax, 3
mul r8
shr rdx, 4
imul rax, rdx, 0xfffffffffffff818
add rax, r10
mov al, byte [rdi + rax + 4]
mov cl, byte [rbx + rdi]
mov edx, ecx
xor dl, r9b
and dl, al
xor al, r9b
and al, cl
or al, dl
mov byte [rbx + rdi], al
inc rdi
cmp rsi, rdi
jne 0x2fc4c1ae2
mov r14, r15
add r14, 4
add r12, 0x7f0
mov edx, 0xffffffff
mov r13b, 1
mov qword [rbp - 0x38], r14
mov r15, r10
movsxd r8, dword [0x2fc4c5848]
mov eax, dword [0x2fc4e617c]
lea ecx, [rax + rdx]
imul ecx, eax
xor ecx, edx
or ecx, 0xfffffffe
cmp ecx, edx
sete cl
cmp dword [0x2fc4e6184], 0xa
setl al
mov edx, eax
and dl, cl
xor al, cl
or al, dl
cmp byte [r14], 0
je 0x2fc4c1b81
test al, al
je 0x2fc4c21b9
cmp byte [r14 + 1], 0
lea r14, [r14 + 1]
jne 0x2fc4c1b74
jmp 0x2fc4c1b89
test al, al
je 0x2fc4c21c3
movsx r10d, byte [r14 + 1]
mov rax, r14
test r10d, r10d
je 0x2fc4c1ba3
mov rax, r14
cmp byte [rax + 2], 0
lea rax, [rax + 1]
jne 0x2fc4c1b99
lea rbx, [rax + 2]
cmp byte [rax + 2], 0
mov qword [rbp - 0x80], rax
mov qword [rbp - 8], r14
je 0x2fc4c1bbf
cmp byte [rbx + 1], 0
lea rbx, [rbx + 1]
jne 0x2fc4c1bb5
mov rax, qword gs:[0x60]
mov rdx, qword [rax + 0x18]
mov eax, dword [0x2fc4e6178]
lea ecx, [rax - 1]
imul ecx, eax
mov eax, ecx
xor eax, 0xfffffffe
test eax, ecx
sete al
cmp dword [0x2fc4e6154], 0xa
setl r11b
mov r9, qword [rdx + 0x10]
lea rcx, [rdx + 0x10]
mov qword [rbp - 0x28], rcx
cmp r9, rcx
je 0x2fc4c21a7
mov ecx, dword [0x2fc4e6174]
cmp dword [0x2fc4e6180], 0xa
setl dl
lea esi, [rcx - 1]
imul esi, ecx
mov edi, esi
xor edi, 0xfffffffe
test edi, esi
sete cl
lea esi, [r10 - 0x41]
lea edi, [r10 + 0x20]
cmp sil, 0x1a
cmovae edi, r10d
mov dword [rbp - 0x10], edi
test dl, cl
jne 0x2fc4c1c41
xor dl, cl
je 0x2fc4c21b3
lea rcx, [r8 + r15]
add rcx, 0x7ec
mov qword [rbp - 0x30], rcx
mov rcx, qword [rbp - 8]
inc rcx
mov edx, r11d
and dl, al
xor r11b, al
or r11b, dl
mov byte [rbp], r11b
mov rax, rcx
not rax
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x50], rbx
mov qword [rbp - 0x20], rcx
mov qword [rbp - 0x18], r10
mov r14, qword [r9 + 0x60]
mov rax, rcx
test r10b, r10b
je 0x2fc4c1c92
cmp byte [rax + 1], 0
lea rax, [rax + 1]
jne 0x2fc4c1c88
cmp byte [rbp], 0
je 0x2fc4c21a9
mov rdx, rax
sub rdx, rcx
je 0x2fc4c1d36
movzx edi, word [r14]
lea ebx, [rdi - 0x41]
lea ecx, [rdi + 0x20]
cmp bx, 0x1a
cmovae ecx, edi
cmp ecx, dword [rbp - 0x10]
jne 0x2fc4c1d1c
add rax, qword [rbp - 0x40]
xor r8d, r8d
test di, di
je 0x2fc4c1d36
cmp rax, r8
je 0x2fc4c1d36
movabs rcx, 0xe6e3cc83da04017d
add rdx, rcx
not rcx
add rdx, rcx
movzx edi, word [r14 + r8*2 + 2]
lea ecx, [rdi - 0x41]
mov esi, 0x20
lea ebx, [rdi + rsi]
cmp cx, 0x1a
cmovae ebx, edi
mov rcx, qword [rbp - 8]
movsx ecx, byte [rcx + r8 + 2]
lea r10d, [rcx - 0x41]
lea r11d, [rcx + rsi]
cmp r10b, 0x1a
cmovae r11d, ecx
inc r8
cmp ebx, r11d
je 0x2fc4c1cc5
mov r9, qword [r9]
cmp r9, qword [rbp - 0x28]
mov rcx, qword [rbp - 0x20]
mov r10, qword [rbp - 0x18]
jne 0x2fc4c1c7c
jmp 0x2fc4c21a7
mov r10, qword [r9 + 0x30]
movsxd rax, dword [r10 + 0x3c]
cmp dword [r10 + rax + 0x8c], 0
mov ebx, 0xffffffff
je 0x2fc4c21ab
mov ecx, dword [r10 + rax + 0x88]
mov eax, dword [0x2fc4e6164]
lea edx, [rax + rbx]
imul edx, eax
xor edx, ebx
or edx, 0xfffffffe
cmp edx, ebx
sete al
cmp dword [0x2fc4e6170], 0xa
setl dl
test al, dl
jne 0x2fc4c1d86
xor al, dl
je 0x2fc4c21b5
cmp dword [r10 + rcx + 0x14], 0
je 0x2fc4c21ab
cmp dword [r10 + rcx + 0x18], 0
je 0x2fc4c21ab
mov r8d, dword [r10 + rcx + 0x1c]
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 dl
test dl, al
jne 0x2fc4c1dcf
xor dl, al
je 0x2fc4c21b7
add r8, r10
mov edx, dword [r10 + rcx + 0x20]
mov esi, dword [r10 + rcx + 0x24]
add rdx, r10
add rsi, r10
mov edi, dword [rdx]
add rdi, r10
xor eax, eax
lea rcx, [r12 + rax]
mov bl, byte [r15 + rcx]
mov cl, byte [rdi + rax]
test bl, bl
je 0x2fc4c1e04
cmp bl, cl
jne 0x2fc4c1e04
inc rax
test r13b, r13b
jne 0x2fc4c1de9
cmp bl, cl
je 0x2fc4c1e12
add rdx, 4
add rsi, 2
jmp 0x2fc4c1de2
movzx eax, word [rsi]
mov eax, dword [r8 + rax*4]
add r10, rax
mov rax, qword [rbp - 0x30]
mov edx, dword [rax + 0x50]
sub rsp, 0x20
mov r8d, 0x3000
mov r9d, 0x40
xor ecx, ecx
call r10
add rsp, 0x20
mov rsi, rax
mov edi, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
lea eax, [rdi - 1]
imul eax, edi
mov edx, eax
xor edx, 0xfffffffe
and edx, eax
sete r8b
setne bl
cmp r10d, 0xa
setl cl
cmp r10d, 9
setg al
cmp cl, r8b
jne 0x2fc4c21c7
or al, bl
xor al, 1
jne 0x2fc4c21c7
movsxd rdi, dword [0x2fc4c5848]
mov eax, dword [0x2fc4e617c]
mov ecx, dword [0x2fc4e6184]
mov r8d, 0xffffffff
lea edx, [rax + r8]
imul edx, eax
xor edx, r8d
or edx, 0xfffffffe
cmp edx, r8d
setne dl
sete bl
cmp ecx, 9
setg al
cmp ecx, 0xa
setl cl
xor cl, bl
or al, dl
xor al, 1
or al, cl
mov rcx, qword [rbp - 0x38]
cmp byte [rcx], 0
je 0x2fc4c1ee1
test al, al
je 0x2fc4c21c1
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x2fc4c1ed5
jmp 0x2fc4c1ee9
test al, al
je 0x2fc4c21c5
mov qword [rbp - 0x40], rdi
movsx ebx, byte [rcx + 1]
test ebx, ebx
je 0x2fc4c1f02
lea rax, [rcx + 2]
cmp byte [rax], 0
lea rax, [rax + 1]
jne 0x2fc4c1ef9
mov rax, qword gs:[0x60]
mov rsi, qword [rax + 0x18]
mov eax, dword [0x2fc4e6178]
mov edi, dword [0x2fc4e6154]
lea edx, [rax + r8]
imul edx, eax
xor edx, r8d
or edx, 0xfffffffe
cmp edx, r8d
setne al
sete r11b
cmp edi, 9
setg r8b
cmp edi, 0xa
setl r10b
mov r14, qword [rsi + 0x10]
lea rdx, [rsi + 0x10]
mov qword [rbp - 0x10], rdx
cmp r14, rdx
je 0x2fc4c21ad
mov byte [rbp - 8], al
mov esi, dword [0x2fc4e6174]
mov edx, dword [0x2fc4e6180]
cmp edx, 9
setg r9b
cmp edx, 0xa
setl al
mov edi, 0xffffffff
lea edx, [rsi + rdi]
imul edx, esi
xor edx, edi
or edx, 0xfffffffe
cmp edx, edi
setne byte [rbp - 0x20]
sete dl
xor dl, al
lea esi, [rbx - 0x41]
lea edi, [rbx + 0x20]
cmp sil, 0x1a
cmovae edi, ebx
mov dword [rbp], edi
test dl, dl
jne 0x2fc4c1fae
or r9b, byte [rbp - 0x20]
xor r9b, 1
je 0x2fc4c21bb
lea rdx, [rcx + 1]
xor r10b, r11b
or r8b, byte [rbp - 8]
xor r8b, 1
or r8b, r10b
mov byte [rbp - 8], r8b
mov rax, rdx
not rax
mov qword [rbp - 0x18], rax
mov qword [rbp - 0x28], rbx
mov qword [rbp - 0x20], rdx
mov r11, qword [r14 + 0x60]
mov rsi, rdx
test bl, bl
je 0x2fc4c1feb
cmp byte [rsi + 1], 0
lea rsi, [rsi + 1]
jne 0x2fc4c1fe1
cmp byte [rbp - 8], 0
je 0x2fc4c21af
mov r8, rsi
sub r8, rdx
je 0x2fc4c207a
movzx r9d, word [r11]
lea eax, [r9 - 0x41]
lea ebx, [r9 + 0x20]
cmp ax, 0x1a
cmovae ebx, r9d
cmp ebx, dword [rbp]
jne 0x2fc4c2060
add rsi, qword [rbp - 0x18]
xor eax, eax
test r9w, r9w
je 0x2fc4c207a
cmp rsi, rax
je 0x2fc4c207a
dec r8
movzx r9d, word [r11 + rax*2 + 2]
lea ebx, [r9 - 0x41]
mov r10d, 0x20
lea edi, [r9 + r10]
cmp bx, 0x1a
cmovae edi, r9d
movsx ebx, byte [rcx + rax + 2]
lea edx, [rbx - 0x41]
add r10d, ebx
cmp dl, 0x1a
cmovae r10d, ebx
inc rax
cmp edi, r10d
je 0x2fc4c201c
mov r14, qword [r14]
cmp r14, qword [rbp - 0x10]
mov rbx, qword [rbp - 0x28]
mov rdx, qword [rbp - 0x20]
jne 0x2fc4c1fd6
jmp 0x2fc4c21ad
mov r10, qword [r14 + 0x30]
movsxd rax, dword [r10 + 0x3c]
cmp dword [r10 + rax + 0x8c], 0
mov esi, 0xffffffff
je 0x2fc4c21b1
mov edi, dword [r10 + rax + 0x88]
mov eax, dword [0x2fc4e6164]
mov edx, dword [0x2fc4e6170]
lea ebx, [rax + rsi]
imul ebx, eax
xor ebx, esi
or ebx, 0xfffffffe
cmp ebx, esi
sete bl
setne al
cmp edx, 0xa
setl cl
cmp edx, 9
setg dl
cmp bl, cl
jne 0x2fc4c20d7
or al, dl
xor al, 1
je 0x2fc4c21bd
cmp dword [r10 + rdi + 0x14], 0
je 0x2fc4c21b1
cmp dword [r10 + rdi + 0x18], 0
je 0x2fc4c21b1
mov r8d, dword [r10 + rdi + 0x1c]
mov eax, dword [0x2fc4e6158]
lea ecx, [rax + rsi]
imul ecx, eax
xor ecx, esi
or ecx, 0xfffffffe
cmp ecx, esi
sete al
cmp dword [0x2fc4e615c], 0xa
setl dl
test dl, al
jne 0x2fc4c2120
xor dl, al
je 0x2fc4c21bf
add r8, r10
mov r11d, dword [r10 + rdi + 0x20]
mov r9d, dword [r10 + rdi + 0x24]
add r11, r10
add r9, r10
mov edi, dword [r11]
add rdi, r10
xor esi, esi
lea rax, [r12 + rsi]
mov al, byte [r15 + rax]
mov bl, byte [rdi + rsi]
cmp al, bl
sete cl
test al, al
setne dl
cmp cl, dl
jne 0x2fc4c215b
inc rsi
test al, al
jne 0x2fc4c213b
cmp al, bl
je 0x2fc4c2169
add r11, 4
add r9, 2
jmp 0x2fc4c2133
movzx eax, word [r9]
mov eax, dword [r8 + rax*4]
add r10, rax
mov rax, qword [rbp - 0x40]
mov edx, dword [rax + r15 + 0x83c]
sub rsp, 0x20
mov r8d, 0x3000
mov r9d, 0x40
xor ecx, ecx
call r10
add rsp, 0x20
mov r14, qword [rbp - 0x38]
mov edx, 0xffffffff
jmp 0x2fc4c1b37
jmp 0x2fc4c21a7
jmp 0x2fc4c21a9
jmp 0x2fc4c21ab
jmp 0x2fc4c21ad
jmp 0x2fc4c21af
jmp 0x2fc4c21b1
jmp 0x2fc4c21b3
jmp 0x2fc4c21b5
jmp 0x2fc4c21b7
jmp 0x2fc4c21b9
jmp 0x2fc4c21bb
jmp 0x2fc4c21bd
jmp 0x2fc4c21bf
jmp 0x2fc4c21c1
jmp 0x2fc4c21c3
jmp 0x2fc4c21c5
mov rax, qword [rbp - 0x30]
cmp word [rax + 6], 0
mov qword [rbp - 0x10], rsi
je 0x2fc4c22e8
mov rax, qword [rbp - 0x30]
lea r14, [rax + 0x108]
movabs r10, 0xa339edc9d7d34a9b
mov edx, dword [0x2fc4e6160]
mov r13d, dword [0x2fc4e616c]
xor r9d, r9d
mov r12d, 0xffffffff
mov r11d, 1
lea eax, [rdx + r12]
imul eax, edx
xor eax, r12d
or eax, 0xfffffffe
cmp eax, r12d
sete dil
setne sil
cmp r13d, 0xa
setl al
cmp r13d, 9
setg bl
cmp al, dil
jne 0x2fc4c2242
or bl, sil
xor bl, 1
je 0x2fc4c260e
lea rdi, [r9 + r9*4]
mov eax, dword [r14 + rdi*8 + 0xc]
mov esi, dword [r14 + rdi*8 + 0x10]
mov edi, dword [r14 + rdi*8 + 0x14]
add rdi, r15
add rdi, 0x7ec
add rax, qword [rbp - 0x10]
lea ebx, [rdx + r12]
imul ebx, edx
xor ebx, r12d
or ebx, 0xfffffffe
cmp ebx, r12d
setne cl
cmp r13d, 9
setg bl
mov r8d, ebx
xor r8b, cl
or bl, cl
xor bl, 1
or bl, r8b
test bl, bl
je 0x2fc4c228b
cmp rsi, 1
jb 0x2fc4c22ba
add rsi, r10
mov rcx, r10
not rcx
add rsi, rcx
mov cl, byte [rdi]
add rdi, r11
mov byte [rax], cl
add rax, r11
mov edx, dword [0x2fc4e6160]
mov r13d, dword [0x2fc4e616c]
jmp 0x2fc4c2263
inc r9
mov rax, qword [rbp - 0x30]
movzx eax, word [rax + 6]
cmp r9, rax
jb 0x2fc4c220b
mov edi, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
lea edx, [rdi - 1]
imul edx, edi
and edx, 1
mov rsi, qword [rbp - 0x10]
test edx, edx
sete al
cmp r10d, 0xa
setl dl
mov ecx, edx
and cl, al
xor dl, al
or dl, cl
test dl, dl
je 0x2fc4c22fc
mov rcx, qword [rbp - 0x30]
mov rax, qword [rcx + 0x30]
mov r13, rsi
sub r13, rax
mov ebx, dword [rcx + 0xb0]
add rbx, rsi
lea rdx, [rsi + rsi*2]
lea rcx, [rax + rax*2]
sub rdx, rcx
mov qword [rbp - 0x18], rdx
lea r14, [rsi + rsi]
add rax, rax
sub r14, rax
mov r11d, 0xffffffff
mov r12d, edi
mov esi, edi
lea eax, [rsi + r11]
imul eax, esi
xor eax, r11d
or eax, 0xfffffffe
cmp eax, r11d
sete al
cmp r10d, 0xa
setl dl
mov ecx, edx
and cl, al
xor dl, al
or dl, cl
test dl, dl
je 0x2fc4c235d
cmp dword [rbx], 0
je 0x2fc4c2612
mov eax, dword [rbx + 4]
cmp rax, 8
jb 0x2fc4c2601
movabs rcx, 0x3e0cdefdb8656bde
add rax, rcx
movabs rdx, 0x1fffffff8
add rax, rdx
sub rax, rcx
shr rax, 1
lea ecx, [r12 - 1]
imul ecx, r12d
mov edx, ecx
xor edx, 0xfffffffe
test edx, ecx
setne r8b
sete r9b
cmp r10d, 9
setg dl
cmp r10d, 0xa
setl sil
xor sil, r9b
or dl, r8b
mov cl, 1
xor dl, cl
or dl, sil
test eax, eax
je 0x2fc4c25f7
movabs rcx, 0x3111fa64da0f2e63
mov esi, ecx
not esi
or esi, ecx
and esi, eax
mov qword [rbp - 0x28], rsi
xor r9d, r9d
mov qword [rbp], rbx
test dl, 1
je 0x2fc4c23f0
movzx eax, word [rbx + r9*2 + 8]
mov edx, eax
shr edx, 0xc
mov r8d, eax
xor r8d, 0xf000
and r8d, eax
cmp eax, 0xa000
jae 0x2fc4c245b
cmp edx, 3
jne 0x2fc4c259a
lea eax, [r12 - 1]
imul eax, r12d
mov ecx, eax
xor ecx, 0xfffffffe
test ecx, eax
sete bl
setne dl
cmp r10d, 0xa
setl cl
cmp r10d, 9
setg al
mov esi, r8d
cmp cl, bl
jne 0x2fc4c2536
or al, dl
xor al, 1
je 0x2fc4c2586
jmp 0x2fc4c2536
cmp edx, 0xa
jne 0x2fc4c259a
mov rax, qword [rbp]
mov ebx, dword [rax]
add r8, qword [rbp - 0x10]
mov rsi, qword [rbx + r8]
movabs rax, 0xeee8170fac8d6e95
lea r15, [rsi + rax]
add r15, r13
sub r15, rax
mov qword [rbx + r8], r15
mov edi, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
lea eax, [rdi - 1]
imul eax, edi
mov ecx, eax
xor ecx, 0xfffffffe
test ecx, eax
sete cl
setne r12b
cmp r10d, 0xa
setl dl
cmp r10d, 9
setg al
cmp dl, cl
jne 0x2fc4c2531
or al, r12b
xor al, 1
mov r12d, edi
jne 0x2fc4c259a
add r8, rbx
add rsi, qword [rbp - 0x18]
mov qword [r8], rsi
mov edi, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
lea eax, [rdi + r11]
imul eax, edi
xor eax, r11d
or eax, 0xfffffffe
cmp eax, r11d
sete al
setne bl
cmp r10d, 0xa
setl cl
cmp r10d, 9
setg dl
cmp cl, al
jne 0x2fc4c2531
add r15, r13
movabs rax, 0xd405d9713fa3cd18
add r15, rax
add r15, r13
sub r15, rax
or dl, bl
xor dl, 1
add rsi, r14
mov r12d, edi
test dl, dl
je 0x2fc4c24d2
jmp 0x2fc4c259a
mov r12d, edi
jmp 0x2fc4c259a
mov rax, qword [rbp]
mov eax, dword [rax]
mov rcx, qword [rbp - 0x10]
lea rax, [rcx + rax*4]
add dword [rax + rsi*4], r13d
mov edi, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
lea eax, [rdi + r11]
imul eax, edi
xor eax, r11d
or eax, 0xfffffffe
cmp eax, r11d
sete cl
setne bl
cmp r10d, 0xa
setl dl
cmp r10d, 9
setg al
cmp dl, cl
jne 0x2fc4c2531
or al, bl
xor al, 1
mov r12d, edi
jne 0x2fc4c259a
mov rax, qword [rbp]
mov eax, dword [rax]
mov rcx, qword [rbp - 0x10]
lea rax, [rcx + rax*4]
add dword [rax + rsi*4], r13d
jmp 0x2fc4c2536
lea eax, [r12 + r11]
imul eax, r12d
xor eax, r11d
or eax, 0xfffffffe
cmp eax, r11d
sete al
cmp r10d, 0xa
setl dl
test dl, al
jne 0x2fc4c25bd
xor dl, al
je 0x2fc4c260c
inc r9
lea eax, [rdi + r11]
imul eax, edi
xor eax, r11d
or eax, 0xfffffffe
cmp eax, r11d
sete al
cmp r10d, 0xa
setl dl
mov ecx, edx
and cl, al
xor dl, al
or dl, cl
mov esi, edi
mov r12d, edi
cmp r9, qword [rbp - 0x28]
mov rbx, qword [rbp]
jne 0x2fc4c23f0
jmp 0x2fc4c25fa
mov esi, r12d
mov r12d, esi
test dl, dl
je 0x2fc4c2610
mov eax, dword [rbx + 4]
add rbx, rax
jmp 0x2fc4c233b
jmp 0x2fc4c260c
jmp 0x2fc4c260e
jmp 0x2fc4c2610
mov rax, qword [rbp - 0x30]
mov ecx, dword [rax + 0x90]
mov rax, qword [rbp - 0x10]
mov r9d, dword [rax + rcx + 0xc]
test r9d, r9d
je 0x2fc4c2c78
add rcx, rax
mov qword [rbp - 0x48], rcx
add rax, 2
mov qword [rbp - 0x68], rax
mov esi, 0xffffffff
mov r11d, 0xfffffffe
mov edi, 9
mov r15b, 1
mov rax, qword gs:[0x60]
mov rcx, qword [rax + 0x18]
mov eax, dword [0x2fc4e617c]
lea edx, [rax + rsi]
imul edx, eax
mov eax, edx
xor eax, r11d
test eax, edx
setne al
cmp dword [0x2fc4e6184], edi
setg r8b
mov edx, dword [0x2fc4e6178]
lea ebx, [rdx + rsi]
imul ebx, edx
xor ebx, esi
or ebx, r11d
cmp ebx, esi
setne dl
cmp dword [0x2fc4e6154], edi
setg r12b
mov r13, qword [rcx + 0x10]
add rcx, 0x10
mov qword [rbp - 0x18], rcx
cmp r13, rcx
je 0x2fc4c2c60
mov ebx, dword [0x2fc4e6174]
cmp dword [0x2fc4e6180], 0xa
setl cl
lea edi, [rbx + rsi]
imul edi, ebx
xor edi, esi
or edi, 0xfffffffe
cmp edi, esi
sete bl
test cl, bl
jne 0x2fc4c26de
xor cl, bl
je 0x2fc4c2c70
mov ecx, r9d
add rcx, qword [rbp - 0x10]
mov qword [rbp - 0x38], rcx
mov ecx, r8d
xor cl, al
or r8b, al
xor r8b, r15b
or r8b, cl
mov eax, r12d
xor al, dl
or r12b, dl
xor r12b, r15b
or r12b, al
mov rcx, qword [rbp - 0x20]
movsx edx, byte [rcx]
lea eax, [rdx - 0x41]
lea ebx, [rdx + 0x20]
cmp al, 0x1a
mov qword [rbp], rdx
cmovae ebx, edx
mov dword [rbp - 0x28], ebx
mov r14, qword [r13 + 0x60]
cmp byte [rbp], 0
je 0x2fc4c2740
mov rax, rcx
test r8b, r8b
je 0x2fc4c2c6a
cmp byte [rax + 1], 0
lea rax, [rax + 1]
jne 0x2fc4c2734
jmp 0x2fc4c274c
mov rax, rcx
test r8b, r8b
je 0x2fc4c2c72
test r12b, r12b
je 0x2fc4c2c62
mov rdx, rax
sub rdx, rcx
je 0x2fc4c27d8
movzx edi, word [r14]
lea ecx, [rdi - 0x41]
lea ebx, [rdi + 0x20]
cmp cx, 0x1a
cmovae ebx, edi
cmp ebx, dword [rbp - 0x28]
jne 0x2fc4c27c1
add rax, qword [rbp - 0x40]
xor r9d, r9d
test di, di
je 0x2fc4c27d8
cmp rax, r9
je 0x2fc4c27d8
dec rdx
movzx edi, word [r14 + r9*2 + 2]
lea ecx, [rdi - 0x41]
mov esi, 0x20
lea ebx, [rdi + rsi]
cmp cx, 0x1a
cmovae ebx, edi
mov rcx, qword [rbp - 8]
movsx ecx, byte [rcx + r9 + 2]
lea r10d, [rcx - 0x41]
lea r11d, [rcx + rsi]
cmp r10b, 0x1a
cmovae r11d, ecx
inc r9
cmp ebx, r11d
je 0x2fc4c277a
mov r13, qword [r13]
cmp r13, qword [rbp - 0x18]
mov rcx, qword [rbp - 0x20]
jne 0x2fc4c271e
jmp 0x2fc4c2c60
mov r9, qword [r13 + 0x30]
movsxd rax, dword [r9 + 0x3c]
cmp dword [r9 + rax + 0x8c], 0
je 0x2fc4c2c64
mov edi, dword [r9 + rax + 0x88]
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 al, cl
jne 0x2fc4c2828
xor al, cl
je 0x2fc4c2c74
cmp dword [r9 + rdi + 0x14], 0
je 0x2fc4c2c64
cmp dword [r9 + rdi + 0x18], 0
je 0x2fc4c2c64
mov r8d, dword [r9 + rdi + 0x1c]
mov eax, dword [0x2fc4e6158]
mov ecx, dword [0x2fc4e615c]
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 0x2fc4c287f
or cl, al
xor cl, 1
je 0x2fc4c2c76
add r8, r9
mov esi, dword [r9 + rdi + 0x20]
mov edi, dword [r9 + rdi + 0x24]
add rsi, r9
add rdi, r9
mov ecx, dword [rsi]
add rcx, r9
xor eax, eax
mov rdx, qword [rbp - 0x80]
mov bl, byte [rdx + rax + 2]
mov dl, byte [rcx + rax]
test bl, bl
je 0x2fc4c28b4
cmp bl, dl
jne 0x2fc4c28b4
inc rax
test r15b, r15b
jne 0x2fc4c2899
cmp bl, dl
je 0x2fc4c28c2
add rsi, 4
add rdi, 2
jmp 0x2fc4c2892
movzx eax, word [rdi]
mov eax, dword [r8 + rax*4]
add r9, rax
sub rsp, 0x20
mov rcx, qword [rbp - 0x38]
call r9
add rsp, 0x20
mov qword [rbp - 0x60], rax
mov rax, qword [rbp - 0x48]
mov edi, dword [rax]
mov ecx, dword [rax + 0x10]
mov rax, qword [rbp - 0x10]
add rdi, rax
add rcx, rax
mov qword [rbp - 0x58], rcx
mov eax, dword [0x2fc4e6150]
mov r10d, dword [0x2fc4e6168]
mov esi, 0xffffffff
lea ecx, [rax + rsi]
imul ecx, eax
xor ecx, esi
or ecx, 0xfffffffe
mov edx, ecx
xor edx, esi
cmp ecx, esi
sete al
cmp r10d, 0xa
setl cl
mov ebx, ecx
and bl, al
xor cl, al
or cl, bl
mov r9d, 0xfffffffe
test cl, cl
je 0x2fc4c2931
mov qword [rbp - 0x78], rdi
mov rcx, qword [rdi]
test rcx, rcx
je 0x2fc4c2c32
movabs rax, 0x8d0c982e640b55bc
mov rdx, rax
xor eax, esi
or eax, edx
and eax, ecx
mov rdx, qword [rbp - 0x68]
add rdx, rcx
test rcx, rcx
movzx eax, ax
cmovns rax, rdx
mov qword [rbp - 0x70], rax
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov ecx, dword [0x2fc4e617c]
lea edx, [rcx + rsi]
imul edx, ecx
xor edx, esi
or edx, r9d
cmp edx, esi
sete r8b
mov r14d, 0xa
cmp dword [0x2fc4e6184], r14d
setl bl
mov ecx, dword [0x2fc4e6178]
mov edi, dword [0x2fc4e6154]
lea edx, [rcx + rsi]
imul edx, ecx
xor edx, esi
or edx, r9d
cmp edx, esi
setne r10b
sete r11b
cmp edi, r14d
setl dl
cmp edi, 9
setg cl
mov r14, qword [rax + 0x10]
add rax, 0x10
mov qword [rbp - 0x28], rax
cmp r14, rax
je 0x2fc4c2c58
cmp dword [0x2fc4e6180], 0xa
mov eax, dword [0x2fc4e6174]
setl sil
lea edi, [rax - 1]
imul edi, eax
mov eax, edi
xor eax, 0xfffffffe
test eax, edi
sete al
test sil, al
jne 0x2fc4c2a12
xor sil, al
je 0x2fc4c2c66
mov eax, ebx
and al, r8b
xor bl, r8b
or bl, al
xor dl, r11b
or cl, r10b
xor cl, 1
or cl, dl
mov rdx, qword [rbp - 0x20]
movsx r9d, byte [rdx]
lea eax, [r9 - 0x41]
lea edi, [r9 + 0x20]
cmp al, 0x1a
cmovae edi, r9d
mov dword [rbp], edi
mov byte [rbp - 0x18], cl
mov qword [rbp - 0x38], r9
mov r8, qword [r14 + 0x60]
mov r12, rdx
test r9b, r9b
je 0x2fc4c2a6e
test bl, bl
je 0x2fc4c2c5e
cmp byte [r12 + 1], 0
lea r12, [r12 + 1]
jne 0x2fc4c2a5b
mov rsi, qword [rbp - 0x50]
jmp 0x2fc4c2a7a
test bl, bl
mov rsi, qword [rbp - 0x50]
je 0x2fc4c2c68
test cl, cl
je 0x2fc4c2c5a
mov r13, r12
movabs rax, 0xb0bc401009932b2f
sub r13, rax
sub r13, rdx
add r13, rax
je 0x2fc4c2b27
mov r9d, ebx
movzx edi, word [r8]
lea eax, [rdi - 0x41]
lea edx, [rdi + 0x20]
cmp ax, 0x1a
cmovae edx, edi
cmp edx, dword [rbp]
jne 0x2fc4c2b07
add r12, qword [rbp - 0x40]
xor eax, eax
test di, di
je 0x2fc4c2b27
cmp r12, rax
je 0x2fc4c2b27
dec r13
movzx edi, word [r8 + rax*2 + 2]
lea edx, [rdi - 0x41]
mov esi, 0x20
lea ebx, [rdi + rsi]
cmp dx, 0x1a
cmovae ebx, edi
mov rdx, qword [rbp - 8]
movsx edx, byte [rdx + rax + 2]
lea r10d, [rdx - 0x41]
lea r11d, [rdx + rsi]
cmp r10b, 0x1a
mov rsi, qword [rbp - 0x50]
cmovae r11d, edx
inc rax
cmp ebx, r11d
je 0x2fc4c2abd
mov r14, qword [r14]
cmp r14, qword [rbp - 0x28]
mov rdx, qword [rbp - 0x20]
mov ebx, r9d
mov r9, qword [rbp - 0x38]
mov cl, byte [rbp - 0x18]
jne 0x2fc4c2a47
jmp 0x2fc4c2c58
mov r9, qword [r14 + 0x30]
movsxd rax, dword [r9 + 0x3c]
cmp dword [r9 + rax + 0x8c], 0
je 0x2fc4c2c5c
mov ecx, dword [r9 + rax + 0x88]
mov eax, dword [0x2fc4e6164]
lea edx, [rax - 1]
imul edx, eax
mov eax, edx
xor eax, 0xfffffffe
test eax, edx
sete al
cmp dword [0x2fc4e6170], 0xa
setl dl
test al, dl
jne 0x2fc4c2b72
xor al, dl
je 0x2fc4c2c6c
cmp dword [r9 + rcx + 0x14], 0
je 0x2fc4c2c5c
cmp dword [r9 + rcx + 0x18], 0
je 0x2fc4c2c5c
mov r8d, dword [r9 + rcx + 0x1c]
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 dl
test dl, al
jne 0x2fc4c2bc0
xor dl, al
je 0x2fc4c2c6e
add r8, r9
mov edi, dword [r9 + rcx + 0x20]
mov r10d, dword [r9 + rcx + 0x24]
add rdi, r9
add r10, r9
mov edx, dword [rdi]
add rdx, r9
xor eax, eax
mov bl, byte [rsi + rax + 1]
mov cl, byte [rdx + rax]
test bl, bl
je 0x2fc4c2bf1
cmp bl, cl
jne 0x2fc4c2bf1
inc rax
test r15b, r15b
jne 0x2fc4c2bda
cmp bl, cl
je 0x2fc4c2bff
add rdi, 4
add r10, 2
jmp 0x2fc4c2bd3
movzx eax, word [r10]
mov eax, dword [r8 + rax*4]
add r9, rax
sub rsp, 0x20
mov rcx, qword [rbp - 0x60]
mov rdx, qword [rbp - 0x70]
call r9
add rsp, 0x20
mov rcx, qword [rbp - 0x58]
mov qword [rcx], rax
mov eax, 8
mov rdi, qword [rbp - 0x78]
jmp 0x2fc4c28ec
mov r11d, 0xfffffffe
mov rax, qword [rbp - 0x48]
mov r9d, dword [rax + 0x20]
add rax, 0x14
mov qword [rbp - 0x48], rax
test r9d, r9d
mov edi, 9
jne 0x2fc4c2650
jmp 0x2fc4c2c81
jmp 0x2fc4c2c58
jmp 0x2fc4c2c5a
jmp 0x2fc4c2c5c
jmp 0x2fc4c2c5e
jmp 0x2fc4c2c60
jmp 0x2fc4c2c62
jmp 0x2fc4c2c64
jmp 0x2fc4c2c66
jmp 0x2fc4c2c68
jmp 0x2fc4c2c6a
jmp 0x2fc4c2c6c
jmp 0x2fc4c2c6e
jmp 0x2fc4c2c70
jmp 0x2fc4c2c72
jmp 0x2fc4c2c74
jmp 0x2fc4c2c76
lea edx, [rdi - 1]
imul edx, edi
and edx, 1
test edx, edx
setne cl
sete al
cmp r10d, 9
setg dl
cmp r10d, 0xa
setl bl
xor bl, al
mov rsi, qword [rbp - 0x10]
jne 0x2fc4c2ca6
or dl, cl
xor dl, 1
je 0x2fc4c2cf0
mov rax, qword [rbp - 0x30]
mov eax, dword [rax + 0x28]
add rax, rsi
sub rsp, 0x20
call rax
add rsp, 0x20
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 0x2fc4c2d06
or cl, al
xor cl, 1
jne 0x2fc4c2d06
mov rax, qword [rbp - 0x30]
mov eax, dword [rax + 0x28]
add rax, rsi
sub rsp, 0x20
call rax
add rsp, 0x20
jmp 0x2fc4c2ca6
xor eax, eax
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret